public class org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution extends org.eclipse.jdt.internal.compiler.lookup.Scope$Substitutor implements org.eclipse.jdt.internal.compiler.lookup.Substitution
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution
  super_class: org.eclipse.jdt.internal.compiler.lookup.Scope$Substitutor
{
  private org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment environment;
    descriptor: Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
    flags: (0x0002) ACC_PRIVATE

  private org.eclipse.jdt.internal.compiler.lookup.InferenceVariable[] variables;
    descriptor: [Lorg/eclipse/jdt/internal/compiler/lookup/InferenceVariable;
    flags: (0x0002) ACC_PRIVATE

  private org.eclipse.jdt.internal.compiler.lookup.InvocationSite[] sites;
    descriptor: [Lorg/eclipse/jdt/internal/compiler/lookup/InvocationSite;
    flags: (0x0002) ACC_PRIVATE

  public void <init>(org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment, org.eclipse.jdt.internal.compiler.lookup.InferenceVariable[], org.eclipse.jdt.internal.compiler.lookup.InvocationSite);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;[Lorg/eclipse/jdt/internal/compiler/lookup/InferenceVariable;Lorg/eclipse/jdt/internal/compiler/lookup/InvocationSite;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment environment
        start local 2 // org.eclipse.jdt.internal.compiler.lookup.InferenceVariable[] variables
        start local 3 // org.eclipse.jdt.internal.compiler.lookup.InvocationSite site
         0: .line 25
            aload 0 /* this */
            invokespecial org.eclipse.jdt.internal.compiler.lookup.Scope$Substitutor.<init>:()V
         1: .line 26
            aload 0 /* this */
            aload 1 /* environment */
            putfield org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.environment:Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
         2: .line 27
            aload 0 /* this */
            aload 2 /* variables */
            putfield org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.variables:[Lorg/eclipse/jdt/internal/compiler/lookup/InferenceVariable;
         3: .line 28
            aload 0 /* this */
            iconst_1
            anewarray org.eclipse.jdt.internal.compiler.lookup.InvocationSite
            dup
            iconst_0
            aload 3 /* site */
            aastore
            putfield org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.sites:[Lorg/eclipse/jdt/internal/compiler/lookup/InvocationSite;
         4: .line 29
            return
        end local 3 // org.eclipse.jdt.internal.compiler.lookup.InvocationSite site
        end local 2 // org.eclipse.jdt.internal.compiler.lookup.InferenceVariable[] variables
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment environment
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0         this  Lorg/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution;
            0    5     1  environment  Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
            0    5     2    variables  [Lorg/eclipse/jdt/internal/compiler/lookup/InferenceVariable;
            0    5     3         site  Lorg/eclipse/jdt/internal/compiler/lookup/InvocationSite;
    MethodParameters:
             Name  Flags
      environment  
      variables    
      site         

  public void <init>(org.eclipse.jdt.internal.compiler.lookup.InferenceContext18);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/InferenceContext18;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.InferenceContext18 context
         0: .line 32
            aload 0 /* this */
            aload 1 /* context */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceContext18.environment:Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
            aload 1 /* context */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceContext18.inferenceVariables:[Lorg/eclipse/jdt/internal/compiler/lookup/InferenceVariable;
            aload 1 /* context */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceContext18.currentInvocation:Lorg/eclipse/jdt/internal/compiler/lookup/InvocationSite;
            invokespecial org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.<init>:(Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;[Lorg/eclipse/jdt/internal/compiler/lookup/InferenceVariable;Lorg/eclipse/jdt/internal/compiler/lookup/InvocationSite;)V
         1: .line 33
            return
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.InferenceContext18 context
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution;
            0    2     1  context  Lorg/eclipse/jdt/internal/compiler/lookup/InferenceContext18;
    MethodParameters:
         Name  Flags
      context  

  public org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution addContext(org.eclipse.jdt.internal.compiler.lookup.InferenceContext18);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/InferenceContext18;)Lorg/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.InferenceContext18 otherContext
         0: .line 37
            new org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution$1
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.environment:Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
            aconst_null
            aconst_null
            invokespecial org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution$1.<init>:(Lorg/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution;Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;[Lorg/eclipse/jdt/internal/compiler/lookup/InferenceVariable;Lorg/eclipse/jdt/internal/compiler/lookup/InvocationSite;)V
            astore 2 /* subst */
        start local 2 // org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution subst
         1: .line 59
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.sites:[Lorg/eclipse/jdt/internal/compiler/lookup/InvocationSite;
            arraylength
            istore 3 /* l1 */
        start local 3 // int l1
         2: .line 60
            aload 2 /* subst */
            iload 3 /* l1 */
            iconst_1
            iadd
            anewarray org.eclipse.jdt.internal.compiler.lookup.InvocationSite
            putfield org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.sites:[Lorg/eclipse/jdt/internal/compiler/lookup/InvocationSite;
         3: .line 61
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.sites:[Lorg/eclipse/jdt/internal/compiler/lookup/InvocationSite;
            iconst_0
            aload 2 /* subst */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.sites:[Lorg/eclipse/jdt/internal/compiler/lookup/InvocationSite;
            iconst_0
            iload 3 /* l1 */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         4: .line 62
            aload 2 /* subst */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.sites:[Lorg/eclipse/jdt/internal/compiler/lookup/InvocationSite;
            iload 3 /* l1 */
            aload 1 /* otherContext */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceContext18.currentInvocation:Lorg/eclipse/jdt/internal/compiler/lookup/InvocationSite;
            aastore
         5: .line 64
            aload 2 /* subst */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.variables:[Lorg/eclipse/jdt/internal/compiler/lookup/InferenceVariable;
            putfield org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.variables:[Lorg/eclipse/jdt/internal/compiler/lookup/InferenceVariable;
         6: .line 73
            aload 2 /* subst */
            areturn
        end local 3 // int l1
        end local 2 // org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution subst
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.InferenceContext18 otherContext
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0          this  Lorg/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution;
            0    7     1  otherContext  Lorg/eclipse/jdt/internal/compiler/lookup/InferenceContext18;
            1    7     2         subst  Lorg/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution;
            2    7     3            l1  I
    MethodParameters:
              Name  Flags
      otherContext  

  public org.eclipse.jdt.internal.compiler.lookup.TypeBinding substitute(org.eclipse.jdt.internal.compiler.lookup.Substitution, org.eclipse.jdt.internal.compiler.lookup.TypeBinding);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/Substitution;Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;)Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.Substitution substitution
        start local 2 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding originalType
         0: .line 82
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         1: goto 8
         2: .line 83
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.variables:[Lorg/eclipse/jdt/internal/compiler/lookup/InferenceVariable;
            iload 3 /* i */
            aaload
            astore 4 /* variable */
        start local 4 // org.eclipse.jdt.internal.compiler.lookup.InferenceVariable variable
         3: .line 84
            aload 4 /* variable */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceVariable.isFromInitialSubstitution:Z
            ifeq 7
            aload 0 /* this */
            aload 4 /* variable */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceVariable.site:Lorg/eclipse/jdt/internal/compiler/lookup/InvocationSite;
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.isInSites:(Lorg/eclipse/jdt/internal/compiler/lookup/InvocationSite;)Z
            ifeq 7
            aload 0 /* this */
            aload 0 /* this */
            iload 3 /* i */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.getP:(I)Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            aload 2 /* originalType */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.isSameParameter:(Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;)Z
            ifeq 7
         4: .line 85
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.environment:Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
            getfield org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.globalOptions:Lorg/eclipse/jdt/internal/compiler/impl/CompilerOptions;
            getfield org.eclipse.jdt.internal.compiler.impl.CompilerOptions.isAnnotationBasedNullAnalysisEnabled:Z
            ifeq 6
            aload 2 /* originalType */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.TypeBinding.hasNullTypeAnnotations:()Z
            ifeq 6
         5: .line 86
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.environment:Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
            aload 4 /* variable */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.InferenceVariable.withoutToplevelNullAnnotation:()Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            aload 2 /* originalType */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.TypeBinding.getTypeAnnotations:()[Lorg/eclipse/jdt/internal/compiler/lookup/AnnotationBinding;
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.createAnnotatedType:(Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;[Lorg/eclipse/jdt/internal/compiler/lookup/AnnotationBinding;)Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            areturn
         6: .line 87
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.InferenceVariable
      StackMap stack:
            aload 4 /* variable */
            areturn
        end local 4 // org.eclipse.jdt.internal.compiler.lookup.InferenceVariable variable
         7: .line 82
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 3 /* i */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.variables:[Lorg/eclipse/jdt/internal/compiler/lookup/InferenceVariable;
            arraylength
            if_icmplt 2
        end local 3 // int i
         9: .line 91
            aload 0 /* this */
            aload 1 /* substitution */
            aload 2 /* originalType */
            invokespecial org.eclipse.jdt.internal.compiler.lookup.Scope$Substitutor.substitute:(Lorg/eclipse/jdt/internal/compiler/lookup/Substitution;Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;)Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            areturn
        end local 2 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding originalType
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.Substitution substitution
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   10     0          this  Lorg/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution;
            0   10     1  substitution  Lorg/eclipse/jdt/internal/compiler/lookup/Substitution;
            0   10     2  originalType  Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            1    9     3             i  I
            3    7     4      variable  Lorg/eclipse/jdt/internal/compiler/lookup/InferenceVariable;
    MethodParameters:
              Name  Flags
      substitution  
      originalType  

  private boolean isInSites(org.eclipse.jdt.internal.compiler.lookup.InvocationSite);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/InvocationSite;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.InvocationSite otherSite
         0: .line 95
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         1: goto 5
         2: .line 96
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.sites:[Lorg/eclipse/jdt/internal/compiler/lookup/InvocationSite;
            iload 2 /* i */
            aaload
            aload 1 /* otherSite */
            invokestatic org.eclipse.jdt.internal.compiler.lookup.InferenceContext18.isSameSite:(Lorg/eclipse/jdt/internal/compiler/lookup/InvocationSite;Lorg/eclipse/jdt/internal/compiler/lookup/InvocationSite;)Z
            ifeq 4
         3: .line 97
            iconst_1
            ireturn
         4: .line 95
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 2 /* i */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.sites:[Lorg/eclipse/jdt/internal/compiler/lookup/InvocationSite;
            arraylength
            if_icmplt 2
        end local 2 // int i
         6: .line 98
            iconst_0
            ireturn
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.InvocationSite otherSite
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lorg/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution;
            0    7     1  otherSite  Lorg/eclipse/jdt/internal/compiler/lookup/InvocationSite;
            1    6     2          i  I
    MethodParameters:
           Name  Flags
      otherSite  

  protected boolean isSameParameter(org.eclipse.jdt.internal.compiler.lookup.TypeBinding, org.eclipse.jdt.internal.compiler.lookup.TypeBinding);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding p1
        start local 2 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding originalType
         0: .line 102
            aload 1 /* p1 */
            aload 2 /* originalType */
            invokestatic org.eclipse.jdt.internal.compiler.lookup.TypeBinding.equalsEquals:(Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;)Z
            ireturn
        end local 2 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding originalType
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding p1
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lorg/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution;
            0    1     1            p1  Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            0    1     2  originalType  Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
    MethodParameters:
              Name  Flags
      p1            
      originalType  

  protected org.eclipse.jdt.internal.compiler.lookup.TypeBinding getP(int);
    descriptor: (I)Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution this
        start local 1 // int i
         0: .line 111
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.variables:[Lorg/eclipse/jdt/internal/compiler/lookup/InferenceVariable;
            iload 1 /* i */
            aaload
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceVariable.typeParameter:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            areturn
        end local 1 // int i
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution;
            0    1     1     i  I
    MethodParameters:
      Name  Flags
      i     

  public org.eclipse.jdt.internal.compiler.lookup.TypeBinding substitute(org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/TypeVariableBinding;)Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=10, args_size=2
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding typeVariable
         0: .line 116
            aload 1 /* typeVariable */
            getfield org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.superclass:Lorg/eclipse/jdt/internal/compiler/lookup/ReferenceBinding;
            astore 2 /* superclass */
        start local 2 // org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding superclass
         1: .line 117
            aload 1 /* typeVariable */
            getfield org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.superInterfaces:[Lorg/eclipse/jdt/internal/compiler/lookup/ReferenceBinding;
            astore 3 /* superInterfaces */
        start local 3 // org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding[] superInterfaces
         2: .line 118
            iconst_0
            istore 4 /* hasSubstituted */
        start local 4 // boolean hasSubstituted
         3: .line 119
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         4: goto 26
         5: .line 120
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding[] int int
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.variables:[Lorg/eclipse/jdt/internal/compiler/lookup/InferenceVariable;
            iload 5 /* i */
            aaload
            astore 6 /* variable */
        start local 6 // org.eclipse.jdt.internal.compiler.lookup.InferenceVariable variable
         6: .line 121
            aload 0 /* this */
            iload 5 /* i */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.getP:(I)Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            astore 7 /* pi */
        start local 7 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding pi
         7: .line 122
            aload 7 /* pi */
            aload 1 /* typeVariable */
            invokestatic org.eclipse.jdt.internal.compiler.lookup.TypeBinding.equalsEquals:(Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;)Z
            ifeq 9
         8: .line 123
            aload 6 /* variable */
            areturn
         9: .line 124
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.InferenceVariable org.eclipse.jdt.internal.compiler.lookup.TypeBinding
      StackMap stack:
            aload 7 /* pi */
            aload 2 /* superclass */
            invokestatic org.eclipse.jdt.internal.compiler.lookup.TypeBinding.equalsEquals:(Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;)Z
            ifeq 13
        10: .line 125
            aload 6 /* variable */
            astore 2 /* superclass */
        11: .line 126
            iconst_1
            istore 4 /* hasSubstituted */
        12: .line 127
            goto 25
        13: .line 129
      StackMap locals:
      StackMap stack:
            aload 3 /* superInterfaces */
            ifnull 25
        14: .line 130
            aload 3 /* superInterfaces */
            arraylength
            istore 8 /* ifcLen */
        start local 8 // int ifcLen
        15: .line 131
            iconst_0
            istore 9 /* j */
        start local 9 // int j
        16: goto 24
        17: .line 132
      StackMap locals: int int
      StackMap stack:
            aload 7 /* pi */
            aload 3 /* superInterfaces */
            iload 9 /* j */
            aaload
            invokestatic org.eclipse.jdt.internal.compiler.lookup.TypeBinding.equalsEquals:(Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;)Z
            ifeq 23
        18: .line 133
            aload 3 /* superInterfaces */
            aload 1 /* typeVariable */
            getfield org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.superInterfaces:[Lorg/eclipse/jdt/internal/compiler/lookup/ReferenceBinding;
            if_acmpne 20
        19: .line 134
            aload 3 /* superInterfaces */
            iconst_0
            iload 8 /* ifcLen */
            anewarray org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding
            dup
            astore 3 /* superInterfaces */
            iconst_0
            iload 8 /* ifcLen */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        20: .line 135
      StackMap locals:
      StackMap stack:
            aload 3 /* superInterfaces */
            iload 9 /* j */
            aload 6 /* variable */
            aastore
        21: .line 136
            iconst_1
            istore 4 /* hasSubstituted */
        22: .line 137
            goto 25
        23: .line 131
      StackMap locals:
      StackMap stack:
            iinc 9 /* j */ 1
      StackMap locals:
      StackMap stack:
        24: iload 9 /* j */
            iload 8 /* ifcLen */
            if_icmplt 17
        end local 9 // int j
        end local 8 // int ifcLen
        end local 7 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding pi
        end local 6 // org.eclipse.jdt.internal.compiler.lookup.InferenceVariable variable
        25: .line 119
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding[] int int
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        26: iload 5 /* i */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.variables:[Lorg/eclipse/jdt/internal/compiler/lookup/InferenceVariable;
            arraylength
            if_icmplt 5
        end local 5 // int i
        27: .line 142
            iload 4 /* hasSubstituted */
            ifeq 36
        28: .line 143
            new org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding
            dup
            aload 1 /* typeVariable */
            getfield org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.sourceName:[C
            aload 1 /* typeVariable */
            getfield org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.declaringElement:Lorg/eclipse/jdt/internal/compiler/lookup/Binding;
            aload 1 /* typeVariable */
            getfield org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.rank:I
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.environment:Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
            invokespecial org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.<init>:([CLorg/eclipse/jdt/internal/compiler/lookup/Binding;ILorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;)V
            astore 1 /* typeVariable */
        29: .line 144
            aload 1 /* typeVariable */
            aload 2 /* superclass */
            putfield org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.superclass:Lorg/eclipse/jdt/internal/compiler/lookup/ReferenceBinding;
        30: .line 145
            aload 1 /* typeVariable */
            aload 3 /* superInterfaces */
            putfield org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.superInterfaces:[Lorg/eclipse/jdt/internal/compiler/lookup/ReferenceBinding;
        31: .line 146
            aload 1 /* typeVariable */
            aload 2 /* superclass */
            ifnull 32
            aload 2 /* superclass */
            goto 33
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding[] int
      StackMap stack: org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding
        32: aload 3 /* superInterfaces */
            iconst_0
            aaload
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding[] int
      StackMap stack: org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding
        33: putfield org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.firstBound:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
        34: .line 147
            aload 1 /* typeVariable */
            getfield org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.firstBound:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.TypeBinding.hasNullTypeAnnotations:()Z
            ifeq 36
        35: .line 148
            aload 1 /* typeVariable */
            dup
            getfield org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.tagBits:J
            ldc 1048576
            lor
            putfield org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.tagBits:J
        36: .line 150
      StackMap locals:
      StackMap stack:
            aload 1 /* typeVariable */
            areturn
        end local 4 // boolean hasSubstituted
        end local 3 // org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding[] superInterfaces
        end local 2 // org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding superclass
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding typeVariable
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   37     0             this  Lorg/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution;
            0   37     1     typeVariable  Lorg/eclipse/jdt/internal/compiler/lookup/TypeVariableBinding;
            1   37     2       superclass  Lorg/eclipse/jdt/internal/compiler/lookup/ReferenceBinding;
            2   37     3  superInterfaces  [Lorg/eclipse/jdt/internal/compiler/lookup/ReferenceBinding;
            3   37     4   hasSubstituted  Z
            4   27     5                i  I
            6   25     6         variable  Lorg/eclipse/jdt/internal/compiler/lookup/InferenceVariable;
            7   25     7               pi  Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
           15   25     8           ifcLen  I
           16   25     9                j  I
    MethodParameters:
              Name  Flags
      typeVariable  

  public org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment environment();
    descriptor: ()Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution this
         0: .line 155
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution.environment:Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
            areturn
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution;

  public boolean isRawSubstitution();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution this
         0: .line 161
            iconst_0
            ireturn
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution;
}
SourceFile: "InferenceSubstitution.java"
NestMembers:
  org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution$1
InnerClasses:
  org.eclipse.jdt.internal.compiler.lookup.InferenceSubstitution$1
  public Substitutor = org.eclipse.jdt.internal.compiler.lookup.Scope$Substitutor of org.eclipse.jdt.internal.compiler.lookup.Scope