public abstract class com.google.common.reflect.TypeToken<T> extends com.google.common.reflect.TypeCapture<T> implements java.io.Serializable
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.google.common.reflect.TypeToken
  super_class: com.google.common.reflect.TypeCapture
{
  private final java.lang.reflect.Type runtimeType;
    descriptor: Ljava/lang/reflect/Type;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private transient com.google.common.reflect.TypeResolver invariantTypeResolver;
    descriptor: Lcom/google/common/reflect/TypeResolver;
    flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT
    RuntimeVisibleTypeAnnotations: 
      FIELD
        org.checkerframework.checker.nullness.qual.MonotonicNonNull()

  private transient com.google.common.reflect.TypeResolver covariantTypeResolver;
    descriptor: Lcom/google/common/reflect/TypeResolver;
    flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT
    RuntimeVisibleTypeAnnotations: 
      FIELD
        org.checkerframework.checker.nullness.qual.MonotonicNonNull()

  private static final long serialVersionUID;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 3637540370352322684

  protected void <init>();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.google.common.reflect.TypeToken this
         0: .line 124
            aload 0 /* this */
            invokespecial com.google.common.reflect.TypeCapture.<init>:()V
         1: .line 125
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.capture:()Ljava/lang/reflect/Type;
            putfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
         2: .line 127
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            instanceof java.lang.reflect.TypeVariable
            ifeq 3
            iconst_0
            goto 4
      StackMap locals: com.google.common.reflect.TypeToken
      StackMap stack:
         3: iconst_1
         4: .line 128
      StackMap locals:
      StackMap stack: int
            ldc "Cannot construct a TypeToken for a type variable.\nYou probably meant to call new TypeToken<%s>(getClass()) that can resolve the type variable for you.\nIf you do need to create a TypeToken of a type variable, please use TypeToken.of() instead."
         5: .line 133
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
         6: .line 126
            invokestatic com.google.common.base.Preconditions.checkState:(ZLjava/lang/String;Ljava/lang/Object;)V
         7: .line 134
            return
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lcom/google/common/reflect/TypeToken<TT;>;

  protected void <init>(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.Class declaringClass
         0: .line 155
            aload 0 /* this */
            invokespecial com.google.common.reflect.TypeCapture.<init>:()V
         1: .line 156
            aload 0 /* this */
            invokespecial com.google.common.reflect.TypeCapture.capture:()Ljava/lang/reflect/Type;
            astore 2 /* captured */
        start local 2 // java.lang.reflect.Type captured
         2: .line 157
            aload 2 /* captured */
            instanceof java.lang.Class
            ifeq 5
         3: .line 158
            aload 0 /* this */
            aload 2 /* captured */
            putfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
         4: .line 159
            goto 6
         5: .line 160
      StackMap locals: com.google.common.reflect.TypeToken java.lang.Class java.lang.reflect.Type
      StackMap stack:
            aload 0 /* this */
            aload 1 /* declaringClass */
            invokestatic com.google.common.reflect.TypeResolver.covariantly:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeResolver;
            aload 2 /* captured */
            invokevirtual com.google.common.reflect.TypeResolver.resolveType:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
            putfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
         6: .line 162
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.reflect.Type captured
        end local 1 // java.lang.Class declaringClass
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    7     0            this  Lcom/google/common/reflect/TypeToken<TT;>;
            0    7     1  declaringClass  Ljava/lang/Class<*>;
            2    7     2        captured  Ljava/lang/reflect/Type;
    Signature: (Ljava/lang/Class<*>;)V
    MethodParameters:
                Name  Flags
      declaringClass  

  private void <init>(java.lang.reflect.Type);
    descriptor: (Ljava/lang/reflect/Type;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.reflect.Type type
         0: .line 164
            aload 0 /* this */
            invokespecial com.google.common.reflect.TypeCapture.<init>:()V
         1: .line 165
            aload 0 /* this */
            aload 1 /* type */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.reflect.Type
            putfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
         2: .line 166
            return
        end local 1 // java.lang.reflect.Type type
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/google/common/reflect/TypeToken<TT;>;
            0    3     1  type  Ljava/lang/reflect/Type;
    MethodParameters:
      Name  Flags
      type  

  public static <T> com.google.common.reflect.TypeToken<T> of(java.lang.Class<T>);
    descriptor: (Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Class type
         0: .line 170
            new com.google.common.reflect.TypeToken$SimpleTypeToken
            dup
            aload 0 /* type */
            invokespecial com.google.common.reflect.TypeToken$SimpleTypeToken.<init>:(Ljava/lang/reflect/Type;)V
            areturn
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  type  Ljava/lang/Class<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)Lcom/google/common/reflect/TypeToken<TT;>;
    MethodParameters:
      Name  Flags
      type  

  public static com.google.common.reflect.TypeToken<?> of(java.lang.reflect.Type);
    descriptor: (Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.reflect.Type type
         0: .line 175
            new com.google.common.reflect.TypeToken$SimpleTypeToken
            dup
            aload 0 /* type */
            invokespecial com.google.common.reflect.TypeToken$SimpleTypeToken.<init>:(Ljava/lang/reflect/Type;)V
            areturn
        end local 0 // java.lang.reflect.Type type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  type  Ljava/lang/reflect/Type;
    Signature: (Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken<*>;
    MethodParameters:
      Name  Flags
      type  

  public final java.lang.Class<? super T> getRawType();
    descriptor: ()Ljava/lang/Class;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=3, args_size=1
        start local 0 // com.google.common.reflect.TypeToken this
         0: .line 195
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.getRawTypes:()Lcom/google/common/collect/ImmutableSet;
            invokevirtual com.google.common.collect.ImmutableSet.iterator:()Lcom/google/common/collect/UnmodifiableIterator;
            invokevirtual com.google.common.collect.UnmodifiableIterator.next:()Ljava/lang/Object;
            checkcast java.lang.Class
            astore 1 /* rawType */
        start local 1 // java.lang.Class rawType
         1: .line 197
            aload 1 /* rawType */
            astore 2 /* result */
        start local 2 // java.lang.Class result
         2: .line 198
            aload 2 /* result */
            areturn
        end local 2 // java.lang.Class result
        end local 1 // java.lang.Class rawType
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lcom/google/common/reflect/TypeToken<TT;>;
            1    3     1  rawType  Ljava/lang/Class<*>;
            2    3     2   result  Ljava/lang/Class<-TT;>;
    Signature: ()Ljava/lang/Class<-TT;>;

  public final java.lang.reflect.Type getType();
    descriptor: ()Ljava/lang/reflect/Type;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.reflect.TypeToken this
         0: .line 203
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            areturn
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/reflect/TypeToken<TT;>;

  public final <X> com.google.common.reflect.TypeToken<T> where(com.google.common.reflect.TypeParameter<X>, com.google.common.reflect.TypeToken<X>);
    descriptor: (Lcom/google/common/reflect/TypeParameter;Lcom/google/common/reflect/TypeToken;)Lcom/google/common/reflect/TypeToken;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // com.google.common.reflect.TypeParameter typeParam
        start local 2 // com.google.common.reflect.TypeToken typeArg
         0: .line 226
            new com.google.common.reflect.TypeResolver
            dup
            invokespecial com.google.common.reflect.TypeResolver.<init>:()V
         1: .line 229
            new com.google.common.reflect.TypeResolver$TypeVariableKey
            dup
            aload 1 /* typeParam */
            getfield com.google.common.reflect.TypeParameter.typeVariable:Ljava/lang/reflect/TypeVariable;
            invokespecial com.google.common.reflect.TypeResolver$TypeVariableKey.<init>:(Ljava/lang/reflect/TypeVariable;)V
            aload 2 /* typeArg */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
         2: .line 228
            invokestatic com.google.common.collect.ImmutableMap.of:(Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableMap;
         3: .line 227
            invokevirtual com.google.common.reflect.TypeResolver.where:(Ljava/util/Map;)Lcom/google/common/reflect/TypeResolver;
         4: .line 225
            astore 3 /* resolver */
        start local 3 // com.google.common.reflect.TypeResolver resolver
         5: .line 231
            new com.google.common.reflect.TypeToken$SimpleTypeToken
            dup
            aload 3 /* resolver */
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            invokevirtual com.google.common.reflect.TypeResolver.resolveType:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
            invokespecial com.google.common.reflect.TypeToken$SimpleTypeToken.<init>:(Ljava/lang/reflect/Type;)V
            areturn
        end local 3 // com.google.common.reflect.TypeResolver resolver
        end local 2 // com.google.common.reflect.TypeToken typeArg
        end local 1 // com.google.common.reflect.TypeParameter typeParam
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Lcom/google/common/reflect/TypeToken<TT;>;
            0    6     1  typeParam  Lcom/google/common/reflect/TypeParameter<TX;>;
            0    6     2    typeArg  Lcom/google/common/reflect/TypeToken<TX;>;
            5    6     3   resolver  Lcom/google/common/reflect/TypeResolver;
    Signature: <X:Ljava/lang/Object;>(Lcom/google/common/reflect/TypeParameter<TX;>;Lcom/google/common/reflect/TypeToken<TX;>;)Lcom/google/common/reflect/TypeToken<TT;>;
    MethodParameters:
           Name  Flags
      typeParam  
      typeArg    

  public final <X> com.google.common.reflect.TypeToken<T> where(com.google.common.reflect.TypeParameter<X>, java.lang.Class<X>);
    descriptor: (Lcom/google/common/reflect/TypeParameter;Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // com.google.common.reflect.TypeParameter typeParam
        start local 2 // java.lang.Class typeArg
         0: .line 253
            aload 0 /* this */
            aload 1 /* typeParam */
            aload 2 /* typeArg */
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
            invokevirtual com.google.common.reflect.TypeToken.where:(Lcom/google/common/reflect/TypeParameter;Lcom/google/common/reflect/TypeToken;)Lcom/google/common/reflect/TypeToken;
            areturn
        end local 2 // java.lang.Class typeArg
        end local 1 // com.google.common.reflect.TypeParameter typeParam
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lcom/google/common/reflect/TypeToken<TT;>;
            0    1     1  typeParam  Lcom/google/common/reflect/TypeParameter<TX;>;
            0    1     2    typeArg  Ljava/lang/Class<TX;>;
    Signature: <X:Ljava/lang/Object;>(Lcom/google/common/reflect/TypeParameter<TX;>;Ljava/lang/Class<TX;>;)Lcom/google/common/reflect/TypeToken<TT;>;
    MethodParameters:
           Name  Flags
      typeParam  
      typeArg    

  public final com.google.common.reflect.TypeToken<?> resolveType(java.lang.reflect.Type);
    descriptor: (Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.reflect.Type type
         0: .line 266
            aload 1 /* type */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 269
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.getInvariantTypeResolver:()Lcom/google/common/reflect/TypeResolver;
            aload 1 /* type */
            invokevirtual com.google.common.reflect.TypeResolver.resolveType:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
            areturn
        end local 1 // java.lang.reflect.Type type
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/google/common/reflect/TypeToken<TT;>;
            0    2     1  type  Ljava/lang/reflect/Type;
    Signature: (Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken<*>;
    MethodParameters:
      Name  Flags
      type  

  private com.google.common.reflect.TypeToken<?> resolveSupertype(java.lang.reflect.Type);
    descriptor: (Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.reflect.Type type
         0: .line 273
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.getCovariantTypeResolver:()Lcom/google/common/reflect/TypeResolver;
            aload 1 /* type */
            invokevirtual com.google.common.reflect.TypeResolver.resolveType:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
            astore 2 /* supertype */
        start local 2 // com.google.common.reflect.TypeToken supertype
         1: .line 275
            aload 2 /* supertype */
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.covariantTypeResolver:Lcom/google/common/reflect/TypeResolver;
            putfield com.google.common.reflect.TypeToken.covariantTypeResolver:Lcom/google/common/reflect/TypeResolver;
         2: .line 276
            aload 2 /* supertype */
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.invariantTypeResolver:Lcom/google/common/reflect/TypeResolver;
            putfield com.google.common.reflect.TypeToken.invariantTypeResolver:Lcom/google/common/reflect/TypeResolver;
         3: .line 277
            aload 2 /* supertype */
            areturn
        end local 2 // com.google.common.reflect.TypeToken supertype
        end local 1 // java.lang.reflect.Type type
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lcom/google/common/reflect/TypeToken<TT;>;
            0    4     1       type  Ljava/lang/reflect/Type;
            1    4     2  supertype  Lcom/google/common/reflect/TypeToken<*>;
    Signature: (Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken<*>;
    MethodParameters:
      Name  Flags
      type  

  final com.google.common.reflect.TypeToken<? super T> getGenericSuperclass();
    descriptor: ()Lcom/google/common/reflect/TypeToken;
    flags: (0x0010) ACC_FINAL
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // com.google.common.reflect.TypeToken this
         0: .line 293
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            instanceof java.lang.reflect.TypeVariable
            ifeq 2
         1: .line 295
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            checkcast java.lang.reflect.TypeVariable
            invokeinterface java.lang.reflect.TypeVariable.getBounds:()[Ljava/lang/reflect/Type;
            iconst_0
            aaload
            invokevirtual com.google.common.reflect.TypeToken.boundAsSuperclass:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
            areturn
         2: .line 297
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            instanceof java.lang.reflect.WildcardType
            ifeq 4
         3: .line 299
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            checkcast java.lang.reflect.WildcardType
            invokeinterface java.lang.reflect.WildcardType.getUpperBounds:()[Ljava/lang/reflect/Type;
            iconst_0
            aaload
            invokevirtual com.google.common.reflect.TypeToken.boundAsSuperclass:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
            areturn
         4: .line 301
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.getRawType:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getGenericSuperclass:()Ljava/lang/reflect/Type;
            astore 1 /* superclass */
        start local 1 // java.lang.reflect.Type superclass
         5: .line 302
            aload 1 /* superclass */
            ifnonnull 7
         6: .line 303
            aconst_null
            areturn
         7: .line 306
      StackMap locals: java.lang.reflect.Type
      StackMap stack:
            aload 0 /* this */
            aload 1 /* superclass */
            invokevirtual com.google.common.reflect.TypeToken.resolveSupertype:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
            astore 2 /* superToken */
        start local 2 // com.google.common.reflect.TypeToken superToken
         8: .line 307
            aload 2 /* superToken */
            areturn
        end local 2 // com.google.common.reflect.TypeToken superToken
        end local 1 // java.lang.reflect.Type superclass
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lcom/google/common/reflect/TypeToken<TT;>;
            5    9     1  superclass  Ljava/lang/reflect/Type;
            8    9     2  superToken  Lcom/google/common/reflect/TypeToken<-TT;>;
    Signature: ()Lcom/google/common/reflect/TypeToken<-TT;>;
    RuntimeVisibleTypeAnnotations: 
      METHOD_RETURN
        org.checkerframework.checker.nullness.qual.Nullable()

  private com.google.common.reflect.TypeToken<? super T> boundAsSuperclass(java.lang.reflect.Type);
    descriptor: (Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=4, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.reflect.Type bound
         0: .line 311
            aload 1 /* bound */
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
            astore 2 /* token */
        start local 2 // com.google.common.reflect.TypeToken token
         1: .line 312
            aload 2 /* token */
            invokevirtual com.google.common.reflect.TypeToken.getRawType:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isInterface:()Z
            ifeq 3
         2: .line 313
            aconst_null
            areturn
         3: .line 316
      StackMap locals: com.google.common.reflect.TypeToken
      StackMap stack:
            aload 2 /* token */
            astore 3 /* superclass */
        start local 3 // com.google.common.reflect.TypeToken superclass
         4: .line 317
            aload 3 /* superclass */
            areturn
        end local 3 // com.google.common.reflect.TypeToken superclass
        end local 2 // com.google.common.reflect.TypeToken token
        end local 1 // java.lang.reflect.Type bound
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lcom/google/common/reflect/TypeToken<TT;>;
            0    5     1       bound  Ljava/lang/reflect/Type;
            1    5     2       token  Lcom/google/common/reflect/TypeToken<*>;
            4    5     3  superclass  Lcom/google/common/reflect/TypeToken<-TT;>;
    Signature: (Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken<-TT;>;
    RuntimeVisibleTypeAnnotations: 
      METHOD_RETURN
        org.checkerframework.checker.nullness.qual.Nullable()
    MethodParameters:
       Name  Flags
      bound  

  final com.google.common.collect.ImmutableList<com.google.common.reflect.TypeToken<? super T>> getGenericInterfaces();
    descriptor: ()Lcom/google/common/collect/ImmutableList;
    flags: (0x0010) ACC_FINAL
    Code:
      stack=2, locals=7, args_size=1
        start local 0 // com.google.common.reflect.TypeToken this
         0: .line 333
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            instanceof java.lang.reflect.TypeVariable
            ifeq 2
         1: .line 334
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            checkcast java.lang.reflect.TypeVariable
            invokeinterface java.lang.reflect.TypeVariable.getBounds:()[Ljava/lang/reflect/Type;
            invokevirtual com.google.common.reflect.TypeToken.boundsAsInterfaces:([Ljava/lang/reflect/Type;)Lcom/google/common/collect/ImmutableList;
            areturn
         2: .line 336
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            instanceof java.lang.reflect.WildcardType
            ifeq 4
         3: .line 337
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            checkcast java.lang.reflect.WildcardType
            invokeinterface java.lang.reflect.WildcardType.getUpperBounds:()[Ljava/lang/reflect/Type;
            invokevirtual com.google.common.reflect.TypeToken.boundsAsInterfaces:([Ljava/lang/reflect/Type;)Lcom/google/common/collect/ImmutableList;
            areturn
         4: .line 339
      StackMap locals:
      StackMap stack:
            invokestatic com.google.common.collect.ImmutableList.builder:()Lcom/google/common/collect/ImmutableList$Builder;
            astore 1 /* builder */
        start local 1 // com.google.common.collect.ImmutableList$Builder builder
         5: .line 340
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.getRawType:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getGenericInterfaces:()[Ljava/lang/reflect/Type;
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 11
      StackMap locals: com.google.common.reflect.TypeToken com.google.common.collect.ImmutableList$Builder top int int java.lang.reflect.Type[]
      StackMap stack:
         6: aload 5
            iload 3
            aaload
            astore 2 /* interfaceType */
        start local 2 // java.lang.reflect.Type interfaceType
         7: .line 343
            aload 0 /* this */
            aload 2 /* interfaceType */
            invokevirtual com.google.common.reflect.TypeToken.resolveSupertype:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
         8: .line 342
            astore 6 /* resolvedInterface */
        start local 6 // com.google.common.reflect.TypeToken resolvedInterface
         9: .line 344
            aload 1 /* builder */
            aload 6 /* resolvedInterface */
            invokevirtual com.google.common.collect.ImmutableList$Builder.add:(Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList$Builder;
            pop
        end local 6 // com.google.common.reflect.TypeToken resolvedInterface
        end local 2 // java.lang.reflect.Type interfaceType
        10: .line 340
            iinc 3 1
      StackMap locals:
      StackMap stack:
        11: iload 3
            iload 4
            if_icmplt 6
        12: .line 346
            aload 1 /* builder */
            invokevirtual com.google.common.collect.ImmutableList$Builder.build:()Lcom/google/common/collect/ImmutableList;
            areturn
        end local 1 // com.google.common.collect.ImmutableList$Builder builder
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   13     0               this  Lcom/google/common/reflect/TypeToken<TT;>;
            5   13     1            builder  Lcom/google/common/collect/ImmutableList$Builder<Lcom/google/common/reflect/TypeToken<-TT;>;>;
            7   10     2      interfaceType  Ljava/lang/reflect/Type;
            9   10     6  resolvedInterface  Lcom/google/common/reflect/TypeToken<-TT;>;
    Signature: ()Lcom/google/common/collect/ImmutableList<Lcom/google/common/reflect/TypeToken<-TT;>;>;

  private com.google.common.collect.ImmutableList<com.google.common.reflect.TypeToken<? super T>> boundsAsInterfaces(java.lang.reflect.Type[]);
    descriptor: ([Ljava/lang/reflect/Type;)Lcom/google/common/collect/ImmutableList;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=8, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.reflect.Type[] bounds
         0: .line 350
            invokestatic com.google.common.collect.ImmutableList.builder:()Lcom/google/common/collect/ImmutableList$Builder;
            astore 2 /* builder */
        start local 2 // com.google.common.collect.ImmutableList$Builder builder
         1: .line 351
            aload 1 /* bounds */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 7
      StackMap locals: com.google.common.reflect.TypeToken java.lang.reflect.Type[] com.google.common.collect.ImmutableList$Builder top int int java.lang.reflect.Type[]
      StackMap stack:
         2: aload 6
            iload 4
            aaload
            astore 3 /* bound */
        start local 3 // java.lang.reflect.Type bound
         3: .line 353
            aload 3 /* bound */
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
            astore 7 /* boundType */
        start local 7 // com.google.common.reflect.TypeToken boundType
         4: .line 354
            aload 7 /* boundType */
            invokevirtual com.google.common.reflect.TypeToken.getRawType:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isInterface:()Z
            ifeq 6
         5: .line 355
            aload 2 /* builder */
            aload 7 /* boundType */
            invokevirtual com.google.common.collect.ImmutableList$Builder.add:(Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList$Builder;
            pop
        end local 7 // com.google.common.reflect.TypeToken boundType
        end local 3 // java.lang.reflect.Type bound
         6: .line 351
      StackMap locals:
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
         7: iload 4
            iload 5
            if_icmplt 2
         8: .line 358
            aload 2 /* builder */
            invokevirtual com.google.common.collect.ImmutableList$Builder.build:()Lcom/google/common/collect/ImmutableList;
            areturn
        end local 2 // com.google.common.collect.ImmutableList$Builder builder
        end local 1 // java.lang.reflect.Type[] bounds
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Lcom/google/common/reflect/TypeToken<TT;>;
            0    9     1     bounds  [Ljava/lang/reflect/Type;
            1    9     2    builder  Lcom/google/common/collect/ImmutableList$Builder<Lcom/google/common/reflect/TypeToken<-TT;>;>;
            3    6     3      bound  Ljava/lang/reflect/Type;
            4    6     7  boundType  Lcom/google/common/reflect/TypeToken<-TT;>;
    Signature: ([Ljava/lang/reflect/Type;)Lcom/google/common/collect/ImmutableList<Lcom/google/common/reflect/TypeToken<-TT;>;>;
    MethodParameters:
        Name  Flags
      bounds  

  public final com.google.common.reflect.TypeToken<T>.TypeSet getTypes();
    descriptor: ()Lcom/google/common/reflect/TypeToken$TypeSet;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.google.common.reflect.TypeToken this
         0: .line 373
            new com.google.common.reflect.TypeToken$TypeSet
            dup
            aload 0 /* this */
            invokespecial com.google.common.reflect.TypeToken$TypeSet.<init>:(Lcom/google/common/reflect/TypeToken;)V
            areturn
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/reflect/TypeToken<TT;>;
    Signature: ()Lcom/google/common/reflect/TypeToken<TT;>.TypeSet;

  public final com.google.common.reflect.TypeToken<? super T> getSupertype(java.lang.Class<? super T>);
    descriptor: (Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.Class superclass
         0: .line 383
            aload 0 /* this */
            aload 1 /* superclass */
            invokevirtual com.google.common.reflect.TypeToken.someRawTypeIsSubclassOf:(Ljava/lang/Class;)Z
         1: .line 384
            ldc "%s is not a super class of %s"
         2: .line 385
            aload 1 /* superclass */
         3: .line 386
            aload 0 /* this */
         4: .line 382
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         5: .line 387
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            instanceof java.lang.reflect.TypeVariable
            ifeq 7
         6: .line 388
            aload 0 /* this */
            aload 1 /* superclass */
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            checkcast java.lang.reflect.TypeVariable
            invokeinterface java.lang.reflect.TypeVariable.getBounds:()[Ljava/lang/reflect/Type;
            invokevirtual com.google.common.reflect.TypeToken.getSupertypeFromUpperBounds:(Ljava/lang/Class;[Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
            areturn
         7: .line 390
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            instanceof java.lang.reflect.WildcardType
            ifeq 9
         8: .line 391
            aload 0 /* this */
            aload 1 /* superclass */
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            checkcast java.lang.reflect.WildcardType
            invokeinterface java.lang.reflect.WildcardType.getUpperBounds:()[Ljava/lang/reflect/Type;
            invokevirtual com.google.common.reflect.TypeToken.getSupertypeFromUpperBounds:(Ljava/lang/Class;[Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
            areturn
         9: .line 393
      StackMap locals:
      StackMap stack:
            aload 1 /* superclass */
            invokevirtual java.lang.Class.isArray:()Z
            ifeq 11
        10: .line 394
            aload 0 /* this */
            aload 1 /* superclass */
            invokevirtual com.google.common.reflect.TypeToken.getArraySupertype:(Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
            areturn
        11: .line 398
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* superclass */
            invokestatic com.google.common.reflect.TypeToken.toGenericType:(Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            invokevirtual com.google.common.reflect.TypeToken.resolveSupertype:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
        12: .line 397
            astore 2 /* supertype */
        start local 2 // com.google.common.reflect.TypeToken supertype
        13: .line 399
            aload 2 /* supertype */
            areturn
        end local 2 // com.google.common.reflect.TypeToken supertype
        end local 1 // java.lang.Class superclass
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   14     0        this  Lcom/google/common/reflect/TypeToken<TT;>;
            0   14     1  superclass  Ljava/lang/Class<-TT;>;
           13   14     2   supertype  Lcom/google/common/reflect/TypeToken<-TT;>;
    Signature: (Ljava/lang/Class<-TT;>;)Lcom/google/common/reflect/TypeToken<-TT;>;
    MethodParameters:
            Name  Flags
      superclass  

  public final com.google.common.reflect.TypeToken<? extends T> getSubtype(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.Class subclass
         0: .line 409
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            instanceof java.lang.reflect.TypeVariable
            ifeq 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
      StackMap locals:
      StackMap stack: int
         2: ldc "Cannot get subtype of type variable <%s>"
            aload 0 /* this */
         3: .line 408
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;Ljava/lang/Object;)V
         4: .line 410
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            instanceof java.lang.reflect.WildcardType
            ifeq 6
         5: .line 411
            aload 0 /* this */
            aload 1 /* subclass */
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            checkcast java.lang.reflect.WildcardType
            invokeinterface java.lang.reflect.WildcardType.getLowerBounds:()[Ljava/lang/reflect/Type;
            invokevirtual com.google.common.reflect.TypeToken.getSubtypeFromLowerBounds:(Ljava/lang/Class;[Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
            areturn
         6: .line 414
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.isArray:()Z
            ifeq 8
         7: .line 415
            aload 0 /* this */
            aload 1 /* subclass */
            invokevirtual com.google.common.reflect.TypeToken.getArraySubtype:(Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
            areturn
         8: .line 419
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.getRawType:()Ljava/lang/Class;
            aload 1 /* subclass */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ldc "%s isn't a subclass of %s"
            aload 1 /* subclass */
            aload 0 /* this */
         9: .line 418
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        10: .line 420
            aload 0 /* this */
            aload 1 /* subclass */
            invokevirtual com.google.common.reflect.TypeToken.resolveTypeArgsForSubclass:(Ljava/lang/Class;)Ljava/lang/reflect/Type;
            astore 2 /* resolvedTypeArgs */
        start local 2 // java.lang.reflect.Type resolvedTypeArgs
        11: .line 422
            aload 2 /* resolvedTypeArgs */
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
            astore 3 /* subtype */
        start local 3 // com.google.common.reflect.TypeToken subtype
        12: .line 424
            aload 3 /* subtype */
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.isSubtypeOf:(Lcom/google/common/reflect/TypeToken;)Z
            ldc "%s does not appear to be a subtype of %s"
            aload 3 /* subtype */
            aload 0 /* this */
        13: .line 423
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        14: .line 425
            aload 3 /* subtype */
            areturn
        end local 3 // com.google.common.reflect.TypeToken subtype
        end local 2 // java.lang.reflect.Type resolvedTypeArgs
        end local 1 // java.lang.Class subclass
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   15     0              this  Lcom/google/common/reflect/TypeToken<TT;>;
            0   15     1          subclass  Ljava/lang/Class<*>;
           11   15     2  resolvedTypeArgs  Ljava/lang/reflect/Type;
           12   15     3           subtype  Lcom/google/common/reflect/TypeToken<+TT;>;
    Signature: (Ljava/lang/Class<*>;)Lcom/google/common/reflect/TypeToken<+TT;>;
    MethodParameters:
          Name  Flags
      subclass  

  public final boolean isSupertypeOf(com.google.common.reflect.TypeToken<?>);
    descriptor: (Lcom/google/common/reflect/TypeToken;)Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // com.google.common.reflect.TypeToken type
         0: .line 437
            aload 1 /* type */
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.getType:()Ljava/lang/reflect/Type;
            invokevirtual com.google.common.reflect.TypeToken.isSubtypeOf:(Ljava/lang/reflect/Type;)Z
            ireturn
        end local 1 // com.google.common.reflect.TypeToken type
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/reflect/TypeToken<TT;>;
            0    1     1  type  Lcom/google/common/reflect/TypeToken<*>;
    Signature: (Lcom/google/common/reflect/TypeToken<*>;)Z
    MethodParameters:
      Name  Flags
      type  

  public final boolean isSupertypeOf(java.lang.reflect.Type);
    descriptor: (Ljava/lang/reflect/Type;)Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.reflect.Type type
         0: .line 449
            aload 1 /* type */
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.getType:()Ljava/lang/reflect/Type;
            invokevirtual com.google.common.reflect.TypeToken.isSubtypeOf:(Ljava/lang/reflect/Type;)Z
            ireturn
        end local 1 // java.lang.reflect.Type type
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/reflect/TypeToken<TT;>;
            0    1     1  type  Ljava/lang/reflect/Type;
    MethodParameters:
      Name  Flags
      type  

  public final boolean isSubtypeOf(com.google.common.reflect.TypeToken<?>);
    descriptor: (Lcom/google/common/reflect/TypeToken;)Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // com.google.common.reflect.TypeToken type
         0: .line 461
            aload 0 /* this */
            aload 1 /* type */
            invokevirtual com.google.common.reflect.TypeToken.getType:()Ljava/lang/reflect/Type;
            invokevirtual com.google.common.reflect.TypeToken.isSubtypeOf:(Ljava/lang/reflect/Type;)Z
            ireturn
        end local 1 // com.google.common.reflect.TypeToken type
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/reflect/TypeToken<TT;>;
            0    1     1  type  Lcom/google/common/reflect/TypeToken<*>;
    Signature: (Lcom/google/common/reflect/TypeToken<*>;)Z
    MethodParameters:
      Name  Flags
      type  

  public final boolean isSubtypeOf(java.lang.reflect.Type);
    descriptor: (Ljava/lang/reflect/Type;)Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.reflect.Type supertype
         0: .line 473
            aload 1 /* supertype */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 474
            aload 1 /* supertype */
            instanceof java.lang.reflect.WildcardType
            ifeq 3
         2: .line 478
            aload 1 /* supertype */
            checkcast java.lang.reflect.WildcardType
            invokeinterface java.lang.reflect.WildcardType.getLowerBounds:()[Ljava/lang/reflect/Type;
            invokestatic com.google.common.reflect.TypeToken.any:([Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken$Bounds;
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            invokevirtual com.google.common.reflect.TypeToken$Bounds.isSupertypeOf:(Ljava/lang/reflect/Type;)Z
            ireturn
         3: .line 482
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            instanceof java.lang.reflect.WildcardType
            ifeq 5
         4: .line 484
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            checkcast java.lang.reflect.WildcardType
            invokeinterface java.lang.reflect.WildcardType.getUpperBounds:()[Ljava/lang/reflect/Type;
            invokestatic com.google.common.reflect.TypeToken.any:([Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken$Bounds;
            aload 1 /* supertype */
            invokevirtual com.google.common.reflect.TypeToken$Bounds.isSubtypeOf:(Ljava/lang/reflect/Type;)Z
            ireturn
         5: .line 488
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            instanceof java.lang.reflect.TypeVariable
            ifeq 10
         6: .line 489
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            aload 1 /* supertype */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifne 9
         7: .line 490
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            checkcast java.lang.reflect.TypeVariable
            invokeinterface java.lang.reflect.TypeVariable.getBounds:()[Ljava/lang/reflect/Type;
            invokestatic com.google.common.reflect.TypeToken.any:([Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken$Bounds;
            aload 1 /* supertype */
            invokevirtual com.google.common.reflect.TypeToken$Bounds.isSubtypeOf:(Ljava/lang/reflect/Type;)Z
            ifne 9
         8: .line 489
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         9: iconst_1
            ireturn
        10: .line 492
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            instanceof java.lang.reflect.GenericArrayType
            ifeq 12
        11: .line 493
            aload 1 /* supertype */
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            checkcast java.lang.reflect.GenericArrayType
            invokevirtual com.google.common.reflect.TypeToken.isSupertypeOfArray:(Ljava/lang/reflect/GenericArrayType;)Z
            ireturn
        12: .line 496
      StackMap locals:
      StackMap stack:
            aload 1 /* supertype */
            instanceof java.lang.Class
            ifeq 14
        13: .line 497
            aload 0 /* this */
            aload 1 /* supertype */
            checkcast java.lang.Class
            invokevirtual com.google.common.reflect.TypeToken.someRawTypeIsSubclassOf:(Ljava/lang/Class;)Z
            ireturn
        14: .line 498
      StackMap locals:
      StackMap stack:
            aload 1 /* supertype */
            instanceof java.lang.reflect.ParameterizedType
            ifeq 16
        15: .line 499
            aload 0 /* this */
            aload 1 /* supertype */
            checkcast java.lang.reflect.ParameterizedType
            invokevirtual com.google.common.reflect.TypeToken.isSubtypeOfParameterizedType:(Ljava/lang/reflect/ParameterizedType;)Z
            ireturn
        16: .line 500
      StackMap locals:
      StackMap stack:
            aload 1 /* supertype */
            instanceof java.lang.reflect.GenericArrayType
            ifeq 18
        17: .line 501
            aload 0 /* this */
            aload 1 /* supertype */
            checkcast java.lang.reflect.GenericArrayType
            invokevirtual com.google.common.reflect.TypeToken.isSubtypeOfArrayType:(Ljava/lang/reflect/GenericArrayType;)Z
            ireturn
        18: .line 503
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // java.lang.reflect.Type supertype
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   19     0       this  Lcom/google/common/reflect/TypeToken<TT;>;
            0   19     1  supertype  Ljava/lang/reflect/Type;
    MethodParameters:
           Name  Flags
      supertype  

  public final boolean isArray();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.reflect.TypeToken this
         0: .line 512
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.getComponentType:()Lcom/google/common/reflect/TypeToken;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/google/common/reflect/TypeToken<TT;>;

  public final boolean isPrimitive();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.reflect.TypeToken this
         0: .line 521
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            instanceof java.lang.Class
            ifeq 1
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            checkcast java.lang.Class
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/google/common/reflect/TypeToken<TT;>;

  public final com.google.common.reflect.TypeToken<T> wrap();
    descriptor: ()Lcom/google/common/reflect/TypeToken;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // com.google.common.reflect.TypeToken this
         0: .line 531
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.isPrimitive:()Z
            ifeq 3
         1: .line 533
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            checkcast java.lang.Class
            astore 1 /* type */
        start local 1 // java.lang.Class type
         2: .line 534
            aload 1 /* type */
            invokestatic com.google.common.primitives.Primitives.wrap:(Ljava/lang/Class;)Ljava/lang/Class;
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
            areturn
        end local 1 // java.lang.Class type
         3: .line 536
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/google/common/reflect/TypeToken<TT;>;
            2    3     1  type  Ljava/lang/Class<TT;>;
    Signature: ()Lcom/google/common/reflect/TypeToken<TT;>;

  private boolean isWrapper();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.common.reflect.TypeToken this
         0: .line 540
            invokestatic com.google.common.primitives.Primitives.allWrapperTypes:()Ljava/util/Set;
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ireturn
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/reflect/TypeToken<TT;>;

  public final com.google.common.reflect.TypeToken<T> unwrap();
    descriptor: ()Lcom/google/common/reflect/TypeToken;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // com.google.common.reflect.TypeToken this
         0: .line 550
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.isWrapper:()Z
            ifeq 3
         1: .line 552
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            checkcast java.lang.Class
            astore 1 /* type */
        start local 1 // java.lang.Class type
         2: .line 553
            aload 1 /* type */
            invokestatic com.google.common.primitives.Primitives.unwrap:(Ljava/lang/Class;)Ljava/lang/Class;
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
            areturn
        end local 1 // java.lang.Class type
         3: .line 555
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/google/common/reflect/TypeToken<TT;>;
            2    3     1  type  Ljava/lang/Class<TT;>;
    Signature: ()Lcom/google/common/reflect/TypeToken<TT;>;

  public final com.google.common.reflect.TypeToken<?> getComponentType();
    descriptor: ()Lcom/google/common/reflect/TypeToken;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // com.google.common.reflect.TypeToken this
         0: .line 563
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            invokestatic com.google.common.reflect.Types.getComponentType:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
            astore 1 /* componentType */
        start local 1 // java.lang.reflect.Type componentType
         1: .line 564
            aload 1 /* componentType */
            ifnonnull 3
         2: .line 565
            aconst_null
            areturn
         3: .line 567
      StackMap locals: java.lang.reflect.Type
      StackMap stack:
            aload 1 /* componentType */
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
            areturn
        end local 1 // java.lang.reflect.Type componentType
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lcom/google/common/reflect/TypeToken<TT;>;
            1    4     1  componentType  Ljava/lang/reflect/Type;
    Signature: ()Lcom/google/common/reflect/TypeToken<*>;
    RuntimeVisibleTypeAnnotations: 
      METHOD_RETURN
        org.checkerframework.checker.nullness.qual.Nullable()

  public final com.google.common.reflect.Invokable<T, java.lang.Object> method(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)Lcom/google/common/reflect/Invokable;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.reflect.Method method
         0: .line 577
            aload 0 /* this */
            aload 1 /* method */
            invokevirtual java.lang.reflect.Method.getDeclaringClass:()Ljava/lang/Class;
            invokevirtual com.google.common.reflect.TypeToken.someRawTypeIsSubclassOf:(Ljava/lang/Class;)Z
         1: .line 578
            ldc "%s not declared by %s"
         2: .line 579
            aload 1 /* method */
         3: .line 580
            aload 0 /* this */
         4: .line 576
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         5: .line 581
            new com.google.common.reflect.TypeToken$1
            dup
            aload 0 /* this */
            aload 1 /* method */
            invokespecial com.google.common.reflect.TypeToken$1.<init>:(Lcom/google/common/reflect/TypeToken;Ljava/lang/reflect/Method;)V
            areturn
        end local 1 // java.lang.reflect.Method method
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lcom/google/common/reflect/TypeToken<TT;>;
            0    6     1  method  Ljava/lang/reflect/Method;
    Signature: (Ljava/lang/reflect/Method;)Lcom/google/common/reflect/Invokable<TT;Ljava/lang/Object;>;
    MethodParameters:
        Name  Flags
      method  

  public final com.google.common.reflect.Invokable<T, T> constructor(java.lang.reflect.Constructor<?>);
    descriptor: (Ljava/lang/reflect/Constructor;)Lcom/google/common/reflect/Invokable;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.reflect.Constructor constructor
         0: .line 616
            aload 1 /* constructor */
            invokevirtual java.lang.reflect.Constructor.getDeclaringClass:()Ljava/lang/Class;
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.getRawType:()Ljava/lang/Class;
            if_acmpne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
         2: .line 617
      StackMap locals:
      StackMap stack: int
            ldc "%s not declared by %s"
         3: .line 618
            aload 1 /* constructor */
         4: .line 619
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.getRawType:()Ljava/lang/Class;
         5: .line 615
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         6: .line 620
            new com.google.common.reflect.TypeToken$2
            dup
            aload 0 /* this */
            aload 1 /* constructor */
            invokespecial com.google.common.reflect.TypeToken$2.<init>:(Lcom/google/common/reflect/TypeToken;Ljava/lang/reflect/Constructor;)V
            areturn
        end local 1 // java.lang.reflect.Constructor constructor
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0         this  Lcom/google/common/reflect/TypeToken<TT;>;
            0    7     1  constructor  Ljava/lang/reflect/Constructor<*>;
    Signature: (Ljava/lang/reflect/Constructor<*>;)Lcom/google/common/reflect/Invokable<TT;TT;>;
    MethodParameters:
             Name  Flags
      constructor  

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.Object o
         0: .line 821
            aload 1 /* o */
            instanceof com.google.common.reflect.TypeToken
            ifeq 3
         1: .line 822
            aload 1 /* o */
            checkcast com.google.common.reflect.TypeToken
            astore 2 /* that */
        start local 2 // com.google.common.reflect.TypeToken that
         2: .line 823
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            aload 2 /* that */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ireturn
        end local 2 // com.google.common.reflect.TypeToken that
         3: .line 825
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // java.lang.Object o
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/google/common/reflect/TypeToken<TT;>;
            0    4     1     o  Ljava/lang/Object;
            2    3     2  that  Lcom/google/common/reflect/TypeToken<*>;
    RuntimeVisibleTypeAnnotations: 
      METHOD_FORMAL_PARAMETER
        org.checkerframework.checker.nullness.qual.Nullable()
    MethodParameters:
      Name  Flags
      o     

  public int hashCode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.reflect.TypeToken this
         0: .line 830
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            invokevirtual java.lang.Object.hashCode:()I
            ireturn
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/reflect/TypeToken<TT;>;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.reflect.TypeToken this
         0: .line 835
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            invokestatic com.google.common.reflect.Types.toString:(Ljava/lang/reflect/Type;)Ljava/lang/String;
            areturn
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/reflect/TypeToken<TT;>;

  protected java.lang.Object writeReplace();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.common.reflect.TypeToken this
         0: .line 842
            new com.google.common.reflect.TypeResolver
            dup
            invokespecial com.google.common.reflect.TypeResolver.<init>:()V
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            invokevirtual com.google.common.reflect.TypeResolver.resolveType:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
            areturn
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/reflect/TypeToken<TT;>;

  final com.google.common.reflect.TypeToken<T> rejectTypeVariables();
    descriptor: ()Lcom/google/common/reflect/TypeToken;
    flags: (0x0010) ACC_FINAL
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.google.common.reflect.TypeToken this
         0: .line 851
            new com.google.common.reflect.TypeToken$3
            dup
            aload 0 /* this */
            invokespecial com.google.common.reflect.TypeToken$3.<init>:(Lcom/google/common/reflect/TypeToken;)V
            iconst_1
            anewarray java.lang.reflect.Type
            dup
            iconst_0
         1: .line 874
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            aastore
            invokevirtual com.google.common.reflect.TypeToken$3.visit:([Ljava/lang/reflect/Type;)V
         2: .line 875
            aload 0 /* this */
            areturn
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/google/common/reflect/TypeToken<TT;>;
    Signature: ()Lcom/google/common/reflect/TypeToken<TT;>;
    RuntimeInvisibleAnnotations: 
      com.google.errorprone.annotations.CanIgnoreReturnValue()

  private boolean someRawTypeIsSubclassOf(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.Class superclass
         0: .line 879
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.getRawTypes:()Lcom/google/common/collect/ImmutableSet;
            invokevirtual com.google.common.collect.ImmutableSet.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: com.google.common.reflect.TypeToken java.lang.Class top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Class
            astore 2 /* rawType */
        start local 2 // java.lang.Class rawType
         2: .line 880
            aload 1 /* superclass */
            aload 2 /* rawType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 4
         3: .line 881
            iconst_1
            ireturn
        end local 2 // java.lang.Class rawType
         4: .line 879
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         5: .line 884
            iconst_0
            ireturn
        end local 1 // java.lang.Class superclass
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0        this  Lcom/google/common/reflect/TypeToken<TT;>;
            0    6     1  superclass  Ljava/lang/Class<*>;
            2    4     2     rawType  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Z
    MethodParameters:
            Name  Flags
      superclass  

  private boolean isSubtypeOfParameterizedType(java.lang.reflect.ParameterizedType);
    descriptor: (Ljava/lang/reflect/ParameterizedType;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.reflect.ParameterizedType supertype
         0: .line 888
            aload 1 /* supertype */
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
            invokevirtual com.google.common.reflect.TypeToken.getRawType:()Ljava/lang/Class;
            astore 2 /* matchedClass */
        start local 2 // java.lang.Class matchedClass
         1: .line 889
            aload 0 /* this */
            aload 2 /* matchedClass */
            invokevirtual com.google.common.reflect.TypeToken.someRawTypeIsSubclassOf:(Ljava/lang/Class;)Z
            ifne 3
         2: .line 890
            iconst_0
            ireturn
         3: .line 892
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 2 /* matchedClass */
            invokevirtual java.lang.Class.getTypeParameters:()[Ljava/lang/reflect/TypeVariable;
            astore 3 /* typeVars */
        start local 3 // java.lang.reflect.TypeVariable[] typeVars
         4: .line 893
            aload 1 /* supertype */
            invokeinterface java.lang.reflect.ParameterizedType.getActualTypeArguments:()[Ljava/lang/reflect/Type;
            astore 4 /* supertypeArgs */
        start local 4 // java.lang.reflect.Type[] supertypeArgs
         5: .line 894
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         6: goto 11
         7: .line 895
      StackMap locals: java.lang.reflect.TypeVariable[] java.lang.reflect.Type[] int
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.getCovariantTypeResolver:()Lcom/google/common/reflect/TypeResolver;
            aload 3 /* typeVars */
            iload 5 /* i */
            aaload
            invokevirtual com.google.common.reflect.TypeResolver.resolveType:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
            astore 6 /* subtypeParam */
        start local 6 // java.lang.reflect.Type subtypeParam
         8: .line 900
            aload 6 /* subtypeParam */
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
            aload 4 /* supertypeArgs */
            iload 5 /* i */
            aaload
            aload 3 /* typeVars */
            iload 5 /* i */
            aaload
            invokevirtual com.google.common.reflect.TypeToken.is:(Ljava/lang/reflect/Type;Ljava/lang/reflect/TypeVariable;)Z
            ifne 10
         9: .line 901
            iconst_0
            ireturn
        end local 6 // java.lang.reflect.Type subtypeParam
        10: .line 894
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 5 /* i */
            aload 3 /* typeVars */
            arraylength
            if_icmplt 7
        end local 5 // int i
        12: .line 907
            aload 1 /* supertype */
            invokeinterface java.lang.reflect.ParameterizedType.getRawType:()Ljava/lang/reflect/Type;
            checkcast java.lang.Class
            invokevirtual java.lang.Class.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isStatic:(I)Z
            ifne 16
        13: .line 908
            aload 1 /* supertype */
            invokeinterface java.lang.reflect.ParameterizedType.getOwnerType:()Ljava/lang/reflect/Type;
            ifnull 16
        14: .line 909
            aload 0 /* this */
            aload 1 /* supertype */
            invokeinterface java.lang.reflect.ParameterizedType.getOwnerType:()Ljava/lang/reflect/Type;
            invokevirtual com.google.common.reflect.TypeToken.isOwnedBySubtypeOf:(Ljava/lang/reflect/Type;)Z
            ifne 16
        15: .line 907
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
        16: iconst_1
            ireturn
        end local 4 // java.lang.reflect.Type[] supertypeArgs
        end local 3 // java.lang.reflect.TypeVariable[] typeVars
        end local 2 // java.lang.Class matchedClass
        end local 1 // java.lang.reflect.ParameterizedType supertype
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   17     0           this  Lcom/google/common/reflect/TypeToken<TT;>;
            0   17     1      supertype  Ljava/lang/reflect/ParameterizedType;
            1   17     2   matchedClass  Ljava/lang/Class<*>;
            4   17     3       typeVars  [Ljava/lang/reflect/TypeVariable;
            5   17     4  supertypeArgs  [Ljava/lang/reflect/Type;
            6   12     5              i  I
            8   10     6   subtypeParam  Ljava/lang/reflect/Type;
    MethodParameters:
           Name  Flags
      supertype  

  private boolean isSubtypeOfArrayType(java.lang.reflect.GenericArrayType);
    descriptor: (Ljava/lang/reflect/GenericArrayType;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.reflect.GenericArrayType supertype
         0: .line 913
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            instanceof java.lang.Class
            ifeq 5
         1: .line 914
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            checkcast java.lang.Class
            astore 2 /* fromClass */
        start local 2 // java.lang.Class fromClass
         2: .line 915
            aload 2 /* fromClass */
            invokevirtual java.lang.Class.isArray:()Z
            ifne 4
         3: .line 916
            iconst_0
            ireturn
         4: .line 918
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 2 /* fromClass */
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
            aload 1 /* supertype */
            invokeinterface java.lang.reflect.GenericArrayType.getGenericComponentType:()Ljava/lang/reflect/Type;
            invokevirtual com.google.common.reflect.TypeToken.isSubtypeOf:(Ljava/lang/reflect/Type;)Z
            ireturn
        end local 2 // java.lang.Class fromClass
         5: .line 919
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            instanceof java.lang.reflect.GenericArrayType
            ifeq 10
         6: .line 920
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            checkcast java.lang.reflect.GenericArrayType
            astore 2 /* fromArrayType */
        start local 2 // java.lang.reflect.GenericArrayType fromArrayType
         7: .line 921
            aload 2 /* fromArrayType */
            invokeinterface java.lang.reflect.GenericArrayType.getGenericComponentType:()Ljava/lang/reflect/Type;
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
         8: .line 922
            aload 1 /* supertype */
            invokeinterface java.lang.reflect.GenericArrayType.getGenericComponentType:()Ljava/lang/reflect/Type;
            invokevirtual com.google.common.reflect.TypeToken.isSubtypeOf:(Ljava/lang/reflect/Type;)Z
         9: .line 921
            ireturn
        end local 2 // java.lang.reflect.GenericArrayType fromArrayType
        10: .line 924
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // java.lang.reflect.GenericArrayType supertype
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   11     0           this  Lcom/google/common/reflect/TypeToken<TT;>;
            0   11     1      supertype  Ljava/lang/reflect/GenericArrayType;
            2    5     2      fromClass  Ljava/lang/Class<*>;
            7   10     2  fromArrayType  Ljava/lang/reflect/GenericArrayType;
    MethodParameters:
           Name  Flags
      supertype  

  private boolean isSupertypeOfArray(java.lang.reflect.GenericArrayType);
    descriptor: (Ljava/lang/reflect/GenericArrayType;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.reflect.GenericArrayType subtype
         0: .line 929
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            instanceof java.lang.Class
            ifeq 5
         1: .line 930
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            checkcast java.lang.Class
            astore 2 /* thisClass */
        start local 2 // java.lang.Class thisClass
         2: .line 931
            aload 2 /* thisClass */
            invokevirtual java.lang.Class.isArray:()Z
            ifne 4
         3: .line 932
            aload 2 /* thisClass */
            ldc [Ljava/lang/Object;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ireturn
         4: .line 934
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 1 /* subtype */
            invokeinterface java.lang.reflect.GenericArrayType.getGenericComponentType:()Ljava/lang/reflect/Type;
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
            aload 2 /* thisClass */
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            invokevirtual com.google.common.reflect.TypeToken.isSubtypeOf:(Ljava/lang/reflect/Type;)Z
            ireturn
        end local 2 // java.lang.Class thisClass
         5: .line 935
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            instanceof java.lang.reflect.GenericArrayType
            ifeq 9
         6: .line 936
            aload 1 /* subtype */
            invokeinterface java.lang.reflect.GenericArrayType.getGenericComponentType:()Ljava/lang/reflect/Type;
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
         7: .line 937
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            checkcast java.lang.reflect.GenericArrayType
            invokeinterface java.lang.reflect.GenericArrayType.getGenericComponentType:()Ljava/lang/reflect/Type;
            invokevirtual com.google.common.reflect.TypeToken.isSubtypeOf:(Ljava/lang/reflect/Type;)Z
         8: .line 936
            ireturn
         9: .line 939
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // java.lang.reflect.GenericArrayType subtype
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0       this  Lcom/google/common/reflect/TypeToken<TT;>;
            0   10     1    subtype  Ljava/lang/reflect/GenericArrayType;
            2    5     2  thisClass  Ljava/lang/Class<*>;
    MethodParameters:
         Name  Flags
      subtype  

  private boolean is(java.lang.reflect.Type, java.lang.reflect.TypeVariable<?>);
    descriptor: (Ljava/lang/reflect/Type;Ljava/lang/reflect/TypeVariable;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.reflect.Type formalType
        start local 2 // java.lang.reflect.TypeVariable declaration
         0: .line 969
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            aload 1 /* formalType */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 970
            iconst_1
            ireturn
         2: .line 972
      StackMap locals:
      StackMap stack:
            aload 1 /* formalType */
            instanceof java.lang.reflect.WildcardType
            ifeq 8
         3: .line 973
            aload 2 /* declaration */
            aload 1 /* formalType */
            checkcast java.lang.reflect.WildcardType
            invokestatic com.google.common.reflect.TypeToken.canonicalizeWildcardType:(Ljava/lang/reflect/TypeVariable;Ljava/lang/reflect/WildcardType;)Ljava/lang/reflect/WildcardType;
            astore 3 /* your */
        start local 3 // java.lang.reflect.WildcardType your
         4: .line 979
            aload 3 /* your */
            invokeinterface java.lang.reflect.WildcardType.getUpperBounds:()[Ljava/lang/reflect/Type;
            invokestatic com.google.common.reflect.TypeToken.every:([Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken$Bounds;
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            invokevirtual com.google.common.reflect.TypeToken$Bounds.isSupertypeOf:(Ljava/lang/reflect/Type;)Z
            ifeq 7
         5: .line 980
            aload 3 /* your */
            invokeinterface java.lang.reflect.WildcardType.getLowerBounds:()[Ljava/lang/reflect/Type;
            invokestatic com.google.common.reflect.TypeToken.every:([Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken$Bounds;
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            invokevirtual com.google.common.reflect.TypeToken$Bounds.isSubtypeOf:(Ljava/lang/reflect/Type;)Z
            ifeq 7
         6: .line 979
            iconst_1
            ireturn
      StackMap locals: java.lang.reflect.WildcardType
      StackMap stack:
         7: iconst_0
            ireturn
        end local 3 // java.lang.reflect.WildcardType your
         8: .line 982
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            invokestatic com.google.common.reflect.TypeToken.canonicalizeWildcardsInType:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
         9: .line 983
            aload 1 /* formalType */
            invokestatic com.google.common.reflect.TypeToken.canonicalizeWildcardsInType:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
        10: .line 982
            ireturn
        end local 2 // java.lang.reflect.TypeVariable declaration
        end local 1 // java.lang.reflect.Type formalType
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   11     0         this  Lcom/google/common/reflect/TypeToken<TT;>;
            0   11     1   formalType  Ljava/lang/reflect/Type;
            0   11     2  declaration  Ljava/lang/reflect/TypeVariable<*>;
            4    8     3         your  Ljava/lang/reflect/WildcardType;
    Signature: (Ljava/lang/reflect/Type;Ljava/lang/reflect/TypeVariable<*>;)Z
    MethodParameters:
             Name  Flags
      formalType   
      declaration  

  private static java.lang.reflect.Type canonicalizeTypeArg(java.lang.reflect.TypeVariable<?>, java.lang.reflect.Type);
    descriptor: (Ljava/lang/reflect/TypeVariable;Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.reflect.TypeVariable declaration
        start local 1 // java.lang.reflect.Type typeArg
         0: .line 1004
            aload 1 /* typeArg */
            instanceof java.lang.reflect.WildcardType
            ifeq 2
         1: .line 1005
            aload 0 /* declaration */
            aload 1 /* typeArg */
            checkcast java.lang.reflect.WildcardType
            invokestatic com.google.common.reflect.TypeToken.canonicalizeWildcardType:(Ljava/lang/reflect/TypeVariable;Ljava/lang/reflect/WildcardType;)Ljava/lang/reflect/WildcardType;
            goto 3
         2: .line 1006
      StackMap locals:
      StackMap stack:
            aload 1 /* typeArg */
            invokestatic com.google.common.reflect.TypeToken.canonicalizeWildcardsInType:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
         3: .line 1004
      StackMap locals:
      StackMap stack: java.lang.reflect.Type
            areturn
        end local 1 // java.lang.reflect.Type typeArg
        end local 0 // java.lang.reflect.TypeVariable declaration
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0  declaration  Ljava/lang/reflect/TypeVariable<*>;
            0    4     1      typeArg  Ljava/lang/reflect/Type;
    Signature: (Ljava/lang/reflect/TypeVariable<*>;Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
    MethodParameters:
             Name  Flags
      declaration  
      typeArg      

  private static java.lang.reflect.Type canonicalizeWildcardsInType(java.lang.reflect.Type);
    descriptor: (Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.reflect.Type type
         0: .line 1010
            aload 0 /* type */
            instanceof java.lang.reflect.ParameterizedType
            ifeq 2
         1: .line 1011
            aload 0 /* type */
            checkcast java.lang.reflect.ParameterizedType
            invokestatic com.google.common.reflect.TypeToken.canonicalizeWildcardsInParameterizedType:(Ljava/lang/reflect/ParameterizedType;)Ljava/lang/reflect/ParameterizedType;
            areturn
         2: .line 1013
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            instanceof java.lang.reflect.GenericArrayType
            ifeq 5
         3: .line 1015
            aload 0 /* type */
            checkcast java.lang.reflect.GenericArrayType
            invokeinterface java.lang.reflect.GenericArrayType.getGenericComponentType:()Ljava/lang/reflect/Type;
            invokestatic com.google.common.reflect.TypeToken.canonicalizeWildcardsInType:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
         4: .line 1014
            invokestatic com.google.common.reflect.Types.newArrayType:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
            areturn
         5: .line 1017
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            areturn
        end local 0 // java.lang.reflect.Type type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  type  Ljava/lang/reflect/Type;
    MethodParameters:
      Name  Flags
      type  

  private static java.lang.reflect.WildcardType canonicalizeWildcardType(java.lang.reflect.TypeVariable<?>, java.lang.reflect.WildcardType);
    descriptor: (Ljava/lang/reflect/TypeVariable;Ljava/lang/reflect/WildcardType;)Ljava/lang/reflect/WildcardType;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=8, args_size=2
        start local 0 // java.lang.reflect.TypeVariable declaration
        start local 1 // java.lang.reflect.WildcardType type
         0: .line 1025
            aload 0 /* declaration */
            invokeinterface java.lang.reflect.TypeVariable.getBounds:()[Ljava/lang/reflect/Type;
            astore 2 /* declared */
        start local 2 // java.lang.reflect.Type[] declared
         1: .line 1026
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* upperBounds */
        start local 3 // java.util.List upperBounds
         2: .line 1027
            aload 1 /* type */
            invokeinterface java.lang.reflect.WildcardType.getUpperBounds:()[Ljava/lang/reflect/Type;
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 7
      StackMap locals: java.lang.reflect.TypeVariable java.lang.reflect.WildcardType java.lang.reflect.Type[] java.util.List top int int java.lang.reflect.Type[]
      StackMap stack:
         3: aload 7
            iload 5
            aaload
            astore 4 /* bound */
        start local 4 // java.lang.reflect.Type bound
         4: .line 1028
            aload 2 /* declared */
            invokestatic com.google.common.reflect.TypeToken.any:([Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken$Bounds;
            aload 4 /* bound */
            invokevirtual com.google.common.reflect.TypeToken$Bounds.isSubtypeOf:(Ljava/lang/reflect/Type;)Z
            ifne 6
         5: .line 1029
            aload 3 /* upperBounds */
            aload 4 /* bound */
            invokestatic com.google.common.reflect.TypeToken.canonicalizeWildcardsInType:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 4 // java.lang.reflect.Type bound
         6: .line 1027
      StackMap locals:
      StackMap stack:
            iinc 5 1
      StackMap locals:
      StackMap stack:
         7: iload 5
            iload 6
            if_icmplt 3
         8: .line 1032
            new com.google.common.reflect.Types$WildcardTypeImpl
            dup
            aload 1 /* type */
            invokeinterface java.lang.reflect.WildcardType.getLowerBounds:()[Ljava/lang/reflect/Type;
            aload 3 /* upperBounds */
            iconst_0
            anewarray java.lang.reflect.Type
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.lang.reflect.Type[]
            invokespecial com.google.common.reflect.Types$WildcardTypeImpl.<init>:([Ljava/lang/reflect/Type;[Ljava/lang/reflect/Type;)V
            areturn
        end local 3 // java.util.List upperBounds
        end local 2 // java.lang.reflect.Type[] declared
        end local 1 // java.lang.reflect.WildcardType type
        end local 0 // java.lang.reflect.TypeVariable declaration
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    9     0  declaration  Ljava/lang/reflect/TypeVariable<*>;
            0    9     1         type  Ljava/lang/reflect/WildcardType;
            1    9     2     declared  [Ljava/lang/reflect/Type;
            2    9     3  upperBounds  Ljava/util/List<Ljava/lang/reflect/Type;>;
            4    6     4        bound  Ljava/lang/reflect/Type;
    Signature: (Ljava/lang/reflect/TypeVariable<*>;Ljava/lang/reflect/WildcardType;)Ljava/lang/reflect/WildcardType;
    MethodParameters:
             Name  Flags
      declaration  
      type         

  private static java.lang.reflect.ParameterizedType canonicalizeWildcardsInParameterizedType(java.lang.reflect.ParameterizedType);
    descriptor: (Ljava/lang/reflect/ParameterizedType;)Ljava/lang/reflect/ParameterizedType;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // java.lang.reflect.ParameterizedType type
         0: .line 1037
            aload 0 /* type */
            invokeinterface java.lang.reflect.ParameterizedType.getRawType:()Ljava/lang/reflect/Type;
            checkcast java.lang.Class
            astore 1 /* rawType */
        start local 1 // java.lang.Class rawType
         1: .line 1038
            aload 1 /* rawType */
            invokevirtual java.lang.Class.getTypeParameters:()[Ljava/lang/reflect/TypeVariable;
            astore 2 /* typeVars */
        start local 2 // java.lang.reflect.TypeVariable[] typeVars
         2: .line 1039
            aload 0 /* type */
            invokeinterface java.lang.reflect.ParameterizedType.getActualTypeArguments:()[Ljava/lang/reflect/Type;
            astore 3 /* typeArgs */
        start local 3 // java.lang.reflect.Type[] typeArgs
         3: .line 1040
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         4: goto 7
         5: .line 1041
      StackMap locals: java.lang.reflect.ParameterizedType java.lang.Class java.lang.reflect.TypeVariable[] java.lang.reflect.Type[] int
      StackMap stack:
            aload 3 /* typeArgs */
            iload 4 /* i */
            aload 2 /* typeVars */
            iload 4 /* i */
            aaload
            aload 3 /* typeArgs */
            iload 4 /* i */
            aaload
            invokestatic com.google.common.reflect.TypeToken.canonicalizeTypeArg:(Ljava/lang/reflect/TypeVariable;Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
            aastore
         6: .line 1040
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 4 /* i */
            aload 3 /* typeArgs */
            arraylength
            if_icmplt 5
        end local 4 // int i
         8: .line 1043
            aload 0 /* type */
            invokeinterface java.lang.reflect.ParameterizedType.getOwnerType:()Ljava/lang/reflect/Type;
            aload 1 /* rawType */
            aload 3 /* typeArgs */
            invokestatic com.google.common.reflect.Types.newParameterizedTypeWithOwner:(Ljava/lang/reflect/Type;Ljava/lang/Class;[Ljava/lang/reflect/Type;)Ljava/lang/reflect/ParameterizedType;
            areturn
        end local 3 // java.lang.reflect.Type[] typeArgs
        end local 2 // java.lang.reflect.TypeVariable[] typeVars
        end local 1 // java.lang.Class rawType
        end local 0 // java.lang.reflect.ParameterizedType type
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      type  Ljava/lang/reflect/ParameterizedType;
            1    9     1   rawType  Ljava/lang/Class<*>;
            2    9     2  typeVars  [Ljava/lang/reflect/TypeVariable;
            3    9     3  typeArgs  [Ljava/lang/reflect/Type;
            4    8     4         i  I
    MethodParameters:
      Name  Flags
      type  

  private static com.google.common.reflect.TypeToken$Bounds every(java.lang.reflect.Type[]);
    descriptor: ([Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken$Bounds;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // java.lang.reflect.Type[] bounds
         0: .line 1048
            new com.google.common.reflect.TypeToken$Bounds
            dup
            aload 0 /* bounds */
            iconst_0
            invokespecial com.google.common.reflect.TypeToken$Bounds.<init>:([Ljava/lang/reflect/Type;Z)V
            areturn
        end local 0 // java.lang.reflect.Type[] bounds
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  bounds  [Ljava/lang/reflect/Type;
    MethodParameters:
        Name  Flags
      bounds  

  private static com.google.common.reflect.TypeToken$Bounds any(java.lang.reflect.Type[]);
    descriptor: ([Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken$Bounds;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // java.lang.reflect.Type[] bounds
         0: .line 1053
            new com.google.common.reflect.TypeToken$Bounds
            dup
            aload 0 /* bounds */
            iconst_1
            invokespecial com.google.common.reflect.TypeToken$Bounds.<init>:([Ljava/lang/reflect/Type;Z)V
            areturn
        end local 0 // java.lang.reflect.Type[] bounds
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  bounds  [Ljava/lang/reflect/Type;
    MethodParameters:
        Name  Flags
      bounds  

  private com.google.common.collect.ImmutableSet<java.lang.Class<? super T>> getRawTypes();
    descriptor: ()Lcom/google/common/collect/ImmutableSet;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // com.google.common.reflect.TypeToken this
         0: .line 1086
            invokestatic com.google.common.collect.ImmutableSet.builder:()Lcom/google/common/collect/ImmutableSet$Builder;
            astore 1 /* builder */
        start local 1 // com.google.common.collect.ImmutableSet$Builder builder
         1: .line 1087
            new com.google.common.reflect.TypeToken$4
            dup
            aload 0 /* this */
            aload 1 /* builder */
            invokespecial com.google.common.reflect.TypeToken$4.<init>:(Lcom/google/common/reflect/TypeToken;Lcom/google/common/collect/ImmutableSet$Builder;)V
            iconst_1
            anewarray java.lang.reflect.Type
            dup
            iconst_0
         2: .line 1112
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            aastore
            invokevirtual com.google.common.reflect.TypeToken$4.visit:([Ljava/lang/reflect/Type;)V
         3: .line 1115
            aload 1 /* builder */
            invokevirtual com.google.common.collect.ImmutableSet$Builder.build:()Lcom/google/common/collect/ImmutableSet;
            astore 2 /* result */
        start local 2 // com.google.common.collect.ImmutableSet result
         4: .line 1116
            aload 2 /* result */
            areturn
        end local 2 // com.google.common.collect.ImmutableSet result
        end local 1 // com.google.common.collect.ImmutableSet$Builder builder
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lcom/google/common/reflect/TypeToken<TT;>;
            1    5     1  builder  Lcom/google/common/collect/ImmutableSet$Builder<Ljava/lang/Class<*>;>;
            4    5     2   result  Lcom/google/common/collect/ImmutableSet<Ljava/lang/Class<-TT;>;>;
    Signature: ()Lcom/google/common/collect/ImmutableSet<Ljava/lang/Class<-TT;>;>;

  private boolean isOwnedBySubtypeOf(java.lang.reflect.Type);
    descriptor: (Ljava/lang/reflect/Type;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.reflect.Type supertype
         0: .line 1120
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.getTypes:()Lcom/google/common/reflect/TypeToken$TypeSet;
            invokevirtual com.google.common.reflect.TypeToken$TypeSet.iterator:()Ljava/util/Iterator;
            astore 3
            goto 5
      StackMap locals: com.google.common.reflect.TypeToken java.lang.reflect.Type top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.google.common.reflect.TypeToken
            astore 2 /* type */
        start local 2 // com.google.common.reflect.TypeToken type
         2: .line 1121
            aload 2 /* type */
            invokevirtual com.google.common.reflect.TypeToken.getOwnerTypeIfPresent:()Ljava/lang/reflect/Type;
            astore 4 /* ownerType */
        start local 4 // java.lang.reflect.Type ownerType
         3: .line 1122
            aload 4 /* ownerType */
            ifnull 5
            aload 4 /* ownerType */
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
            aload 1 /* supertype */
            invokevirtual com.google.common.reflect.TypeToken.isSubtypeOf:(Ljava/lang/reflect/Type;)Z
            ifeq 5
         4: .line 1123
            iconst_1
            ireturn
        end local 4 // java.lang.reflect.Type ownerType
        end local 2 // com.google.common.reflect.TypeToken type
         5: .line 1120
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         6: .line 1126
            iconst_0
            ireturn
        end local 1 // java.lang.reflect.Type supertype
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lcom/google/common/reflect/TypeToken<TT;>;
            0    7     1  supertype  Ljava/lang/reflect/Type;
            2    5     2       type  Lcom/google/common/reflect/TypeToken<*>;
            3    5     4  ownerType  Ljava/lang/reflect/Type;
    MethodParameters:
           Name  Flags
      supertype  

  private java.lang.reflect.Type getOwnerTypeIfPresent();
    descriptor: ()Ljava/lang/reflect/Type;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.reflect.TypeToken this
         0: .line 1134
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            instanceof java.lang.reflect.ParameterizedType
            ifeq 2
         1: .line 1135
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            checkcast java.lang.reflect.ParameterizedType
            invokeinterface java.lang.reflect.ParameterizedType.getOwnerType:()Ljava/lang/reflect/Type;
            areturn
         2: .line 1136
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            instanceof java.lang.Class
            ifeq 4
         3: .line 1137
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            checkcast java.lang.Class
            invokevirtual java.lang.Class.getEnclosingClass:()Ljava/lang/Class;
            areturn
         4: .line 1139
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/google/common/reflect/TypeToken<TT;>;
    RuntimeVisibleTypeAnnotations: 
      METHOD_RETURN
        org.checkerframework.checker.nullness.qual.Nullable()

  static <T> com.google.common.reflect.TypeToken<? extends T> toGenericType(java.lang.Class<T>);
    descriptor: (Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // java.lang.Class cls
         0: .line 1152
            aload 0 /* cls */
            invokevirtual java.lang.Class.isArray:()Z
            ifeq 6
         1: .line 1156
            aload 0 /* cls */
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            invokestatic com.google.common.reflect.TypeToken.toGenericType:(Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
         2: .line 1154
            invokestatic com.google.common.reflect.Types.newArrayType:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
         3: .line 1153
            astore 1 /* arrayOfGenericType */
        start local 1 // java.lang.reflect.Type arrayOfGenericType
         4: .line 1158
            aload 1 /* arrayOfGenericType */
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
            astore 2 /* result */
        start local 2 // com.google.common.reflect.TypeToken result
         5: .line 1159
            aload 2 /* result */
            areturn
        end local 2 // com.google.common.reflect.TypeToken result
        end local 1 // java.lang.reflect.Type arrayOfGenericType
         6: .line 1161
      StackMap locals:
      StackMap stack:
            aload 0 /* cls */
            invokevirtual java.lang.Class.getTypeParameters:()[Ljava/lang/reflect/TypeVariable;
            astore 1 /* typeParams */
        start local 1 // java.lang.reflect.TypeVariable[] typeParams
         7: .line 1163
            aload 0 /* cls */
            invokevirtual java.lang.Class.isMemberClass:()Z
            ifeq 9
            aload 0 /* cls */
            invokevirtual java.lang.Class.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isStatic:(I)Z
            ifne 9
         8: .line 1164
            aload 0 /* cls */
            invokevirtual java.lang.Class.getEnclosingClass:()Ljava/lang/Class;
            invokestatic com.google.common.reflect.TypeToken.toGenericType:(Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            goto 10
         9: .line 1165
      StackMap locals: java.lang.reflect.TypeVariable[]
      StackMap stack:
            aconst_null
        10: .line 1162
      StackMap locals:
      StackMap stack: java.lang.reflect.Type
            astore 2 /* ownerType */
        start local 2 // java.lang.reflect.Type ownerType
        11: .line 1167
            aload 1 /* typeParams */
            arraylength
            ifgt 12
            aload 2 /* ownerType */
            ifnull 15
            aload 2 /* ownerType */
            aload 0 /* cls */
            invokevirtual java.lang.Class.getEnclosingClass:()Ljava/lang/Class;
            if_acmpeq 15
        12: .line 1171
      StackMap locals: java.lang.reflect.Type
      StackMap stack:
            aload 2 /* ownerType */
            aload 0 /* cls */
            aload 1 /* typeParams */
            invokestatic com.google.common.reflect.Types.newParameterizedTypeWithOwner:(Ljava/lang/reflect/Type;Ljava/lang/Class;[Ljava/lang/reflect/Type;)Ljava/lang/reflect/ParameterizedType;
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
        13: .line 1169
            astore 3 /* type */
        start local 3 // com.google.common.reflect.TypeToken type
        14: .line 1172
            aload 3 /* type */
            areturn
        end local 3 // com.google.common.reflect.TypeToken type
        15: .line 1174
      StackMap locals:
      StackMap stack:
            aload 0 /* cls */
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
            areturn
        end local 2 // java.lang.reflect.Type ownerType
        end local 1 // java.lang.reflect.TypeVariable[] typeParams
        end local 0 // java.lang.Class cls
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   16     0                 cls  Ljava/lang/Class<TT;>;
            4    6     1  arrayOfGenericType  Ljava/lang/reflect/Type;
            5    6     2              result  Lcom/google/common/reflect/TypeToken<+TT;>;
            7   16     1          typeParams  [Ljava/lang/reflect/TypeVariable;
           11   16     2           ownerType  Ljava/lang/reflect/Type;
           14   15     3                type  Lcom/google/common/reflect/TypeToken<+TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)Lcom/google/common/reflect/TypeToken<+TT;>;
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.google.common.annotations.VisibleForTesting()
    MethodParameters:
      Name  Flags
      cls   

  private com.google.common.reflect.TypeResolver getCovariantTypeResolver();
    descriptor: ()Lcom/google/common/reflect/TypeResolver;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.google.common.reflect.TypeToken this
         0: .line 1179
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.covariantTypeResolver:Lcom/google/common/reflect/TypeResolver;
            astore 1 /* resolver */
        start local 1 // com.google.common.reflect.TypeResolver resolver
         1: .line 1180
            aload 1 /* resolver */
            ifnonnull 3
         2: .line 1181
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            invokestatic com.google.common.reflect.TypeResolver.covariantly:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeResolver;
            dup_x1
            putfield com.google.common.reflect.TypeToken.covariantTypeResolver:Lcom/google/common/reflect/TypeResolver;
            astore 1 /* resolver */
         3: .line 1183
      StackMap locals: com.google.common.reflect.TypeResolver
      StackMap stack:
            aload 1 /* resolver */
            areturn
        end local 1 // com.google.common.reflect.TypeResolver resolver
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lcom/google/common/reflect/TypeToken<TT;>;
            1    4     1  resolver  Lcom/google/common/reflect/TypeResolver;

  private com.google.common.reflect.TypeResolver getInvariantTypeResolver();
    descriptor: ()Lcom/google/common/reflect/TypeResolver;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.google.common.reflect.TypeToken this
         0: .line 1187
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.invariantTypeResolver:Lcom/google/common/reflect/TypeResolver;
            astore 1 /* resolver */
        start local 1 // com.google.common.reflect.TypeResolver resolver
         1: .line 1188
            aload 1 /* resolver */
            ifnonnull 3
         2: .line 1189
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            invokestatic com.google.common.reflect.TypeResolver.invariantly:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeResolver;
            dup_x1
            putfield com.google.common.reflect.TypeToken.invariantTypeResolver:Lcom/google/common/reflect/TypeResolver;
            astore 1 /* resolver */
         3: .line 1191
      StackMap locals: com.google.common.reflect.TypeResolver
      StackMap stack:
            aload 1 /* resolver */
            areturn
        end local 1 // com.google.common.reflect.TypeResolver resolver
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lcom/google/common/reflect/TypeToken<TT;>;
            1    4     1  resolver  Lcom/google/common/reflect/TypeResolver;

  private com.google.common.reflect.TypeToken<? super T> getSupertypeFromUpperBounds(java.lang.Class<? super T>, java.lang.reflect.Type[]);
    descriptor: (Ljava/lang/Class;[Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=9, args_size=3
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.Class supertype
        start local 2 // java.lang.reflect.Type[] upperBounds
         0: .line 1196
            aload 2 /* upperBounds */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 7
      StackMap locals: com.google.common.reflect.TypeToken java.lang.Class java.lang.reflect.Type[] top int int java.lang.reflect.Type[]
      StackMap stack:
         1: aload 6
            iload 4
            aaload
            astore 3 /* upperBound */
        start local 3 // java.lang.reflect.Type upperBound
         2: .line 1198
            aload 3 /* upperBound */
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
            astore 7 /* bound */
        start local 7 // com.google.common.reflect.TypeToken bound
         3: .line 1199
            aload 7 /* bound */
            aload 1 /* supertype */
            invokevirtual com.google.common.reflect.TypeToken.isSubtypeOf:(Ljava/lang/reflect/Type;)Z
            ifeq 6
         4: .line 1201
            aload 7 /* bound */
            aload 1 /* supertype */
            invokevirtual com.google.common.reflect.TypeToken.getSupertype:(Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
            astore 8 /* result */
        start local 8 // com.google.common.reflect.TypeToken result
         5: .line 1202
            aload 8 /* result */
            areturn
        end local 8 // com.google.common.reflect.TypeToken result
        end local 7 // com.google.common.reflect.TypeToken bound
        end local 3 // java.lang.reflect.Type upperBound
         6: .line 1196
      StackMap locals:
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
         7: iload 4
            iload 5
            if_icmplt 1
         8: .line 1205
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 1 /* supertype */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " isn't a super type of "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.lang.reflect.Type[] upperBounds
        end local 1 // java.lang.Class supertype
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    9     0         this  Lcom/google/common/reflect/TypeToken<TT;>;
            0    9     1    supertype  Ljava/lang/Class<-TT;>;
            0    9     2  upperBounds  [Ljava/lang/reflect/Type;
            2    6     3   upperBound  Ljava/lang/reflect/Type;
            3    6     7        bound  Lcom/google/common/reflect/TypeToken<-TT;>;
            5    6     8       result  Lcom/google/common/reflect/TypeToken<-TT;>;
    Signature: (Ljava/lang/Class<-TT;>;[Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken<-TT;>;
    MethodParameters:
             Name  Flags
      supertype    
      upperBounds  

  private com.google.common.reflect.TypeToken<? extends T> getSubtypeFromLowerBounds(java.lang.Class<?>, java.lang.reflect.Type[]);
    descriptor: (Ljava/lang/Class;[Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.Class subclass
        start local 2 // java.lang.reflect.Type[] lowerBounds
         0: .line 1209
            aload 2 /* lowerBounds */
            dup
            astore 4
            arraylength
            ifeq 3
            aload 4
            iconst_0
            aaload
            astore 3 /* lowerBound */
        start local 3 // java.lang.reflect.Type lowerBound
         1: .line 1211
            aload 3 /* lowerBound */
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
            astore 5 /* bound */
        start local 5 // com.google.common.reflect.TypeToken bound
         2: .line 1213
            aload 5 /* bound */
            aload 1 /* subclass */
            invokevirtual com.google.common.reflect.TypeToken.getSubtype:(Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
            areturn
        end local 5 // com.google.common.reflect.TypeToken bound
        end local 3 // java.lang.reflect.Type lowerBound
         3: .line 1215
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 1 /* subclass */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " isn't a subclass of "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.lang.reflect.Type[] lowerBounds
        end local 1 // java.lang.Class subclass
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lcom/google/common/reflect/TypeToken<TT;>;
            0    4     1     subclass  Ljava/lang/Class<*>;
            0    4     2  lowerBounds  [Ljava/lang/reflect/Type;
            1    3     3   lowerBound  Ljava/lang/reflect/Type;
            2    3     5        bound  Lcom/google/common/reflect/TypeToken<+TT;>;
    Signature: (Ljava/lang/Class<*>;[Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken<+TT;>;
    MethodParameters:
             Name  Flags
      subclass     
      lowerBounds  

  private com.google.common.reflect.TypeToken<? super T> getArraySupertype(java.lang.Class<? super T>);
    descriptor: (Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.Class supertype
         0: .line 1223
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.getComponentType:()Lcom/google/common/reflect/TypeToken;
            ldc "%s isn't a super type of %s"
            aload 1 /* supertype */
            aload 0 /* this */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.google.common.reflect.TypeToken
         1: .line 1222
            astore 2 /* componentType */
        start local 2 // com.google.common.reflect.TypeToken componentType
         2: .line 1226
            aload 2 /* componentType */
            aload 1 /* supertype */
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            invokevirtual com.google.common.reflect.TypeToken.getSupertype:(Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
            astore 3 /* componentSupertype */
        start local 3 // com.google.common.reflect.TypeToken componentSupertype
         3: .line 1231
            aload 3 /* componentSupertype */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            invokestatic com.google.common.reflect.TypeToken.newArrayClassOrGenericArrayType:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
         4: .line 1228
            astore 4 /* result */
        start local 4 // com.google.common.reflect.TypeToken result
         5: .line 1232
            aload 4 /* result */
            areturn
        end local 4 // com.google.common.reflect.TypeToken result
        end local 3 // com.google.common.reflect.TypeToken componentSupertype
        end local 2 // com.google.common.reflect.TypeToken componentType
        end local 1 // java.lang.Class supertype
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    6     0                this  Lcom/google/common/reflect/TypeToken<TT;>;
            0    6     1           supertype  Ljava/lang/Class<-TT;>;
            2    6     2       componentType  Lcom/google/common/reflect/TypeToken;
            3    6     3  componentSupertype  Lcom/google/common/reflect/TypeToken<*>;
            5    6     4              result  Lcom/google/common/reflect/TypeToken<-TT;>;
    Signature: (Ljava/lang/Class<-TT;>;)Lcom/google/common/reflect/TypeToken<-TT;>;
    MethodParameters:
           Name  Flags
      supertype  

  private com.google.common.reflect.TypeToken<? extends T> getArraySubtype(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.Class subclass
         0: .line 1237
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.getComponentType:()Lcom/google/common/reflect/TypeToken;
            aload 1 /* subclass */
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            invokevirtual com.google.common.reflect.TypeToken.getSubtype:(Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
            astore 2 /* componentSubtype */
        start local 2 // com.google.common.reflect.TypeToken componentSubtype
         1: .line 1242
            aload 2 /* componentSubtype */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            invokestatic com.google.common.reflect.TypeToken.newArrayClassOrGenericArrayType:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
            invokestatic com.google.common.reflect.TypeToken.of:(Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeToken;
         2: .line 1239
            astore 3 /* result */
        start local 3 // com.google.common.reflect.TypeToken result
         3: .line 1243
            aload 3 /* result */
            areturn
        end local 3 // com.google.common.reflect.TypeToken result
        end local 2 // com.google.common.reflect.TypeToken componentSubtype
        end local 1 // java.lang.Class subclass
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    4     0              this  Lcom/google/common/reflect/TypeToken<TT;>;
            0    4     1          subclass  Ljava/lang/Class<*>;
            1    4     2  componentSubtype  Lcom/google/common/reflect/TypeToken<*>;
            3    4     3            result  Lcom/google/common/reflect/TypeToken<+TT;>;
    Signature: (Ljava/lang/Class<*>;)Lcom/google/common/reflect/TypeToken<+TT;>;
    MethodParameters:
          Name  Flags
      subclass  

  private java.lang.reflect.Type resolveTypeArgsForSubclass(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/reflect/Type;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.google.common.reflect.TypeToken this
        start local 1 // java.lang.Class subclass
         0: .line 1251
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            instanceof java.lang.Class
            ifeq 4
         1: .line 1252
            aload 1 /* subclass */
            invokevirtual java.lang.Class.getTypeParameters:()[Ljava/lang/reflect/TypeVariable;
            arraylength
            ifeq 3
         2: .line 1253
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.getRawType:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getTypeParameters:()[Ljava/lang/reflect/TypeVariable;
            arraylength
            ifeq 4
         3: .line 1255
      StackMap locals:
      StackMap stack:
            aload 1 /* subclass */
            areturn
         4: .line 1264
      StackMap locals:
      StackMap stack:
            aload 1 /* subclass */
            invokestatic com.google.common.reflect.TypeToken.toGenericType:(Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
            astore 2 /* genericSubtype */
        start local 2 // com.google.common.reflect.TypeToken genericSubtype
         5: .line 1267
            aload 2 /* genericSubtype */
            aload 0 /* this */
            invokevirtual com.google.common.reflect.TypeToken.getRawType:()Ljava/lang/Class;
            invokevirtual com.google.common.reflect.TypeToken.getSupertype:(Ljava/lang/Class;)Lcom/google/common/reflect/TypeToken;
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
         6: .line 1266
            astore 3 /* supertypeWithArgsFromSubtype */
        start local 3 // java.lang.reflect.Type supertypeWithArgsFromSubtype
         7: .line 1268
            new com.google.common.reflect.TypeResolver
            dup
            invokespecial com.google.common.reflect.TypeResolver.<init>:()V
         8: .line 1269
            aload 3 /* supertypeWithArgsFromSubtype */
            aload 0 /* this */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            invokevirtual com.google.common.reflect.TypeResolver.where:(Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Lcom/google/common/reflect/TypeResolver;
         9: .line 1270
            aload 2 /* genericSubtype */
            getfield com.google.common.reflect.TypeToken.runtimeType:Ljava/lang/reflect/Type;
            invokevirtual com.google.common.reflect.TypeResolver.resolveType:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
        10: .line 1268
            areturn
        end local 3 // java.lang.reflect.Type supertypeWithArgsFromSubtype
        end local 2 // com.google.common.reflect.TypeToken genericSubtype
        end local 1 // java.lang.Class subclass
        end local 0 // com.google.common.reflect.TypeToken this
      LocalVariableTable:
        Start  End  Slot                          Name  Signature
            0   11     0                          this  Lcom/google/common/reflect/TypeToken<TT;>;
            0   11     1                      subclass  Ljava/lang/Class<*>;
            5   11     2                genericSubtype  Lcom/google/common/reflect/TypeToken<*>;
            7   11     3  supertypeWithArgsFromSubtype  Ljava/lang/reflect/Type;
    Signature: (Ljava/lang/Class<*>;)Ljava/lang/reflect/Type;
    MethodParameters:
          Name  Flags
      subclass  

  private static java.lang.reflect.Type newArrayClassOrGenericArrayType(java.lang.reflect.Type);
    descriptor: (Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.reflect.Type componentType
         0: .line 1278
            getstatic com.google.common.reflect.Types$JavaVersion.JAVA7:Lcom/google/common/reflect/Types$JavaVersion;
            aload 0 /* componentType */
            invokevirtual com.google.common.reflect.Types$JavaVersion.newArrayType:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
            areturn
        end local 0 // java.lang.reflect.Type componentType
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0  componentType  Ljava/lang/reflect/Type;
    MethodParameters:
               Name  Flags
      componentType  
}
Signature: <T:Ljava/lang/Object;>Lcom/google/common/reflect/TypeCapture<TT;>;Ljava/io/Serializable;
SourceFile: "TypeToken.java"
NestMembers:
  com.google.common.reflect.TypeToken$1  com.google.common.reflect.TypeToken$2  com.google.common.reflect.TypeToken$3  com.google.common.reflect.TypeToken$4  com.google.common.reflect.TypeToken$Bounds  com.google.common.reflect.TypeToken$ClassSet  com.google.common.reflect.TypeToken$InterfaceSet  com.google.common.reflect.TypeToken$InterfaceSet$1  com.google.common.reflect.TypeToken$SimpleTypeToken  com.google.common.reflect.TypeToken$TypeCollector  com.google.common.reflect.TypeToken$TypeCollector$1  com.google.common.reflect.TypeToken$TypeCollector$2  com.google.common.reflect.TypeToken$TypeCollector$3  com.google.common.reflect.TypeToken$TypeCollector$4  com.google.common.reflect.TypeToken$TypeCollector$ForwardingTypeCollector  com.google.common.reflect.TypeToken$TypeFilter  com.google.common.reflect.TypeToken$TypeFilter$1  com.google.common.reflect.TypeToken$TypeFilter$2  com.google.common.reflect.TypeToken$TypeSet
InnerClasses:
  public final Builder = com.google.common.collect.ImmutableList$Builder of com.google.common.collect.ImmutableList
  public Builder = com.google.common.collect.ImmutableSet$Builder of com.google.common.collect.ImmutableSet
  final TypeVariableKey = com.google.common.reflect.TypeResolver$TypeVariableKey of com.google.common.reflect.TypeResolver
  com.google.common.reflect.TypeToken$1
  com.google.common.reflect.TypeToken$2
  com.google.common.reflect.TypeToken$3
  com.google.common.reflect.TypeToken$4
  private Bounds = com.google.common.reflect.TypeToken$Bounds of com.google.common.reflect.TypeToken
  private final ClassSet = com.google.common.reflect.TypeToken$ClassSet of com.google.common.reflect.TypeToken
  private final InterfaceSet = com.google.common.reflect.TypeToken$InterfaceSet of com.google.common.reflect.TypeToken
  private final SimpleTypeToken = com.google.common.reflect.TypeToken$SimpleTypeToken of com.google.common.reflect.TypeToken
  private abstract TypeCollector = com.google.common.reflect.TypeToken$TypeCollector of com.google.common.reflect.TypeToken
  private abstract TypeFilter = com.google.common.reflect.TypeToken$TypeFilter of com.google.common.reflect.TypeToken
  public TypeSet = com.google.common.reflect.TypeToken$TypeSet of com.google.common.reflect.TypeToken
  abstract JavaVersion = com.google.common.reflect.Types$JavaVersion of com.google.common.reflect.Types
  final WildcardTypeImpl = com.google.common.reflect.Types$WildcardTypeImpl of com.google.common.reflect.Types
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.Beta()