public class com.google.inject.internal.MoreTypes$ParameterizedTypeImpl implements java.lang.reflect.ParameterizedType, java.io.Serializable, com.google.inject.internal.MoreTypes$CompositeType
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.google.inject.internal.MoreTypes$ParameterizedTypeImpl
  super_class: java.lang.Object
{
  private final java.lang.reflect.Type ownerType;
    descriptor: Ljava/lang/reflect/Type;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.reflect.Type rawType;
    descriptor: Ljava/lang/reflect/Type;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.reflect.Type[] typeArguments;
    descriptor: [Ljava/lang/reflect/Type;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  public void <init>(java.lang.reflect.Type, java.lang.reflect.Type, java.lang.reflect.Type[]);
    descriptor: (Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;[Ljava/lang/reflect/Type;)V
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // com.google.inject.internal.MoreTypes$ParameterizedTypeImpl this
        start local 1 // java.lang.reflect.Type ownerType
        start local 2 // java.lang.reflect.Type rawType
        start local 3 // java.lang.reflect.Type[] typeArguments
         0: .line 357
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 359
            aload 1 /* ownerType */
            aload 2 /* rawType */
            invokestatic com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.ensureOwnerType:(Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)V
         2: .line 361
            aload 0 /* this */
            aload 1 /* ownerType */
            ifnonnull 3
            aconst_null
            goto 4
      StackMap locals: com.google.inject.internal.MoreTypes$ParameterizedTypeImpl java.lang.reflect.Type java.lang.reflect.Type java.lang.reflect.Type[]
      StackMap stack: com.google.inject.internal.MoreTypes$ParameterizedTypeImpl
         3: aload 1 /* ownerType */
            invokestatic com.google.inject.internal.MoreTypes.canonicalize:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
      StackMap locals: com.google.inject.internal.MoreTypes$ParameterizedTypeImpl java.lang.reflect.Type java.lang.reflect.Type java.lang.reflect.Type[]
      StackMap stack: com.google.inject.internal.MoreTypes$ParameterizedTypeImpl java.lang.reflect.Type
         4: putfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.ownerType:Ljava/lang/reflect/Type;
         5: .line 362
            aload 0 /* this */
            aload 2 /* rawType */
            invokestatic com.google.inject.internal.MoreTypes.canonicalize:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
            putfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.rawType:Ljava/lang/reflect/Type;
         6: .line 363
            aload 0 /* this */
            aload 3 /* typeArguments */
            invokevirtual java.lang.reflect.Type[].clone:()Ljava/lang/Object;
            checkcast java.lang.reflect.Type[]
            putfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.typeArguments:[Ljava/lang/reflect/Type;
         7: .line 364
            iconst_0
            istore 4 /* t */
        start local 4 // int t
         8: goto 13
         9: .line 365
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.typeArguments:[Ljava/lang/reflect/Type;
            iload 4 /* t */
            aaload
            ldc "type parameter"
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        10: .line 366
            aload 0 /* this */
            getfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.typeArguments:[Ljava/lang/reflect/Type;
            iload 4 /* t */
            aaload
            ldc "type parameters"
            invokestatic com.google.inject.internal.MoreTypes.checkNotPrimitive:(Ljava/lang/reflect/Type;Ljava/lang/String;)V
        11: .line 367
            aload 0 /* this */
            getfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.typeArguments:[Ljava/lang/reflect/Type;
            iload 4 /* t */
            aload 0 /* this */
            getfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.typeArguments:[Ljava/lang/reflect/Type;
            iload 4 /* t */
            aaload
            invokestatic com.google.inject.internal.MoreTypes.canonicalize:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
            aastore
        12: .line 364
            iinc 4 /* t */ 1
      StackMap locals:
      StackMap stack:
        13: iload 4 /* t */
            aload 0 /* this */
            getfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.typeArguments:[Ljava/lang/reflect/Type;
            arraylength
            if_icmplt 9
        end local 4 // int t
        14: .line 369
            return
        end local 3 // java.lang.reflect.Type[] typeArguments
        end local 2 // java.lang.reflect.Type rawType
        end local 1 // java.lang.reflect.Type ownerType
        end local 0 // com.google.inject.internal.MoreTypes$ParameterizedTypeImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   15     0           this  Lcom/google/inject/internal/MoreTypes$ParameterizedTypeImpl;
            0   15     1      ownerType  Ljava/lang/reflect/Type;
            0   15     2        rawType  Ljava/lang/reflect/Type;
            0   15     3  typeArguments  [Ljava/lang/reflect/Type;
            8   14     4              t  I
    MethodParameters:
               Name  Flags
      ownerType      
      rawType        
      typeArguments  

  public java.lang.reflect.Type[] getActualTypeArguments();
    descriptor: ()[Ljava/lang/reflect/Type;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.inject.internal.MoreTypes$ParameterizedTypeImpl this
         0: .line 373
            aload 0 /* this */
            getfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.typeArguments:[Ljava/lang/reflect/Type;
            invokevirtual java.lang.reflect.Type[].clone:()Ljava/lang/Object;
            checkcast java.lang.reflect.Type[]
            areturn
        end local 0 // com.google.inject.internal.MoreTypes$ParameterizedTypeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/inject/internal/MoreTypes$ParameterizedTypeImpl;

  public java.lang.reflect.Type getRawType();
    descriptor: ()Ljava/lang/reflect/Type;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.inject.internal.MoreTypes$ParameterizedTypeImpl this
         0: .line 378
            aload 0 /* this */
            getfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.rawType:Ljava/lang/reflect/Type;
            areturn
        end local 0 // com.google.inject.internal.MoreTypes$ParameterizedTypeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/inject/internal/MoreTypes$ParameterizedTypeImpl;

  public java.lang.reflect.Type getOwnerType();
    descriptor: ()Ljava/lang/reflect/Type;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.inject.internal.MoreTypes$ParameterizedTypeImpl this
         0: .line 383
            aload 0 /* this */
            getfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.ownerType:Ljava/lang/reflect/Type;
            areturn
        end local 0 // com.google.inject.internal.MoreTypes$ParameterizedTypeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/inject/internal/MoreTypes$ParameterizedTypeImpl;

  public boolean isFullySpecified();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // com.google.inject.internal.MoreTypes$ParameterizedTypeImpl this
         0: .line 388
            aload 0 /* this */
            getfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.ownerType:Ljava/lang/reflect/Type;
            ifnull 2
            aload 0 /* this */
            getfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.ownerType:Ljava/lang/reflect/Type;
            invokestatic com.google.inject.internal.MoreTypes.isFullySpecified:(Ljava/lang/reflect/Type;)Z
            ifne 2
         1: .line 389
            iconst_0
            ireturn
         2: .line 392
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.rawType:Ljava/lang/reflect/Type;
            invokestatic com.google.inject.internal.MoreTypes.isFullySpecified:(Ljava/lang/reflect/Type;)Z
            ifne 4
         3: .line 393
            iconst_0
            ireturn
         4: .line 396
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.typeArguments:[Ljava/lang/reflect/Type;
            dup
            astore 4
            arraylength
            istore 3
            iconst_0
            istore 2
            goto 9
      StackMap locals: com.google.inject.internal.MoreTypes$ParameterizedTypeImpl top int int java.lang.reflect.Type[]
      StackMap stack:
         5: aload 4
            iload 2
            aaload
            astore 1 /* type */
        start local 1 // java.lang.reflect.Type type
         6: .line 397
            aload 1 /* type */
            invokestatic com.google.inject.internal.MoreTypes.isFullySpecified:(Ljava/lang/reflect/Type;)Z
            ifne 8
         7: .line 398
            iconst_0
            ireturn
        end local 1 // java.lang.reflect.Type type
         8: .line 396
      StackMap locals:
      StackMap stack:
            iinc 2 1
      StackMap locals:
      StackMap stack:
         9: iload 2
            iload 3
            if_icmplt 5
        10: .line 402
            iconst_1
            ireturn
        end local 0 // com.google.inject.internal.MoreTypes$ParameterizedTypeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lcom/google/inject/internal/MoreTypes$ParameterizedTypeImpl;
            6    8     1  type  Ljava/lang/reflect/Type;

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.inject.internal.MoreTypes$ParameterizedTypeImpl this
        start local 1 // java.lang.Object other
         0: .line 407
            aload 1 /* other */
            instanceof java.lang.reflect.ParameterizedType
            ifeq 3
         1: .line 408
            aload 0 /* this */
            aload 1 /* other */
            checkcast java.lang.reflect.ParameterizedType
            invokestatic com.google.inject.internal.MoreTypes.equals:(Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Z
            ifeq 3
         2: .line 407
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_0
            ireturn
        end local 1 // java.lang.Object other
        end local 0 // com.google.inject.internal.MoreTypes$ParameterizedTypeImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lcom/google/inject/internal/MoreTypes$ParameterizedTypeImpl;
            0    4     1  other  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      other  

  public int hashCode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.inject.internal.MoreTypes$ParameterizedTypeImpl this
         0: .line 413
            aload 0 /* this */
            getfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.typeArguments:[Ljava/lang/reflect/Type;
            invokestatic java.util.Arrays.hashCode:([Ljava/lang/Object;)I
            aload 0 /* this */
            getfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.rawType:Ljava/lang/reflect/Type;
            invokevirtual java.lang.Object.hashCode:()I
            ixor
            aload 0 /* this */
            getfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.ownerType:Ljava/lang/reflect/Type;
            invokestatic com.google.inject.internal.MoreTypes.hashCodeOrZero:(Ljava/lang/Object;)I
            ixor
            ireturn
        end local 0 // com.google.inject.internal.MoreTypes$ParameterizedTypeImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/inject/internal/MoreTypes$ParameterizedTypeImpl;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // com.google.inject.internal.MoreTypes$ParameterizedTypeImpl this
         0: .line 418
            new java.lang.StringBuilder
            dup
            bipush 30
            aload 0 /* this */
            getfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.typeArguments:[Ljava/lang/reflect/Type;
            arraylength
            iconst_1
            iadd
            imul
            invokespecial java.lang.StringBuilder.<init>:(I)V
            astore 1 /* stringBuilder */
        start local 1 // java.lang.StringBuilder stringBuilder
         1: .line 419
            aload 1 /* stringBuilder */
            aload 0 /* this */
            getfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.rawType:Ljava/lang/reflect/Type;
            invokestatic com.google.inject.internal.MoreTypes.typeToString:(Ljava/lang/reflect/Type;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         2: .line 421
            aload 0 /* this */
            getfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.typeArguments:[Ljava/lang/reflect/Type;
            arraylength
            ifne 4
         3: .line 422
            aload 1 /* stringBuilder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
         4: .line 425
      StackMap locals: java.lang.StringBuilder
      StackMap stack:
            aload 1 /* stringBuilder */
            ldc "<"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.typeArguments:[Ljava/lang/reflect/Type;
            iconst_0
            aaload
            invokestatic com.google.inject.internal.MoreTypes.typeToString:(Ljava/lang/reflect/Type;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         5: .line 426
            iconst_1
            istore 2 /* i */
        start local 2 // int i
         6: goto 9
         7: .line 427
      StackMap locals: int
      StackMap stack:
            aload 1 /* stringBuilder */
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.typeArguments:[Ljava/lang/reflect/Type;
            iload 2 /* i */
            aaload
            invokestatic com.google.inject.internal.MoreTypes.typeToString:(Ljava/lang/reflect/Type;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         8: .line 426
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 2 /* i */
            aload 0 /* this */
            getfield com.google.inject.internal.MoreTypes$ParameterizedTypeImpl.typeArguments:[Ljava/lang/reflect/Type;
            arraylength
            if_icmplt 7
        end local 2 // int i
        10: .line 429
            aload 1 /* stringBuilder */
            ldc ">"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.StringBuilder stringBuilder
        end local 0 // com.google.inject.internal.MoreTypes$ParameterizedTypeImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   11     0           this  Lcom/google/inject/internal/MoreTypes$ParameterizedTypeImpl;
            1   11     1  stringBuilder  Ljava/lang/StringBuilder;
            6   10     2              i  I

  private static void ensureOwnerType(java.lang.reflect.Type, java.lang.reflect.Type);
    descriptor: (Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.lang.reflect.Type ownerType
        start local 1 // java.lang.reflect.Type rawType
         0: .line 433
            aload 1 /* rawType */
            instanceof java.lang.Class
            ifeq 12
         1: .line 434
            aload 1 /* rawType */
            checkcast java.lang.Class
            astore 2 /* rawTypeAsClass */
        start local 2 // java.lang.Class rawTypeAsClass
         2: .line 436
            aload 0 /* ownerType */
            ifnonnull 3
            aload 2 /* rawTypeAsClass */
            invokevirtual java.lang.Class.getEnclosingClass:()Ljava/lang/Class;
            ifnull 3
            iconst_0
            goto 4
      StackMap locals: java.lang.Class
      StackMap stack:
         3: iconst_1
         4: .line 437
      StackMap locals:
      StackMap stack: int
            ldc "No owner type for enclosed %s"
         5: .line 438
            aload 1 /* rawType */
         6: .line 435
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;Ljava/lang/Object;)V
         7: .line 440
            aload 0 /* ownerType */
            ifnull 8
            aload 2 /* rawTypeAsClass */
            invokevirtual java.lang.Class.getEnclosingClass:()Ljava/lang/Class;
            ifnonnull 8
            iconst_0
            goto 9
      StackMap locals:
      StackMap stack:
         8: iconst_1
         9: .line 441
      StackMap locals:
      StackMap stack: int
            ldc "Owner type for unenclosed %s"
        10: .line 442
            aload 1 /* rawType */
        11: .line 439
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;Ljava/lang/Object;)V
        end local 2 // java.lang.Class rawTypeAsClass
        12: .line 444
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.reflect.Type rawType
        end local 0 // java.lang.reflect.Type ownerType
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   13     0       ownerType  Ljava/lang/reflect/Type;
            0   13     1         rawType  Ljava/lang/reflect/Type;
            2   12     2  rawTypeAsClass  Ljava/lang/Class;
    MethodParameters:
           Name  Flags
      ownerType  
      rawType    
}
SourceFile: "MoreTypes.java"
NestHost: com.google.inject.internal.MoreTypes
InnerClasses:
  private abstract CompositeType = com.google.inject.internal.MoreTypes$CompositeType of com.google.inject.internal.MoreTypes
  public ParameterizedTypeImpl = com.google.inject.internal.MoreTypes$ParameterizedTypeImpl of com.google.inject.internal.MoreTypes