public abstract class com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode extends com.oracle.truffle.js.nodes.array.JSArrayElementIndexNode
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode
  super_class: com.oracle.truffle.js.nodes.array.JSArrayElementIndexNode
{
  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 61
            ldc Lcom/oracle/truffle/js/nodes/array/JSArrayNextElementIndexNode;
            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.truffle.js.nodes.array.JSArrayNextElementIndexNode.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void <init>(com.oracle.truffle.js.runtime.JSContext);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode this
        start local 1 // com.oracle.truffle.js.runtime.JSContext context
         0: .line 64
            aload 0 /* this */
            aload 1 /* context */
            invokespecial com.oracle.truffle.js.nodes.array.JSArrayElementIndexNode.<init>:(Lcom/oracle/truffle/js/runtime/JSContext;)V
         1: .line 65
            return
        end local 1 // com.oracle.truffle.js.runtime.JSContext context
        end local 0 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lcom/oracle/truffle/js/nodes/array/JSArrayNextElementIndexNode;
            0    2     1  context  Lcom/oracle/truffle/js/runtime/JSContext;
    MethodParameters:
         Name  Flags
      context  

  public static com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode create(com.oracle.truffle.js.runtime.JSContext);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/array/JSArrayNextElementIndexNode;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 68
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tJSArrayNextElementIndexNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    MethodParameters:
         Name  Flags
      context  

  public final long executeLong(java.lang.Object, long, long);
    descriptor: (Ljava/lang/Object;JJ)J
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=8, locals=6, args_size=4
        start local 0 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode this
        start local 1 // java.lang.Object object
        start local 2 // long currentIndex
        start local 4 // long length
         0: .line 72
            aload 0 /* this */
            aload 1 /* object */
            lload 2 /* currentIndex */
            lload 4 /* length */
            aload 0 /* this */
            aload 1 /* object */
            invokevirtual com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode.isArray:(Ljava/lang/Object;)Z
            invokevirtual com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode.executeLong:(Ljava/lang/Object;JJZ)J
            lreturn
        end local 4 // long length
        end local 2 // long currentIndex
        end local 1 // java.lang.Object object
        end local 0 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lcom/oracle/truffle/js/nodes/array/JSArrayNextElementIndexNode;
            0    1     1        object  Ljava/lang/Object;
            0    1     2  currentIndex  J
            0    1     4        length  J
    MethodParameters:
              Name  Flags
      object        
      currentIndex  
      length        

  public abstract long executeLong(java.lang.Object, long, long, boolean);
    descriptor: (Ljava/lang/Object;JJZ)J
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
              Name  Flags
      object        
      currentIndex  
      length        
      isArray       

  public long doWithoutHolesCached(com.oracle.truffle.api.object.DynamicObject, long, long, boolean, com.oracle.truffle.js.runtime.array.ScriptArray);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;JJZLcom/oracle/truffle/js/runtime/array/ScriptArray;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=6
        start local 0 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject object
        start local 2 // long currentIndex
        start local 4 // long length
        start local 6 // boolean isArray
        start local 7 // com.oracle.truffle.js.runtime.array.ScriptArray cachedArrayType
         0: .line 81
            getstatic com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode.$assertionsDisabled:Z
            ifne 2
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode.isSupportedArray:(Lcom/oracle/truffle/api/object/DynamicObject;)Z
            ifeq 1
            aload 7 /* cachedArrayType */
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode.getArrayType:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/array/ScriptArray;
            if_acmpeq 2
      StackMap locals:
      StackMap stack:
         1: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 82
      StackMap locals:
      StackMap stack:
            aload 7 /* cachedArrayType */
            aload 1 /* object */
            lload 2 /* currentIndex */
            invokevirtual com.oracle.truffle.js.runtime.array.ScriptArray.nextElementIndex:(Lcom/oracle/truffle/api/object/DynamicObject;J)J
            lreturn
        end local 7 // com.oracle.truffle.js.runtime.array.ScriptArray cachedArrayType
        end local 6 // boolean isArray
        end local 4 // long length
        end local 2 // long currentIndex
        end local 1 // com.oracle.truffle.api.object.DynamicObject object
        end local 0 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    3     0             this  Lcom/oracle/truffle/js/nodes/array/JSArrayNextElementIndexNode;
            0    3     1           object  Lcom/oracle/truffle/api/object/DynamicObject;
            0    3     2     currentIndex  J
            0    3     4           length  J
            0    3     6          isArray  Z
            0    3     7  cachedArrayType  Lcom/oracle/truffle/js/runtime/array/ScriptArray;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isArray", "!hasPrototypeElements(object)", "getArrayType(object) == cachedArrayType", "!cachedArrayType.hasHoles(object)"}, limit = "MAX_CACHED_ARRAY_TYPES")
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
        com.oracle.truffle.api.dsl.Cached(value = "getArrayTypeIfArray(object, isArray)")
    MethodParameters:
                 Name  Flags
      object           
      currentIndex     
      length           
      isArray          
      cachedArrayType  

  public long doWithoutHolesUncached(com.oracle.truffle.api.object.DynamicObject, long, long, boolean);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;JJZ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=5
        start local 0 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject object
        start local 2 // long currentIndex
        start local 4 // long length
        start local 6 // boolean isArray
         0: .line 87
            getstatic com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode.$assertionsDisabled:Z
            ifne 1
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode.isSupportedArray:(Lcom/oracle/truffle/api/object/DynamicObject;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 88
      StackMap locals:
      StackMap stack:
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode.getArrayType:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/array/ScriptArray;
            aload 1 /* object */
            lload 2 /* currentIndex */
            invokevirtual com.oracle.truffle.js.runtime.array.ScriptArray.nextElementIndex:(Lcom/oracle/truffle/api/object/DynamicObject;J)J
            lreturn
        end local 6 // boolean isArray
        end local 4 // long length
        end local 2 // long currentIndex
        end local 1 // com.oracle.truffle.api.object.DynamicObject object
        end local 0 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lcom/oracle/truffle/js/nodes/array/JSArrayNextElementIndexNode;
            0    2     1        object  Lcom/oracle/truffle/api/object/DynamicObject;
            0    2     2  currentIndex  J
            0    2     4        length  J
            0    2     6       isArray  Z
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isArray", "!hasPrototypeElements(object)", "!hasHoles(object)"}, replaces = {"doWithoutHolesCached"})
    MethodParameters:
              Name  Flags
      object        
      currentIndex  
      length        
      isArray       

  public long nextWithHolesCached(com.oracle.truffle.api.object.DynamicObject, long, long, boolean, com.oracle.truffle.js.runtime.array.ScriptArray, com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode, com.oracle.truffle.api.profiles.ConditionProfile);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;JJZLcom/oracle/truffle/js/runtime/array/ScriptArray;Lcom/oracle/truffle/js/nodes/array/JSArrayNextElementIndexNode;Lcom/oracle/truffle/api/profiles/ConditionProfile;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=10, args_size=8
        start local 0 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject object
        start local 2 // long currentIndex
        start local 4 // long length
        start local 6 // boolean isArray
        start local 7 // com.oracle.truffle.js.runtime.array.ScriptArray cachedArrayType
        start local 8 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode nextElementIndexNode
        start local 9 // com.oracle.truffle.api.profiles.ConditionProfile isPlusOne
         0: .line 97
            getstatic com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode.$assertionsDisabled:Z
            ifne 2
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode.isSupportedArray:(Lcom/oracle/truffle/api/object/DynamicObject;)Z
            ifeq 1
            aload 7 /* cachedArrayType */
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode.getArrayType:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/array/ScriptArray;
            if_acmpeq 2
      StackMap locals:
      StackMap stack:
         1: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 98
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* object */
            lload 2 /* currentIndex */
            lload 4 /* length */
            aload 7 /* cachedArrayType */
            aload 8 /* nextElementIndexNode */
            aload 9 /* isPlusOne */
            invokevirtual com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode.holesArrayImpl:(Lcom/oracle/truffle/api/object/DynamicObject;JJLcom/oracle/truffle/js/runtime/array/ScriptArray;Lcom/oracle/truffle/js/nodes/array/JSArrayNextElementIndexNode;Lcom/oracle/truffle/api/profiles/ConditionProfile;)J
            lreturn
        end local 9 // com.oracle.truffle.api.profiles.ConditionProfile isPlusOne
        end local 8 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode nextElementIndexNode
        end local 7 // com.oracle.truffle.js.runtime.array.ScriptArray cachedArrayType
        end local 6 // boolean isArray
        end local 4 // long length
        end local 2 // long currentIndex
        end local 1 // com.oracle.truffle.api.object.DynamicObject object
        end local 0 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    3     0                  this  Lcom/oracle/truffle/js/nodes/array/JSArrayNextElementIndexNode;
            0    3     1                object  Lcom/oracle/truffle/api/object/DynamicObject;
            0    3     2          currentIndex  J
            0    3     4                length  J
            0    3     6               isArray  Z
            0    3     7       cachedArrayType  Lcom/oracle/truffle/js/runtime/array/ScriptArray;
            0    3     8  nextElementIndexNode  Lcom/oracle/truffle/js/nodes/array/JSArrayNextElementIndexNode;
            0    3     9             isPlusOne  Lcom/oracle/truffle/api/profiles/ConditionProfile;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isArray", "!hasPrototypeElements(object)", "getArrayType(object) == cachedArrayType", "cachedArrayType.hasHoles(object)"}, limit = "MAX_CACHED_ARRAY_TYPES")
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
        com.oracle.truffle.api.dsl.Cached(value = "getArrayTypeIfArray(object, isArray)")
      5:
        com.oracle.truffle.api.dsl.Cached(value = "create(context)")
      6:
        com.oracle.truffle.api.dsl.Cached(value = "createBinaryProfile()")
    MethodParameters:
                      Name  Flags
      object                
      currentIndex          
      length                
      isArray               
      cachedArrayType       
      nextElementIndexNode  
      isPlusOne             

  public long nextWithHolesUncached(com.oracle.truffle.api.object.DynamicObject, long, long, boolean, com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode, com.oracle.truffle.api.profiles.ConditionProfile, com.oracle.truffle.api.profiles.ValueProfile);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;JJZLcom/oracle/truffle/js/nodes/array/JSArrayNextElementIndexNode;Lcom/oracle/truffle/api/profiles/ConditionProfile;Lcom/oracle/truffle/api/profiles/ValueProfile;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=11, args_size=8
        start local 0 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject object
        start local 2 // long currentIndex
        start local 4 // long length
        start local 6 // boolean isArray
        start local 7 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode nextElementIndexNode
        start local 8 // com.oracle.truffle.api.profiles.ConditionProfile isPlusOne
        start local 9 // com.oracle.truffle.api.profiles.ValueProfile arrayTypeProfile
         0: .line 106
            getstatic com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode.$assertionsDisabled:Z
            ifne 1
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode.isSupportedArray:(Lcom/oracle/truffle/api/object/DynamicObject;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 107
      StackMap locals:
      StackMap stack:
            aload 9 /* arrayTypeProfile */
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode.getArrayType:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/array/ScriptArray;
            invokevirtual com.oracle.truffle.api.profiles.ValueProfile.profile:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.js.runtime.array.ScriptArray
            astore 10 /* arrayType */
        start local 10 // com.oracle.truffle.js.runtime.array.ScriptArray arrayType
         2: .line 108
            aload 0 /* this */
            aload 1 /* object */
            lload 2 /* currentIndex */
            lload 4 /* length */
            aload 10 /* arrayType */
            aload 7 /* nextElementIndexNode */
            aload 8 /* isPlusOne */
            invokevirtual com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode.holesArrayImpl:(Lcom/oracle/truffle/api/object/DynamicObject;JJLcom/oracle/truffle/js/runtime/array/ScriptArray;Lcom/oracle/truffle/js/nodes/array/JSArrayNextElementIndexNode;Lcom/oracle/truffle/api/profiles/ConditionProfile;)J
            lreturn
        end local 10 // com.oracle.truffle.js.runtime.array.ScriptArray arrayType
        end local 9 // com.oracle.truffle.api.profiles.ValueProfile arrayTypeProfile
        end local 8 // com.oracle.truffle.api.profiles.ConditionProfile isPlusOne
        end local 7 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode nextElementIndexNode
        end local 6 // boolean isArray
        end local 4 // long length
        end local 2 // long currentIndex
        end local 1 // com.oracle.truffle.api.object.DynamicObject object
        end local 0 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    3     0                  this  Lcom/oracle/truffle/js/nodes/array/JSArrayNextElementIndexNode;
            0    3     1                object  Lcom/oracle/truffle/api/object/DynamicObject;
            0    3     2          currentIndex  J
            0    3     4                length  J
            0    3     6               isArray  Z
            0    3     7  nextElementIndexNode  Lcom/oracle/truffle/js/nodes/array/JSArrayNextElementIndexNode;
            0    3     8             isPlusOne  Lcom/oracle/truffle/api/profiles/ConditionProfile;
            0    3     9      arrayTypeProfile  Lcom/oracle/truffle/api/profiles/ValueProfile;
            2    3    10             arrayType  Lcom/oracle/truffle/js/runtime/array/ScriptArray;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isArray", "hasPrototypeElements(object) || hasHoles(object)"}, replaces = {"nextWithHolesCached"})
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
        com.oracle.truffle.api.dsl.Cached(value = "create(context)")
      5:
        com.oracle.truffle.api.dsl.Cached(value = "createBinaryProfile()")
      6:
        com.oracle.truffle.api.dsl.Cached(value = "createClassProfile()")
    MethodParameters:
                      Name  Flags
      object                
      currentIndex          
      length                
      isArray               
      nextElementIndexNode  
      isPlusOne             
      arrayTypeProfile      

  private long holesArrayImpl(com.oracle.truffle.api.object.DynamicObject, long, long, com.oracle.truffle.js.runtime.array.ScriptArray, com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode, com.oracle.truffle.api.profiles.ConditionProfile);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;JJLcom/oracle/truffle/js/runtime/array/ScriptArray;Lcom/oracle/truffle/js/nodes/array/JSArrayNextElementIndexNode;Lcom/oracle/truffle/api/profiles/ConditionProfile;)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=16, args_size=7
        start local 0 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject object
        start local 2 // long currentIndex
        start local 4 // long length
        start local 6 // com.oracle.truffle.js.runtime.array.ScriptArray array
        start local 7 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode nextElementIndexNode
        start local 8 // com.oracle.truffle.api.profiles.ConditionProfile isPlusOne
         0: .line 113
            aload 6 /* array */
            aload 1 /* object */
            lload 2 /* currentIndex */
            invokevirtual com.oracle.truffle.js.runtime.array.ScriptArray.nextElementIndex:(Lcom/oracle/truffle/api/object/DynamicObject;J)J
            lstore 9 /* nextIndex */
        start local 9 // long nextIndex
         1: .line 114
            lload 2 /* currentIndex */
            lconst_1
            ladd
            lstore 11 /* plusOne */
        start local 11 // long plusOne
         2: .line 115
            aload 8 /* isPlusOne */
            lload 9 /* nextIndex */
            lload 11 /* plusOne */
            lcmp
            ifne 3
            iconst_1
            goto 4
      StackMap locals: com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode com.oracle.truffle.api.object.DynamicObject long long com.oracle.truffle.js.runtime.array.ScriptArray com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode com.oracle.truffle.api.profiles.ConditionProfile long long
      StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile
         3: iconst_0
      StackMap locals: com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode com.oracle.truffle.api.object.DynamicObject long long com.oracle.truffle.js.runtime.array.ScriptArray com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode com.oracle.truffle.api.profiles.ConditionProfile long long
      StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile int
         4: invokevirtual com.oracle.truffle.api.profiles.ConditionProfile.profile:(Z)Z
            ifeq 6
         5: .line 116
            lload 9 /* nextIndex */
            lreturn
         6: .line 119
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getArrayPrototypeNoElementsAssumption:()Lcom/oracle/truffle/api/Assumption;
            invokeinterface com.oracle.truffle.api.Assumption.isValid:()Z
            ifne 14
         7: .line 120
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.getPrototype:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/api/object/DynamicObject;
            astore 13 /* prototype */
        start local 13 // com.oracle.truffle.api.object.DynamicObject prototype
         8: .line 121
            goto 13
         9: .line 122
      StackMap locals: com.oracle.truffle.api.object.DynamicObject
      StackMap stack:
            aload 7 /* nextElementIndexNode */
            aload 13 /* prototype */
            lload 2 /* currentIndex */
            lload 4 /* length */
            invokevirtual com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode.executeLong:(Ljava/lang/Object;JJ)J
            lstore 14 /* candidate */
        start local 14 // long candidate
        10: .line 123
            lload 11 /* plusOne */
            lload 14 /* candidate */
            lcmp
            ifgt 12
            lload 14 /* candidate */
            lload 4 /* length */
            lcmp
            ifge 12
        11: .line 124
            lload 9 /* nextIndex */
            lload 14 /* candidate */
            invokestatic java.lang.Math.min:(JJ)J
            lstore 9 /* nextIndex */
        12: .line 126
      StackMap locals: long
      StackMap stack:
            aload 13 /* prototype */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.getPrototype:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/api/object/DynamicObject;
            astore 13 /* prototype */
        end local 14 // long candidate
        13: .line 121
      StackMap locals:
      StackMap stack:
            aload 13 /* prototype */
            getstatic com.oracle.truffle.js.runtime.objects.Null.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            if_acmpne 9
        end local 13 // com.oracle.truffle.api.object.DynamicObject prototype
        14: .line 129
      StackMap locals:
      StackMap stack:
            lload 9 /* nextIndex */
            lreturn
        end local 11 // long plusOne
        end local 9 // long nextIndex
        end local 8 // com.oracle.truffle.api.profiles.ConditionProfile isPlusOne
        end local 7 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode nextElementIndexNode
        end local 6 // com.oracle.truffle.js.runtime.array.ScriptArray array
        end local 4 // long length
        end local 2 // long currentIndex
        end local 1 // com.oracle.truffle.api.object.DynamicObject object
        end local 0 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   15     0                  this  Lcom/oracle/truffle/js/nodes/array/JSArrayNextElementIndexNode;
            0   15     1                object  Lcom/oracle/truffle/api/object/DynamicObject;
            0   15     2          currentIndex  J
            0   15     4                length  J
            0   15     6                 array  Lcom/oracle/truffle/js/runtime/array/ScriptArray;
            0   15     7  nextElementIndexNode  Lcom/oracle/truffle/js/nodes/array/JSArrayNextElementIndexNode;
            0   15     8             isPlusOne  Lcom/oracle/truffle/api/profiles/ConditionProfile;
            1   15     9             nextIndex  J
            2   15    11               plusOne  J
            8   14    13             prototype  Lcom/oracle/truffle/api/object/DynamicObject;
           10   13    14             candidate  J
    MethodParameters:
                      Name  Flags
      object                
      currentIndex          
      length                
      array                 
      nextElementIndexNode  
      isPlusOne             

  public long nextObjectViaEnumeration(com.oracle.truffle.api.object.DynamicObject, long, long, boolean, com.oracle.truffle.js.nodes.access.JSHasPropertyNode);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;JJZLcom/oracle/truffle/js/nodes/access/JSHasPropertyNode;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=10, args_size=6
        start local 0 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject object
        start local 2 // long currentIndex
        start local 4 // long length
        start local 6 // boolean isArray
        start local 7 // com.oracle.truffle.js.nodes.access.JSHasPropertyNode hasPropertyNode
         0: .line 135
            lload 2 /* currentIndex */
            lconst_1
            ladd
            lstore 8 /* currentIndexPlusOne */
        start local 8 // long currentIndexPlusOne
         1: .line 136
            aload 7 /* hasPropertyNode */
            aload 1 /* object */
            lload 8 /* currentIndexPlusOne */
            invokevirtual com.oracle.truffle.js.nodes.access.JSHasPropertyNode.executeBoolean:(Ljava/lang/Object;J)Z
            ifeq 3
         2: .line 137
            lload 8 /* currentIndexPlusOne */
            lreturn
         3: .line 139
      StackMap locals: long
      StackMap stack:
            aload 1 /* object */
            lload 2 /* currentIndex */
            lload 4 /* length */
            invokestatic com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode.nextObjectViaEnumerationIntl:(Lcom/oracle/truffle/api/object/DynamicObject;JJ)J
            lreturn
        end local 8 // long currentIndexPlusOne
        end local 7 // com.oracle.truffle.js.nodes.access.JSHasPropertyNode hasPropertyNode
        end local 6 // boolean isArray
        end local 4 // long length
        end local 2 // long currentIndex
        end local 1 // com.oracle.truffle.api.object.DynamicObject object
        end local 0 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    4     0                 this  Lcom/oracle/truffle/js/nodes/array/JSArrayNextElementIndexNode;
            0    4     1               object  Lcom/oracle/truffle/api/object/DynamicObject;
            0    4     2         currentIndex  J
            0    4     4               length  J
            0    4     6              isArray  Z
            0    4     7      hasPropertyNode  Lcom/oracle/truffle/js/nodes/access/JSHasPropertyNode;
            1    4     8  currentIndexPlusOne  J
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"!isArray", "isSuitableForEnumBasedProcessingUsingOwnKeys(object, length)"})
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
        com.oracle.truffle.api.dsl.Cached(value = "create()")
    MethodParameters:
                 Name  Flags
      object           
      currentIndex     
      length           
      isArray          
      hasPropertyNode  

  public long nextObjectViaFullEnumeration(com.oracle.truffle.api.object.DynamicObject, long, long, boolean, com.oracle.truffle.js.nodes.access.JSHasPropertyNode);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;JJZLcom/oracle/truffle/js/nodes/access/JSHasPropertyNode;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=10, args_size=6
        start local 0 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject object
        start local 2 // long currentIndex
        start local 4 // long length
        start local 6 // boolean isArray
        start local 7 // com.oracle.truffle.js.nodes.access.JSHasPropertyNode hasPropertyNode
         0: .line 145
            lload 2 /* currentIndex */
            lconst_1
            ladd
            lstore 8 /* currentIndexPlusOne */
        start local 8 // long currentIndexPlusOne
         1: .line 146
            aload 7 /* hasPropertyNode */
            aload 1 /* object */
            lload 8 /* currentIndexPlusOne */
            invokevirtual com.oracle.truffle.js.nodes.access.JSHasPropertyNode.executeBoolean:(Ljava/lang/Object;J)Z
            ifeq 3
         2: .line 147
            lload 8 /* currentIndexPlusOne */
            lreturn
         3: .line 149
      StackMap locals: long
      StackMap stack:
            aload 1 /* object */
            lload 2 /* currentIndex */
            lload 4 /* length */
            invokestatic com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode.nextObjectViaFullEnumerationIntl:(Lcom/oracle/truffle/api/object/DynamicObject;JJ)J
            lreturn
        end local 8 // long currentIndexPlusOne
        end local 7 // com.oracle.truffle.js.nodes.access.JSHasPropertyNode hasPropertyNode
        end local 6 // boolean isArray
        end local 4 // long length
        end local 2 // long currentIndex
        end local 1 // com.oracle.truffle.api.object.DynamicObject object
        end local 0 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    4     0                 this  Lcom/oracle/truffle/js/nodes/array/JSArrayNextElementIndexNode;
            0    4     1               object  Lcom/oracle/truffle/api/object/DynamicObject;
            0    4     2         currentIndex  J
            0    4     4               length  J
            0    4     6              isArray  Z
            0    4     7      hasPropertyNode  Lcom/oracle/truffle/js/nodes/access/JSHasPropertyNode;
            1    4     8  currentIndexPlusOne  J
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"!isArray", "!isSuitableForEnumBasedProcessingUsingOwnKeys(object, length)", "isSuitableForEnumBasedProcessing(object, length)"})
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
        com.oracle.truffle.api.dsl.Cached(value = "create()")
    MethodParameters:
                 Name  Flags
      object           
      currentIndex     
      length           
      isArray          
      hasPropertyNode  

  public long nextObjectViaPolling(java.lang.Object, long, long, boolean, com.oracle.truffle.js.nodes.access.JSHasPropertyNode);
    descriptor: (Ljava/lang/Object;JJZLcom/oracle/truffle/js/nodes/access/JSHasPropertyNode;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=10, args_size=6
        start local 0 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode this
        start local 1 // java.lang.Object object
        start local 2 // long currentIndex
        start local 4 // long length
        start local 6 // boolean isArray
        start local 7 // com.oracle.truffle.js.nodes.access.JSHasPropertyNode hasPropertyNode
         0: .line 155
            lload 2 /* currentIndex */
            lconst_1
            ladd
            lstore 8 /* index */
        start local 8 // long index
         1: .line 156
            goto 5
         2: .line 157
      StackMap locals: long
      StackMap stack:
            lload 8 /* index */
            lconst_1
            ladd
            lstore 8 /* index */
         3: .line 158
            lload 8 /* index */
            lload 4 /* length */
            lcmp
            iflt 5
         4: .line 159
            getstatic com.oracle.truffle.js.runtime.JSRuntime.MAX_SAFE_INTEGER_LONG:J
            lreturn
         5: .line 156
      StackMap locals:
      StackMap stack:
            aload 7 /* hasPropertyNode */
            aload 1 /* object */
            lload 8 /* index */
            invokevirtual com.oracle.truffle.js.nodes.access.JSHasPropertyNode.executeBoolean:(Ljava/lang/Object;J)Z
            ifeq 2
         6: .line 162
            lload 8 /* index */
            lreturn
        end local 8 // long index
        end local 7 // com.oracle.truffle.js.nodes.access.JSHasPropertyNode hasPropertyNode
        end local 6 // boolean isArray
        end local 4 // long length
        end local 2 // long currentIndex
        end local 1 // java.lang.Object object
        end local 0 // com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    7     0             this  Lcom/oracle/truffle/js/nodes/array/JSArrayNextElementIndexNode;
            0    7     1           object  Ljava/lang/Object;
            0    7     2     currentIndex  J
            0    7     4           length  J
            0    7     6          isArray  Z
            0    7     7  hasPropertyNode  Lcom/oracle/truffle/js/nodes/access/JSHasPropertyNode;
            1    7     8            index  J
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"!isArray", "!isSuitableForEnumBasedProcessing(object, length)"})
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
        com.oracle.truffle.api.dsl.Cached(value = "create()")
    MethodParameters:
                 Name  Flags
      object           
      currentIndex     
      length           
      isArray          
      hasPropertyNode  

  private static long nextObjectViaEnumerationIntl(com.oracle.truffle.api.object.DynamicObject, long, long);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;JJ)J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=11, args_size=3
        start local 0 // com.oracle.truffle.api.object.DynamicObject object
        start local 1 // long currentIndex
        start local 3 // long length
         0: .line 167
            lload 3 /* length */
            lconst_0
            lcmp
            ifne 1
            lconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: lload 3 /* length */
      StackMap locals:
      StackMap stack: long
         2: lstore 5 /* result */
        start local 5 // long result
         3: .line 168
            aload 0 /* object */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.ownPropertyKeys:(Lcom/oracle/truffle/api/object/DynamicObject;)Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 8
            goto 11
      StackMap locals: com.oracle.truffle.api.object.DynamicObject long long long top java.util.Iterator
      StackMap stack:
         4: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 7 /* key */
        start local 7 // java.lang.Object key
         5: .line 169
            aload 7 /* key */
            ifnonnull 7
         6: .line 170
            goto 11
         7: .line 172
      StackMap locals: com.oracle.truffle.api.object.DynamicObject long long long java.lang.Object java.util.Iterator
      StackMap stack:
            aload 7 /* key */
            instanceof java.lang.String
            ifeq 11
         8: .line 173
            aload 7 /* key */
            checkcast java.lang.String
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.propertyNameToIntegerIndex:(Ljava/lang/String;)J
            lstore 9 /* candidate */
        start local 9 // long candidate
         9: .line 175
            lload 9 /* candidate */
            lload 1 /* currentIndex */
            lcmp
            ifle 11
            lload 9 /* candidate */
            lload 5 /* result */
            lcmp
            ifge 11
        10: .line 176
            lload 9 /* candidate */
            lstore 5 /* result */
        end local 9 // long candidate
        end local 7 // java.lang.Object key
        11: .line 168
      StackMap locals: com.oracle.truffle.api.object.DynamicObject long long long top java.util.Iterator
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        12: .line 180
            lload 5 /* result */
            lreturn
        end local 5 // long result
        end local 3 // long length
        end local 1 // long currentIndex
        end local 0 // com.oracle.truffle.api.object.DynamicObject object
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   13     0        object  Lcom/oracle/truffle/api/object/DynamicObject;
            0   13     1  currentIndex  J
            0   13     3        length  J
            3   13     5        result  J
            5   11     7           key  Ljava/lang/Object;
            9   11     9     candidate  J
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
              Name  Flags
      object        
      currentIndex  
      length        

  private static long nextObjectViaFullEnumerationIntl(com.oracle.truffle.api.object.DynamicObject, long, long);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;JJ)J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=8, args_size=3
        start local 0 // com.oracle.truffle.api.object.DynamicObject object
        start local 1 // long currentIndex
        start local 3 // long length
         0: .line 185
            ldc 9223372036854775807
            lstore 5 /* result */
        start local 5 // long result
         1: .line 186
            aload 0 /* object */
            astore 7 /* chainObject */
        start local 7 // com.oracle.truffle.api.object.DynamicObject chainObject
         2: .line 188
      StackMap locals: long com.oracle.truffle.api.object.DynamicObject
      StackMap stack:
            lload 5 /* result */
            aload 7 /* chainObject */
            lload 1 /* currentIndex */
            lload 3 /* length */
            invokestatic com.oracle.truffle.js.nodes.array.JSArrayNextElementIndexNode.nextObjectViaEnumerationIntl:(Lcom/oracle/truffle/api/object/DynamicObject;JJ)J
            invokestatic java.lang.Math.min:(JJ)J
            lstore 5 /* result */
         3: .line 189
            aload 7 /* chainObject */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.getPrototype:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/api/object/DynamicObject;
            astore 7 /* chainObject */
         4: .line 190
            aload 7 /* chainObject */
            getstatic com.oracle.truffle.js.runtime.objects.Null.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            if_acmpne 2
         5: .line 191
            lload 5 /* result */
            lreturn
        end local 7 // com.oracle.truffle.api.object.DynamicObject chainObject
        end local 5 // long result
        end local 3 // long length
        end local 1 // long currentIndex
        end local 0 // com.oracle.truffle.api.object.DynamicObject object
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0        object  Lcom/oracle/truffle/api/object/DynamicObject;
            0    6     1  currentIndex  J
            0    6     3        length  J
            1    6     5        result  J
            2    6     7   chainObject  Lcom/oracle/truffle/api/object/DynamicObject;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
              Name  Flags
      object        
      currentIndex  
      length        
}
SourceFile: "JSArrayNextElementIndexNode.java"
InnerClasses:
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives