public abstract class org.eclipse.jdt.internal.compiler.ast.Reference extends org.eclipse.jdt.internal.compiler.ast.Expression
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.eclipse.jdt.internal.compiler.ast.Reference
  super_class: org.eclipse.jdt.internal.compiler.ast.Expression
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.eclipse.jdt.internal.compiler.ast.Reference this
         0: .line 46
            aload 0 /* this */
            invokespecial org.eclipse.jdt.internal.compiler.ast.Expression.<init>:()V
         1: .line 47
            return
        end local 0 // org.eclipse.jdt.internal.compiler.ast.Reference this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/eclipse/jdt/internal/compiler/ast/Reference;

  public abstract org.eclipse.jdt.internal.compiler.flow.FlowInfo analyseAssignment(org.eclipse.jdt.internal.compiler.lookup.BlockScope, org.eclipse.jdt.internal.compiler.flow.FlowContext, org.eclipse.jdt.internal.compiler.flow.FlowInfo, org.eclipse.jdt.internal.compiler.ast.Assignment, boolean);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/BlockScope;Lorg/eclipse/jdt/internal/compiler/flow/FlowContext;Lorg/eclipse/jdt/internal/compiler/flow/FlowInfo;Lorg/eclipse/jdt/internal/compiler/ast/Assignment;Z)Lorg/eclipse/jdt/internal/compiler/flow/FlowInfo;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
              Name  Flags
      currentScope  
      flowContext   
      flowInfo      
      assignment    
      isCompound    

  public org.eclipse.jdt.internal.compiler.flow.FlowInfo analyseCode(org.eclipse.jdt.internal.compiler.lookup.BlockScope, org.eclipse.jdt.internal.compiler.flow.FlowContext, org.eclipse.jdt.internal.compiler.flow.FlowInfo);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/BlockScope;Lorg/eclipse/jdt/internal/compiler/flow/FlowContext;Lorg/eclipse/jdt/internal/compiler/flow/FlowInfo;)Lorg/eclipse/jdt/internal/compiler/flow/FlowInfo;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=4, args_size=4
        start local 0 // org.eclipse.jdt.internal.compiler.ast.Reference this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.BlockScope currentScope
        start local 2 // org.eclipse.jdt.internal.compiler.flow.FlowContext flowContext
        start local 3 // org.eclipse.jdt.internal.compiler.flow.FlowInfo flowInfo
         0: .line 52
            aload 3 /* flowInfo */
            areturn
        end local 3 // org.eclipse.jdt.internal.compiler.flow.FlowInfo flowInfo
        end local 2 // org.eclipse.jdt.internal.compiler.flow.FlowContext flowContext
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.BlockScope currentScope
        end local 0 // org.eclipse.jdt.internal.compiler.ast.Reference this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lorg/eclipse/jdt/internal/compiler/ast/Reference;
            0    1     1  currentScope  Lorg/eclipse/jdt/internal/compiler/lookup/BlockScope;
            0    1     2   flowContext  Lorg/eclipse/jdt/internal/compiler/flow/FlowContext;
            0    1     3      flowInfo  Lorg/eclipse/jdt/internal/compiler/flow/FlowInfo;
    MethodParameters:
              Name  Flags
      currentScope  
      flowContext   
      flowInfo      

  public boolean checkNPE(org.eclipse.jdt.internal.compiler.lookup.BlockScope, org.eclipse.jdt.internal.compiler.flow.FlowContext, org.eclipse.jdt.internal.compiler.flow.FlowInfo, int);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/BlockScope;Lorg/eclipse/jdt/internal/compiler/flow/FlowContext;Lorg/eclipse/jdt/internal/compiler/flow/FlowInfo;I)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // org.eclipse.jdt.internal.compiler.ast.Reference this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.BlockScope scope
        start local 2 // org.eclipse.jdt.internal.compiler.flow.FlowContext flowContext
        start local 3 // org.eclipse.jdt.internal.compiler.flow.FlowInfo flowInfo
        start local 4 // int ttlForFieldCheck
         0: .line 57
            aload 2 /* flowContext */
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.compiler.flow.FlowContext.isNullcheckedFieldAccess:(Lorg/eclipse/jdt/internal/compiler/ast/Reference;)Z
            ifeq 2
         1: .line 58
            iconst_1
            ireturn
         2: .line 60
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* scope */
            aload 2 /* flowContext */
            aload 3 /* flowInfo */
            iload 4 /* ttlForFieldCheck */
            invokespecial org.eclipse.jdt.internal.compiler.ast.Expression.checkNPE:(Lorg/eclipse/jdt/internal/compiler/lookup/BlockScope;Lorg/eclipse/jdt/internal/compiler/flow/FlowContext;Lorg/eclipse/jdt/internal/compiler/flow/FlowInfo;I)Z
            ireturn
        end local 4 // int ttlForFieldCheck
        end local 3 // org.eclipse.jdt.internal.compiler.flow.FlowInfo flowInfo
        end local 2 // org.eclipse.jdt.internal.compiler.flow.FlowContext flowContext
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.BlockScope scope
        end local 0 // org.eclipse.jdt.internal.compiler.ast.Reference this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    3     0              this  Lorg/eclipse/jdt/internal/compiler/ast/Reference;
            0    3     1             scope  Lorg/eclipse/jdt/internal/compiler/lookup/BlockScope;
            0    3     2       flowContext  Lorg/eclipse/jdt/internal/compiler/flow/FlowContext;
            0    3     3          flowInfo  Lorg/eclipse/jdt/internal/compiler/flow/FlowInfo;
            0    3     4  ttlForFieldCheck  I
    MethodParameters:
                  Name  Flags
      scope             
      flowContext       
      flowInfo          
      ttlForFieldCheck  

  protected boolean checkNullableFieldDereference(org.eclipse.jdt.internal.compiler.lookup.Scope, org.eclipse.jdt.internal.compiler.lookup.FieldBinding, long, org.eclipse.jdt.internal.compiler.flow.FlowContext, int);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/Scope;Lorg/eclipse/jdt/internal/compiler/lookup/FieldBinding;JLorg/eclipse/jdt/internal/compiler/flow/FlowContext;I)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=7, args_size=6
        start local 0 // org.eclipse.jdt.internal.compiler.ast.Reference this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.Scope scope
        start local 2 // org.eclipse.jdt.internal.compiler.lookup.FieldBinding field
        start local 3 // long sourcePosition
        start local 5 // org.eclipse.jdt.internal.compiler.flow.FlowContext flowContext
        start local 6 // int ttlForFieldCheck
         0: .line 64
            aload 2 /* field */
            ifnull 12
         1: .line 65
            iload 6 /* ttlForFieldCheck */
            ifle 3
            aload 1 /* scope */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.Scope.compilerOptions:()Lorg/eclipse/jdt/internal/compiler/impl/CompilerOptions;
            getfield org.eclipse.jdt.internal.compiler.impl.CompilerOptions.enableSyntacticNullAnalysisForFields:Z
            ifeq 3
         2: .line 66
            aload 5 /* flowContext */
            aload 0 /* this */
            iload 6 /* ttlForFieldCheck */
            invokevirtual org.eclipse.jdt.internal.compiler.flow.FlowContext.recordNullCheckedFieldReference:(Lorg/eclipse/jdt/internal/compiler/ast/Reference;I)V
         3: .line 68
      StackMap locals:
      StackMap stack:
            aload 2 /* field */
            getfield org.eclipse.jdt.internal.compiler.lookup.FieldBinding.type:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            getfield org.eclipse.jdt.internal.compiler.lookup.TypeBinding.tagBits:J
            ldc 36028797018963968
            land
            lconst_0
            lcmp
            ifeq 6
         4: .line 69
            aload 1 /* scope */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.Scope.problemReporter:()Lorg/eclipse/jdt/internal/compiler/problem/ProblemReporter;
            lload 3 /* sourcePosition */
            aload 1 /* scope */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.Scope.environment:()Lorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;
            invokevirtual org.eclipse.jdt.internal.compiler.problem.ProblemReporter.dereferencingNullableExpression:(JLorg/eclipse/jdt/internal/compiler/lookup/LookupEnvironment;)V
         5: .line 70
            iconst_1
            ireturn
         6: .line 72
      StackMap locals:
      StackMap stack:
            aload 2 /* field */
            getfield org.eclipse.jdt.internal.compiler.lookup.FieldBinding.type:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.TypeBinding.isFreeTypeVariable:()Z
            ifeq 9
         7: .line 73
            aload 1 /* scope */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.Scope.problemReporter:()Lorg/eclipse/jdt/internal/compiler/problem/ProblemReporter;
            aload 2 /* field */
            lload 3 /* sourcePosition */
            invokevirtual org.eclipse.jdt.internal.compiler.problem.ProblemReporter.fieldFreeTypeVariableReference:(Lorg/eclipse/jdt/internal/compiler/lookup/FieldBinding;J)V
         8: .line 74
            iconst_1
            ireturn
         9: .line 76
      StackMap locals:
      StackMap stack:
            aload 2 /* field */
            getfield org.eclipse.jdt.internal.compiler.lookup.FieldBinding.tagBits:J
            ldc 36028797018963968
            land
            lconst_0
            lcmp
            ifeq 12
        10: .line 77
            aload 1 /* scope */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.Scope.problemReporter:()Lorg/eclipse/jdt/internal/compiler/problem/ProblemReporter;
            aload 2 /* field */
            lload 3 /* sourcePosition */
            invokevirtual org.eclipse.jdt.internal.compiler.problem.ProblemReporter.nullableFieldDereference:(Lorg/eclipse/jdt/internal/compiler/lookup/FieldBinding;J)V
        11: .line 78
            iconst_1
            ireturn
        12: .line 81
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 6 // int ttlForFieldCheck
        end local 5 // org.eclipse.jdt.internal.compiler.flow.FlowContext flowContext
        end local 3 // long sourcePosition
        end local 2 // org.eclipse.jdt.internal.compiler.lookup.FieldBinding field
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.Scope scope
        end local 0 // org.eclipse.jdt.internal.compiler.ast.Reference this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   13     0              this  Lorg/eclipse/jdt/internal/compiler/ast/Reference;
            0   13     1             scope  Lorg/eclipse/jdt/internal/compiler/lookup/Scope;
            0   13     2             field  Lorg/eclipse/jdt/internal/compiler/lookup/FieldBinding;
            0   13     3    sourcePosition  J
            0   13     5       flowContext  Lorg/eclipse/jdt/internal/compiler/flow/FlowContext;
            0   13     6  ttlForFieldCheck  I
    MethodParameters:
                  Name  Flags
      scope             
      field             
      sourcePosition    
      flowContext       
      ttlForFieldCheck  

  public org.eclipse.jdt.internal.compiler.lookup.FieldBinding fieldBinding();
    descriptor: ()Lorg/eclipse/jdt/internal/compiler/lookup/FieldBinding;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.eclipse.jdt.internal.compiler.ast.Reference this
         0: .line 87
            aconst_null
            areturn
        end local 0 // org.eclipse.jdt.internal.compiler.ast.Reference this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jdt/internal/compiler/ast/Reference;

  public void fieldStore(org.eclipse.jdt.internal.compiler.lookup.Scope, org.eclipse.jdt.internal.compiler.codegen.CodeStream, org.eclipse.jdt.internal.compiler.lookup.FieldBinding, org.eclipse.jdt.internal.compiler.lookup.MethodBinding, org.eclipse.jdt.internal.compiler.lookup.TypeBinding, boolean, boolean);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/Scope;Lorg/eclipse/jdt/internal/compiler/codegen/CodeStream;Lorg/eclipse/jdt/internal/compiler/lookup/FieldBinding;Lorg/eclipse/jdt/internal/compiler/lookup/MethodBinding;Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;ZZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=10, args_size=8
        start local 0 // org.eclipse.jdt.internal.compiler.ast.Reference this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.Scope currentScope
        start local 2 // org.eclipse.jdt.internal.compiler.codegen.CodeStream codeStream
        start local 3 // org.eclipse.jdt.internal.compiler.lookup.FieldBinding fieldBinding
        start local 4 // org.eclipse.jdt.internal.compiler.lookup.MethodBinding syntheticWriteAccessor
        start local 5 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding receiverType
        start local 6 // boolean isImplicitThisReceiver
        start local 7 // boolean valueRequired
         0: .line 91
            aload 2 /* codeStream */
            getfield org.eclipse.jdt.internal.compiler.codegen.CodeStream.position:I
            istore 8 /* pc */
        start local 8 // int pc
         1: .line 92
            aload 3 /* fieldBinding */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.FieldBinding.isStatic:()Z
            ifeq 13
         2: .line 93
            iload 7 /* valueRequired */
            ifeq 7
         3: .line 94
            aload 3 /* fieldBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.FieldBinding.type:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            getfield org.eclipse.jdt.internal.compiler.lookup.TypeBinding.id:I
            tableswitch { // 7 - 8
                    7: 4
                    8: 4
              default: 6
          }
         4: .line 97
      StackMap locals: int
      StackMap stack:
            aload 2 /* codeStream */
            invokevirtual org.eclipse.jdt.internal.compiler.codegen.CodeStream.dup2:()V
         5: .line 98
            goto 7
         6: .line 100
      StackMap locals:
      StackMap stack:
            aload 2 /* codeStream */
            invokevirtual org.eclipse.jdt.internal.compiler.codegen.CodeStream.dup:()V
         7: .line 104
      StackMap locals:
      StackMap stack:
            aload 4 /* syntheticWriteAccessor */
            ifnonnull 11
         8: .line 105
            aload 1 /* currentScope */
            aload 3 /* fieldBinding */
            aload 5 /* receiverType */
            iload 6 /* isImplicitThisReceiver */
            invokestatic org.eclipse.jdt.internal.compiler.codegen.CodeStream.getConstantPoolDeclaringClass:(Lorg/eclipse/jdt/internal/compiler/lookup/Scope;Lorg/eclipse/jdt/internal/compiler/lookup/FieldBinding;Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;Z)Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            astore 9 /* constantPoolDeclaringClass */
        start local 9 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding constantPoolDeclaringClass
         9: .line 106
            aload 2 /* codeStream */
            bipush -77
            aload 3 /* fieldBinding */
            aload 9 /* constantPoolDeclaringClass */
            invokevirtual org.eclipse.jdt.internal.compiler.codegen.CodeStream.fieldAccess:(BLorg/eclipse/jdt/internal/compiler/lookup/FieldBinding;Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;)V
        end local 9 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding constantPoolDeclaringClass
        10: .line 107
            goto 23
        11: .line 108
      StackMap locals:
      StackMap stack:
            aload 2 /* codeStream */
            bipush -72
            aload 4 /* syntheticWriteAccessor */
            aconst_null
            invokevirtual org.eclipse.jdt.internal.compiler.codegen.CodeStream.invoke:(BLorg/eclipse/jdt/internal/compiler/lookup/MethodBinding;Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;)V
        12: .line 110
            goto 23
        13: .line 111
      StackMap locals:
      StackMap stack:
            iload 7 /* valueRequired */
            ifeq 18
        14: .line 112
            aload 3 /* fieldBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.FieldBinding.type:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            getfield org.eclipse.jdt.internal.compiler.lookup.TypeBinding.id:I
            tableswitch { // 7 - 8
                    7: 15
                    8: 15
              default: 17
          }
        15: .line 115
      StackMap locals:
      StackMap stack:
            aload 2 /* codeStream */
            invokevirtual org.eclipse.jdt.internal.compiler.codegen.CodeStream.dup2_x1:()V
        16: .line 116
            goto 18
        17: .line 118
      StackMap locals:
      StackMap stack:
            aload 2 /* codeStream */
            invokevirtual org.eclipse.jdt.internal.compiler.codegen.CodeStream.dup_x1:()V
        18: .line 122
      StackMap locals:
      StackMap stack:
            aload 4 /* syntheticWriteAccessor */
            ifnonnull 22
        19: .line 123
            aload 1 /* currentScope */
            aload 3 /* fieldBinding */
            aload 5 /* receiverType */
            iload 6 /* isImplicitThisReceiver */
            invokestatic org.eclipse.jdt.internal.compiler.codegen.CodeStream.getConstantPoolDeclaringClass:(Lorg/eclipse/jdt/internal/compiler/lookup/Scope;Lorg/eclipse/jdt/internal/compiler/lookup/FieldBinding;Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;Z)Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            astore 9 /* constantPoolDeclaringClass */
        start local 9 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding constantPoolDeclaringClass
        20: .line 124
            aload 2 /* codeStream */
            bipush -75
            aload 3 /* fieldBinding */
            aload 9 /* constantPoolDeclaringClass */
            invokevirtual org.eclipse.jdt.internal.compiler.codegen.CodeStream.fieldAccess:(BLorg/eclipse/jdt/internal/compiler/lookup/FieldBinding;Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;)V
        end local 9 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding constantPoolDeclaringClass
        21: .line 125
            goto 23
        22: .line 126
      StackMap locals:
      StackMap stack:
            aload 2 /* codeStream */
            bipush -72
            aload 4 /* syntheticWriteAccessor */
            aconst_null
            invokevirtual org.eclipse.jdt.internal.compiler.codegen.CodeStream.invoke:(BLorg/eclipse/jdt/internal/compiler/lookup/MethodBinding;Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;)V
        23: .line 129
      StackMap locals:
      StackMap stack:
            aload 2 /* codeStream */
            iload 8 /* pc */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.ast.Reference.sourceStart:I
            invokevirtual org.eclipse.jdt.internal.compiler.codegen.CodeStream.recordPositionsFrom:(II)V
        24: .line 130
            return
        end local 8 // int pc
        end local 7 // boolean valueRequired
        end local 6 // boolean isImplicitThisReceiver
        end local 5 // org.eclipse.jdt.internal.compiler.lookup.TypeBinding receiverType
        end local 4 // org.eclipse.jdt.internal.compiler.lookup.MethodBinding syntheticWriteAccessor
        end local 3 // org.eclipse.jdt.internal.compiler.lookup.FieldBinding fieldBinding
        end local 2 // org.eclipse.jdt.internal.compiler.codegen.CodeStream codeStream
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.Scope currentScope
        end local 0 // org.eclipse.jdt.internal.compiler.ast.Reference this
      LocalVariableTable:
        Start  End  Slot                        Name  Signature
            0   25     0                        this  Lorg/eclipse/jdt/internal/compiler/ast/Reference;
            0   25     1                currentScope  Lorg/eclipse/jdt/internal/compiler/lookup/Scope;
            0   25     2                  codeStream  Lorg/eclipse/jdt/internal/compiler/codegen/CodeStream;
            0   25     3                fieldBinding  Lorg/eclipse/jdt/internal/compiler/lookup/FieldBinding;
            0   25     4      syntheticWriteAccessor  Lorg/eclipse/jdt/internal/compiler/lookup/MethodBinding;
            0   25     5                receiverType  Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            0   25     6      isImplicitThisReceiver  Z
            0   25     7               valueRequired  Z
            1   25     8                          pc  I
            9   10     9  constantPoolDeclaringClass  Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
           20   21     9  constantPoolDeclaringClass  Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
    MethodParameters:
                        Name  Flags
      currentScope            
      codeStream              
      fieldBinding            
      syntheticWriteAccessor  
      receiverType            
      isImplicitThisReceiver  
      valueRequired           

  public abstract void generateAssignment(org.eclipse.jdt.internal.compiler.lookup.BlockScope, org.eclipse.jdt.internal.compiler.codegen.CodeStream, org.eclipse.jdt.internal.compiler.ast.Assignment, boolean);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/BlockScope;Lorg/eclipse/jdt/internal/compiler/codegen/CodeStream;Lorg/eclipse/jdt/internal/compiler/ast/Assignment;Z)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
               Name  Flags
      currentScope   
      codeStream     
      assignment     
      valueRequired  

  public abstract void generateCompoundAssignment(org.eclipse.jdt.internal.compiler.lookup.BlockScope, org.eclipse.jdt.internal.compiler.codegen.CodeStream, org.eclipse.jdt.internal.compiler.ast.Expression, int, int, boolean);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/BlockScope;Lorg/eclipse/jdt/internal/compiler/codegen/CodeStream;Lorg/eclipse/jdt/internal/compiler/ast/Expression;IIZ)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
                              Name  Flags
      currentScope                  
      codeStream                    
      expression                    
      operator                      
      assignmentImplicitConversion  
      valueRequired                 

  public abstract void generatePostIncrement(org.eclipse.jdt.internal.compiler.lookup.BlockScope, org.eclipse.jdt.internal.compiler.codegen.CodeStream, org.eclipse.jdt.internal.compiler.ast.CompoundAssignment, boolean);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/BlockScope;Lorg/eclipse/jdt/internal/compiler/codegen/CodeStream;Lorg/eclipse/jdt/internal/compiler/ast/CompoundAssignment;Z)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
               Name  Flags
      currentScope   
      codeStream     
      postIncrement  
      valueRequired  

  public boolean isEquivalent(org.eclipse.jdt.internal.compiler.ast.Reference);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/ast/Reference;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.eclipse.jdt.internal.compiler.ast.Reference this
        start local 1 // org.eclipse.jdt.internal.compiler.ast.Reference reference
         0: .line 144
            iconst_0
            ireturn
        end local 1 // org.eclipse.jdt.internal.compiler.ast.Reference reference
        end local 0 // org.eclipse.jdt.internal.compiler.ast.Reference this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lorg/eclipse/jdt/internal/compiler/ast/Reference;
            0    1     1  reference  Lorg/eclipse/jdt/internal/compiler/ast/Reference;
    MethodParameters:
           Name  Flags
      reference  

  public org.eclipse.jdt.internal.compiler.lookup.FieldBinding lastFieldBinding();
    descriptor: ()Lorg/eclipse/jdt/internal/compiler/lookup/FieldBinding;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.eclipse.jdt.internal.compiler.ast.Reference this
         0: .line 150
            aconst_null
            areturn
        end local 0 // org.eclipse.jdt.internal.compiler.ast.Reference this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jdt/internal/compiler/ast/Reference;

  public int nullStatus(org.eclipse.jdt.internal.compiler.flow.FlowInfo, org.eclipse.jdt.internal.compiler.flow.FlowContext);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/flow/FlowInfo;Lorg/eclipse/jdt/internal/compiler/flow/FlowContext;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.eclipse.jdt.internal.compiler.ast.Reference this
        start local 1 // org.eclipse.jdt.internal.compiler.flow.FlowInfo flowInfo
        start local 2 // org.eclipse.jdt.internal.compiler.flow.FlowContext flowContext
         0: .line 155
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.ast.Reference.implicitConversion:I
            sipush 512
            iand
            ifeq 2
         1: .line 156
            iconst_4
            ireturn
         2: .line 157
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.compiler.ast.Reference.lastFieldBinding:()Lorg/eclipse/jdt/internal/compiler/lookup/FieldBinding;
            astore 3 /* fieldBinding */
        start local 3 // org.eclipse.jdt.internal.compiler.lookup.FieldBinding fieldBinding
         3: .line 158
            aload 3 /* fieldBinding */
            ifnull 12
         4: .line 159
            aload 3 /* fieldBinding */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.FieldBinding.isFinal:()Z
            ifeq 6
            aload 3 /* fieldBinding */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.FieldBinding.constant:()Lorg/eclipse/jdt/internal/compiler/impl/Constant;
            getstatic org.eclipse.jdt.internal.compiler.impl.Constant.NotAConstant:Lorg/eclipse/jdt/internal/compiler/impl/Constant;
            if_acmpeq 6
         5: .line 160
            iconst_4
            ireturn
         6: .line 161
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.FieldBinding
      StackMap stack:
            aload 3 /* fieldBinding */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.FieldBinding.isNonNull:()Z
            ifne 7
            aload 2 /* flowContext */
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.compiler.flow.FlowContext.isNullcheckedFieldAccess:(Lorg/eclipse/jdt/internal/compiler/ast/Reference;)Z
            ifeq 8
         7: .line 162
      StackMap locals:
      StackMap stack:
            iconst_4
            ireturn
         8: .line 163
      StackMap locals:
      StackMap stack:
            aload 3 /* fieldBinding */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.FieldBinding.isNullable:()Z
            ifeq 10
         9: .line 164
            bipush 16
            ireturn
        10: .line 165
      StackMap locals:
      StackMap stack:
            aload 3 /* fieldBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.FieldBinding.type:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.TypeBinding.isFreeTypeVariable:()Z
            ifeq 12
        11: .line 166
            bipush 48
            ireturn
        12: .line 169
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.ast.Reference.resolvedType:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            ifnull 14
        13: .line 170
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.ast.Reference.resolvedType:Lorg/eclipse/jdt/internal/compiler/lookup/TypeBinding;
            getfield org.eclipse.jdt.internal.compiler.lookup.TypeBinding.tagBits:J
            invokestatic org.eclipse.jdt.internal.compiler.flow.FlowInfo.tagBitsToNullStatus:(J)I
            ireturn
        14: .line 172
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 3 // org.eclipse.jdt.internal.compiler.lookup.FieldBinding fieldBinding
        end local 2 // org.eclipse.jdt.internal.compiler.flow.FlowContext flowContext
        end local 1 // org.eclipse.jdt.internal.compiler.flow.FlowInfo flowInfo
        end local 0 // org.eclipse.jdt.internal.compiler.ast.Reference this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   15     0          this  Lorg/eclipse/jdt/internal/compiler/ast/Reference;
            0   15     1      flowInfo  Lorg/eclipse/jdt/internal/compiler/flow/FlowInfo;
            0   15     2   flowContext  Lorg/eclipse/jdt/internal/compiler/flow/FlowContext;
            3   15     3  fieldBinding  Lorg/eclipse/jdt/internal/compiler/lookup/FieldBinding;
    MethodParameters:
             Name  Flags
      flowInfo     
      flowContext  

  void reportOnlyUselesslyReadPrivateField(org.eclipse.jdt.internal.compiler.lookup.BlockScope, org.eclipse.jdt.internal.compiler.lookup.FieldBinding, boolean);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/BlockScope;Lorg/eclipse/jdt/internal/compiler/lookup/FieldBinding;Z)V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // org.eclipse.jdt.internal.compiler.ast.Reference this
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.BlockScope currentScope
        start local 2 // org.eclipse.jdt.internal.compiler.lookup.FieldBinding fieldBinding
        start local 3 // boolean valueRequired
         0: .line 179
            iload 3 /* valueRequired */
            ifeq 4
         1: .line 181
            aload 2 /* fieldBinding */
            iconst_0
            putfield org.eclipse.jdt.internal.compiler.lookup.FieldBinding.compoundUseFlag:I
         2: .line 182
            aload 2 /* fieldBinding */
            dup
            getfield org.eclipse.jdt.internal.compiler.lookup.FieldBinding.modifiers:I
            ldc 134217728
            ior
            putfield org.eclipse.jdt.internal.compiler.lookup.FieldBinding.modifiers:I
         3: .line 183
            goto 10
         4: .line 184
      StackMap locals:
      StackMap stack:
            aload 2 /* fieldBinding */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.FieldBinding.isUsedOnlyInCompound:()Z
            ifeq 10
         5: .line 185
            aload 2 /* fieldBinding */
            dup
            getfield org.eclipse.jdt.internal.compiler.lookup.FieldBinding.compoundUseFlag:I
            iconst_1
            isub
            putfield org.eclipse.jdt.internal.compiler.lookup.FieldBinding.compoundUseFlag:I
         6: .line 186
            aload 2 /* fieldBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.FieldBinding.compoundUseFlag:I
            ifne 10
         7: .line 187
            aload 2 /* fieldBinding */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.FieldBinding.isOrEnclosedByPrivateType:()Z
            ifeq 10
         8: .line 188
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.ast.Reference.implicitConversion:I
            sipush 1024
            iand
            ifne 10
         9: .line 191
            aload 1 /* currentScope */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.BlockScope.problemReporter:()Lorg/eclipse/jdt/internal/compiler/problem/ProblemReporter;
            aload 2 /* fieldBinding */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.FieldBinding.sourceField:()Lorg/eclipse/jdt/internal/compiler/ast/FieldDeclaration;
            invokevirtual org.eclipse.jdt.internal.compiler.problem.ProblemReporter.unusedPrivateField:(Lorg/eclipse/jdt/internal/compiler/ast/FieldDeclaration;)V
        10: .line 195
      StackMap locals:
      StackMap stack:
            return
        end local 3 // boolean valueRequired
        end local 2 // org.eclipse.jdt.internal.compiler.lookup.FieldBinding fieldBinding
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.BlockScope currentScope
        end local 0 // org.eclipse.jdt.internal.compiler.ast.Reference this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   11     0           this  Lorg/eclipse/jdt/internal/compiler/ast/Reference;
            0   11     1   currentScope  Lorg/eclipse/jdt/internal/compiler/lookup/BlockScope;
            0   11     2   fieldBinding  Lorg/eclipse/jdt/internal/compiler/lookup/FieldBinding;
            0   11     3  valueRequired  Z
    MethodParameters:
               Name  Flags
      currentScope   
      fieldBinding   
      valueRequired  

  static void reportOnlyUselesslyReadLocal(org.eclipse.jdt.internal.compiler.lookup.BlockScope, org.eclipse.jdt.internal.compiler.lookup.LocalVariableBinding, boolean);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/lookup/BlockScope;Lorg/eclipse/jdt/internal/compiler/lookup/LocalVariableBinding;Z)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // org.eclipse.jdt.internal.compiler.lookup.BlockScope currentScope
        start local 1 // org.eclipse.jdt.internal.compiler.lookup.LocalVariableBinding localBinding
        start local 2 // boolean valueRequired
         0: .line 200
            aload 1 /* localBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.LocalVariableBinding.declaration:Lorg/eclipse/jdt/internal/compiler/ast/LocalDeclaration;
            ifnonnull 2
         1: .line 201
            return
         2: .line 202
      StackMap locals:
      StackMap stack:
            aload 1 /* localBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.LocalVariableBinding.declaration:Lorg/eclipse/jdt/internal/compiler/ast/LocalDeclaration;
            getfield org.eclipse.jdt.internal.compiler.ast.LocalDeclaration.bits:I
            ldc 1073741824
            iand
            ifne 4
         3: .line 203
            return
         4: .line 204
      StackMap locals:
      StackMap stack:
            aload 1 /* localBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.LocalVariableBinding.useFlag:I
            iconst_1
            if_icmplt 6
         5: .line 205
            return
         6: .line 207
      StackMap locals:
      StackMap stack:
            iload 2 /* valueRequired */
            ifeq 9
         7: .line 209
            aload 1 /* localBinding */
            iconst_1
            putfield org.eclipse.jdt.internal.compiler.lookup.LocalVariableBinding.useFlag:I
         8: .line 210
            return
         9: .line 212
      StackMap locals:
      StackMap stack:
            aload 1 /* localBinding */
            dup
            getfield org.eclipse.jdt.internal.compiler.lookup.LocalVariableBinding.useFlag:I
            iconst_1
            iadd
            putfield org.eclipse.jdt.internal.compiler.lookup.LocalVariableBinding.useFlag:I
        10: .line 213
            aload 1 /* localBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.LocalVariableBinding.useFlag:I
            ifeq 12
        11: .line 214
            return
        12: .line 217
      StackMap locals:
      StackMap stack:
            aload 1 /* localBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.LocalVariableBinding.declaration:Lorg/eclipse/jdt/internal/compiler/ast/LocalDeclaration;
            instanceof org.eclipse.jdt.internal.compiler.ast.Argument
            ifeq 27
        13: .line 219
            aload 0 /* currentScope */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.BlockScope.methodScope:()Lorg/eclipse/jdt/internal/compiler/lookup/MethodScope;
            astore 3 /* methodScope */
        start local 3 // org.eclipse.jdt.internal.compiler.lookup.MethodScope methodScope
        14: .line 220
            aload 3 /* methodScope */
            ifnull 28
            aload 3 /* methodScope */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.MethodScope.isLambdaScope:()Z
            ifne 28
        15: .line 221
            aload 3 /* methodScope */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.MethodScope.referenceContext:()Lorg/eclipse/jdt/internal/compiler/impl/ReferenceContext;
            checkcast org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration
            getfield org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.binding:Lorg/eclipse/jdt/internal/compiler/lookup/MethodBinding;
            astore 4 /* method */
        start local 4 // org.eclipse.jdt.internal.compiler.lookup.MethodBinding method
        16: .line 223
            aload 4 /* method */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.MethodBinding.isMain:()Z
            ifeq 17
            iconst_0
            goto 18
      StackMap locals: org.eclipse.jdt.internal.compiler.lookup.MethodScope org.eclipse.jdt.internal.compiler.lookup.MethodBinding
      StackMap stack:
        17: iconst_1
      StackMap locals:
      StackMap stack: int
        18: istore 5 /* shouldReport */
        start local 5 // boolean shouldReport
        19: .line 224
            aload 4 /* method */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.MethodBinding.isImplementing:()Z
            ifeq 22
        20: .line 225
            iload 5 /* shouldReport */
            aload 0 /* currentScope */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.BlockScope.compilerOptions:()Lorg/eclipse/jdt/internal/compiler/impl/CompilerOptions;
            getfield org.eclipse.jdt.internal.compiler.impl.CompilerOptions.reportUnusedParameterWhenImplementingAbstract:Z
            iand
            istore 5 /* shouldReport */
        21: .line 226
            goto 24
      StackMap locals: int
      StackMap stack:
        22: aload 4 /* method */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.MethodBinding.isOverriding:()Z
            ifeq 24
        23: .line 227
            iload 5 /* shouldReport */
            aload 0 /* currentScope */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.BlockScope.compilerOptions:()Lorg/eclipse/jdt/internal/compiler/impl/CompilerOptions;
            getfield org.eclipse.jdt.internal.compiler.impl.CompilerOptions.reportUnusedParameterWhenOverridingConcrete:Z
            iand
            istore 5 /* shouldReport */
        24: .line 230
      StackMap locals:
      StackMap stack:
            iload 5 /* shouldReport */
            ifeq 28
        25: .line 232
            aload 0 /* currentScope */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.BlockScope.problemReporter:()Lorg/eclipse/jdt/internal/compiler/problem/ProblemReporter;
            aload 1 /* localBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.LocalVariableBinding.declaration:Lorg/eclipse/jdt/internal/compiler/ast/LocalDeclaration;
            invokevirtual org.eclipse.jdt.internal.compiler.problem.ProblemReporter.unusedArgument:(Lorg/eclipse/jdt/internal/compiler/ast/LocalDeclaration;)V
        end local 5 // boolean shouldReport
        end local 4 // org.eclipse.jdt.internal.compiler.lookup.MethodBinding method
        end local 3 // org.eclipse.jdt.internal.compiler.lookup.MethodScope methodScope
        26: .line 235
            goto 28
        27: .line 237
      StackMap locals:
      StackMap stack:
            aload 0 /* currentScope */
            invokevirtual org.eclipse.jdt.internal.compiler.lookup.BlockScope.problemReporter:()Lorg/eclipse/jdt/internal/compiler/problem/ProblemReporter;
            aload 1 /* localBinding */
            getfield org.eclipse.jdt.internal.compiler.lookup.LocalVariableBinding.declaration:Lorg/eclipse/jdt/internal/compiler/ast/LocalDeclaration;
            invokevirtual org.eclipse.jdt.internal.compiler.problem.ProblemReporter.unusedLocalVariable:(Lorg/eclipse/jdt/internal/compiler/ast/LocalDeclaration;)V
        28: .line 239
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean valueRequired
        end local 1 // org.eclipse.jdt.internal.compiler.lookup.LocalVariableBinding localBinding
        end local 0 // org.eclipse.jdt.internal.compiler.lookup.BlockScope currentScope
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   29     0   currentScope  Lorg/eclipse/jdt/internal/compiler/lookup/BlockScope;
            0   29     1   localBinding  Lorg/eclipse/jdt/internal/compiler/lookup/LocalVariableBinding;
            0   29     2  valueRequired  Z
           14   26     3    methodScope  Lorg/eclipse/jdt/internal/compiler/lookup/MethodScope;
           16   26     4         method  Lorg/eclipse/jdt/internal/compiler/lookup/MethodBinding;
           19   26     5   shouldReport  Z
    MethodParameters:
               Name  Flags
      currentScope   
      localBinding   
      valueRequired  
}
SourceFile: "Reference.java"