public abstract class com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode extends com.oracle.truffle.js.builtins.ObjectPrototypeBuiltins$ObjectOperation
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode
  super_class: com.oracle.truffle.js.builtins.ObjectPrototypeBuiltins$ObjectOperation
{
  private com.oracle.truffle.js.nodes.access.EnumerableOwnPropertyNamesNode enumerableOwnPropertyNamesNode;
    descriptor: Lcom/oracle/truffle/js/nodes/access/EnumerableOwnPropertyNamesNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private com.oracle.truffle.api.interop.InteropLibrary asString;
    descriptor: Lcom/oracle/truffle/api/interop/InteropLibrary;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private final com.oracle.truffle.api.profiles.ConditionProfile hasElements;
    descriptor: Lcom/oracle/truffle/api/profiles/ConditionProfile;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  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 788
            ldc Lcom/oracle/truffle/js/builtins/ObjectFunctionBuiltins;
            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.builtins.ObjectFunctionBuiltins$ObjectKeysNode.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.js.nodes.function.JSBuiltin);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/function/JSBuiltin;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode this
        start local 1 // com.oracle.truffle.js.runtime.JSContext context
        start local 2 // com.oracle.truffle.js.nodes.function.JSBuiltin builtin
         0: .line 794
            aload 0 /* this */
            aload 1 /* context */
            aload 2 /* builtin */
            invokespecial com.oracle.truffle.js.builtins.ObjectPrototypeBuiltins$ObjectOperation.<init>:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/function/JSBuiltin;)V
         1: .line 791
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.profiles.ConditionProfile.createBinaryProfile:()Lcom/oracle/truffle/api/profiles/ConditionProfile;
            putfield com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.hasElements:Lcom/oracle/truffle/api/profiles/ConditionProfile;
         2: .line 795
            return
        end local 2 // com.oracle.truffle.js.nodes.function.JSBuiltin builtin
        end local 1 // com.oracle.truffle.js.runtime.JSContext context
        end local 0 // com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lcom/oracle/truffle/js/builtins/ObjectFunctionBuiltins$ObjectKeysNode;
            0    3     1  context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    3     2  builtin  Lcom/oracle/truffle/js/nodes/function/JSBuiltin;
    MethodParameters:
         Name  Flags
      context  
      builtin  

  protected com.oracle.truffle.api.object.DynamicObject keysDynamicObject(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject thisObj
         0: .line 799
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* thisObj */
            invokevirtual com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.toOrAsJSObject:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
            invokevirtual com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.enumerableOwnPropertyNames:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/util/UnmodifiableArrayList;
            astore 2 /* keyList */
        start local 2 // com.oracle.truffle.js.runtime.util.UnmodifiableArrayList keyList
         1: .line 800
            aload 2 /* keyList */
            invokevirtual com.oracle.truffle.js.runtime.util.UnmodifiableArrayList.size:()I
            istore 3 /* len */
        start local 3 // int len
         2: .line 801
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.hasElements:Lcom/oracle/truffle/api/profiles/ConditionProfile;
            iload 3 /* len */
            ifle 3
            iconst_1
            goto 4
      StackMap locals: com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode com.oracle.truffle.api.object.DynamicObject com.oracle.truffle.js.runtime.util.UnmodifiableArrayList int
      StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile
         3: iconst_0
      StackMap locals: com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode com.oracle.truffle.api.object.DynamicObject com.oracle.truffle.js.runtime.util.UnmodifiableArrayList int
      StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile int
         4: invokevirtual com.oracle.truffle.api.profiles.ConditionProfile.profile:(Z)Z
            ifeq 7
         5: .line 802
            getstatic com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.$assertionsDisabled:Z
            ifne 6
            aload 2 /* keyList */
            invokevirtual com.oracle.truffle.js.runtime.util.UnmodifiableArrayList.stream:()Ljava/util/stream/Stream;
            ldc Ljava/lang/String;
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic test(Ljava/lang/Class;)Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  java/lang/Class.isInstance(Ljava/lang/Object;)Z (5)
                  (Ljava/lang/Object;)Z
            invokeinterface java.util.stream.Stream.allMatch:(Ljava/util/function/Predicate;)Z
            ifne 6
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         6: .line 803
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            aload 2 /* keyList */
            invokevirtual com.oracle.truffle.js.runtime.util.UnmodifiableArrayList.toArray:()[Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.runtime.builtins.JSArray.createConstant:(Lcom/oracle/truffle/js/runtime/JSContext;[Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
         7: .line 805
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            lconst_0
            invokestatic com.oracle.truffle.js.runtime.builtins.JSArray.createEmptyChecked:(Lcom/oracle/truffle/js/runtime/JSContext;J)Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
        end local 3 // int len
        end local 2 // com.oracle.truffle.js.runtime.util.UnmodifiableArrayList keyList
        end local 1 // com.oracle.truffle.api.object.DynamicObject thisObj
        end local 0 // com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0     this  Lcom/oracle/truffle/js/builtins/ObjectFunctionBuiltins$ObjectKeysNode;
            0    8     1  thisObj  Lcom/oracle/truffle/api/object/DynamicObject;
            1    8     2  keyList  Lcom/oracle/truffle/js/runtime/util/UnmodifiableArrayList<+Ljava/lang/Object;>;
            2    8     3      len  I
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isJSDynamicObject(thisObj)"})
    MethodParameters:
         Name  Flags
      thisObj  

  protected com.oracle.truffle.api.object.DynamicObject keysSymbol(com.oracle.truffle.js.runtime.Symbol);
    descriptor: (Lcom/oracle/truffle/js/runtime/Symbol;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode this
        start local 1 // com.oracle.truffle.js.runtime.Symbol symbol
         0: .line 810
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* symbol */
            invokevirtual com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.toOrAsJSObject:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
            invokevirtual com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.keysDynamicObject:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
        end local 1 // com.oracle.truffle.js.runtime.Symbol symbol
        end local 0 // com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/oracle/truffle/js/builtins/ObjectFunctionBuiltins$ObjectKeysNode;
            0    1     1  symbol  Lcom/oracle/truffle/js/runtime/Symbol;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
        Name  Flags
      symbol  

  protected com.oracle.truffle.api.object.DynamicObject keysString(com.oracle.truffle.js.runtime.objects.JSLazyString);
    descriptor: (Lcom/oracle/truffle/js/runtime/objects/JSLazyString;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode this
        start local 1 // com.oracle.truffle.js.runtime.objects.JSLazyString string
         0: .line 815
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* string */
            invokevirtual com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.toOrAsJSObject:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
            invokevirtual com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.keysDynamicObject:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
        end local 1 // com.oracle.truffle.js.runtime.objects.JSLazyString string
        end local 0 // com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/oracle/truffle/js/builtins/ObjectFunctionBuiltins$ObjectKeysNode;
            0    1     1  string  Lcom/oracle/truffle/js/runtime/objects/JSLazyString;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
        Name  Flags
      string  

  protected com.oracle.truffle.api.object.DynamicObject keysSafeInt(com.oracle.truffle.js.runtime.SafeInteger);
    descriptor: (Lcom/oracle/truffle/js/runtime/SafeInteger;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode this
        start local 1 // com.oracle.truffle.js.runtime.SafeInteger largeInteger
         0: .line 820
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* largeInteger */
            invokevirtual com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.toOrAsJSObject:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
            invokevirtual com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.keysDynamicObject:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
        end local 1 // com.oracle.truffle.js.runtime.SafeInteger largeInteger
        end local 0 // com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lcom/oracle/truffle/js/builtins/ObjectFunctionBuiltins$ObjectKeysNode;
            0    1     1  largeInteger  Lcom/oracle/truffle/js/runtime/SafeInteger;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
              Name  Flags
      largeInteger  

  protected com.oracle.truffle.api.object.DynamicObject keysBigInt(com.oracle.truffle.js.runtime.BigInt);
    descriptor: (Lcom/oracle/truffle/js/runtime/BigInt;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode this
        start local 1 // com.oracle.truffle.js.runtime.BigInt bigInt
         0: .line 825
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* bigInt */
            invokevirtual com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.toOrAsJSObject:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
            invokevirtual com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.keysDynamicObject:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
        end local 1 // com.oracle.truffle.js.runtime.BigInt bigInt
        end local 0 // com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/oracle/truffle/js/builtins/ObjectFunctionBuiltins$ObjectKeysNode;
            0    1     1  bigInt  Lcom/oracle/truffle/js/runtime/BigInt;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
        Name  Flags
      bigInt  

  protected com.oracle.truffle.api.object.DynamicObject keysOther(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode this
        start local 1 // java.lang.Object thisObj
         0: .line 830
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* thisObj */
            invokevirtual com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.toOrAsJSObject:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
            invokevirtual com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.keysDynamicObject:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
        end local 1 // java.lang.Object thisObj
        end local 0 // com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lcom/oracle/truffle/js/builtins/ObjectFunctionBuiltins$ObjectKeysNode;
            0    1     1  thisObj  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"!isTruffleObject(thisObj)"})
    MethodParameters:
         Name  Flags
      thisObj  

  protected com.oracle.truffle.api.object.DynamicObject keysForeign(java.lang.Object, com.oracle.truffle.api.interop.InteropLibrary, com.oracle.truffle.api.interop.InteropLibrary, com.oracle.truffle.api.profiles.BranchProfile, com.oracle.truffle.api.profiles.BranchProfile);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/interop/InteropLibrary;Lcom/oracle/truffle/api/interop/InteropLibrary;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=12, args_size=6
        start local 0 // com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode this
        start local 1 // java.lang.Object obj
        start local 2 // com.oracle.truffle.api.interop.InteropLibrary interop
        start local 3 // com.oracle.truffle.api.interop.InteropLibrary members
        start local 4 // com.oracle.truffle.api.profiles.BranchProfile growProfile
        start local 5 // com.oracle.truffle.api.profiles.BranchProfile errorBranch
         0: .line 839
            aload 2 /* interop */
            aload 1 /* obj */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.hasMembers:(Ljava/lang/Object;)Z
            ifeq 18
         1: .line 841
            aload 2 /* interop */
            aload 1 /* obj */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.getMembers:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 6 /* keysObj */
        start local 6 // java.lang.Object keysObj
         2: .line 842
            aload 3 /* members */
            aload 6 /* keysObj */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.getArraySize:(Ljava/lang/Object;)J
            lstore 7 /* size */
        start local 7 // long size
         3: .line 843
            lload 7 /* size */
            lconst_0
            lcmp
            iflt 4
            lload 7 /* size */
            ldc 2147483647
            lcmp
            iflt 6
         4: .line 844
      StackMap locals: java.lang.Object long
      StackMap stack:
            aload 5 /* errorBranch */
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
         5: .line 845
            invokestatic com.oracle.truffle.js.runtime.Errors.createRangeErrorInvalidArrayLength:()Lcom/oracle/truffle/js/runtime/JSException;
            athrow
         6: .line 847
      StackMap locals:
      StackMap stack:
            lload 7 /* size */
            lconst_0
            lcmp
            ifle 18
         7: .line 848
            lload 7 /* size */
            invokestatic com.oracle.truffle.js.runtime.util.SimpleArrayList.create:(J)Lcom/oracle/truffle/js/runtime/util/SimpleArrayList;
            astore 9 /* keys */
        start local 9 // com.oracle.truffle.js.runtime.util.SimpleArrayList keys
         8: .line 849
            iconst_0
            istore 10 /* i */
        start local 10 // int i
         9: goto 14
        10: .line 850
      StackMap locals: com.oracle.truffle.js.runtime.util.SimpleArrayList int
      StackMap stack:
            aload 3 /* members */
            aload 6 /* keysObj */
            iload 10 /* i */
            i2l
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.readArrayElement:(Ljava/lang/Object;J)Ljava/lang/Object;
            astore 11 /* key */
        start local 11 // java.lang.Object key
        11: .line 851
            getstatic com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.$assertionsDisabled:Z
            ifne 12
            invokestatic com.oracle.truffle.api.interop.InteropLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
            invokevirtual com.oracle.truffle.api.library.LibraryFactory.getUncached:()Lcom/oracle/truffle/api/library/Library;
            checkcast com.oracle.truffle.api.interop.InteropLibrary
            aload 11 /* key */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isString:(Ljava/lang/Object;)Z
            ifne 12
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        12: .line 852
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 9 /* keys */
            aload 0 /* this */
            aload 11 /* key */
            invokevirtual com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.asStringKey:(Ljava/lang/Object;)Ljava/lang/String;
            aload 4 /* growProfile */
            invokevirtual com.oracle.truffle.js.runtime.util.SimpleArrayList.add:(Ljava/lang/Object;Lcom/oracle/truffle/api/profiles/BranchProfile;)V
        end local 11 // java.lang.Object key
        13: .line 849
            iinc 10 /* i */ 1
      StackMap locals:
      StackMap stack:
        14: iload 10 /* i */
            i2l
            lload 7 /* size */
            lcmp
            iflt 10
        end local 10 // int i
        15: .line 854
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            aload 9 /* keys */
            invokevirtual com.oracle.truffle.js.runtime.util.SimpleArrayList.toArray:()[Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.runtime.builtins.JSArray.createConstant:(Lcom/oracle/truffle/js/runtime/JSContext;[Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
        16: areturn
        end local 9 // com.oracle.truffle.js.runtime.util.SimpleArrayList keys
        end local 7 // long size
        end local 6 // java.lang.Object keysObj
        17: .line 857
      StackMap locals: com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode java.lang.Object com.oracle.truffle.api.interop.InteropLibrary com.oracle.truffle.api.interop.InteropLibrary com.oracle.truffle.api.profiles.BranchProfile com.oracle.truffle.api.profiles.BranchProfile
      StackMap stack: com.oracle.truffle.api.interop.InteropException
            pop
        18: .line 861
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            invokestatic com.oracle.truffle.js.runtime.builtins.JSArray.createEmptyZeroLength:(Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
        end local 5 // com.oracle.truffle.api.profiles.BranchProfile errorBranch
        end local 4 // com.oracle.truffle.api.profiles.BranchProfile growProfile
        end local 3 // com.oracle.truffle.api.interop.InteropLibrary members
        end local 2 // com.oracle.truffle.api.interop.InteropLibrary interop
        end local 1 // java.lang.Object obj
        end local 0 // com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   19     0         this  Lcom/oracle/truffle/js/builtins/ObjectFunctionBuiltins$ObjectKeysNode;
            0   19     1          obj  Ljava/lang/Object;
            0   19     2      interop  Lcom/oracle/truffle/api/interop/InteropLibrary;
            0   19     3      members  Lcom/oracle/truffle/api/interop/InteropLibrary;
            0   19     4  growProfile  Lcom/oracle/truffle/api/profiles/BranchProfile;
            0   19     5  errorBranch  Lcom/oracle/truffle/api/profiles/BranchProfile;
            2   17     6      keysObj  Ljava/lang/Object;
            3   17     7         size  J
            8   17     9         keys  Lcom/oracle/truffle/js/runtime/util/SimpleArrayList<Ljava/lang/String;>;
            9   15    10            i  I
           11   13    11          key  Ljava/lang/Object;
      Exception table:
        from    to  target  type
           1    16      17  Class com.oracle.truffle.api.interop.UnsupportedMessageException
           1    16      17  Class com.oracle.truffle.api.interop.InvalidArrayIndexException
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isForeignObject(obj)"}, limit = "InteropLibraryLimit")
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.library.CachedLibrary(value = "obj")
      2:
        com.oracle.truffle.api.library.CachedLibrary(limit = "InteropLibraryLimit")
      3:
        com.oracle.truffle.api.dsl.Cached()
      4:
        com.oracle.truffle.api.dsl.Cached()
    MethodParameters:
             Name  Flags
      obj          
      interop      
      members      
      growProfile  
      errorBranch  

  private com.oracle.truffle.js.runtime.util.UnmodifiableArrayList<? extends java.lang.Object> enumerableOwnPropertyNames(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/util/UnmodifiableArrayList;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject obj
         0: .line 865
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.enumerableOwnPropertyNamesNode:Lcom/oracle/truffle/js/nodes/access/EnumerableOwnPropertyNamesNode;
            ifnonnull 3
         1: .line 866
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         2: .line 867
            aload 0 /* this */
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            invokestatic com.oracle.truffle.js.nodes.access.EnumerableOwnPropertyNamesNode.createKeys:(Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/access/EnumerableOwnPropertyNamesNode;
            invokevirtual com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.insert:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.js.nodes.access.EnumerableOwnPropertyNamesNode
            putfield com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.enumerableOwnPropertyNamesNode:Lcom/oracle/truffle/js/nodes/access/EnumerableOwnPropertyNamesNode;
         3: .line 869
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.enumerableOwnPropertyNamesNode:Lcom/oracle/truffle/js/nodes/access/EnumerableOwnPropertyNamesNode;
            aload 1 /* obj */
            invokevirtual com.oracle.truffle.js.nodes.access.EnumerableOwnPropertyNamesNode.execute:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/util/UnmodifiableArrayList;
            areturn
        end local 1 // com.oracle.truffle.api.object.DynamicObject obj
        end local 0 // com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/js/builtins/ObjectFunctionBuiltins$ObjectKeysNode;
            0    4     1   obj  Lcom/oracle/truffle/api/object/DynamicObject;
    Signature: (Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/util/UnmodifiableArrayList<+Ljava/lang/Object;>;
    MethodParameters:
      Name  Flags
      obj   

  private java.lang.String asStringKey(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode this
        start local 1 // java.lang.Object key
         0: .line 873
            getstatic com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.$assertionsDisabled:Z
            ifne 1
            invokestatic com.oracle.truffle.api.interop.InteropLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
            invokevirtual com.oracle.truffle.api.library.LibraryFactory.getUncached:()Lcom/oracle/truffle/api/library/Library;
            checkcast com.oracle.truffle.api.interop.InteropLibrary
            aload 1 /* key */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isString:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 874
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            instanceof java.lang.String
            ifeq 3
         2: .line 875
            aload 1 /* key */
            checkcast java.lang.String
            areturn
         3: .line 877
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.asString:Lcom/oracle/truffle/api/interop/InteropLibrary;
            ifnonnull 6
         4: .line 878
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         5: .line 879
            aload 0 /* this */
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.interop.InteropLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
            iconst_5
            invokevirtual com.oracle.truffle.api.library.LibraryFactory.createDispatched:(I)Lcom/oracle/truffle/api/library/Library;
            checkcast com.oracle.truffle.api.interop.InteropLibrary
            invokevirtual com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.insert:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.api.interop.InteropLibrary
            putfield com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.asString:Lcom/oracle/truffle/api/interop/InteropLibrary;
         6: .line 881
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode.asString:Lcom/oracle/truffle/api/interop/InteropLibrary;
            aload 1 /* key */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.asString:(Ljava/lang/Object;)Ljava/lang/String;
            areturn
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/oracle/truffle/js/builtins/ObjectFunctionBuiltins$ObjectKeysNode;
            0    7     1   key  Ljava/lang/Object;
    Exceptions:
      throws com.oracle.truffle.api.interop.UnsupportedMessageException
    MethodParameters:
      Name  Flags
      key   
}
SourceFile: "ObjectFunctionBuiltins.java"
NestHost: com.oracle.truffle.js.builtins.ObjectFunctionBuiltins
InnerClasses:
  public abstract Child = com.oracle.truffle.api.nodes.Node$Child of com.oracle.truffle.api.nodes.Node
  public abstract ObjectKeysNode = com.oracle.truffle.js.builtins.ObjectFunctionBuiltins$ObjectKeysNode of com.oracle.truffle.js.builtins.ObjectFunctionBuiltins
  public abstract ObjectOperation = com.oracle.truffle.js.builtins.ObjectPrototypeBuiltins$ObjectOperation of com.oracle.truffle.js.builtins.ObjectPrototypeBuiltins
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
    RuntimeInvisibleAnnotations: 
      com.oracle.truffle.api.dsl.ImportStatic(value = {Lcom/oracle/truffle/js/runtime/JSConfig;})