class com.google.common.reflect.TypeResolver$TypeTable
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.google.common.reflect.TypeResolver$TypeTable
  super_class: java.lang.Object
{
  private final com.google.common.collect.ImmutableMap<com.google.common.reflect.TypeResolver$TypeVariableKey, java.lang.reflect.Type> map;
    descriptor: Lcom/google/common/collect/ImmutableMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/google/common/collect/ImmutableMap<Lcom/google/common/reflect/TypeResolver$TypeVariableKey;Ljava/lang/reflect/Type;>;

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.common.reflect.TypeResolver$TypeTable this
         0: .line 281
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 282
            aload 0 /* this */
            invokestatic com.google.common.collect.ImmutableMap.of:()Lcom/google/common/collect/ImmutableMap;
            putfield com.google.common.reflect.TypeResolver$TypeTable.map:Lcom/google/common/collect/ImmutableMap;
         2: .line 283
            return
        end local 0 // com.google.common.reflect.TypeResolver$TypeTable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/google/common/reflect/TypeResolver$TypeTable;

  private void <init>(com.google.common.collect.ImmutableMap<com.google.common.reflect.TypeResolver$TypeVariableKey, java.lang.reflect.Type>);
    descriptor: (Lcom/google/common/collect/ImmutableMap;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.common.reflect.TypeResolver$TypeTable this
        start local 1 // com.google.common.collect.ImmutableMap map
         0: .line 285
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 286
            aload 0 /* this */
            aload 1 /* map */
            putfield com.google.common.reflect.TypeResolver$TypeTable.map:Lcom/google/common/collect/ImmutableMap;
         2: .line 287
            return
        end local 1 // com.google.common.collect.ImmutableMap map
        end local 0 // com.google.common.reflect.TypeResolver$TypeTable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/google/common/reflect/TypeResolver$TypeTable;
            0    3     1   map  Lcom/google/common/collect/ImmutableMap<Lcom/google/common/reflect/TypeResolver$TypeVariableKey;Ljava/lang/reflect/Type;>;
    Signature: (Lcom/google/common/collect/ImmutableMap<Lcom/google/common/reflect/TypeResolver$TypeVariableKey;Ljava/lang/reflect/Type;>;)V
    MethodParameters:
      Name  Flags
      map   

  final com.google.common.reflect.TypeResolver$TypeTable where(java.util.Map<com.google.common.reflect.TypeResolver$TypeVariableKey, ? extends java.lang.reflect.Type>);
    descriptor: (Ljava/util/Map;)Lcom/google/common/reflect/TypeResolver$TypeTable;
    flags: (0x0010) ACC_FINAL
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // com.google.common.reflect.TypeResolver$TypeTable this
        start local 1 // java.util.Map mappings
         0: .line 291
            invokestatic com.google.common.collect.ImmutableMap.builder:()Lcom/google/common/collect/ImmutableMap$Builder;
            astore 2 /* builder */
        start local 2 // com.google.common.collect.ImmutableMap$Builder builder
         1: .line 292
            aload 2 /* builder */
            aload 0 /* this */
            getfield com.google.common.reflect.TypeResolver$TypeTable.map:Lcom/google/common/collect/ImmutableMap;
            invokevirtual com.google.common.collect.ImmutableMap$Builder.putAll:(Ljava/util/Map;)Lcom/google/common/collect/ImmutableMap$Builder;
            pop
         2: .line 293
            aload 1 /* mappings */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 4
            goto 10
      StackMap locals: com.google.common.reflect.TypeResolver$TypeTable java.util.Map com.google.common.collect.ImmutableMap$Builder top java.util.Iterator
      StackMap stack:
         3: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 3 /* mapping */
        start local 3 // java.util.Map$Entry mapping
         4: .line 294
            aload 3 /* mapping */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast com.google.common.reflect.TypeResolver$TypeVariableKey
            astore 5 /* variable */
        start local 5 // com.google.common.reflect.TypeResolver$TypeVariableKey variable
         5: .line 295
            aload 3 /* mapping */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.lang.reflect.Type
            astore 6 /* type */
        start local 6 // java.lang.reflect.Type type
         6: .line 296
            aload 5 /* variable */
            aload 6 /* type */
            invokevirtual com.google.common.reflect.TypeResolver$TypeVariableKey.equalsType:(Ljava/lang/reflect/Type;)Z
            ifeq 7
            iconst_0
            goto 8
      StackMap locals: com.google.common.reflect.TypeResolver$TypeTable java.util.Map com.google.common.collect.ImmutableMap$Builder java.util.Map$Entry java.util.Iterator com.google.common.reflect.TypeResolver$TypeVariableKey java.lang.reflect.Type
      StackMap stack:
         7: iconst_1
      StackMap locals:
      StackMap stack: int
         8: ldc "Type variable %s bound to itself"
            aload 5 /* variable */
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;Ljava/lang/Object;)V
         9: .line 297
            aload 2 /* builder */
            aload 5 /* variable */
            aload 6 /* type */
            invokevirtual com.google.common.collect.ImmutableMap$Builder.put:(Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableMap$Builder;
            pop
        end local 6 // java.lang.reflect.Type type
        end local 5 // com.google.common.reflect.TypeResolver$TypeVariableKey variable
        end local 3 // java.util.Map$Entry mapping
        10: .line 293
      StackMap locals: com.google.common.reflect.TypeResolver$TypeTable java.util.Map com.google.common.collect.ImmutableMap$Builder top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        11: .line 299
            new com.google.common.reflect.TypeResolver$TypeTable
            dup
            aload 2 /* builder */
            invokevirtual com.google.common.collect.ImmutableMap$Builder.build:()Lcom/google/common/collect/ImmutableMap;
            invokespecial com.google.common.reflect.TypeResolver$TypeTable.<init>:(Lcom/google/common/collect/ImmutableMap;)V
            areturn
        end local 2 // com.google.common.collect.ImmutableMap$Builder builder
        end local 1 // java.util.Map mappings
        end local 0 // com.google.common.reflect.TypeResolver$TypeTable this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   12     0      this  Lcom/google/common/reflect/TypeResolver$TypeTable;
            0   12     1  mappings  Ljava/util/Map<Lcom/google/common/reflect/TypeResolver$TypeVariableKey;+Ljava/lang/reflect/Type;>;
            1   12     2   builder  Lcom/google/common/collect/ImmutableMap$Builder<Lcom/google/common/reflect/TypeResolver$TypeVariableKey;Ljava/lang/reflect/Type;>;
            4   10     3   mapping  Ljava/util/Map$Entry<Lcom/google/common/reflect/TypeResolver$TypeVariableKey;+Ljava/lang/reflect/Type;>;
            5   10     5  variable  Lcom/google/common/reflect/TypeResolver$TypeVariableKey;
            6   10     6      type  Ljava/lang/reflect/Type;
    Signature: (Ljava/util/Map<Lcom/google/common/reflect/TypeResolver$TypeVariableKey;+Ljava/lang/reflect/Type;>;)Lcom/google/common/reflect/TypeResolver$TypeTable;
    MethodParameters:
          Name  Flags
      mappings  

  final java.lang.reflect.Type resolve(java.lang.reflect.TypeVariable<?>);
    descriptor: (Ljava/lang/reflect/TypeVariable;)Ljava/lang/reflect/Type;
    flags: (0x0010) ACC_FINAL
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // com.google.common.reflect.TypeResolver$TypeTable this
        start local 1 // java.lang.reflect.TypeVariable var
         0: .line 303
            aload 0 /* this */
            astore 2 /* unguarded */
        start local 2 // com.google.common.reflect.TypeResolver$TypeTable unguarded
         1: .line 305
            new com.google.common.reflect.TypeResolver$TypeTable$1
            dup
            aload 0 /* this */
            aload 1 /* var */
            aload 2 /* unguarded */
            invokespecial com.google.common.reflect.TypeResolver$TypeTable$1.<init>:(Lcom/google/common/reflect/TypeResolver$TypeTable;Ljava/lang/reflect/TypeVariable;Lcom/google/common/reflect/TypeResolver$TypeTable;)V
         2: .line 304
            astore 3 /* guarded */
        start local 3 // com.google.common.reflect.TypeResolver$TypeTable guarded
         3: .line 314
            aload 0 /* this */
            aload 1 /* var */
            aload 3 /* guarded */
            invokevirtual com.google.common.reflect.TypeResolver$TypeTable.resolveInternal:(Ljava/lang/reflect/TypeVariable;Lcom/google/common/reflect/TypeResolver$TypeTable;)Ljava/lang/reflect/Type;
            areturn
        end local 3 // com.google.common.reflect.TypeResolver$TypeTable guarded
        end local 2 // com.google.common.reflect.TypeResolver$TypeTable unguarded
        end local 1 // java.lang.reflect.TypeVariable var
        end local 0 // com.google.common.reflect.TypeResolver$TypeTable this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lcom/google/common/reflect/TypeResolver$TypeTable;
            0    4     1        var  Ljava/lang/reflect/TypeVariable<*>;
            1    4     2  unguarded  Lcom/google/common/reflect/TypeResolver$TypeTable;
            3    4     3    guarded  Lcom/google/common/reflect/TypeResolver$TypeTable;
    Signature: (Ljava/lang/reflect/TypeVariable<*>;)Ljava/lang/reflect/Type;
    MethodParameters:
      Name  Flags
      var   final

  java.lang.reflect.Type resolveInternal(java.lang.reflect.TypeVariable<?>, com.google.common.reflect.TypeResolver$TypeTable);
    descriptor: (Ljava/lang/reflect/TypeVariable;Lcom/google/common/reflect/TypeResolver$TypeTable;)Ljava/lang/reflect/Type;
    flags: (0x0000) 
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // com.google.common.reflect.TypeResolver$TypeTable this
        start local 1 // java.lang.reflect.TypeVariable var
        start local 2 // com.google.common.reflect.TypeResolver$TypeTable forDependants
         0: .line 326
            aload 0 /* this */
            getfield com.google.common.reflect.TypeResolver$TypeTable.map:Lcom/google/common/collect/ImmutableMap;
            new com.google.common.reflect.TypeResolver$TypeVariableKey
            dup
            aload 1 /* var */
            invokespecial com.google.common.reflect.TypeResolver$TypeVariableKey.<init>:(Ljava/lang/reflect/TypeVariable;)V
            invokevirtual com.google.common.collect.ImmutableMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.reflect.Type
            astore 3 /* type */
        start local 3 // java.lang.reflect.Type type
         1: .line 327
            aload 3 /* type */
            ifnonnull 11
         2: .line 328
            aload 1 /* var */
            invokeinterface java.lang.reflect.TypeVariable.getBounds:()[Ljava/lang/reflect/Type;
            astore 4 /* bounds */
        start local 4 // java.lang.reflect.Type[] bounds
         3: .line 329
            aload 4 /* bounds */
            arraylength
            ifne 5
         4: .line 330
            aload 1 /* var */
            areturn
         5: .line 332
      StackMap locals: java.lang.reflect.Type java.lang.reflect.Type[]
      StackMap stack:
            new com.google.common.reflect.TypeResolver
            dup
            aload 2 /* forDependants */
            invokespecial com.google.common.reflect.TypeResolver.<init>:(Lcom/google/common/reflect/TypeResolver$TypeTable;)V
            aload 4 /* bounds */
            invokevirtual com.google.common.reflect.TypeResolver.resolveTypes:([Ljava/lang/reflect/Type;)[Ljava/lang/reflect/Type;
            astore 5 /* resolvedBounds */
        start local 5 // java.lang.reflect.Type[] resolvedBounds
         6: .line 361
            getstatic com.google.common.reflect.Types$NativeTypeVariableEquals.NATIVE_TYPE_VARIABLE_ONLY:Z
            ifeq 9
         7: .line 362
            aload 4 /* bounds */
            aload 5 /* resolvedBounds */
            invokestatic java.util.Arrays.equals:([Ljava/lang/Object;[Ljava/lang/Object;)Z
            ifeq 9
         8: .line 363
            aload 1 /* var */
            areturn
         9: .line 366
      StackMap locals: java.lang.reflect.Type[]
      StackMap stack:
            aload 1 /* var */
            invokeinterface java.lang.reflect.TypeVariable.getGenericDeclaration:()Ljava/lang/reflect/GenericDeclaration;
            aload 1 /* var */
            invokeinterface java.lang.reflect.TypeVariable.getName:()Ljava/lang/String;
            aload 5 /* resolvedBounds */
        10: .line 365
            invokestatic com.google.common.reflect.Types.newArtificialTypeVariable:(Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;[Ljava/lang/reflect/Type;)Ljava/lang/reflect/TypeVariable;
            areturn
        end local 5 // java.lang.reflect.Type[] resolvedBounds
        end local 4 // java.lang.reflect.Type[] bounds
        11: .line 369
      StackMap locals:
      StackMap stack:
            new com.google.common.reflect.TypeResolver
            dup
            aload 2 /* forDependants */
            invokespecial com.google.common.reflect.TypeResolver.<init>:(Lcom/google/common/reflect/TypeResolver$TypeTable;)V
            aload 3 /* type */
            invokevirtual com.google.common.reflect.TypeResolver.resolveType:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
            areturn
        end local 3 // java.lang.reflect.Type type
        end local 2 // com.google.common.reflect.TypeResolver$TypeTable forDependants
        end local 1 // java.lang.reflect.TypeVariable var
        end local 0 // com.google.common.reflect.TypeResolver$TypeTable this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   12     0            this  Lcom/google/common/reflect/TypeResolver$TypeTable;
            0   12     1             var  Ljava/lang/reflect/TypeVariable<*>;
            0   12     2   forDependants  Lcom/google/common/reflect/TypeResolver$TypeTable;
            1   12     3            type  Ljava/lang/reflect/Type;
            3   11     4          bounds  [Ljava/lang/reflect/Type;
            6   11     5  resolvedBounds  [Ljava/lang/reflect/Type;
    Signature: (Ljava/lang/reflect/TypeVariable<*>;Lcom/google/common/reflect/TypeResolver$TypeTable;)Ljava/lang/reflect/Type;
    MethodParameters:
               Name  Flags
      var            
      forDependants  
}
SourceFile: "TypeResolver.java"
NestHost: com.google.common.reflect.TypeResolver
InnerClasses:
  public Builder = com.google.common.collect.ImmutableMap$Builder of com.google.common.collect.ImmutableMap
  private TypeTable = com.google.common.reflect.TypeResolver$TypeTable of com.google.common.reflect.TypeResolver
  com.google.common.reflect.TypeResolver$TypeTable$1
  final TypeVariableKey = com.google.common.reflect.TypeResolver$TypeVariableKey of com.google.common.reflect.TypeResolver
  final NativeTypeVariableEquals = com.google.common.reflect.Types$NativeTypeVariableEquals of com.google.common.reflect.Types
  public abstract Entry = java.util.Map$Entry of java.util.Map