public final class jdk.nashorn.internal.objects.NativeFunction
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: jdk.nashorn.internal.objects.NativeFunction
  super_class: java.lang.Object
{
  public static final java.lang.invoke.MethodHandle TO_APPLY_ARGS;
    descriptor: Ljava/lang/invoke/MethodHandle;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  private static jdk.nashorn.internal.runtime.PropertyMap $nasgenmap$;
    descriptor: Ljdk/nashorn/internal/runtime/PropertyMap;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=7, locals=0, args_size=0
         0: .line 65
            invokestatic java.lang.invoke.MethodHandles.lookup:()Ljava/lang/invoke/MethodHandles$Lookup;
            ldc "toApplyArgs"
            ldc [Ljava/lang/Object;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/Object;
            aastore
            invokestatic jdk.dynalink.linker.support.Lookup.findOwnStatic:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle;
            putstatic jdk.nashorn.internal.objects.NativeFunction.TO_APPLY_ARGS:Ljava/lang/invoke/MethodHandle;
         1: .line 69
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.nashorn.internal.objects.NativeFunction this
         0: .line 72
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 73
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 0 // jdk.nashorn.internal.objects.NativeFunction this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/nashorn/internal/objects/NativeFunction;

  public static java.lang.String toString(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // java.lang.Object self
         0: .line 84
            aload 0 /* self */
            instanceof jdk.nashorn.internal.runtime.ScriptFunction
            ifne 2
         1: .line 85
            ldc "not.a.function"
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 0 /* self */
            invokestatic jdk.nashorn.internal.runtime.ScriptRuntime.safeToString:(Ljava/lang/Object;)Ljava/lang/String;
            aastore
            invokestatic jdk.nashorn.internal.runtime.ECMAErrors.typeError:(Ljava/lang/String;[Ljava/lang/String;)Ljdk/nashorn/internal/runtime/ECMAException;
            athrow
         2: .line 87
      StackMap locals:
      StackMap stack:
            aload 0 /* self */
            checkcast jdk.nashorn.internal.runtime.ScriptFunction
            invokevirtual jdk.nashorn.internal.runtime.ScriptFunction.toSource:()Ljava/lang/String;
            areturn
        end local 0 // java.lang.Object self
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  self  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      jdk.nashorn.internal.objects.annotations.Function(attributes = 2)
    MethodParameters:
      Name  Flags
      self  final

  public static java.lang.Object apply(java.lang.Object, java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // java.lang.Object self
        start local 1 // java.lang.Object thiz
        start local 2 // java.lang.Object array
         0: .line 100
            aload 0 /* self */
            invokestatic jdk.nashorn.internal.objects.NativeFunction.checkCallable:(Ljava/lang/Object;)V
         1: .line 101
            aload 2 /* array */
            invokestatic jdk.nashorn.internal.objects.NativeFunction.toApplyArgs:(Ljava/lang/Object;)[Ljava/lang/Object;
            astore 3 /* args */
        start local 3 // java.lang.Object[] args
         2: .line 103
            aload 0 /* self */
            instanceof jdk.nashorn.internal.runtime.ScriptFunction
            ifeq 4
         3: .line 104
            aload 0 /* self */
            checkcast jdk.nashorn.internal.runtime.ScriptFunction
            aload 1 /* thiz */
            aload 3 /* args */
            invokestatic jdk.nashorn.internal.runtime.ScriptRuntime.apply:(Ljdk/nashorn/internal/runtime/ScriptFunction;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            areturn
         4: .line 105
      StackMap locals: java.lang.Object[]
      StackMap stack:
            aload 0 /* self */
            instanceof jdk.nashorn.api.scripting.ScriptObjectMirror
            ifeq 6
         5: .line 106
            aload 0 /* self */
            checkcast jdk.nashorn.api.scripting.JSObject
            aload 1 /* thiz */
            aload 3 /* args */
            invokeinterface jdk.nashorn.api.scripting.JSObject.call:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            areturn
         6: .line 107
      StackMap locals:
      StackMap stack:
            aload 0 /* self */
            instanceof jdk.nashorn.api.scripting.JSObject
            ifeq 12
         7: .line 108
            invokestatic jdk.nashorn.internal.objects.Global.instance:()Ljdk/nashorn/internal/objects/Global;
            astore 4 /* global */
        start local 4 // jdk.nashorn.internal.objects.Global global
         8: .line 109
            aload 0 /* self */
            checkcast jdk.nashorn.api.scripting.JSObject
            aload 1 /* thiz */
            aload 4 /* global */
            invokestatic jdk.nashorn.api.scripting.ScriptObjectMirror.wrap:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
         9: .line 110
            aload 3 /* args */
            aload 4 /* global */
            invokestatic jdk.nashorn.api.scripting.ScriptObjectMirror.wrapArray:([Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;
        10: .line 109
            invokeinterface jdk.nashorn.api.scripting.JSObject.call:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 5 /* result */
        start local 5 // java.lang.Object result
        11: .line 111
            aload 5 /* result */
            aload 4 /* global */
            invokestatic jdk.nashorn.api.scripting.ScriptObjectMirror.unwrap:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 5 // java.lang.Object result
        end local 4 // jdk.nashorn.internal.objects.Global global
        12: .line 113
      StackMap locals:
      StackMap stack:
            new java.lang.AssertionError
            dup
            ldc "Should not reach here"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        end local 3 // java.lang.Object[] args
        end local 2 // java.lang.Object array
        end local 1 // java.lang.Object thiz
        end local 0 // java.lang.Object self
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   13     0    self  Ljava/lang/Object;
            0   13     1    thiz  Ljava/lang/Object;
            0   13     2   array  Ljava/lang/Object;
            2   13     3    args  [Ljava/lang/Object;
            8   12     4  global  Ljdk/nashorn/internal/objects/Global;
           11   12     5  result  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      jdk.nashorn.internal.objects.annotations.Function(attributes = 2)
    MethodParameters:
       Name  Flags
      self   final
      thiz   final
      array  final

  public static java.lang.Object[] toApplyArgs(java.lang.Object);
    descriptor: (Ljava/lang/Object;)[Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // java.lang.Object array
         0: .line 123
            aload 0 /* array */
            instanceof jdk.nashorn.internal.objects.NativeArguments
            ifeq 2
         1: .line 124
            aload 0 /* array */
            checkcast jdk.nashorn.internal.objects.NativeArguments
            invokevirtual jdk.nashorn.internal.objects.NativeArguments.getArray:()Ljdk/nashorn/internal/runtime/arrays/ArrayData;
            invokevirtual jdk.nashorn.internal.runtime.arrays.ArrayData.asObjectArray:()[Ljava/lang/Object;
            areturn
         2: .line 125
      StackMap locals:
      StackMap stack:
            aload 0 /* array */
            instanceof jdk.nashorn.internal.runtime.ScriptObject
            ifeq 12
         3: .line 127
            aload 0 /* array */
            checkcast jdk.nashorn.internal.runtime.ScriptObject
            astore 1 /* sobj */
        start local 1 // jdk.nashorn.internal.runtime.ScriptObject sobj
         4: .line 128
            aload 1 /* sobj */
            invokevirtual jdk.nashorn.internal.runtime.ScriptObject.getLength:()Ljava/lang/Object;
            invokestatic jdk.nashorn.internal.objects.NativeFunction.lengthToInt:(Ljava/lang/Object;)I
            istore 2 /* n */
        start local 2 // int n
         5: .line 130
            iload 2 /* n */
            anewarray java.lang.Object
            astore 3 /* args */
        start local 3 // java.lang.Object[] args
         6: .line 131
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         7: goto 10
         8: .line 132
      StackMap locals: java.lang.Object jdk.nashorn.internal.runtime.ScriptObject int java.lang.Object[] int
      StackMap stack:
            aload 3 /* args */
            iload 4 /* i */
            aload 1 /* sobj */
            iload 4 /* i */
            invokevirtual jdk.nashorn.internal.runtime.ScriptObject.get:(I)Ljava/lang/Object;
            aastore
         9: .line 131
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 4 /* i */
            aload 3 /* args */
            arraylength
            if_icmplt 8
        end local 4 // int i
        11: .line 134
            aload 3 /* args */
            areturn
        end local 3 // java.lang.Object[] args
        end local 2 // int n
        end local 1 // jdk.nashorn.internal.runtime.ScriptObject sobj
        12: .line 135
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* array */
            instanceof java.lang.Object[]
            ifeq 14
        13: .line 136
            aload 0 /* array */
            checkcast java.lang.Object[]
            areturn
        14: .line 137
      StackMap locals:
      StackMap stack:
            aload 0 /* array */
            instanceof java.util.List
            ifeq 17
        15: .line 138
            aload 0 /* array */
            checkcast java.util.List
            astore 1 /* list */
        start local 1 // java.util.List list
        16: .line 139
            aload 1 /* list */
            iconst_0
            anewarray java.lang.Object
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            areturn
        end local 1 // java.util.List list
        17: .line 140
      StackMap locals:
      StackMap stack:
            aload 0 /* array */
            ifnull 18
            aload 0 /* array */
            getstatic jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED:Ljdk/nashorn/internal/runtime/Undefined;
            if_acmpne 19
        18: .line 141
      StackMap locals:
      StackMap stack:
            getstatic jdk.nashorn.internal.runtime.ScriptRuntime.EMPTY_ARRAY:[Ljava/lang/Object;
            areturn
        19: .line 142
      StackMap locals:
      StackMap stack:
            aload 0 /* array */
            instanceof jdk.nashorn.api.scripting.JSObject
            ifeq 34
        20: .line 144
            aload 0 /* array */
            checkcast jdk.nashorn.api.scripting.JSObject
            astore 1 /* jsObj */
        start local 1 // jdk.nashorn.api.scripting.JSObject jsObj
        21: .line 145
            aload 1 /* jsObj */
            ldc "length"
            invokeinterface jdk.nashorn.api.scripting.JSObject.hasMember:(Ljava/lang/String;)Z
            ifeq 22
            aload 1 /* jsObj */
            ldc "length"
            invokeinterface jdk.nashorn.api.scripting.JSObject.getMember:(Ljava/lang/String;)Ljava/lang/Object;
            goto 23
      StackMap locals: jdk.nashorn.api.scripting.JSObject
      StackMap stack:
        22: iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
      StackMap locals:
      StackMap stack: java.lang.Object
        23: astore 2 /* len */
        start local 2 // java.lang.Object len
        24: .line 146
            aload 2 /* len */
            invokestatic jdk.nashorn.internal.objects.NativeFunction.lengthToInt:(Ljava/lang/Object;)I
            istore 3 /* n */
        start local 3 // int n
        25: .line 148
            iload 3 /* n */
            anewarray java.lang.Object
            astore 4 /* args */
        start local 4 // java.lang.Object[] args
        26: .line 149
            iconst_0
            istore 5 /* i */
        start local 5 // int i
        27: goto 32
        28: .line 150
      StackMap locals: java.lang.Object jdk.nashorn.api.scripting.JSObject java.lang.Object int java.lang.Object[] int
      StackMap stack:
            aload 4 /* args */
            iload 5 /* i */
            aload 1 /* jsObj */
            iload 5 /* i */
            invokeinterface jdk.nashorn.api.scripting.JSObject.hasSlot:(I)Z
            ifeq 29
            aload 1 /* jsObj */
            iload 5 /* i */
            invokeinterface jdk.nashorn.api.scripting.JSObject.getSlot:(I)Ljava/lang/Object;
            goto 30
      StackMap locals: java.lang.Object jdk.nashorn.api.scripting.JSObject java.lang.Object int java.lang.Object[] int
      StackMap stack: java.lang.Object[] int
        29: getstatic jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED:Ljdk/nashorn/internal/runtime/Undefined;
      StackMap locals: java.lang.Object jdk.nashorn.api.scripting.JSObject java.lang.Object int java.lang.Object[] int
      StackMap stack: java.lang.Object[] int java.lang.Object
        30: aastore
        31: .line 149
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        32: iload 5 /* i */
            aload 4 /* args */
            arraylength
            if_icmplt 28
        end local 5 // int i
        33: .line 152
            aload 4 /* args */
            areturn
        end local 4 // java.lang.Object[] args
        end local 3 // int n
        end local 2 // java.lang.Object len
        end local 1 // jdk.nashorn.api.scripting.JSObject jsObj
        34: .line 154
      StackMap locals: java.lang.Object
      StackMap stack:
            ldc "function.apply.expects.array"
            iconst_0
            anewarray java.lang.String
            invokestatic jdk.nashorn.internal.runtime.ECMAErrors.typeError:(Ljava/lang/String;[Ljava/lang/String;)Ljdk/nashorn/internal/runtime/ECMAException;
            athrow
        end local 0 // java.lang.Object array
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   35     0  array  Ljava/lang/Object;
            4   12     1   sobj  Ljdk/nashorn/internal/runtime/ScriptObject;
            5   12     2      n  I
            6   12     3   args  [Ljava/lang/Object;
            7   11     4      i  I
           16   17     1   list  Ljava/util/List<*>;
           21   34     1  jsObj  Ljdk/nashorn/api/scripting/JSObject;
           24   34     2    len  Ljava/lang/Object;
           25   34     3      n  I
           26   34     4   args  [Ljava/lang/Object;
           27   33     5      i  I
    MethodParameters:
       Name  Flags
      array  final

  private static int lengthToInt(java.lang.Object);
    descriptor: (Ljava/lang/Object;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // java.lang.Object len
         0: .line 159
            aload 0 /* len */
            invokestatic jdk.nashorn.internal.runtime.JSType.toUint32:(Ljava/lang/Object;)J
            lstore 1 /* ln */
        start local 1 // long ln
         1: .line 163
            lload 1 /* ln */
            ldc 2147483647
            lcmp
            ifle 3
         2: .line 164
            ldc "range.error.inappropriate.array.length"
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 0 /* len */
            invokestatic jdk.nashorn.internal.runtime.JSType.toString:(Ljava/lang/Object;)Ljava/lang/String;
            aastore
            invokestatic jdk.nashorn.internal.runtime.ECMAErrors.rangeError:(Ljava/lang/String;[Ljava/lang/String;)Ljdk/nashorn/internal/runtime/ECMAException;
            athrow
         3: .line 166
      StackMap locals: long
      StackMap stack:
            lload 1 /* ln */
            l2i
            ireturn
        end local 1 // long ln
        end local 0 // java.lang.Object len
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0   len  Ljava/lang/Object;
            1    4     1    ln  J
    MethodParameters:
      Name  Flags
      len   final

  private static void checkCallable(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // java.lang.Object self
         0: .line 170
            aload 0 /* self */
            instanceof jdk.nashorn.internal.runtime.ScriptFunction
            ifne 2
            aload 0 /* self */
            instanceof jdk.nashorn.api.scripting.JSObject
            ifeq 1
            aload 0 /* self */
            checkcast jdk.nashorn.api.scripting.JSObject
            invokeinterface jdk.nashorn.api.scripting.JSObject.isFunction:()Z
            ifne 2
         1: .line 171
      StackMap locals:
      StackMap stack:
            ldc "not.a.function"
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 0 /* self */
            invokestatic jdk.nashorn.internal.runtime.ScriptRuntime.safeToString:(Ljava/lang/Object;)Ljava/lang/String;
            aastore
            invokestatic jdk.nashorn.internal.runtime.ECMAErrors.typeError:(Ljava/lang/String;[Ljava/lang/String;)Ljdk/nashorn/internal/runtime/ECMAException;
            athrow
         2: .line 173
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.Object self
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  self  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      self  final

  public static java.lang.Object call(java.lang.Object, java.lang.Object[]);
    descriptor: (Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // java.lang.Object self
        start local 1 // java.lang.Object[] args
         0: .line 184
            aload 0 /* self */
            invokestatic jdk.nashorn.internal.objects.NativeFunction.checkCallable:(Ljava/lang/Object;)V
         1: .line 186
            aload 1 /* args */
            arraylength
            ifne 2
            getstatic jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED:Ljdk/nashorn/internal/runtime/Undefined;
            goto 3
      StackMap locals:
      StackMap stack:
         2: aload 1 /* args */
            iconst_0
            aaload
      StackMap locals:
      StackMap stack: java.lang.Object
         3: astore 2 /* thiz */
        start local 2 // java.lang.Object thiz
         4: .line 189
            aload 1 /* args */
            arraylength
            iconst_1
            if_icmple 8
         5: .line 190
            aload 1 /* args */
            arraylength
            iconst_1
            isub
            anewarray java.lang.Object
            astore 3 /* arguments */
        start local 3 // java.lang.Object[] arguments
         6: .line 191
            aload 1 /* args */
            iconst_1
            aload 3 /* arguments */
            iconst_0
            aload 3 /* arguments */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         7: .line 192
            goto 9
        end local 3 // java.lang.Object[] arguments
         8: .line 193
      StackMap locals: java.lang.Object
      StackMap stack:
            getstatic jdk.nashorn.internal.runtime.ScriptRuntime.EMPTY_ARRAY:[Ljava/lang/Object;
            astore 3 /* arguments */
        start local 3 // java.lang.Object[] arguments
         9: .line 196
      StackMap locals: java.lang.Object[]
      StackMap stack:
            aload 0 /* self */
            instanceof jdk.nashorn.internal.runtime.ScriptFunction
            ifeq 11
        10: .line 197
            aload 0 /* self */
            checkcast jdk.nashorn.internal.runtime.ScriptFunction
            aload 2 /* thiz */
            aload 3 /* arguments */
            invokestatic jdk.nashorn.internal.runtime.ScriptRuntime.apply:(Ljdk/nashorn/internal/runtime/ScriptFunction;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        11: .line 198
      StackMap locals:
      StackMap stack:
            aload 0 /* self */
            instanceof jdk.nashorn.api.scripting.JSObject
            ifeq 13
        12: .line 199
            aload 0 /* self */
            checkcast jdk.nashorn.api.scripting.JSObject
            aload 2 /* thiz */
            aload 3 /* arguments */
            invokeinterface jdk.nashorn.api.scripting.JSObject.call:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        13: .line 202
      StackMap locals:
      StackMap stack:
            new java.lang.AssertionError
            dup
            ldc "should not reach here"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        end local 3 // java.lang.Object[] arguments
        end local 2 // java.lang.Object thiz
        end local 1 // java.lang.Object[] args
        end local 0 // java.lang.Object self
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       self  Ljava/lang/Object;
            0   14     1       args  [Ljava/lang/Object;
            4   14     2       thiz  Ljava/lang/Object;
            6    8     3  arguments  [Ljava/lang/Object;
            9   14     3  arguments  [Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      jdk.nashorn.internal.objects.annotations.Function(attributes = 2, arity = 1)
    MethodParameters:
      Name  Flags
      self  final
      args  final

  public static java.lang.Object bind(java.lang.Object, java.lang.Object[]);
    descriptor: (Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // java.lang.Object self
        start local 1 // java.lang.Object[] args
         0: .line 214
            aload 1 /* args */
            arraylength
            ifne 1
            getstatic jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED:Ljdk/nashorn/internal/runtime/Undefined;
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 1 /* args */
            iconst_0
            aaload
      StackMap locals:
      StackMap stack: java.lang.Object
         2: astore 2 /* thiz */
        start local 2 // java.lang.Object thiz
         3: .line 217
            aload 1 /* args */
            arraylength
            iconst_1
            if_icmple 7
         4: .line 218
            aload 1 /* args */
            arraylength
            iconst_1
            isub
            anewarray java.lang.Object
            astore 3 /* arguments */
        start local 3 // java.lang.Object[] arguments
         5: .line 219
            aload 1 /* args */
            iconst_1
            aload 3 /* arguments */
            iconst_0
            aload 3 /* arguments */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         6: .line 220
            goto 8
        end local 3 // java.lang.Object[] arguments
         7: .line 221
      StackMap locals: java.lang.Object
      StackMap stack:
            getstatic jdk.nashorn.internal.runtime.ScriptRuntime.EMPTY_ARRAY:[Ljava/lang/Object;
            astore 3 /* arguments */
        start local 3 // java.lang.Object[] arguments
         8: .line 224
      StackMap locals: java.lang.Object[]
      StackMap stack:
            aload 0 /* self */
            aload 2 /* thiz */
            aload 3 /* arguments */
            invokestatic jdk.nashorn.internal.runtime.linker.Bootstrap.bindCallable:(Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 3 // java.lang.Object[] arguments
        end local 2 // java.lang.Object thiz
        end local 1 // java.lang.Object[] args
        end local 0 // java.lang.Object self
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       self  Ljava/lang/Object;
            0    9     1       args  [Ljava/lang/Object;
            3    9     2       thiz  Ljava/lang/Object;
            5    7     3  arguments  [Ljava/lang/Object;
            8    9     3  arguments  [Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      jdk.nashorn.internal.objects.annotations.Function(attributes = 2, arity = 1)
    MethodParameters:
      Name  Flags
      self  final
      args  final

  public static java.lang.String toSource(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // java.lang.Object self
         0: .line 235
            aload 0 /* self */
            instanceof jdk.nashorn.internal.runtime.ScriptFunction
            ifne 2
         1: .line 236
            ldc "not.a.function"
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 0 /* self */
            invokestatic jdk.nashorn.internal.runtime.ScriptRuntime.safeToString:(Ljava/lang/Object;)Ljava/lang/String;
            aastore
            invokestatic jdk.nashorn.internal.runtime.ECMAErrors.typeError:(Ljava/lang/String;[Ljava/lang/String;)Ljdk/nashorn/internal/runtime/ECMAException;
            athrow
         2: .line 238
      StackMap locals:
      StackMap stack:
            aload 0 /* self */
            checkcast jdk.nashorn.internal.runtime.ScriptFunction
            invokevirtual jdk.nashorn.internal.runtime.ScriptFunction.toSource:()Ljava/lang/String;
            areturn
        end local 0 // java.lang.Object self
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  self  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      jdk.nashorn.internal.objects.annotations.Function(attributes = 2)
    MethodParameters:
      Name  Flags
      self  final

  public static jdk.nashorn.internal.runtime.ScriptFunction function(boolean, java.lang.Object, java.lang.Object[]);
    descriptor: (ZLjava/lang/Object;[Ljava/lang/Object;)Ljdk/nashorn/internal/runtime/ScriptFunction;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // boolean newObj
        start local 1 // java.lang.Object self
        start local 2 // java.lang.Object[] args
         0: .line 253
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 3 /* sb */
        start local 3 // java.lang.StringBuilder sb
         1: .line 255
            aload 3 /* sb */
            ldc "(function ("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         2: .line 257
            aload 2 /* args */
            arraylength
            ifle 17
         3: .line 258
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 5 /* paramListBuf */
        start local 5 // java.lang.StringBuilder paramListBuf
         4: .line 259
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         5: goto 10
         6: .line 260
      StackMap locals: int java.lang.Object java.lang.Object[] java.lang.StringBuilder top java.lang.StringBuilder int
      StackMap stack:
            aload 5 /* paramListBuf */
            aload 2 /* args */
            iload 6 /* i */
            aaload
            invokestatic jdk.nashorn.internal.runtime.JSType.toString:(Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         7: .line 261
            iload 6 /* i */
            aload 2 /* args */
            arraylength
            iconst_2
            isub
            if_icmpge 9
         8: .line 262
            aload 5 /* paramListBuf */
            ldc ","
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         9: .line 259
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 6 /* i */
            aload 2 /* args */
            arraylength
            iconst_1
            isub
            if_icmplt 6
        end local 6 // int i
        11: .line 267
            aload 2 /* args */
            aload 2 /* args */
            arraylength
            iconst_1
            isub
            aaload
            invokestatic jdk.nashorn.internal.runtime.JSType.toString:(Ljava/lang/Object;)Ljava/lang/String;
            astore 4 /* funcBody */
        start local 4 // java.lang.String funcBody
        12: .line 269
            aload 5 /* paramListBuf */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 6 /* paramList */
        start local 6 // java.lang.String paramList
        13: .line 270
            aload 6 /* paramList */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 18
        14: .line 271
            aload 6 /* paramList */
            invokestatic jdk.nashorn.internal.objects.NativeFunction.checkFunctionParameters:(Ljava/lang/String;)V
        15: .line 272
            aload 3 /* sb */
            aload 6 /* paramList */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 6 // java.lang.String paramList
        end local 5 // java.lang.StringBuilder paramListBuf
        16: .line 274
            goto 18
        end local 4 // java.lang.String funcBody
        17: .line 275
      StackMap locals: int java.lang.Object java.lang.Object[] java.lang.StringBuilder
      StackMap stack:
            aconst_null
            astore 4 /* funcBody */
        start local 4 // java.lang.String funcBody
        18: .line 278
      StackMap locals: java.lang.String
      StackMap stack:
            aload 3 /* sb */
            ldc ") {\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        19: .line 279
            aload 2 /* args */
            arraylength
            ifle 23
        20: .line 280
            aload 4 /* funcBody */
            invokestatic jdk.nashorn.internal.objects.NativeFunction.checkFunctionBody:(Ljava/lang/String;)V
        21: .line 281
            aload 3 /* sb */
            aload 4 /* funcBody */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        22: .line 282
            aload 3 /* sb */
            bipush 10
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        23: .line 284
      StackMap locals:
      StackMap stack:
            aload 3 /* sb */
            ldc "})"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        24: .line 286
            invokestatic jdk.nashorn.internal.objects.Global.instance:()Ljdk/nashorn/internal/objects/Global;
            astore 5 /* global */
        start local 5 // jdk.nashorn.internal.objects.Global global
        25: .line 287
            aload 5 /* global */
            invokevirtual jdk.nashorn.internal.objects.Global.getContext:()Ljdk/nashorn/internal/runtime/Context;
            astore 6 /* context */
        start local 6 // jdk.nashorn.internal.runtime.Context context
        26: .line 288
            aload 6 /* context */
            aload 5 /* global */
            aload 3 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 5 /* global */
            ldc "<function>"
            invokevirtual jdk.nashorn.internal.runtime.Context.eval:(Ljdk/nashorn/internal/runtime/ScriptObject;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast jdk.nashorn.internal.runtime.ScriptFunction
            areturn
        end local 6 // jdk.nashorn.internal.runtime.Context context
        end local 5 // jdk.nashorn.internal.objects.Global global
        end local 4 // java.lang.String funcBody
        end local 3 // java.lang.StringBuilder sb
        end local 2 // java.lang.Object[] args
        end local 1 // java.lang.Object self
        end local 0 // boolean newObj
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   27     0        newObj  Z
            0   27     1          self  Ljava/lang/Object;
            0   27     2          args  [Ljava/lang/Object;
            1   27     3            sb  Ljava/lang/StringBuilder;
           12   17     4      funcBody  Ljava/lang/String;
           18   27     4      funcBody  Ljava/lang/String;
            4   16     5  paramListBuf  Ljava/lang/StringBuilder;
            5   11     6             i  I
           13   16     6     paramList  Ljava/lang/String;
           25   27     5        global  Ljdk/nashorn/internal/objects/Global;
           26   27     6       context  Ljdk/nashorn/internal/runtime/Context;
    RuntimeVisibleAnnotations: 
      jdk.nashorn.internal.objects.annotations.Constructor(arity = 1)
    MethodParameters:
        Name  Flags
      newObj  final
      self    final
      args    final

  private static void checkFunctionParameters(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=3, args_size=1
        start local 0 // java.lang.String params
         0: .line 292
            aload 0 /* params */
            invokestatic jdk.nashorn.internal.objects.NativeFunction.getParser:(Ljava/lang/String;)Ljdk/nashorn/internal/parser/Parser;
            astore 1 /* parser */
        start local 1 // jdk.nashorn.internal.parser.Parser parser
         1: .line 294
            aload 1 /* parser */
            invokevirtual jdk.nashorn.internal.parser.Parser.parseFormalParameterList:()Ljava/util/List;
            pop
         2: .line 295
            goto 5
      StackMap locals: java.lang.String jdk.nashorn.internal.parser.Parser
      StackMap stack: jdk.nashorn.internal.runtime.ParserException
         3: astore 2 /* pe */
        start local 2 // jdk.nashorn.internal.runtime.ParserException pe
         4: .line 296
            aload 2 /* pe */
            invokevirtual jdk.nashorn.internal.runtime.ParserException.throwAsEcmaException:()V
        end local 2 // jdk.nashorn.internal.runtime.ParserException pe
         5: .line 298
      StackMap locals:
      StackMap stack:
            return
        end local 1 // jdk.nashorn.internal.parser.Parser parser
        end local 0 // java.lang.String params
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0  params  Ljava/lang/String;
            1    6     1  parser  Ljdk/nashorn/internal/parser/Parser;
            4    5     2      pe  Ljdk/nashorn/internal/runtime/ParserException;
      Exception table:
        from    to  target  type
           1     2       3  Class jdk.nashorn.internal.runtime.ParserException
    MethodParameters:
        Name  Flags
      params  final

  private static void checkFunctionBody(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=3, args_size=1
        start local 0 // java.lang.String funcBody
         0: .line 301
            aload 0 /* funcBody */
            invokestatic jdk.nashorn.internal.objects.NativeFunction.getParser:(Ljava/lang/String;)Ljdk/nashorn/internal/parser/Parser;
            astore 1 /* parser */
        start local 1 // jdk.nashorn.internal.parser.Parser parser
         1: .line 303
            aload 1 /* parser */
            invokevirtual jdk.nashorn.internal.parser.Parser.parseFunctionBody:()Ljdk/nashorn/internal/ir/FunctionNode;
            pop
         2: .line 304
            goto 5
      StackMap locals: java.lang.String jdk.nashorn.internal.parser.Parser
      StackMap stack: jdk.nashorn.internal.runtime.ParserException
         3: astore 2 /* pe */
        start local 2 // jdk.nashorn.internal.runtime.ParserException pe
         4: .line 305
            aload 2 /* pe */
            invokevirtual jdk.nashorn.internal.runtime.ParserException.throwAsEcmaException:()V
        end local 2 // jdk.nashorn.internal.runtime.ParserException pe
         5: .line 307
      StackMap locals:
      StackMap stack:
            return
        end local 1 // jdk.nashorn.internal.parser.Parser parser
        end local 0 // java.lang.String funcBody
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0  funcBody  Ljava/lang/String;
            1    6     1    parser  Ljdk/nashorn/internal/parser/Parser;
            4    5     2        pe  Ljdk/nashorn/internal/runtime/ParserException;
      Exception table:
        from    to  target  type
           1     2       3  Class jdk.nashorn.internal.runtime.ParserException
    MethodParameters:
          Name  Flags
      funcBody  final

  private static jdk.nashorn.internal.parser.Parser getParser(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljdk/nashorn/internal/parser/Parser;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=2, args_size=1
        start local 0 // java.lang.String sourceText
         0: .line 310
            invokestatic jdk.nashorn.internal.objects.Global.getEnv:()Ljdk/nashorn/internal/runtime/ScriptEnvironment;
            astore 1 /* env */
        start local 1 // jdk.nashorn.internal.runtime.ScriptEnvironment env
         1: .line 311
            new jdk.nashorn.internal.parser.Parser
            dup
            aload 1 /* env */
            ldc "<function>"
            aload 0 /* sourceText */
            invokestatic jdk.nashorn.internal.runtime.Source.sourceFor:(Ljava/lang/String;Ljava/lang/String;)Ljdk/nashorn/internal/runtime/Source;
            new jdk.nashorn.internal.runtime.Context$ThrowErrorManager
            dup
            invokespecial jdk.nashorn.internal.runtime.Context$ThrowErrorManager.<init>:()V
            aload 1 /* env */
            getfield jdk.nashorn.internal.runtime.ScriptEnvironment._strict:Z
            aconst_null
            invokespecial jdk.nashorn.internal.parser.Parser.<init>:(Ljdk/nashorn/internal/runtime/ScriptEnvironment;Ljdk/nashorn/internal/runtime/Source;Ljdk/nashorn/internal/runtime/ErrorManager;ZLjdk/nashorn/internal/runtime/logging/DebugLogger;)V
            areturn
        end local 1 // jdk.nashorn.internal.runtime.ScriptEnvironment env
        end local 0 // java.lang.String sourceText
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0  sourceText  Ljava/lang/String;
            1    2     1         env  Ljdk/nashorn/internal/runtime/ScriptEnvironment;
    MethodParameters:
            Name  Flags
      sourceText  final
}
SourceFile: "NativeFunction.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public ThrowErrorManager = jdk.nashorn.internal.runtime.Context$ThrowErrorManager of jdk.nashorn.internal.runtime.Context
    RuntimeVisibleAnnotations: 
      jdk.nashorn.internal.objects.annotations.ScriptClass(value = "Function")