| // Copyright (c) 2019, the R8 project authors. Please see the AUTHORS file | 
 | // for details. All rights reserved. Use of this source code is governed by a | 
 | // BSD-style license that can be found in the LICENSE file. | 
 |  | 
 | package com.android.tools.r8.naming; | 
 |  | 
 | import com.android.tools.r8.graph.DexClass; | 
 | import com.android.tools.r8.graph.DexEncodedField; | 
 | import com.android.tools.r8.graph.DexEncodedMethod; | 
 | import com.android.tools.r8.graph.DexMethod; | 
 | import com.android.tools.r8.graph.DexString; | 
 | import com.android.tools.r8.graph.ProgramField; | 
 | import java.util.function.BiPredicate; | 
 |  | 
 | public interface MemberNamingStrategy { | 
 |  | 
 |   DexString next( | 
 |       DexEncodedMethod method, | 
 |       InternalNamingState internalState, | 
 |       BiPredicate<DexString, DexMethod> isAvailable); | 
 |  | 
 |   DexString next( | 
 |       ProgramField field, | 
 |       InternalNamingState internalState, | 
 |       BiPredicate<DexString, ProgramField> isAvailable); | 
 |  | 
 |   DexString getReservedName(DexEncodedMethod method, DexClass holder); | 
 |  | 
 |   DexString getReservedName(DexEncodedField field, DexClass holder); | 
 |  | 
 |   boolean allowMemberRenaming(DexClass holder); | 
 | } |