public class com.oracle.graal.pointsto.AnalysisObjectScanner extends com.oracle.graal.pointsto.ObjectScanner
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.graal.pointsto.AnalysisObjectScanner
  super_class: com.oracle.graal.pointsto.ObjectScanner
{
  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 36
            ldc Lcom/oracle/graal/pointsto/AnalysisObjectScanner;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic com.oracle.graal.pointsto.AnalysisObjectScanner.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(com.oracle.graal.pointsto.BigBang, com.oracle.graal.pointsto.ObjectScanner$ReusableSet);
    descriptor: (Lcom/oracle/graal/pointsto/BigBang;Lcom/oracle/graal/pointsto/ObjectScanner$ReusableSet;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.graal.pointsto.AnalysisObjectScanner this
        start local 1 // com.oracle.graal.pointsto.BigBang bigbang
        start local 2 // com.oracle.graal.pointsto.ObjectScanner$ReusableSet scannedObjects
         0: .line 39
            aload 0 /* this */
            aload 1 /* bigbang */
            aload 2 /* scannedObjects */
            invokespecial com.oracle.graal.pointsto.ObjectScanner.<init>:(Lcom/oracle/graal/pointsto/BigBang;Lcom/oracle/graal/pointsto/ObjectScanner$ReusableSet;)V
         1: .line 40
            return
        end local 2 // com.oracle.graal.pointsto.ObjectScanner$ReusableSet scannedObjects
        end local 1 // com.oracle.graal.pointsto.BigBang bigbang
        end local 0 // com.oracle.graal.pointsto.AnalysisObjectScanner this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0            this  Lcom/oracle/graal/pointsto/AnalysisObjectScanner;
            0    2     1         bigbang  Lcom/oracle/graal/pointsto/BigBang;
            0    2     2  scannedObjects  Lcom/oracle/graal/pointsto/ObjectScanner$ReusableSet;
    MethodParameters:
                Name  Flags
      bigbang         
      scannedObjects  

  public void forRelocatedPointerFieldValue(jdk.vm.ci.meta.JavaConstant, com.oracle.graal.pointsto.meta.AnalysisField, jdk.vm.ci.meta.JavaConstant);
    descriptor: (Ljdk/vm/ci/meta/JavaConstant;Lcom/oracle/graal/pointsto/meta/AnalysisField;Ljdk/vm/ci/meta/JavaConstant;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // com.oracle.graal.pointsto.AnalysisObjectScanner this
        start local 1 // jdk.vm.ci.meta.JavaConstant receiver
        start local 2 // com.oracle.graal.pointsto.meta.AnalysisField field
        start local 3 // jdk.vm.ci.meta.JavaConstant fieldValue
         0: .line 44
            aload 2 /* field */
            invokevirtual com.oracle.graal.pointsto.meta.AnalysisField.isWritten:()Z
            ifne 2
         1: .line 45
            aload 2 /* field */
            aconst_null
            invokevirtual com.oracle.graal.pointsto.meta.AnalysisField.registerAsWritten:(Lcom/oracle/graal/pointsto/flow/MethodTypeFlow;)V
         2: .line 47
      StackMap locals:
      StackMap stack:
            return
        end local 3 // jdk.vm.ci.meta.JavaConstant fieldValue
        end local 2 // com.oracle.graal.pointsto.meta.AnalysisField field
        end local 1 // jdk.vm.ci.meta.JavaConstant receiver
        end local 0 // com.oracle.graal.pointsto.AnalysisObjectScanner this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lcom/oracle/graal/pointsto/AnalysisObjectScanner;
            0    3     1    receiver  Ljdk/vm/ci/meta/JavaConstant;
            0    3     2       field  Lcom/oracle/graal/pointsto/meta/AnalysisField;
            0    3     3  fieldValue  Ljdk/vm/ci/meta/JavaConstant;
    MethodParameters:
            Name  Flags
      receiver    
      field       
      fieldValue  

  public void forNullFieldValue(jdk.vm.ci.meta.JavaConstant, com.oracle.graal.pointsto.meta.AnalysisField);
    descriptor: (Ljdk/vm/ci/meta/JavaConstant;Lcom/oracle/graal/pointsto/meta/AnalysisField;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.oracle.graal.pointsto.AnalysisObjectScanner this
        start local 1 // jdk.vm.ci.meta.JavaConstant receiver
        start local 2 // com.oracle.graal.pointsto.meta.AnalysisField field
         0: .line 51
            aload 0 /* this */
            aload 2 /* field */
            aload 1 /* receiver */
            invokevirtual com.oracle.graal.pointsto.AnalysisObjectScanner.getFieldTypeFlow:(Lcom/oracle/graal/pointsto/meta/AnalysisField;Ljdk/vm/ci/meta/JavaConstant;)Lcom/oracle/graal/pointsto/flow/FieldTypeFlow;
            astore 3 /* fieldTypeFlow */
        start local 3 // com.oracle.graal.pointsto.flow.FieldTypeFlow fieldTypeFlow
         1: .line 52
            aload 3 /* fieldTypeFlow */
            invokevirtual com.oracle.graal.pointsto.flow.FieldTypeFlow.getState:()Lcom/oracle/graal/pointsto/typestate/TypeState;
            invokevirtual com.oracle.graal.pointsto.typestate.TypeState.canBeNull:()Z
            ifne 3
         2: .line 54
            aload 3 /* fieldTypeFlow */
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            invokestatic com.oracle.graal.pointsto.typestate.TypeState.forNull:()Lcom/oracle/graal/pointsto/typestate/TypeState;
            invokevirtual com.oracle.graal.pointsto.flow.FieldTypeFlow.addState:(Lcom/oracle/graal/pointsto/BigBang;Lcom/oracle/graal/pointsto/typestate/TypeState;)Z
            pop
         3: .line 56
      StackMap locals: com.oracle.graal.pointsto.flow.FieldTypeFlow
      StackMap stack:
            return
        end local 3 // com.oracle.graal.pointsto.flow.FieldTypeFlow fieldTypeFlow
        end local 2 // com.oracle.graal.pointsto.meta.AnalysisField field
        end local 1 // jdk.vm.ci.meta.JavaConstant receiver
        end local 0 // com.oracle.graal.pointsto.AnalysisObjectScanner this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lcom/oracle/graal/pointsto/AnalysisObjectScanner;
            0    4     1       receiver  Ljdk/vm/ci/meta/JavaConstant;
            0    4     2          field  Lcom/oracle/graal/pointsto/meta/AnalysisField;
            1    4     3  fieldTypeFlow  Lcom/oracle/graal/pointsto/flow/FieldTypeFlow;
    MethodParameters:
          Name  Flags
      receiver  
      field     

  public void forNonNullFieldValue(jdk.vm.ci.meta.JavaConstant, com.oracle.graal.pointsto.meta.AnalysisField, jdk.vm.ci.meta.JavaConstant);
    descriptor: (Ljdk/vm/ci/meta/JavaConstant;Lcom/oracle/graal/pointsto/meta/AnalysisField;Ljdk/vm/ci/meta/JavaConstant;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=4
        start local 0 // com.oracle.graal.pointsto.AnalysisObjectScanner this
        start local 1 // jdk.vm.ci.meta.JavaConstant receiver
        start local 2 // com.oracle.graal.pointsto.meta.AnalysisField field
        start local 3 // jdk.vm.ci.meta.JavaConstant fieldValue
         0: .line 60
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            invokevirtual com.oracle.graal.pointsto.BigBang.getMetaAccess:()Lcom/oracle/graal/pointsto/meta/AnalysisMetaAccess;
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            invokevirtual com.oracle.graal.pointsto.BigBang.getSnippetReflectionProvider:()Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
            ldc Ljava/lang/Object;
            aload 3 /* fieldValue */
            invokeinterface org.graalvm.compiler.api.replacements.SnippetReflectionProvider.asObject:(Ljava/lang/Class;Ljdk/vm/ci/meta/JavaConstant;)Ljava/lang/Object;
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual com.oracle.graal.pointsto.meta.AnalysisMetaAccess.lookupJavaType:(Ljava/lang/Class;)Lcom/oracle/graal/pointsto/meta/AnalysisType;
            astore 4 /* fieldType */
        start local 4 // com.oracle.graal.pointsto.meta.AnalysisType fieldType
         1: .line 61
            getstatic com.oracle.graal.pointsto.AnalysisObjectScanner.$assertionsDisabled:Z
            ifne 2
            aload 4 /* fieldType */
            invokevirtual com.oracle.graal.pointsto.meta.AnalysisType.isInstantiated:()Z
            ifne 2
            new java.lang.AssertionError
            dup
            aload 4 /* fieldType */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         2: .line 69
      StackMap locals: com.oracle.graal.pointsto.meta.AnalysisType
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            invokevirtual com.oracle.graal.pointsto.BigBang.getAllInstantiatedTypeFlow:()Lcom/oracle/graal/pointsto/flow/TypeFlow;
            invokevirtual com.oracle.graal.pointsto.flow.TypeFlow.getState:()Lcom/oracle/graal/pointsto/typestate/TypeState;
            aload 4 /* fieldType */
            invokevirtual com.oracle.graal.pointsto.typestate.TypeState.containsType:(Lcom/oracle/graal/pointsto/meta/AnalysisType;)Z
            ifeq 8
         3: .line 71
            aload 0 /* this */
            aload 2 /* field */
            aload 1 /* receiver */
            invokevirtual com.oracle.graal.pointsto.AnalysisObjectScanner.getFieldTypeFlow:(Lcom/oracle/graal/pointsto/meta/AnalysisField;Ljdk/vm/ci/meta/JavaConstant;)Lcom/oracle/graal/pointsto/flow/FieldTypeFlow;
            astore 5 /* fieldTypeFlow */
        start local 5 // com.oracle.graal.pointsto.flow.FieldTypeFlow fieldTypeFlow
         4: .line 72
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            invokevirtual com.oracle.graal.pointsto.BigBang.analysisPolicy:()Lcom/oracle/graal/pointsto/AnalysisPolicy;
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            aload 3 /* fieldValue */
            aload 4 /* fieldType */
            invokevirtual com.oracle.graal.pointsto.AnalysisPolicy.createConstantObject:(Lcom/oracle/graal/pointsto/BigBang;Ljdk/vm/ci/meta/JavaConstant;Lcom/oracle/graal/pointsto/meta/AnalysisType;)Lcom/oracle/graal/pointsto/flow/context/object/AnalysisObject;
            astore 6 /* constantObject */
        start local 6 // com.oracle.graal.pointsto.flow.context.object.AnalysisObject constantObject
         5: .line 73
            aload 5 /* fieldTypeFlow */
            invokevirtual com.oracle.graal.pointsto.flow.FieldTypeFlow.getState:()Lcom/oracle/graal/pointsto/typestate/TypeState;
            invokevirtual com.oracle.graal.pointsto.typestate.TypeState.isUnknown:()Z
            ifne 8
            aload 5 /* fieldTypeFlow */
            invokevirtual com.oracle.graal.pointsto.flow.FieldTypeFlow.getState:()Lcom/oracle/graal/pointsto/typestate/TypeState;
            aload 6 /* constantObject */
            invokevirtual com.oracle.graal.pointsto.typestate.TypeState.containsObject:(Lcom/oracle/graal/pointsto/flow/context/object/AnalysisObject;)Z
            ifne 8
         6: .line 75
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            aload 6 /* constantObject */
            invokestatic com.oracle.graal.pointsto.typestate.TypeState.forNonNullObject:(Lcom/oracle/graal/pointsto/BigBang;Lcom/oracle/graal/pointsto/flow/context/object/AnalysisObject;)Lcom/oracle/graal/pointsto/typestate/TypeState;
            astore 7 /* constantTypeState */
        start local 7 // com.oracle.graal.pointsto.typestate.TypeState constantTypeState
         7: .line 76
            aload 5 /* fieldTypeFlow */
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            aload 7 /* constantTypeState */
            invokevirtual com.oracle.graal.pointsto.flow.FieldTypeFlow.addState:(Lcom/oracle/graal/pointsto/BigBang;Lcom/oracle/graal/pointsto/typestate/TypeState;)Z
            pop
        end local 7 // com.oracle.graal.pointsto.typestate.TypeState constantTypeState
        end local 6 // com.oracle.graal.pointsto.flow.context.object.AnalysisObject constantObject
        end local 5 // com.oracle.graal.pointsto.flow.FieldTypeFlow fieldTypeFlow
         8: .line 79
      StackMap locals:
      StackMap stack:
            return
        end local 4 // com.oracle.graal.pointsto.meta.AnalysisType fieldType
        end local 3 // jdk.vm.ci.meta.JavaConstant fieldValue
        end local 2 // com.oracle.graal.pointsto.meta.AnalysisField field
        end local 1 // jdk.vm.ci.meta.JavaConstant receiver
        end local 0 // com.oracle.graal.pointsto.AnalysisObjectScanner this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    9     0               this  Lcom/oracle/graal/pointsto/AnalysisObjectScanner;
            0    9     1           receiver  Ljdk/vm/ci/meta/JavaConstant;
            0    9     2              field  Lcom/oracle/graal/pointsto/meta/AnalysisField;
            0    9     3         fieldValue  Ljdk/vm/ci/meta/JavaConstant;
            1    9     4          fieldType  Lcom/oracle/graal/pointsto/meta/AnalysisType;
            4    8     5      fieldTypeFlow  Lcom/oracle/graal/pointsto/flow/FieldTypeFlow;
            5    8     6     constantObject  Lcom/oracle/graal/pointsto/flow/context/object/AnalysisObject;
            7    8     7  constantTypeState  Lcom/oracle/graal/pointsto/typestate/TypeState;
    MethodParameters:
            Name  Flags
      receiver    
      field       
      fieldValue  

  private com.oracle.graal.pointsto.flow.FieldTypeFlow getFieldTypeFlow(com.oracle.graal.pointsto.meta.AnalysisField, jdk.vm.ci.meta.JavaConstant);
    descriptor: (Lcom/oracle/graal/pointsto/meta/AnalysisField;Ljdk/vm/ci/meta/JavaConstant;)Lcom/oracle/graal/pointsto/flow/FieldTypeFlow;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // com.oracle.graal.pointsto.AnalysisObjectScanner this
        start local 1 // com.oracle.graal.pointsto.meta.AnalysisField field
        start local 2 // jdk.vm.ci.meta.JavaConstant receiver
         0: .line 84
            aload 1 /* field */
            invokevirtual com.oracle.graal.pointsto.meta.AnalysisField.isStatic:()Z
            ifeq 2
         1: .line 86
            aload 1 /* field */
            invokevirtual com.oracle.graal.pointsto.meta.AnalysisField.getStaticFieldFlow:()Lcom/oracle/graal/pointsto/flow/FieldTypeFlow;
            areturn
         2: .line 92
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            invokevirtual com.oracle.graal.pointsto.BigBang.getMetaAccess:()Lcom/oracle/graal/pointsto/meta/AnalysisMetaAccess;
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            invokevirtual com.oracle.graal.pointsto.BigBang.getSnippetReflectionProvider:()Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
            ldc Ljava/lang/Object;
            aload 2 /* receiver */
            invokeinterface org.graalvm.compiler.api.replacements.SnippetReflectionProvider.asObject:(Ljava/lang/Class;Ljdk/vm/ci/meta/JavaConstant;)Ljava/lang/Object;
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual com.oracle.graal.pointsto.meta.AnalysisMetaAccess.lookupJavaType:(Ljava/lang/Class;)Lcom/oracle/graal/pointsto/meta/AnalysisType;
            astore 3 /* receiverType */
        start local 3 // com.oracle.graal.pointsto.meta.AnalysisType receiverType
         3: .line 93
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            invokevirtual com.oracle.graal.pointsto.BigBang.analysisPolicy:()Lcom/oracle/graal/pointsto/AnalysisPolicy;
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            aload 2 /* receiver */
            aload 3 /* receiverType */
            invokevirtual com.oracle.graal.pointsto.AnalysisPolicy.createConstantObject:(Lcom/oracle/graal/pointsto/BigBang;Ljdk/vm/ci/meta/JavaConstant;Lcom/oracle/graal/pointsto/meta/AnalysisType;)Lcom/oracle/graal/pointsto/flow/context/object/AnalysisObject;
            astore 4 /* constantReceiverObj */
        start local 4 // com.oracle.graal.pointsto.flow.context.object.AnalysisObject constantReceiverObj
         4: .line 94
            aload 4 /* constantReceiverObj */
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            aload 1 /* field */
            iconst_1
            invokevirtual com.oracle.graal.pointsto.flow.context.object.AnalysisObject.getInstanceFieldFlow:(Lcom/oracle/graal/pointsto/BigBang;Lcom/oracle/graal/pointsto/meta/AnalysisField;Z)Lcom/oracle/graal/pointsto/flow/FieldTypeFlow;
            areturn
        end local 4 // com.oracle.graal.pointsto.flow.context.object.AnalysisObject constantReceiverObj
        end local 3 // com.oracle.graal.pointsto.meta.AnalysisType receiverType
        end local 2 // jdk.vm.ci.meta.JavaConstant receiver
        end local 1 // com.oracle.graal.pointsto.meta.AnalysisField field
        end local 0 // com.oracle.graal.pointsto.AnalysisObjectScanner this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    5     0                 this  Lcom/oracle/graal/pointsto/AnalysisObjectScanner;
            0    5     1                field  Lcom/oracle/graal/pointsto/meta/AnalysisField;
            0    5     2             receiver  Ljdk/vm/ci/meta/JavaConstant;
            3    5     3         receiverType  Lcom/oracle/graal/pointsto/meta/AnalysisType;
            4    5     4  constantReceiverObj  Lcom/oracle/graal/pointsto/flow/context/object/AnalysisObject;
    MethodParameters:
          Name  Flags
      field     
      receiver  

  public void forNullArrayElement(jdk.vm.ci.meta.JavaConstant, com.oracle.graal.pointsto.meta.AnalysisType, int);
    descriptor: (Ljdk/vm/ci/meta/JavaConstant;Lcom/oracle/graal/pointsto/meta/AnalysisType;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // com.oracle.graal.pointsto.AnalysisObjectScanner this
        start local 1 // jdk.vm.ci.meta.JavaConstant array
        start local 2 // com.oracle.graal.pointsto.meta.AnalysisType arrayType
        start local 3 // int elementIndex
         0: .line 100
            aload 0 /* this */
            aload 1 /* array */
            aload 2 /* arrayType */
            invokevirtual com.oracle.graal.pointsto.AnalysisObjectScanner.getArrayElementsFlow:(Ljdk/vm/ci/meta/JavaConstant;Lcom/oracle/graal/pointsto/meta/AnalysisType;)Lcom/oracle/graal/pointsto/flow/ArrayElementsTypeFlow;
            astore 4 /* arrayObjElementsFlow */
        start local 4 // com.oracle.graal.pointsto.flow.ArrayElementsTypeFlow arrayObjElementsFlow
         1: .line 101
            aload 4 /* arrayObjElementsFlow */
            invokevirtual com.oracle.graal.pointsto.flow.ArrayElementsTypeFlow.getState:()Lcom/oracle/graal/pointsto/typestate/TypeState;
            invokevirtual com.oracle.graal.pointsto.typestate.TypeState.canBeNull:()Z
            ifne 3
         2: .line 103
            aload 4 /* arrayObjElementsFlow */
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            invokestatic com.oracle.graal.pointsto.typestate.TypeState.forNull:()Lcom/oracle/graal/pointsto/typestate/TypeState;
            invokevirtual com.oracle.graal.pointsto.flow.ArrayElementsTypeFlow.addState:(Lcom/oracle/graal/pointsto/BigBang;Lcom/oracle/graal/pointsto/typestate/TypeState;)Z
            pop
         3: .line 105
      StackMap locals: com.oracle.graal.pointsto.flow.ArrayElementsTypeFlow
      StackMap stack:
            return
        end local 4 // com.oracle.graal.pointsto.flow.ArrayElementsTypeFlow arrayObjElementsFlow
        end local 3 // int elementIndex
        end local 2 // com.oracle.graal.pointsto.meta.AnalysisType arrayType
        end local 1 // jdk.vm.ci.meta.JavaConstant array
        end local 0 // com.oracle.graal.pointsto.AnalysisObjectScanner this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    4     0                  this  Lcom/oracle/graal/pointsto/AnalysisObjectScanner;
            0    4     1                 array  Ljdk/vm/ci/meta/JavaConstant;
            0    4     2             arrayType  Lcom/oracle/graal/pointsto/meta/AnalysisType;
            0    4     3          elementIndex  I
            1    4     4  arrayObjElementsFlow  Lcom/oracle/graal/pointsto/flow/ArrayElementsTypeFlow;
    MethodParameters:
              Name  Flags
      array         
      arrayType     
      elementIndex  

  public void forNonNullArrayElement(jdk.vm.ci.meta.JavaConstant, com.oracle.graal.pointsto.meta.AnalysisType, jdk.vm.ci.meta.JavaConstant, com.oracle.graal.pointsto.meta.AnalysisType, int);
    descriptor: (Ljdk/vm/ci/meta/JavaConstant;Lcom/oracle/graal/pointsto/meta/AnalysisType;Ljdk/vm/ci/meta/JavaConstant;Lcom/oracle/graal/pointsto/meta/AnalysisType;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=9, args_size=6
        start local 0 // com.oracle.graal.pointsto.AnalysisObjectScanner this
        start local 1 // jdk.vm.ci.meta.JavaConstant array
        start local 2 // com.oracle.graal.pointsto.meta.AnalysisType arrayType
        start local 3 // jdk.vm.ci.meta.JavaConstant elementConstant
        start local 4 // com.oracle.graal.pointsto.meta.AnalysisType elementType
        start local 5 // int elementIndex
         0: .line 114
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            invokevirtual com.oracle.graal.pointsto.BigBang.getAllInstantiatedTypeFlow:()Lcom/oracle/graal/pointsto/flow/TypeFlow;
            invokevirtual com.oracle.graal.pointsto.flow.TypeFlow.getState:()Lcom/oracle/graal/pointsto/typestate/TypeState;
            aload 4 /* elementType */
            invokevirtual com.oracle.graal.pointsto.typestate.TypeState.containsType:(Lcom/oracle/graal/pointsto/meta/AnalysisType;)Z
            ifeq 6
         1: .line 115
            aload 0 /* this */
            aload 1 /* array */
            aload 2 /* arrayType */
            invokevirtual com.oracle.graal.pointsto.AnalysisObjectScanner.getArrayElementsFlow:(Ljdk/vm/ci/meta/JavaConstant;Lcom/oracle/graal/pointsto/meta/AnalysisType;)Lcom/oracle/graal/pointsto/flow/ArrayElementsTypeFlow;
            astore 6 /* arrayObjElementsFlow */
        start local 6 // com.oracle.graal.pointsto.flow.ArrayElementsTypeFlow arrayObjElementsFlow
         2: .line 116
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            invokevirtual com.oracle.graal.pointsto.BigBang.analysisPolicy:()Lcom/oracle/graal/pointsto/AnalysisPolicy;
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            aload 3 /* elementConstant */
            aload 4 /* elementType */
            invokevirtual com.oracle.graal.pointsto.AnalysisPolicy.createConstantObject:(Lcom/oracle/graal/pointsto/BigBang;Ljdk/vm/ci/meta/JavaConstant;Lcom/oracle/graal/pointsto/meta/AnalysisType;)Lcom/oracle/graal/pointsto/flow/context/object/AnalysisObject;
            astore 7 /* constantObject */
        start local 7 // com.oracle.graal.pointsto.flow.context.object.AnalysisObject constantObject
         3: .line 117
            aload 6 /* arrayObjElementsFlow */
            invokevirtual com.oracle.graal.pointsto.flow.ArrayElementsTypeFlow.getState:()Lcom/oracle/graal/pointsto/typestate/TypeState;
            invokevirtual com.oracle.graal.pointsto.typestate.TypeState.isUnknown:()Z
            ifne 6
            aload 6 /* arrayObjElementsFlow */
            invokevirtual com.oracle.graal.pointsto.flow.ArrayElementsTypeFlow.getState:()Lcom/oracle/graal/pointsto/typestate/TypeState;
            aload 7 /* constantObject */
            invokevirtual com.oracle.graal.pointsto.typestate.TypeState.containsObject:(Lcom/oracle/graal/pointsto/flow/context/object/AnalysisObject;)Z
            ifne 6
         4: .line 119
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            aload 7 /* constantObject */
            invokestatic com.oracle.graal.pointsto.typestate.TypeState.forNonNullObject:(Lcom/oracle/graal/pointsto/BigBang;Lcom/oracle/graal/pointsto/flow/context/object/AnalysisObject;)Lcom/oracle/graal/pointsto/typestate/TypeState;
            astore 8 /* elementTypeState */
        start local 8 // com.oracle.graal.pointsto.typestate.TypeState elementTypeState
         5: .line 120
            aload 6 /* arrayObjElementsFlow */
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            aload 8 /* elementTypeState */
            invokevirtual com.oracle.graal.pointsto.flow.ArrayElementsTypeFlow.addState:(Lcom/oracle/graal/pointsto/BigBang;Lcom/oracle/graal/pointsto/typestate/TypeState;)Z
            pop
        end local 8 // com.oracle.graal.pointsto.typestate.TypeState elementTypeState
        end local 7 // com.oracle.graal.pointsto.flow.context.object.AnalysisObject constantObject
        end local 6 // com.oracle.graal.pointsto.flow.ArrayElementsTypeFlow arrayObjElementsFlow
         6: .line 123
      StackMap locals:
      StackMap stack:
            return
        end local 5 // int elementIndex
        end local 4 // com.oracle.graal.pointsto.meta.AnalysisType elementType
        end local 3 // jdk.vm.ci.meta.JavaConstant elementConstant
        end local 2 // com.oracle.graal.pointsto.meta.AnalysisType arrayType
        end local 1 // jdk.vm.ci.meta.JavaConstant array
        end local 0 // com.oracle.graal.pointsto.AnalysisObjectScanner this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    7     0                  this  Lcom/oracle/graal/pointsto/AnalysisObjectScanner;
            0    7     1                 array  Ljdk/vm/ci/meta/JavaConstant;
            0    7     2             arrayType  Lcom/oracle/graal/pointsto/meta/AnalysisType;
            0    7     3       elementConstant  Ljdk/vm/ci/meta/JavaConstant;
            0    7     4           elementType  Lcom/oracle/graal/pointsto/meta/AnalysisType;
            0    7     5          elementIndex  I
            2    6     6  arrayObjElementsFlow  Lcom/oracle/graal/pointsto/flow/ArrayElementsTypeFlow;
            3    6     7        constantObject  Lcom/oracle/graal/pointsto/flow/context/object/AnalysisObject;
            5    6     8      elementTypeState  Lcom/oracle/graal/pointsto/typestate/TypeState;
    MethodParameters:
                 Name  Flags
      array            
      arrayType        
      elementConstant  
      elementType      
      elementIndex     

  private com.oracle.graal.pointsto.flow.ArrayElementsTypeFlow getArrayElementsFlow(jdk.vm.ci.meta.JavaConstant, com.oracle.graal.pointsto.meta.AnalysisType);
    descriptor: (Ljdk/vm/ci/meta/JavaConstant;Lcom/oracle/graal/pointsto/meta/AnalysisType;)Lcom/oracle/graal/pointsto/flow/ArrayElementsTypeFlow;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // com.oracle.graal.pointsto.AnalysisObjectScanner this
        start local 1 // jdk.vm.ci.meta.JavaConstant array
        start local 2 // com.oracle.graal.pointsto.meta.AnalysisType arrayType
         0: .line 127
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            invokevirtual com.oracle.graal.pointsto.BigBang.analysisPolicy:()Lcom/oracle/graal/pointsto/AnalysisPolicy;
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            aload 1 /* array */
            aload 2 /* arrayType */
            invokevirtual com.oracle.graal.pointsto.AnalysisPolicy.createConstantObject:(Lcom/oracle/graal/pointsto/BigBang;Ljdk/vm/ci/meta/JavaConstant;Lcom/oracle/graal/pointsto/meta/AnalysisType;)Lcom/oracle/graal/pointsto/flow/context/object/AnalysisObject;
            astore 3 /* arrayObjConstant */
        start local 3 // com.oracle.graal.pointsto.flow.context.object.AnalysisObject arrayObjConstant
         1: .line 128
            aload 3 /* arrayObjConstant */
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            iconst_1
            invokevirtual com.oracle.graal.pointsto.flow.context.object.AnalysisObject.getArrayElementsFlow:(Lcom/oracle/graal/pointsto/BigBang;Z)Lcom/oracle/graal/pointsto/flow/ArrayElementsTypeFlow;
            areturn
        end local 3 // com.oracle.graal.pointsto.flow.context.object.AnalysisObject arrayObjConstant
        end local 2 // com.oracle.graal.pointsto.meta.AnalysisType arrayType
        end local 1 // jdk.vm.ci.meta.JavaConstant array
        end local 0 // com.oracle.graal.pointsto.AnalysisObjectScanner this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    2     0              this  Lcom/oracle/graal/pointsto/AnalysisObjectScanner;
            0    2     1             array  Ljdk/vm/ci/meta/JavaConstant;
            0    2     2         arrayType  Lcom/oracle/graal/pointsto/meta/AnalysisType;
            1    2     3  arrayObjConstant  Lcom/oracle/graal/pointsto/flow/context/object/AnalysisObject;
    MethodParameters:
           Name  Flags
      array      
      arrayType  

  protected void forScannedConstant(jdk.vm.ci.meta.JavaConstant, com.oracle.graal.pointsto.ObjectScanner$ScanReason);
    descriptor: (Ljdk/vm/ci/meta/JavaConstant;Lcom/oracle/graal/pointsto/ObjectScanner$ScanReason;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // com.oracle.graal.pointsto.AnalysisObjectScanner this
        start local 1 // jdk.vm.ci.meta.JavaConstant value
        start local 2 // com.oracle.graal.pointsto.ObjectScanner$ScanReason reason
         0: .line 133
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            invokevirtual com.oracle.graal.pointsto.BigBang.getSnippetReflectionProvider:()Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
            ldc Ljava/lang/Object;
            aload 1 /* value */
            invokeinterface org.graalvm.compiler.api.replacements.SnippetReflectionProvider.asObject:(Ljava/lang/Class;Ljdk/vm/ci/meta/JavaConstant;)Ljava/lang/Object;
            astore 3 /* valueObj */
        start local 3 // java.lang.Object valueObj
         1: .line 134
            aload 0 /* this */
            getfield com.oracle.graal.pointsto.AnalysisObjectScanner.bb:Lcom/oracle/graal/pointsto/BigBang;
            invokevirtual com.oracle.graal.pointsto.BigBang.getMetaAccess:()Lcom/oracle/graal/pointsto/meta/AnalysisMetaAccess;
            aload 3 /* valueObj */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual com.oracle.graal.pointsto.meta.AnalysisMetaAccess.lookupJavaType:(Ljava/lang/Class;)Lcom/oracle/graal/pointsto/meta/AnalysisType;
            astore 4 /* type */
        start local 4 // com.oracle.graal.pointsto.meta.AnalysisType type
         2: .line 136
            aload 4 /* type */
            invokevirtual com.oracle.graal.pointsto.meta.AnalysisType.registerAsInHeap:()V
         3: .line 137
            return
        end local 4 // com.oracle.graal.pointsto.meta.AnalysisType type
        end local 3 // java.lang.Object valueObj
        end local 2 // com.oracle.graal.pointsto.ObjectScanner$ScanReason reason
        end local 1 // jdk.vm.ci.meta.JavaConstant value
        end local 0 // com.oracle.graal.pointsto.AnalysisObjectScanner this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lcom/oracle/graal/pointsto/AnalysisObjectScanner;
            0    4     1     value  Ljdk/vm/ci/meta/JavaConstant;
            0    4     2    reason  Lcom/oracle/graal/pointsto/ObjectScanner$ScanReason;
            1    4     3  valueObj  Ljava/lang/Object;
            2    4     4      type  Lcom/oracle/graal/pointsto/meta/AnalysisType;
    MethodParameters:
        Name  Flags
      value   
      reason  
}
SourceFile: "AnalysisObjectScanner.java"
InnerClasses:
  public final ReusableSet = com.oracle.graal.pointsto.ObjectScanner$ReusableSet of com.oracle.graal.pointsto.ObjectScanner
  public abstract ScanReason = com.oracle.graal.pointsto.ObjectScanner$ScanReason of com.oracle.graal.pointsto.ObjectScanner