|  | // Copyright (c) 2016, 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.naming.MemberNaming.Signature; | 
|  | import com.android.tools.r8.utils.ThrowingConsumer; | 
|  |  | 
|  | /** | 
|  | * Stores name information for a class. | 
|  | * <p> | 
|  | * Implementers will include how the class was renamed and information on the class's members. | 
|  | */ | 
|  | public interface ClassNaming { | 
|  |  | 
|  | abstract class Builder { | 
|  | public abstract Builder addMemberEntry(MemberNaming entry); | 
|  |  | 
|  | public abstract ClassNaming build(); | 
|  |  | 
|  | /** This is an optional method, may be implemented as no-op */ | 
|  | public abstract void addMappedRange( | 
|  | Range obfuscatedRange, | 
|  | MemberNaming.MethodSignature originalSignature, | 
|  | Object originalRange, | 
|  | String obfuscatedName); | 
|  | } | 
|  |  | 
|  | MemberNaming lookup(Signature renamedSignature); | 
|  |  | 
|  | MemberNaming lookupByOriginalSignature(Signature original); | 
|  |  | 
|  | <T extends Throwable> void forAllMemberNaming( | 
|  | ThrowingConsumer<MemberNaming, T> consumer) throws T; | 
|  |  | 
|  | <T extends Throwable> void forAllFieldNaming( | 
|  | ThrowingConsumer<MemberNaming, T> consumer) throws T; | 
|  |  | 
|  | <T extends Throwable> void forAllMethodNaming( | 
|  | ThrowingConsumer<MemberNaming, T> consumer) throws T; | 
|  | } |