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

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToIndexNode this
         0: .line 55
            aload 0 /* this */
            invokespecial com.oracle.truffle.js.nodes.JavaScriptBaseNode.<init>:()V
            return
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToIndexNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/nodes/cast/JSToIndexNode;

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

  public abstract long executeLong(java.lang.Object);
    descriptor: (Ljava/lang/Object;)J
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      value  

  protected long doInt(int, com.oracle.truffle.api.profiles.BranchProfile);
    descriptor: (ILcom/oracle/truffle/api/profiles/BranchProfile;)J
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToIndexNode this
        start local 1 // int value
        start local 2 // com.oracle.truffle.api.profiles.BranchProfile negativeIndexBranch
         0: .line 66
            iload 1 /* value */
            ifge 3
         1: .line 67
            aload 2 /* negativeIndexBranch */
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
         2: .line 68
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.runtime.Errors.createRangeErrorIndexNegative:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/js/runtime/JSException;
            athrow
         3: .line 70
      StackMap locals:
      StackMap stack:
            iload 1 /* value */
            i2l
            lreturn
        end local 2 // com.oracle.truffle.api.profiles.BranchProfile negativeIndexBranch
        end local 1 // int value
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToIndexNode this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    4     0                 this  Lcom/oracle/truffle/js/nodes/cast/JSToIndexNode;
            0    4     1                value  I
            0    4     2  negativeIndexBranch  Lcom/oracle/truffle/api/profiles/BranchProfile;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.dsl.Cached()
        com.oracle.truffle.api.dsl.Cached$Shared(value = "negativeIndexBranch")
    MethodParameters:
                     Name  Flags
      value                
      negativeIndexBranch  

  protected long doSafeInteger(com.oracle.truffle.js.runtime.SafeInteger, com.oracle.truffle.api.profiles.BranchProfile);
    descriptor: (Lcom/oracle/truffle/js/runtime/SafeInteger;Lcom/oracle/truffle/api/profiles/BranchProfile;)J
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToIndexNode this
        start local 1 // com.oracle.truffle.js.runtime.SafeInteger value
        start local 2 // com.oracle.truffle.api.profiles.BranchProfile negativeIndexBranch
         0: .line 76
            aload 1 /* value */
            invokevirtual com.oracle.truffle.js.runtime.SafeInteger.longValue:()J
            lstore 3 /* longValue */
        start local 3 // long longValue
         1: .line 77
            lload 3 /* longValue */
            lconst_0
            lcmp
            ifge 4
         2: .line 78
            aload 2 /* negativeIndexBranch */
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
         3: .line 79
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.runtime.Errors.createRangeErrorIndexNegative:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/js/runtime/JSException;
            athrow
         4: .line 81
      StackMap locals: long
      StackMap stack:
            lload 3 /* longValue */
            lreturn
        end local 3 // long longValue
        end local 2 // com.oracle.truffle.api.profiles.BranchProfile negativeIndexBranch
        end local 1 // com.oracle.truffle.js.runtime.SafeInteger value
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToIndexNode this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    5     0                 this  Lcom/oracle/truffle/js/nodes/cast/JSToIndexNode;
            0    5     1                value  Lcom/oracle/truffle/js/runtime/SafeInteger;
            0    5     2  negativeIndexBranch  Lcom/oracle/truffle/api/profiles/BranchProfile;
            1    5     3            longValue  J
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.dsl.Cached()
        com.oracle.truffle.api.dsl.Cached$Shared(value = "negativeIndexBranch")
    MethodParameters:
                     Name  Flags
      value                
      negativeIndexBranch  

  protected long doDouble(double, com.oracle.truffle.api.profiles.BranchProfile, com.oracle.truffle.api.profiles.BranchProfile);
    descriptor: (DLcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;)J
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToIndexNode this
        start local 1 // double value
        start local 3 // com.oracle.truffle.api.profiles.BranchProfile negativeIndexBranch
        start local 4 // com.oracle.truffle.api.profiles.BranchProfile tooLargeIndexBranch
         0: .line 88
            dload 1 /* value */
            d2l
            lstore 5 /* integerIndex */
        start local 5 // long integerIndex
         1: .line 89
            lload 5 /* integerIndex */
            lconst_0
            lcmp
            ifge 4
         2: .line 90
            aload 3 /* negativeIndexBranch */
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
         3: .line 91
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.runtime.Errors.createRangeErrorIndexNegative:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/js/runtime/JSException;
            athrow
         4: .line 92
      StackMap locals: long
      StackMap stack:
            lload 5 /* integerIndex */
            getstatic com.oracle.truffle.js.runtime.JSRuntime.MAX_SAFE_INTEGER_LONG:J
            lcmp
            ifle 7
         5: .line 93
            aload 4 /* tooLargeIndexBranch */
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
         6: .line 94
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.runtime.Errors.createRangeErrorIndexTooLarge:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/js/runtime/JSException;
            athrow
         7: .line 96
      StackMap locals:
      StackMap stack:
            lload 5 /* integerIndex */
            lreturn
        end local 5 // long integerIndex
        end local 4 // com.oracle.truffle.api.profiles.BranchProfile tooLargeIndexBranch
        end local 3 // com.oracle.truffle.api.profiles.BranchProfile negativeIndexBranch
        end local 1 // double value
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToIndexNode this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    8     0                 this  Lcom/oracle/truffle/js/nodes/cast/JSToIndexNode;
            0    8     1                value  D
            0    8     3  negativeIndexBranch  Lcom/oracle/truffle/api/profiles/BranchProfile;
            0    8     4  tooLargeIndexBranch  Lcom/oracle/truffle/api/profiles/BranchProfile;
            1    8     5         integerIndex  J
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.dsl.Cached()
        com.oracle.truffle.api.dsl.Cached$Shared(value = "negativeIndexBranch")
      2:
        com.oracle.truffle.api.dsl.Cached()
    MethodParameters:
                     Name  Flags
      value                
      negativeIndexBranch  
      tooLargeIndexBranch  

  protected static long doUndefined(java.lang.Object);
    descriptor: (Ljava/lang/Object;)J
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Object value
         0: .line 102
            lconst_0
            lreturn
        end local 0 // java.lang.Object value
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  value  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isUndefined(value)"})
    MethodParameters:
       Name  Flags
      value  

  protected static long doObject(java.lang.Object, com.oracle.truffle.js.nodes.cast.JSToNumberNode, com.oracle.truffle.js.nodes.cast.JSToIndexNode);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/js/nodes/cast/JSToNumberNode;Lcom/oracle/truffle/js/nodes/cast/JSToIndexNode;)J
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // java.lang.Object value
        start local 1 // com.oracle.truffle.js.nodes.cast.JSToNumberNode toNumberNode
        start local 2 // com.oracle.truffle.js.nodes.cast.JSToIndexNode recursiveToIndexNode
         0: .line 109
            aload 1 /* toNumberNode */
            aload 0 /* value */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToNumberNode.execute:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Number
            astore 3 /* number */
        start local 3 // java.lang.Number number
         1: .line 110
            getstatic com.oracle.truffle.js.nodes.cast.JSToIndexNode.$assertionsDisabled:Z
            ifne 2
            aload 3 /* number */
            instanceof java.lang.Integer
            ifne 2
            aload 3 /* number */
            instanceof java.lang.Double
            ifne 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 111
      StackMap locals: java.lang.Number
      StackMap stack:
            aload 2 /* recursiveToIndexNode */
            aload 3 /* number */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToIndexNode.executeLong:(Ljava/lang/Object;)J
            lreturn
        end local 3 // java.lang.Number number
        end local 2 // com.oracle.truffle.js.nodes.cast.JSToIndexNode recursiveToIndexNode
        end local 1 // com.oracle.truffle.js.nodes.cast.JSToNumberNode toNumberNode
        end local 0 // java.lang.Object value
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    3     0                 value  Ljava/lang/Object;
            0    3     1          toNumberNode  Lcom/oracle/truffle/js/nodes/cast/JSToNumberNode;
            0    3     2  recursiveToIndexNode  Lcom/oracle/truffle/js/nodes/cast/JSToIndexNode;
            1    3     3                number  Ljava/lang/Number;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.dsl.Cached(value = "create()")
      2:
        com.oracle.truffle.api.dsl.Cached(value = "create()")
    MethodParameters:
                      Name  Flags
      value                 
      toNumberNode          
      recursiveToIndexNode  
}
SourceFile: "JSToIndexNode.java"
InnerClasses:
  public abstract Shared = com.oracle.truffle.api.dsl.Cached$Shared of com.oracle.truffle.api.dsl.Cached