abstract class com.oracle.truffle.polyglot.HostExecuteNode extends com.oracle.truffle.api.nodes.Node
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.polyglot.HostExecuteNode
  super_class: com.oracle.truffle.api.nodes.Node
{
  static final int LIMIT;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  private static final java.lang.Class<?>[] EMPTY_CLASS_ARRAY;
    descriptor: [Ljava/lang/Class;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: [Ljava/lang/Class<*>;

  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 82
            ldc Lcom/oracle/truffle/polyglot/HostExecuteNode;
            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.polyglot.HostExecuteNode.$assertionsDisabled:Z
         3: .line 84
            iconst_0
            anewarray java.lang.Class
            putstatic com.oracle.truffle.polyglot.HostExecuteNode.EMPTY_CLASS_ARRAY:[Ljava/lang/Class;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.HostExecuteNode this
         0: .line 86
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.nodes.Node.<init>:()V
         1: .line 87
            return
        end local 0 // com.oracle.truffle.polyglot.HostExecuteNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/polyglot/HostExecuteNode;

  static com.oracle.truffle.polyglot.HostExecuteNode create();
    descriptor: ()Lcom/oracle/truffle/polyglot/HostExecuteNode;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 90
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tHostExecuteNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public abstract java.lang.Object execute(com.oracle.truffle.polyglot.HostMethodDesc, java.lang.Object, java.lang.Object[], com.oracle.truffle.polyglot.PolyglotLanguageContext);
    descriptor: (Lcom/oracle/truffle/polyglot/HostMethodDesc;Ljava/lang/Object;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;)Ljava/lang/Object;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Exceptions:
      throws com.oracle.truffle.api.interop.UnsupportedTypeException, com.oracle.truffle.api.interop.ArityException
    MethodParameters:
                 Name  Flags
      method           
      obj              
      args             
      languageContext  

  static com.oracle.truffle.polyglot.ToHostNode[] createToHost(int);
    descriptor: (I)[Lcom/oracle/truffle/polyglot/ToHostNode;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 98
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tToHostNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    MethodParameters:
            Name  Flags
      argsLength  

  java.lang.Object doFixed(com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod, java.lang.Object, java.lang.Object[], com.oracle.truffle.polyglot.PolyglotLanguageContext, com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod, com.oracle.truffle.polyglot.ToHostNode[], com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode, com.oracle.truffle.api.profiles.ValueProfile, com.oracle.truffle.api.profiles.BranchProfile, com.oracle.truffle.polyglot.PolyglotEngineImpl);
    descriptor: (Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;Ljava/lang/Object;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;[Lcom/oracle/truffle/polyglot/ToHostNode;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext$ToGuestValueNode;Lcom/oracle/truffle/api/profiles/ValueProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;)Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=8, locals=16, args_size=11
        start local 0 // com.oracle.truffle.polyglot.HostExecuteNode this
        start local 1 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod method
        start local 2 // java.lang.Object obj
        start local 3 // java.lang.Object[] args
        start local 4 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        start local 5 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod cachedMethod
        start local 6 // com.oracle.truffle.polyglot.ToHostNode[] toJavaNodes
        start local 7 // com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode toGuest
        start local 8 // com.oracle.truffle.api.profiles.ValueProfile receiverProfile
        start local 9 // com.oracle.truffle.api.profiles.BranchProfile errorBranch
        start local 10 // com.oracle.truffle.polyglot.PolyglotEngineImpl engine
         0: .line 113
            aload 5 /* cachedMethod */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterCount:()I
            istore 11 /* arity */
        start local 11 // int arity
         1: .line 114
            aload 3 /* args */
            arraylength
            iload 11 /* arity */
            if_icmpeq 4
         2: .line 115
            aload 9 /* errorBranch */
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
         3: .line 116
            iload 11 /* arity */
            aload 3 /* args */
            arraylength
            invokestatic com.oracle.truffle.api.interop.ArityException.create:(II)Lcom/oracle/truffle/api/interop/ArityException;
            athrow
         4: .line 118
      StackMap locals: int
      StackMap stack:
            aload 5 /* cachedMethod */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterTypes:()[Ljava/lang/Class;
            astore 12 /* types */
        start local 12 // java.lang.Class[] types
         5: .line 119
            aload 5 /* cachedMethod */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getGenericParameterTypes:()[Ljava/lang/reflect/Type;
            astore 13 /* genericTypes */
        start local 13 // java.lang.reflect.Type[] genericTypes
         6: .line 120
            aload 3 /* args */
            arraylength
            anewarray java.lang.Object
            astore 14 /* convertedArguments */
        start local 14 // java.lang.Object[] convertedArguments
         7: .line 122
            iconst_0
            istore 15 /* i */
        start local 15 // int i
         8: goto 11
         9: .line 123
      StackMap locals: com.oracle.truffle.polyglot.HostExecuteNode com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod java.lang.Object java.lang.Object[] com.oracle.truffle.polyglot.PolyglotLanguageContext com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod com.oracle.truffle.polyglot.ToHostNode[] com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode com.oracle.truffle.api.profiles.ValueProfile com.oracle.truffle.api.profiles.BranchProfile com.oracle.truffle.polyglot.PolyglotEngineImpl int java.lang.Class[] java.lang.reflect.Type[] java.lang.Object[] int
      StackMap stack:
            aload 14 /* convertedArguments */
            iload 15 /* i */
            aload 6 /* toJavaNodes */
            iload 15 /* i */
            aaload
            aload 3 /* args */
            iload 15 /* i */
            aaload
            aload 12 /* types */
            iload 15 /* i */
            aaload
            aload 13 /* genericTypes */
            iload 15 /* i */
            aaload
            aload 4 /* languageContext */
            iconst_1
            invokevirtual com.oracle.truffle.polyglot.ToHostNode.execute:(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Type;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Z)Ljava/lang/Object;
            aastore
        10: .line 122
            iinc 15 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 15 /* i */
            aload 6 /* toJavaNodes */
            arraylength
            if_icmplt 9
        end local 15 // int i
        12: .line 125
            goto 16
      StackMap locals: com.oracle.truffle.polyglot.HostExecuteNode com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod java.lang.Object java.lang.Object[] com.oracle.truffle.polyglot.PolyglotLanguageContext com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod com.oracle.truffle.polyglot.ToHostNode[] com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode com.oracle.truffle.api.profiles.ValueProfile com.oracle.truffle.api.profiles.BranchProfile com.oracle.truffle.polyglot.PolyglotEngineImpl int java.lang.Class[] java.lang.reflect.Type[] java.lang.Object[]
      StackMap stack: com.oracle.truffle.polyglot.PolyglotEngineException
        13: astore 15 /* e */
        start local 15 // com.oracle.truffle.polyglot.PolyglotEngineException e
        14: .line 126
            aload 9 /* errorBranch */
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
        15: .line 127
            aload 3 /* args */
            aload 15 /* e */
            getfield com.oracle.truffle.polyglot.PolyglotEngineException.e:Ljava/lang/RuntimeException;
            invokestatic com.oracle.truffle.polyglot.HostInteropErrors.unsupportedTypeException:([Ljava/lang/Object;Ljava/lang/Throwable;)Lcom/oracle/truffle/api/interop/UnsupportedTypeException;
            athrow
        end local 15 // com.oracle.truffle.polyglot.PolyglotEngineException e
        16: .line 129
      StackMap locals:
      StackMap stack:
            aload 5 /* cachedMethod */
            aload 8 /* receiverProfile */
            aload 2 /* obj */
            invokevirtual com.oracle.truffle.api.profiles.ValueProfile.profile:(Ljava/lang/Object;)Ljava/lang/Object;
            aload 14 /* convertedArguments */
            aload 10 /* engine */
            aload 4 /* languageContext */
            aload 7 /* toGuest */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.doInvoke:(Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;Ljava/lang/Object;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext$ToGuestValueNode;)Ljava/lang/Object;
            areturn
        end local 14 // java.lang.Object[] convertedArguments
        end local 13 // java.lang.reflect.Type[] genericTypes
        end local 12 // java.lang.Class[] types
        end local 11 // int arity
        end local 10 // com.oracle.truffle.polyglot.PolyglotEngineImpl engine
        end local 9 // com.oracle.truffle.api.profiles.BranchProfile errorBranch
        end local 8 // com.oracle.truffle.api.profiles.ValueProfile receiverProfile
        end local 7 // com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode toGuest
        end local 6 // com.oracle.truffle.polyglot.ToHostNode[] toJavaNodes
        end local 5 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod cachedMethod
        end local 4 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        end local 3 // java.lang.Object[] args
        end local 2 // java.lang.Object obj
        end local 1 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod method
        end local 0 // com.oracle.truffle.polyglot.HostExecuteNode this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   17     0                this  Lcom/oracle/truffle/polyglot/HostExecuteNode;
            0   17     1              method  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            0   17     2                 obj  Ljava/lang/Object;
            0   17     3                args  [Ljava/lang/Object;
            0   17     4     languageContext  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
            0   17     5        cachedMethod  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            0   17     6         toJavaNodes  [Lcom/oracle/truffle/polyglot/ToHostNode;
            0   17     7             toGuest  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext$ToGuestValueNode;
            0   17     8     receiverProfile  Lcom/oracle/truffle/api/profiles/ValueProfile;
            0   17     9         errorBranch  Lcom/oracle/truffle/api/profiles/BranchProfile;
            0   17    10              engine  Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;
            1   17    11               arity  I
            5   17    12               types  [Ljava/lang/Class;
            6   17    13        genericTypes  [Ljava/lang/reflect/Type;
            7   17    14  convertedArguments  [Ljava/lang/Object;
            8   12    15                   i  I
           14   16    15                   e  Lcom/oracle/truffle/polyglot/PolyglotEngineException;
      Exception table:
        from    to  target  type
           7    12      13  Class com.oracle.truffle.polyglot.PolyglotEngineException
    Exceptions:
      throws com.oracle.truffle.api.interop.ArityException, com.oracle.truffle.api.interop.UnsupportedTypeException
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.ExplodeLoop()
      com.oracle.truffle.api.dsl.Specialization(guards = {"!method.isVarArgs()", "method == cachedMethod"}, limit = "LIMIT")
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
        com.oracle.truffle.api.dsl.Cached(value = "method")
      5:
        com.oracle.truffle.api.dsl.Cached(value = "createToHost(method.getParameterCount())")
      6:
        com.oracle.truffle.api.dsl.Cached()
      7:
        com.oracle.truffle.api.dsl.Cached(value = "createClassProfile()")
      8:
        com.oracle.truffle.api.dsl.Cached()
      9:
        com.oracle.truffle.api.dsl.Cached(value = "languageContext.context.engine", allowUncached = true)
    MethodParameters:
                 Name  Flags
      method           
      obj              
      args             
      languageContext  
      cachedMethod     
      toJavaNodes      
      toGuest          
      receiverProfile  
      errorBranch      
      engine           

  java.lang.Object doVarArgs(com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod, java.lang.Object, java.lang.Object[], com.oracle.truffle.polyglot.PolyglotLanguageContext, com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod, com.oracle.truffle.polyglot.ToHostNode, com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode, com.oracle.truffle.api.profiles.ValueProfile, com.oracle.truffle.api.profiles.BranchProfile, com.oracle.truffle.polyglot.PolyglotEngineImpl);
    descriptor: (Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;Ljava/lang/Object;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;Lcom/oracle/truffle/polyglot/ToHostNode;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext$ToGuestValueNode;Lcom/oracle/truffle/api/profiles/ValueProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;)Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=8, locals=19, args_size=11
        start local 0 // com.oracle.truffle.polyglot.HostExecuteNode this
        start local 1 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod method
        start local 2 // java.lang.Object obj
        start local 3 // java.lang.Object[] args
        start local 4 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        start local 5 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod cachedMethod
        start local 6 // com.oracle.truffle.polyglot.ToHostNode toJavaNode
        start local 7 // com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode toGuest
        start local 8 // com.oracle.truffle.api.profiles.ValueProfile receiverProfile
        start local 9 // com.oracle.truffle.api.profiles.BranchProfile errorBranch
        start local 10 // com.oracle.truffle.polyglot.PolyglotEngineImpl engine
         0: .line 141
            aload 5 /* cachedMethod */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterCount:()I
            istore 11 /* parameterCount */
        start local 11 // int parameterCount
         1: .line 142
            iload 11 /* parameterCount */
            iconst_1
            isub
            istore 12 /* minArity */
        start local 12 // int minArity
         2: .line 143
            aload 3 /* args */
            arraylength
            iload 12 /* minArity */
            if_icmpge 5
         3: .line 144
            aload 9 /* errorBranch */
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
         4: .line 145
            iload 12 /* minArity */
            aload 3 /* args */
            arraylength
            invokestatic com.oracle.truffle.api.interop.ArityException.create:(II)Lcom/oracle/truffle/api/interop/ArityException;
            athrow
         5: .line 147
      StackMap locals: int int
      StackMap stack:
            aload 5 /* cachedMethod */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterTypes:()[Ljava/lang/Class;
            astore 13 /* types */
        start local 13 // java.lang.Class[] types
         6: .line 148
            aload 5 /* cachedMethod */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getGenericParameterTypes:()[Ljava/lang/reflect/Type;
            astore 14 /* genericTypes */
        start local 14 // java.lang.reflect.Type[] genericTypes
         7: .line 149
            aload 3 /* args */
            arraylength
            anewarray java.lang.Object
            astore 15 /* convertedArguments */
        start local 15 // java.lang.Object[] convertedArguments
         8: .line 151
            iconst_0
            istore 16 /* i */
        start local 16 // int i
         9: goto 12
        10: .line 152
      StackMap locals: com.oracle.truffle.polyglot.HostExecuteNode com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod java.lang.Object java.lang.Object[] com.oracle.truffle.polyglot.PolyglotLanguageContext com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod com.oracle.truffle.polyglot.ToHostNode com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode com.oracle.truffle.api.profiles.ValueProfile com.oracle.truffle.api.profiles.BranchProfile com.oracle.truffle.polyglot.PolyglotEngineImpl int int java.lang.Class[] java.lang.reflect.Type[] java.lang.Object[] int
      StackMap stack:
            aload 15 /* convertedArguments */
            iload 16 /* i */
            aload 6 /* toJavaNode */
            aload 3 /* args */
            iload 16 /* i */
            aaload
            aload 13 /* types */
            iload 16 /* i */
            aaload
            aload 14 /* genericTypes */
            iload 16 /* i */
            aaload
            aload 4 /* languageContext */
            iconst_1
            invokevirtual com.oracle.truffle.polyglot.ToHostNode.execute:(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Type;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Z)Ljava/lang/Object;
            aastore
        11: .line 151
            iinc 16 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 16 /* i */
            iload 12 /* minArity */
            if_icmplt 10
        end local 16 // int i
        13: .line 154
            aload 3 /* args */
            aload 5 /* cachedMethod */
            aload 4 /* languageContext */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.asVarArgs:([Ljava/lang/Object;Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;)Z
            ifeq 23
        14: .line 155
            iload 12 /* minArity */
            istore 16 /* i */
        start local 16 // int i
        15: goto 20
        16: .line 156
      StackMap locals:
      StackMap stack:
            aload 13 /* types */
            iload 12 /* minArity */
            aaload
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            astore 17 /* expectedType */
        start local 17 // java.lang.Class expectedType
        17: .line 157
            aload 14 /* genericTypes */
            iload 12 /* minArity */
            aaload
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.getGenericComponentType:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
            astore 18 /* expectedGenericType */
        start local 18 // java.lang.reflect.Type expectedGenericType
        18: .line 158
            aload 15 /* convertedArguments */
            iload 16 /* i */
            aload 6 /* toJavaNode */
            aload 3 /* args */
            iload 16 /* i */
            aaload
            aload 17 /* expectedType */
            aload 18 /* expectedGenericType */
            aload 4 /* languageContext */
            iconst_1
            invokevirtual com.oracle.truffle.polyglot.ToHostNode.execute:(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Type;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Z)Ljava/lang/Object;
            aastore
        end local 18 // java.lang.reflect.Type expectedGenericType
        end local 17 // java.lang.Class expectedType
        19: .line 155
            iinc 16 /* i */ 1
      StackMap locals:
      StackMap stack:
        20: iload 16 /* i */
            aload 3 /* args */
            arraylength
            if_icmplt 16
        end local 16 // int i
        21: .line 160
            aload 5 /* cachedMethod */
            aload 15 /* convertedArguments */
            iload 11 /* parameterCount */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.createVarArgsArray:(Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;[Ljava/lang/Object;I)[Ljava/lang/Object;
            astore 15 /* convertedArguments */
        22: .line 161
            goto 28
        23: .line 162
      StackMap locals:
      StackMap stack:
            aload 15 /* convertedArguments */
            iload 12 /* minArity */
            aload 6 /* toJavaNode */
            aload 3 /* args */
            iload 12 /* minArity */
            aaload
            aload 13 /* types */
            iload 12 /* minArity */
            aaload
            aload 14 /* genericTypes */
            iload 12 /* minArity */
            aaload
            aload 4 /* languageContext */
            iconst_1
            invokevirtual com.oracle.truffle.polyglot.ToHostNode.execute:(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Type;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Z)Ljava/lang/Object;
            aastore
        24: .line 164
            goto 28
      StackMap locals:
      StackMap stack: com.oracle.truffle.polyglot.PolyglotEngineException
        25: astore 16 /* e */
        start local 16 // com.oracle.truffle.polyglot.PolyglotEngineException e
        26: .line 165
            aload 9 /* errorBranch */
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
        27: .line 166
            aload 3 /* args */
            aload 16 /* e */
            getfield com.oracle.truffle.polyglot.PolyglotEngineException.e:Ljava/lang/RuntimeException;
            invokestatic com.oracle.truffle.polyglot.HostInteropErrors.unsupportedTypeException:([Ljava/lang/Object;Ljava/lang/Throwable;)Lcom/oracle/truffle/api/interop/UnsupportedTypeException;
            athrow
        end local 16 // com.oracle.truffle.polyglot.PolyglotEngineException e
        28: .line 168
      StackMap locals:
      StackMap stack:
            aload 5 /* cachedMethod */
            aload 8 /* receiverProfile */
            aload 2 /* obj */
            invokevirtual com.oracle.truffle.api.profiles.ValueProfile.profile:(Ljava/lang/Object;)Ljava/lang/Object;
            aload 15 /* convertedArguments */
            aload 10 /* engine */
            aload 4 /* languageContext */
            aload 7 /* toGuest */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.doInvoke:(Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;Ljava/lang/Object;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext$ToGuestValueNode;)Ljava/lang/Object;
            areturn
        end local 15 // java.lang.Object[] convertedArguments
        end local 14 // java.lang.reflect.Type[] genericTypes
        end local 13 // java.lang.Class[] types
        end local 12 // int minArity
        end local 11 // int parameterCount
        end local 10 // com.oracle.truffle.polyglot.PolyglotEngineImpl engine
        end local 9 // com.oracle.truffle.api.profiles.BranchProfile errorBranch
        end local 8 // com.oracle.truffle.api.profiles.ValueProfile receiverProfile
        end local 7 // com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode toGuest
        end local 6 // com.oracle.truffle.polyglot.ToHostNode toJavaNode
        end local 5 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod cachedMethod
        end local 4 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        end local 3 // java.lang.Object[] args
        end local 2 // java.lang.Object obj
        end local 1 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod method
        end local 0 // com.oracle.truffle.polyglot.HostExecuteNode this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   29     0                 this  Lcom/oracle/truffle/polyglot/HostExecuteNode;
            0   29     1               method  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            0   29     2                  obj  Ljava/lang/Object;
            0   29     3                 args  [Ljava/lang/Object;
            0   29     4      languageContext  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
            0   29     5         cachedMethod  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            0   29     6           toJavaNode  Lcom/oracle/truffle/polyglot/ToHostNode;
            0   29     7              toGuest  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext$ToGuestValueNode;
            0   29     8      receiverProfile  Lcom/oracle/truffle/api/profiles/ValueProfile;
            0   29     9          errorBranch  Lcom/oracle/truffle/api/profiles/BranchProfile;
            0   29    10               engine  Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;
            1   29    11       parameterCount  I
            2   29    12             minArity  I
            6   29    13                types  [Ljava/lang/Class;
            7   29    14         genericTypes  [Ljava/lang/reflect/Type;
            8   29    15   convertedArguments  [Ljava/lang/Object;
            9   13    16                    i  I
           15   21    16                    i  I
           17   19    17         expectedType  Ljava/lang/Class<*>;
           18   19    18  expectedGenericType  Ljava/lang/reflect/Type;
           26   28    16                    e  Lcom/oracle/truffle/polyglot/PolyglotEngineException;
      Exception table:
        from    to  target  type
           8    24      25  Class com.oracle.truffle.polyglot.PolyglotEngineException
    Exceptions:
      throws com.oracle.truffle.api.interop.ArityException, com.oracle.truffle.api.interop.UnsupportedTypeException
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"method.isVarArgs()", "method == cachedMethod"}, limit = "LIMIT")
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
        com.oracle.truffle.api.dsl.Cached(value = "method")
      5:
        com.oracle.truffle.api.dsl.Cached()
      6:
        com.oracle.truffle.api.dsl.Cached()
      7:
        com.oracle.truffle.api.dsl.Cached(value = "createClassProfile()")
      8:
        com.oracle.truffle.api.dsl.Cached()
      9:
        com.oracle.truffle.api.dsl.Cached(value = "languageContext.context.engine", allowUncached = true)
    MethodParameters:
                 Name  Flags
      method           
      obj              
      args             
      languageContext  
      cachedMethod     
      toJavaNode       
      toGuest          
      receiverProfile  
      errorBranch      
      engine           

  static java.lang.Object doSingleUncached(com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod, java.lang.Object, java.lang.Object[], com.oracle.truffle.polyglot.PolyglotLanguageContext, com.oracle.truffle.polyglot.ToHostNode, com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode, com.oracle.truffle.api.profiles.ConditionProfile, com.oracle.truffle.polyglot.HostExecuteNode$HostMethodProfileNode, com.oracle.truffle.api.profiles.BranchProfile, com.oracle.truffle.polyglot.PolyglotEngineImpl);
    descriptor: (Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;Ljava/lang/Object;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Lcom/oracle/truffle/polyglot/ToHostNode;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext$ToGuestValueNode;Lcom/oracle/truffle/api/profiles/ConditionProfile;Lcom/oracle/truffle/polyglot/HostExecuteNode$HostMethodProfileNode;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;)Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=15, args_size=10
        start local 0 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod method
        start local 1 // java.lang.Object obj
        start local 2 // java.lang.Object[] args
        start local 3 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        start local 4 // com.oracle.truffle.polyglot.ToHostNode toJavaNode
        start local 5 // com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode toGuest
        start local 6 // com.oracle.truffle.api.profiles.ConditionProfile isVarArgsProfile
        start local 7 // com.oracle.truffle.polyglot.HostExecuteNode$HostMethodProfileNode methodProfile
        start local 8 // com.oracle.truffle.api.profiles.BranchProfile errorBranch
        start local 9 // com.oracle.truffle.polyglot.PolyglotEngineImpl engine
         0: .line 179
            aload 0 /* method */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterCount:()I
            istore 10 /* parameterCount */
        start local 10 // int parameterCount
         1: .line 182
            aload 6 /* isVarArgsProfile */
            aload 0 /* method */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.isVarArgs:()Z
            invokevirtual com.oracle.truffle.api.profiles.ConditionProfile.profile:(Z)Z
            ifeq 7
         2: .line 183
            iload 10 /* parameterCount */
            iconst_1
            isub
            istore 11 /* minArity */
        start local 11 // int minArity
         3: .line 184
            aload 2 /* args */
            arraylength
            iload 11 /* minArity */
            if_icmpge 4
            iconst_1
            goto 5
      StackMap locals: int int
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: istore 12 /* arityError */
        start local 12 // boolean arityError
         6: .line 185
            goto 11
        end local 12 // boolean arityError
        end local 11 // int minArity
         7: .line 186
      StackMap locals:
      StackMap stack:
            iload 10 /* parameterCount */
            istore 11 /* minArity */
        start local 11 // int minArity
         8: .line 187
            aload 2 /* args */
            arraylength
            iload 11 /* minArity */
            if_icmpeq 9
            iconst_1
            goto 10
      StackMap locals: int
      StackMap stack:
         9: iconst_0
      StackMap locals:
      StackMap stack: int
        10: istore 12 /* arityError */
        start local 12 // boolean arityError
        11: .line 189
      StackMap locals: int
      StackMap stack:
            iload 12 /* arityError */
            ifeq 14
        12: .line 190
            aload 8 /* errorBranch */
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
        13: .line 191
            iload 11 /* minArity */
            aload 2 /* args */
            arraylength
            invokestatic com.oracle.truffle.api.interop.ArityException.create:(II)Lcom/oracle/truffle/api/interop/ArityException;
            athrow
        14: .line 195
      StackMap locals:
      StackMap stack:
            aload 0 /* method */
            aload 2 /* args */
            aload 3 /* languageContext */
            aload 4 /* toJavaNode */
            aload 6 /* isVarArgsProfile */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.prepareArgumentsUncached:(Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Lcom/oracle/truffle/polyglot/ToHostNode;Lcom/oracle/truffle/api/profiles/ConditionProfile;)[Ljava/lang/Object;
            astore 13 /* convertedArguments */
        start local 13 // java.lang.Object[] convertedArguments
        15: .line 196
            goto 19
        end local 13 // java.lang.Object[] convertedArguments
      StackMap locals:
      StackMap stack: com.oracle.truffle.polyglot.PolyglotEngineException
        16: astore 14 /* e */
        start local 14 // com.oracle.truffle.polyglot.PolyglotEngineException e
        17: .line 197
            aload 8 /* errorBranch */
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
        18: .line 198
            aload 2 /* args */
            aload 14 /* e */
            getfield com.oracle.truffle.polyglot.PolyglotEngineException.e:Ljava/lang/RuntimeException;
            invokestatic com.oracle.truffle.polyglot.HostInteropErrors.unsupportedTypeException:([Ljava/lang/Object;Ljava/lang/Throwable;)Lcom/oracle/truffle/api/interop/UnsupportedTypeException;
            athrow
        end local 14 // com.oracle.truffle.polyglot.PolyglotEngineException e
        start local 13 // java.lang.Object[] convertedArguments
        19: .line 200
      StackMap locals: java.lang.Object[]
      StackMap stack:
            aload 7 /* methodProfile */
            aload 0 /* method */
            invokevirtual com.oracle.truffle.polyglot.HostExecuteNode$HostMethodProfileNode.execute:(Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;)Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            aload 1 /* obj */
            aload 13 /* convertedArguments */
            aload 9 /* engine */
            aload 3 /* languageContext */
            aload 5 /* toGuest */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.doInvoke:(Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;Ljava/lang/Object;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext$ToGuestValueNode;)Ljava/lang/Object;
            areturn
        end local 13 // java.lang.Object[] convertedArguments
        end local 12 // boolean arityError
        end local 11 // int minArity
        end local 10 // int parameterCount
        end local 9 // com.oracle.truffle.polyglot.PolyglotEngineImpl engine
        end local 8 // com.oracle.truffle.api.profiles.BranchProfile errorBranch
        end local 7 // com.oracle.truffle.polyglot.HostExecuteNode$HostMethodProfileNode methodProfile
        end local 6 // com.oracle.truffle.api.profiles.ConditionProfile isVarArgsProfile
        end local 5 // com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode toGuest
        end local 4 // com.oracle.truffle.polyglot.ToHostNode toJavaNode
        end local 3 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        end local 2 // java.lang.Object[] args
        end local 1 // java.lang.Object obj
        end local 0 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod method
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   20     0              method  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            0   20     1                 obj  Ljava/lang/Object;
            0   20     2                args  [Ljava/lang/Object;
            0   20     3     languageContext  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
            0   20     4          toJavaNode  Lcom/oracle/truffle/polyglot/ToHostNode;
            0   20     5             toGuest  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext$ToGuestValueNode;
            0   20     6    isVarArgsProfile  Lcom/oracle/truffle/api/profiles/ConditionProfile;
            0   20     7       methodProfile  Lcom/oracle/truffle/polyglot/HostExecuteNode$HostMethodProfileNode;
            0   20     8         errorBranch  Lcom/oracle/truffle/api/profiles/BranchProfile;
            0   20     9              engine  Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;
            1   20    10      parameterCount  I
            3    7    11            minArity  I
            8   20    11            minArity  I
            6    7    12          arityError  Z
           11   20    12          arityError  Z
           15   16    13  convertedArguments  [Ljava/lang/Object;
           19   20    13  convertedArguments  [Ljava/lang/Object;
           17   19    14                   e  Lcom/oracle/truffle/polyglot/PolyglotEngineException;
      Exception table:
        from    to  target  type
          14    15      16  Class com.oracle.truffle.polyglot.PolyglotEngineException
    Exceptions:
      throws com.oracle.truffle.api.interop.ArityException, com.oracle.truffle.api.interop.UnsupportedTypeException
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(replaces = {"doFixed", "doVarArgs"})
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
        com.oracle.truffle.api.dsl.Cached$Shared(value = "toHost")
        com.oracle.truffle.api.dsl.Cached()
      5:
        com.oracle.truffle.api.dsl.Cached$Shared(value = "toGuest")
        com.oracle.truffle.api.dsl.Cached()
      6:
        com.oracle.truffle.api.dsl.Cached$Shared(value = "varArgsProfile")
        com.oracle.truffle.api.dsl.Cached()
      7:
        com.oracle.truffle.api.dsl.Cached$Shared(value = "hostMethodProfile")
        com.oracle.truffle.api.dsl.Cached()
      8:
        com.oracle.truffle.api.dsl.Cached$Shared(value = "errorBranch")
        com.oracle.truffle.api.dsl.Cached()
      9:
        com.oracle.truffle.api.dsl.Cached$Shared(value = "engine")
        com.oracle.truffle.api.dsl.Cached(value = "languageContext.context.engine", allowUncached = true)
    MethodParameters:
                  Name  Flags
      method            
      obj               
      args              
      languageContext   
      toJavaNode        
      toGuest           
      isVarArgsProfile  
      methodProfile     
      errorBranch       
      engine            

  final java.lang.Object doOverloadedCached(com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod, java.lang.Object, java.lang.Object[], com.oracle.truffle.polyglot.PolyglotLanguageContext, com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod, com.oracle.truffle.polyglot.ToHostNode, com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode, com.oracle.truffle.api.interop.InteropLibrary, com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[], com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod, boolean, com.oracle.truffle.api.profiles.ValueProfile, com.oracle.truffle.api.profiles.BranchProfile, com.oracle.truffle.polyglot.PolyglotEngineImpl);
    descriptor: (Lcom/oracle/truffle/polyglot/HostMethodDesc$OverloadedMethod;Ljava/lang/Object;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Lcom/oracle/truffle/polyglot/HostMethodDesc$OverloadedMethod;Lcom/oracle/truffle/polyglot/ToHostNode;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext$ToGuestValueNode;Lcom/oracle/truffle/api/interop/InteropLibrary;[Lcom/oracle/truffle/polyglot/HostExecuteNode$TypeCheckNode;Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;ZLcom/oracle/truffle/api/profiles/ValueProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;)Ljava/lang/Object;
    flags: (0x0010) ACC_FINAL
    Code:
      stack=8, locals=22, args_size=15
        start local 0 // com.oracle.truffle.polyglot.HostExecuteNode this
        start local 1 // com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod method
        start local 2 // java.lang.Object obj
        start local 3 // java.lang.Object[] args
        start local 4 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        start local 5 // com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod cachedMethod
        start local 6 // com.oracle.truffle.polyglot.ToHostNode toJavaNode
        start local 7 // com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode toGuest
        start local 8 // com.oracle.truffle.api.interop.InteropLibrary interop
        start local 9 // com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] cachedArgTypes
        start local 10 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod overload
        start local 11 // boolean asVarArgs
        start local 12 // com.oracle.truffle.api.profiles.ValueProfile receiverProfile
        start local 13 // com.oracle.truffle.api.profiles.BranchProfile errorBranch
        start local 14 // com.oracle.truffle.polyglot.PolyglotEngineImpl engine
         0: .line 218
            getstatic com.oracle.truffle.polyglot.HostExecuteNode.$assertionsDisabled:Z
            ifne 1
            aload 10 /* overload */
            aload 0 /* this */
            aload 1 /* method */
            aload 3 /* args */
            aload 4 /* languageContext */
            invokevirtual com.oracle.truffle.polyglot.HostExecuteNode.selectOverload:(Lcom/oracle/truffle/polyglot/HostMethodDesc$OverloadedMethod;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;)Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            if_acmpeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 219
      StackMap locals:
      StackMap stack:
            aload 10 /* overload */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterTypes:()[Ljava/lang/Class;
            astore 15 /* types */
        start local 15 // java.lang.Class[] types
         2: .line 220
            aload 10 /* overload */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getGenericParameterTypes:()[Ljava/lang/reflect/Type;
            astore 16 /* genericTypes */
        start local 16 // java.lang.reflect.Type[] genericTypes
         3: .line 221
            aload 9 /* cachedArgTypes */
            arraylength
            anewarray java.lang.Object
            astore 17 /* convertedArguments */
        start local 17 // java.lang.Object[] convertedArguments
         4: .line 223
            iload 11 /* asVarArgs */
            ifeq 20
         5: .line 224
            getstatic com.oracle.truffle.polyglot.HostExecuteNode.$assertionsDisabled:Z
            ifne 6
            aload 10 /* overload */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.isVarArgs:()Z
            ifne 6
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         6: .line 225
      StackMap locals: java.lang.Class[] java.lang.reflect.Type[] java.lang.Object[]
      StackMap stack:
            aload 10 /* overload */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterCount:()I
            istore 18 /* parameterCount */
        start local 18 // int parameterCount
         7: .line 226
            iconst_0
            istore 19 /* i */
        start local 19 // int i
         8: goto 17
         9: .line 227
      StackMap locals: int int
      StackMap stack:
            iload 19 /* i */
            iload 18 /* parameterCount */
            iconst_1
            isub
            if_icmpge 10
            aload 15 /* types */
            iload 19 /* i */
            aaload
            goto 11
      StackMap locals:
      StackMap stack:
        10: aload 15 /* types */
            iload 18 /* parameterCount */
            iconst_1
            isub
            aaload
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
      StackMap locals:
      StackMap stack: java.lang.Class
        11: astore 20 /* expectedType */
        start local 20 // java.lang.Class expectedType
        12: .line 228
            iload 19 /* i */
            iload 18 /* parameterCount */
            iconst_1
            isub
            if_icmpge 13
            aload 16 /* genericTypes */
            iload 19 /* i */
            aaload
            goto 14
      StackMap locals: java.lang.Class
      StackMap stack:
        13: aload 16 /* genericTypes */
            iload 18 /* parameterCount */
            iconst_1
            isub
            aaload
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.getGenericComponentType:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
      StackMap locals:
      StackMap stack: java.lang.reflect.Type
        14: astore 21 /* expectedGenericType */
        start local 21 // java.lang.reflect.Type expectedGenericType
        15: .line 229
            aload 17 /* convertedArguments */
            iload 19 /* i */
            aload 6 /* toJavaNode */
            aload 3 /* args */
            iload 19 /* i */
            aaload
            aload 20 /* expectedType */
            aload 21 /* expectedGenericType */
            aload 4 /* languageContext */
            iconst_1
            invokevirtual com.oracle.truffle.polyglot.ToHostNode.execute:(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Type;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Z)Ljava/lang/Object;
            aastore
        end local 21 // java.lang.reflect.Type expectedGenericType
        end local 20 // java.lang.Class expectedType
        16: .line 226
            iinc 19 /* i */ 1
      StackMap locals:
      StackMap stack:
        17: iload 19 /* i */
            aload 9 /* cachedArgTypes */
            arraylength
            if_icmplt 9
        end local 19 // int i
        18: .line 231
            aload 10 /* overload */
            aload 17 /* convertedArguments */
            iload 18 /* parameterCount */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.createVarArgsArray:(Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;[Ljava/lang/Object;I)[Ljava/lang/Object;
            astore 17 /* convertedArguments */
        end local 18 // int parameterCount
        19: .line 232
            goto 29
        20: .line 233
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 18 /* i */
        start local 18 // int i
        21: goto 24
        22: .line 234
      StackMap locals: int
      StackMap stack:
            aload 17 /* convertedArguments */
            iload 18 /* i */
            aload 6 /* toJavaNode */
            aload 3 /* args */
            iload 18 /* i */
            aaload
            aload 15 /* types */
            iload 18 /* i */
            aaload
            aload 16 /* genericTypes */
            iload 18 /* i */
            aaload
            aload 4 /* languageContext */
            iconst_1
            invokevirtual com.oracle.truffle.polyglot.ToHostNode.execute:(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Type;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Z)Ljava/lang/Object;
            aastore
        23: .line 233
            iinc 18 /* i */ 1
      StackMap locals:
      StackMap stack:
        24: iload 18 /* i */
            aload 9 /* cachedArgTypes */
            arraylength
            if_icmplt 22
        end local 18 // int i
        25: .line 237
            goto 29
      StackMap locals: com.oracle.truffle.polyglot.HostExecuteNode com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod java.lang.Object java.lang.Object[] com.oracle.truffle.polyglot.PolyglotLanguageContext com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod com.oracle.truffle.polyglot.ToHostNode com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode com.oracle.truffle.api.interop.InteropLibrary com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod int com.oracle.truffle.api.profiles.ValueProfile com.oracle.truffle.api.profiles.BranchProfile com.oracle.truffle.polyglot.PolyglotEngineImpl java.lang.Class[] java.lang.reflect.Type[] java.lang.Object[]
      StackMap stack: com.oracle.truffle.polyglot.PolyglotEngineException
        26: astore 18 /* e */
        start local 18 // com.oracle.truffle.polyglot.PolyglotEngineException e
        27: .line 238
            aload 13 /* errorBranch */
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
        28: .line 239
            aload 3 /* args */
            aload 18 /* e */
            getfield com.oracle.truffle.polyglot.PolyglotEngineException.e:Ljava/lang/RuntimeException;
            invokestatic com.oracle.truffle.polyglot.HostInteropErrors.unsupportedTypeException:([Ljava/lang/Object;Ljava/lang/Throwable;)Lcom/oracle/truffle/api/interop/UnsupportedTypeException;
            athrow
        end local 18 // com.oracle.truffle.polyglot.PolyglotEngineException e
        29: .line 241
      StackMap locals:
      StackMap stack:
            aload 10 /* overload */
            aload 12 /* receiverProfile */
            aload 2 /* obj */
            invokevirtual com.oracle.truffle.api.profiles.ValueProfile.profile:(Ljava/lang/Object;)Ljava/lang/Object;
            aload 17 /* convertedArguments */
            aload 14 /* engine */
            aload 4 /* languageContext */
            aload 7 /* toGuest */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.doInvoke:(Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;Ljava/lang/Object;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext$ToGuestValueNode;)Ljava/lang/Object;
            areturn
        end local 17 // java.lang.Object[] convertedArguments
        end local 16 // java.lang.reflect.Type[] genericTypes
        end local 15 // java.lang.Class[] types
        end local 14 // com.oracle.truffle.polyglot.PolyglotEngineImpl engine
        end local 13 // com.oracle.truffle.api.profiles.BranchProfile errorBranch
        end local 12 // com.oracle.truffle.api.profiles.ValueProfile receiverProfile
        end local 11 // boolean asVarArgs
        end local 10 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod overload
        end local 9 // com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] cachedArgTypes
        end local 8 // com.oracle.truffle.api.interop.InteropLibrary interop
        end local 7 // com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode toGuest
        end local 6 // com.oracle.truffle.polyglot.ToHostNode toJavaNode
        end local 5 // com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod cachedMethod
        end local 4 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        end local 3 // java.lang.Object[] args
        end local 2 // java.lang.Object obj
        end local 1 // com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod method
        end local 0 // com.oracle.truffle.polyglot.HostExecuteNode this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   30     0                 this  Lcom/oracle/truffle/polyglot/HostExecuteNode;
            0   30     1               method  Lcom/oracle/truffle/polyglot/HostMethodDesc$OverloadedMethod;
            0   30     2                  obj  Ljava/lang/Object;
            0   30     3                 args  [Ljava/lang/Object;
            0   30     4      languageContext  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
            0   30     5         cachedMethod  Lcom/oracle/truffle/polyglot/HostMethodDesc$OverloadedMethod;
            0   30     6           toJavaNode  Lcom/oracle/truffle/polyglot/ToHostNode;
            0   30     7              toGuest  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext$ToGuestValueNode;
            0   30     8              interop  Lcom/oracle/truffle/api/interop/InteropLibrary;
            0   30     9       cachedArgTypes  [Lcom/oracle/truffle/polyglot/HostExecuteNode$TypeCheckNode;
            0   30    10             overload  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            0   30    11            asVarArgs  Z
            0   30    12      receiverProfile  Lcom/oracle/truffle/api/profiles/ValueProfile;
            0   30    13          errorBranch  Lcom/oracle/truffle/api/profiles/BranchProfile;
            0   30    14               engine  Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;
            2   30    15                types  [Ljava/lang/Class;
            3   30    16         genericTypes  [Ljava/lang/reflect/Type;
            4   30    17   convertedArguments  [Ljava/lang/Object;
            7   19    18       parameterCount  I
            8   18    19                    i  I
           12   16    20         expectedType  Ljava/lang/Class<*>;
           15   16    21  expectedGenericType  Ljava/lang/reflect/Type;
           21   25    18                    i  I
           27   29    18                    e  Lcom/oracle/truffle/polyglot/PolyglotEngineException;
      Exception table:
        from    to  target  type
           4    25      26  Class com.oracle.truffle.polyglot.PolyglotEngineException
    Exceptions:
      throws com.oracle.truffle.api.interop.ArityException, com.oracle.truffle.api.interop.UnsupportedTypeException
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.ExplodeLoop()
      com.oracle.truffle.api.dsl.Specialization(guards = {"method == cachedMethod", "checkArgTypes(args, cachedArgTypes, interop, languageContext, asVarArgs)"}, limit = "LIMIT")
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
        com.oracle.truffle.api.dsl.Cached(value = "method")
      5:
        com.oracle.truffle.api.dsl.Cached()
      6:
        com.oracle.truffle.api.dsl.Cached()
      7:
        com.oracle.truffle.api.library.CachedLibrary(limit = "LIMIT")
      8:
        com.oracle.truffle.api.dsl.Cached(value = "createArgTypesArray(args)")
      9:
        com.oracle.truffle.api.dsl.Cached(value = "selectOverload(method, args, languageContext, cachedArgTypes)")
      10:
        com.oracle.truffle.api.dsl.Cached(value = "asVarArgs(args, overload, languageContext)")
      11:
        com.oracle.truffle.api.dsl.Cached(value = "createClassProfile()")
      12:
        com.oracle.truffle.api.dsl.Cached()
      13:
        com.oracle.truffle.api.dsl.Cached(value = "languageContext.context.engine", allowUncached = true)
    MethodParameters:
                 Name  Flags
      method           
      obj              
      args             
      languageContext  
      cachedMethod     
      toJavaNode       
      toGuest          
      interop          
      cachedArgTypes   
      overload         
      asVarArgs        
      receiverProfile  
      errorBranch      
      engine           

  final java.lang.Object doOverloadedUncached(com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod, java.lang.Object, java.lang.Object[], com.oracle.truffle.polyglot.PolyglotLanguageContext, com.oracle.truffle.polyglot.ToHostNode, com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode, com.oracle.truffle.api.profiles.ConditionProfile, com.oracle.truffle.polyglot.HostExecuteNode$HostMethodProfileNode, com.oracle.truffle.api.profiles.BranchProfile, com.oracle.truffle.polyglot.PolyglotEngineImpl);
    descriptor: (Lcom/oracle/truffle/polyglot/HostMethodDesc$OverloadedMethod;Ljava/lang/Object;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Lcom/oracle/truffle/polyglot/ToHostNode;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext$ToGuestValueNode;Lcom/oracle/truffle/api/profiles/ConditionProfile;Lcom/oracle/truffle/polyglot/HostExecuteNode$HostMethodProfileNode;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;)Ljava/lang/Object;
    flags: (0x0010) ACC_FINAL
    Code:
      stack=6, locals=14, args_size=11
        start local 0 // com.oracle.truffle.polyglot.HostExecuteNode this
        start local 1 // com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod method
        start local 2 // java.lang.Object obj
        start local 3 // java.lang.Object[] args
        start local 4 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        start local 5 // com.oracle.truffle.polyglot.ToHostNode toJavaNode
        start local 6 // com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode toGuest
        start local 7 // com.oracle.truffle.api.profiles.ConditionProfile isVarArgsProfile
        start local 8 // com.oracle.truffle.polyglot.HostExecuteNode$HostMethodProfileNode methodProfile
        start local 9 // com.oracle.truffle.api.profiles.BranchProfile errorBranch
        start local 10 // com.oracle.truffle.polyglot.PolyglotEngineImpl engine
         0: .line 253
            aload 0 /* this */
            aload 1 /* method */
            aload 3 /* args */
            aload 4 /* languageContext */
            invokevirtual com.oracle.truffle.polyglot.HostExecuteNode.selectOverload:(Lcom/oracle/truffle/polyglot/HostMethodDesc$OverloadedMethod;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;)Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            astore 11 /* overload */
        start local 11 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod overload
         1: .line 256
            aload 11 /* overload */
            aload 3 /* args */
            aload 4 /* languageContext */
            aload 5 /* toJavaNode */
            aload 7 /* isVarArgsProfile */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.prepareArgumentsUncached:(Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Lcom/oracle/truffle/polyglot/ToHostNode;Lcom/oracle/truffle/api/profiles/ConditionProfile;)[Ljava/lang/Object;
            astore 12 /* convertedArguments */
        start local 12 // java.lang.Object[] convertedArguments
         2: .line 257
            goto 6
        end local 12 // java.lang.Object[] convertedArguments
      StackMap locals: com.oracle.truffle.polyglot.HostExecuteNode com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod java.lang.Object java.lang.Object[] com.oracle.truffle.polyglot.PolyglotLanguageContext com.oracle.truffle.polyglot.ToHostNode com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode com.oracle.truffle.api.profiles.ConditionProfile com.oracle.truffle.polyglot.HostExecuteNode$HostMethodProfileNode com.oracle.truffle.api.profiles.BranchProfile com.oracle.truffle.polyglot.PolyglotEngineImpl com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod
      StackMap stack: com.oracle.truffle.polyglot.PolyglotEngineException
         3: astore 13 /* e */
        start local 13 // com.oracle.truffle.polyglot.PolyglotEngineException e
         4: .line 258
            aload 9 /* errorBranch */
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
         5: .line 259
            aload 3 /* args */
            aload 13 /* e */
            getfield com.oracle.truffle.polyglot.PolyglotEngineException.e:Ljava/lang/RuntimeException;
            invokestatic com.oracle.truffle.polyglot.HostInteropErrors.unsupportedTypeException:([Ljava/lang/Object;Ljava/lang/Throwable;)Lcom/oracle/truffle/api/interop/UnsupportedTypeException;
            athrow
        end local 13 // com.oracle.truffle.polyglot.PolyglotEngineException e
        start local 12 // java.lang.Object[] convertedArguments
         6: .line 261
      StackMap locals: java.lang.Object[]
      StackMap stack:
            aload 8 /* methodProfile */
            aload 11 /* overload */
            invokevirtual com.oracle.truffle.polyglot.HostExecuteNode$HostMethodProfileNode.execute:(Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;)Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            aload 2 /* obj */
            aload 12 /* convertedArguments */
            aload 10 /* engine */
            aload 4 /* languageContext */
            aload 6 /* toGuest */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.doInvoke:(Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;Ljava/lang/Object;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext$ToGuestValueNode;)Ljava/lang/Object;
            areturn
        end local 12 // java.lang.Object[] convertedArguments
        end local 11 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod overload
        end local 10 // com.oracle.truffle.polyglot.PolyglotEngineImpl engine
        end local 9 // com.oracle.truffle.api.profiles.BranchProfile errorBranch
        end local 8 // com.oracle.truffle.polyglot.HostExecuteNode$HostMethodProfileNode methodProfile
        end local 7 // com.oracle.truffle.api.profiles.ConditionProfile isVarArgsProfile
        end local 6 // com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode toGuest
        end local 5 // com.oracle.truffle.polyglot.ToHostNode toJavaNode
        end local 4 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        end local 3 // java.lang.Object[] args
        end local 2 // java.lang.Object obj
        end local 1 // com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod method
        end local 0 // com.oracle.truffle.polyglot.HostExecuteNode this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    7     0                this  Lcom/oracle/truffle/polyglot/HostExecuteNode;
            0    7     1              method  Lcom/oracle/truffle/polyglot/HostMethodDesc$OverloadedMethod;
            0    7     2                 obj  Ljava/lang/Object;
            0    7     3                args  [Ljava/lang/Object;
            0    7     4     languageContext  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
            0    7     5          toJavaNode  Lcom/oracle/truffle/polyglot/ToHostNode;
            0    7     6             toGuest  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext$ToGuestValueNode;
            0    7     7    isVarArgsProfile  Lcom/oracle/truffle/api/profiles/ConditionProfile;
            0    7     8       methodProfile  Lcom/oracle/truffle/polyglot/HostExecuteNode$HostMethodProfileNode;
            0    7     9         errorBranch  Lcom/oracle/truffle/api/profiles/BranchProfile;
            0    7    10              engine  Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;
            1    7    11            overload  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            2    3    12  convertedArguments  [Ljava/lang/Object;
            6    7    12  convertedArguments  [Ljava/lang/Object;
            4    6    13                   e  Lcom/oracle/truffle/polyglot/PolyglotEngineException;
      Exception table:
        from    to  target  type
           1     2       3  Class com.oracle.truffle.polyglot.PolyglotEngineException
    Exceptions:
      throws com.oracle.truffle.api.interop.ArityException, com.oracle.truffle.api.interop.UnsupportedTypeException
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(replaces = {"doOverloadedCached"})
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
        com.oracle.truffle.api.dsl.Cached$Shared(value = "toHost")
        com.oracle.truffle.api.dsl.Cached()
      5:
        com.oracle.truffle.api.dsl.Cached$Shared(value = "toGuest")
        com.oracle.truffle.api.dsl.Cached()
      6:
        com.oracle.truffle.api.dsl.Cached$Shared(value = "varArgsProfile")
        com.oracle.truffle.api.dsl.Cached()
      7:
        com.oracle.truffle.api.dsl.Cached$Shared(value = "hostMethodProfile")
        com.oracle.truffle.api.dsl.Cached()
      8:
        com.oracle.truffle.api.dsl.Cached$Shared(value = "errorBranch")
        com.oracle.truffle.api.dsl.Cached()
      9:
        com.oracle.truffle.api.dsl.Cached$Shared(value = "engine")
        com.oracle.truffle.api.dsl.Cached(value = "languageContext.context.engine", allowUncached = true)
    MethodParameters:
                  Name  Flags
      method            
      obj               
      args              
      languageContext   
      toJavaNode        
      toGuest           
      isVarArgsProfile  
      methodProfile     
      errorBranch       
      engine            

  private static java.lang.Object[] prepareArgumentsUncached(com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod, java.lang.Object[], com.oracle.truffle.polyglot.PolyglotLanguageContext, com.oracle.truffle.polyglot.ToHostNode, com.oracle.truffle.api.profiles.ConditionProfile);
    descriptor: (Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Lcom/oracle/truffle/polyglot/ToHostNode;Lcom/oracle/truffle/api/profiles/ConditionProfile;)[Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=8, locals=12, args_size=5
        start local 0 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod method
        start local 1 // java.lang.Object[] args
        start local 2 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        start local 3 // com.oracle.truffle.polyglot.ToHostNode toJavaNode
        start local 4 // com.oracle.truffle.api.profiles.ConditionProfile isVarArgsProfile
         0: .line 265
            aload 0 /* method */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterTypes:()[Ljava/lang/Class;
            astore 5 /* types */
        start local 5 // java.lang.Class[] types
         1: .line 266
            aload 0 /* method */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getGenericParameterTypes:()[Ljava/lang/reflect/Type;
            astore 6 /* genericTypes */
        start local 6 // java.lang.reflect.Type[] genericTypes
         2: .line 267
            aload 1 /* args */
            arraylength
            anewarray java.lang.Object
            astore 7 /* convertedArguments */
        start local 7 // java.lang.Object[] convertedArguments
         3: .line 268
            aload 4 /* isVarArgsProfile */
            aload 0 /* method */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.isVarArgs:()Z
            invokevirtual com.oracle.truffle.api.profiles.ConditionProfile.profile:(Z)Z
            ifeq 18
            aload 1 /* args */
            aload 0 /* method */
            aload 2 /* languageContext */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.asVarArgs:([Ljava/lang/Object;Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;)Z
            ifeq 18
         4: .line 269
            aload 0 /* method */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterCount:()I
            istore 8 /* parameterCount */
        start local 8 // int parameterCount
         5: .line 270
            iconst_0
            istore 9 /* i */
        start local 9 // int i
         6: goto 15
         7: .line 271
      StackMap locals: com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod java.lang.Object[] com.oracle.truffle.polyglot.PolyglotLanguageContext com.oracle.truffle.polyglot.ToHostNode com.oracle.truffle.api.profiles.ConditionProfile java.lang.Class[] java.lang.reflect.Type[] java.lang.Object[] int int
      StackMap stack:
            iload 9 /* i */
            iload 8 /* parameterCount */
            iconst_1
            isub
            if_icmpge 8
            aload 5 /* types */
            iload 9 /* i */
            aaload
            goto 9
      StackMap locals:
      StackMap stack:
         8: aload 5 /* types */
            iload 8 /* parameterCount */
            iconst_1
            isub
            aaload
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
      StackMap locals:
      StackMap stack: java.lang.Class
         9: astore 10 /* expectedType */
        start local 10 // java.lang.Class expectedType
        10: .line 272
            iload 9 /* i */
            iload 8 /* parameterCount */
            iconst_1
            isub
            if_icmpge 11
            aload 6 /* genericTypes */
            iload 9 /* i */
            aaload
            goto 12
      StackMap locals: java.lang.Class
      StackMap stack:
        11: aload 6 /* genericTypes */
            iload 8 /* parameterCount */
            iconst_1
            isub
            aaload
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.getGenericComponentType:(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
      StackMap locals:
      StackMap stack: java.lang.reflect.Type
        12: astore 11 /* expectedGenericType */
        start local 11 // java.lang.reflect.Type expectedGenericType
        13: .line 273
            aload 7 /* convertedArguments */
            iload 9 /* i */
            aload 3 /* toJavaNode */
            aload 1 /* args */
            iload 9 /* i */
            aaload
            aload 10 /* expectedType */
            aload 11 /* expectedGenericType */
            aload 2 /* languageContext */
            iconst_1
            invokevirtual com.oracle.truffle.polyglot.ToHostNode.execute:(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Type;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Z)Ljava/lang/Object;
            aastore
        end local 11 // java.lang.reflect.Type expectedGenericType
        end local 10 // java.lang.Class expectedType
        14: .line 270
            iinc 9 /* i */ 1
      StackMap locals:
      StackMap stack:
        15: iload 9 /* i */
            aload 1 /* args */
            arraylength
            if_icmplt 7
        end local 9 // int i
        16: .line 275
            aload 0 /* method */
            aload 7 /* convertedArguments */
            iload 8 /* parameterCount */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.createVarArgsArray:(Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;[Ljava/lang/Object;I)[Ljava/lang/Object;
            astore 7 /* convertedArguments */
        end local 8 // int parameterCount
        17: .line 276
            goto 23
        18: .line 277
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        19: goto 22
        20: .line 278
      StackMap locals: int
      StackMap stack:
            aload 7 /* convertedArguments */
            iload 8 /* i */
            aload 3 /* toJavaNode */
            aload 1 /* args */
            iload 8 /* i */
            aaload
            aload 5 /* types */
            iload 8 /* i */
            aaload
            aload 6 /* genericTypes */
            iload 8 /* i */
            aaload
            aload 2 /* languageContext */
            iconst_1
            invokevirtual com.oracle.truffle.polyglot.ToHostNode.execute:(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Type;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Z)Ljava/lang/Object;
            aastore
        21: .line 277
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        22: iload 8 /* i */
            aload 1 /* args */
            arraylength
            if_icmplt 20
        end local 8 // int i
        23: .line 281
      StackMap locals:
      StackMap stack:
            aload 7 /* convertedArguments */
            areturn
        end local 7 // java.lang.Object[] convertedArguments
        end local 6 // java.lang.reflect.Type[] genericTypes
        end local 5 // java.lang.Class[] types
        end local 4 // com.oracle.truffle.api.profiles.ConditionProfile isVarArgsProfile
        end local 3 // com.oracle.truffle.polyglot.ToHostNode toJavaNode
        end local 2 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        end local 1 // java.lang.Object[] args
        end local 0 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod method
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   24     0               method  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            0   24     1                 args  [Ljava/lang/Object;
            0   24     2      languageContext  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
            0   24     3           toJavaNode  Lcom/oracle/truffle/polyglot/ToHostNode;
            0   24     4     isVarArgsProfile  Lcom/oracle/truffle/api/profiles/ConditionProfile;
            1   24     5                types  [Ljava/lang/Class;
            2   24     6         genericTypes  [Ljava/lang/reflect/Type;
            3   24     7   convertedArguments  [Ljava/lang/Object;
            5   17     8       parameterCount  I
            6   16     9                    i  I
           10   14    10         expectedType  Ljava/lang/Class<*>;
           13   14    11  expectedGenericType  Ljava/lang/reflect/Type;
           19   23     8                    i  I
    MethodParameters:
                  Name  Flags
      method            
      args              
      languageContext   
      toJavaNode        
      isVarArgsProfile  

  static com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] createArgTypesArray(java.lang.Object[]);
    descriptor: ([Ljava/lang/Object;)[Lcom/oracle/truffle/polyglot/HostExecuteNode$TypeCheckNode;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.Object[] args
         0: .line 285
            aload 0 /* args */
            arraylength
            anewarray com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode
            astore 1 /* nodes */
        start local 1 // com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] nodes
         1: .line 287
            aload 1 /* nodes */
            getstatic com.oracle.truffle.polyglot.HostExecuteNode$NullCheckNode.INSTANCE:Lcom/oracle/truffle/polyglot/HostExecuteNode$NullCheckNode;
            invokestatic java.util.Arrays.fill:([Ljava/lang/Object;Ljava/lang/Object;)V
         2: .line 288
            aload 1 /* nodes */
            areturn
        end local 1 // com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] nodes
        end local 0 // java.lang.Object[] args
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   args  [Ljava/lang/Object;
            1    3     1  nodes  [Lcom/oracle/truffle/polyglot/HostExecuteNode$TypeCheckNode;
    MethodParameters:
      Name  Flags
      args  

  private void fillArgTypesArray([], com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[], com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod, boolean, java.util.List<com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod>, int, com.oracle.truffle.polyglot.PolyglotLanguageContext);
    descriptor: ([Ljava/lang/Object;[Lcom/oracle/truffle/polyglot/HostExecuteNode$TypeCheckNode;Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;ZLjava/util/List;ILcom/oracle/truffle/polyglot/PolyglotLanguageContext;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=8, args_size=8
        start local 0 // com.oracle.truffle.polyglot.HostExecuteNode this
         0: .line 321
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tTargetMappingNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.oracle.truffle.polyglot.HostExecuteNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/polyglot/HostExecuteNode;
    Signature: ([Ljava/lang/Object;[Lcom/oracle/truffle/polyglot/HostExecuteNode$TypeCheckNode;Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;ZLjava/util/List<Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;>;ILcom/oracle/truffle/polyglot/PolyglotLanguageContext;)V
    MethodParameters:
                 Name  Flags
      args             
      cachedArgTypes   
      selected         
      varArgs          
      applicable       
      priority         
      languageContext  

  private static com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode createPrimitiveTargetCheck(java.util.List<com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod>, com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod, , java.lang.Class<?>, int, int, boolean);
    descriptor: (Ljava/util/List;Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;Ljava/lang/Object;Ljava/lang/Class;IIZ)Lcom/oracle/truffle/polyglot/HostExecuteNode$TypeCheckNode;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=12, args_size=7
        start local 0 // java.util.List applicable
        start local 1 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod selected
        start local 2 // java.lang.Object arg
        start local 3 // java.lang.Class targetType
        start local 4 // int parameterIndex
        start local 5 // int priority
        start local 6 // boolean varArgs
         0: .line 358
            aload 3 /* targetType */
            astore 7 /* currentTargetType */
        start local 7 // java.lang.Class currentTargetType
         1: .line 360
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 8 /* otherPossibleTypes */
        start local 8 // java.util.Collection otherPossibleTypes
         2: .line 361
            aload 0 /* applicable */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 16
      StackMap locals: java.util.List com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod java.lang.Object java.lang.Class int int int java.lang.Class java.util.Collection top java.util.Iterator
      StackMap stack:
         3: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod
            astore 9 /* other */
        start local 9 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod other
         4: .line 362
            aload 9 /* other */
            aload 1 /* selected */
            if_acmpne 6
         5: .line 363
            goto 16
         6: .line 365
      StackMap locals: java.util.List com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod java.lang.Object java.lang.Class int int int java.lang.Class java.util.Collection com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod java.util.Iterator
      StackMap stack:
            aload 9 /* other */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.isVarArgs:()Z
            iload 6 /* varArgs */
            if_icmpeq 8
         7: .line 366
            goto 16
         8: .line 368
      StackMap locals:
      StackMap stack:
            aload 9 /* other */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterTypes:()[Ljava/lang/Class;
            iload 4 /* parameterIndex */
            iload 6 /* varArgs */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.getParameterType:([Ljava/lang/Class;IZ)Ljava/lang/Class;
            astore 11 /* paramType */
        start local 11 // java.lang.Class paramType
         9: .line 369
            aload 11 /* paramType */
            aload 3 /* targetType */
            if_acmpne 11
        10: .line 370
            goto 16
        11: .line 371
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 8 /* otherPossibleTypes */
            aload 11 /* paramType */
            invokeinterface java.util.Collection.contains:(Ljava/lang/Object;)Z
            ifeq 13
        12: .line 372
            goto 16
        13: .line 381
      StackMap locals:
      StackMap stack:
            aload 11 /* paramType */
            invokestatic com.oracle.truffle.polyglot.ToHostNode.isPrimitiveTarget:(Ljava/lang/Class;)Z
            ifne 14
            aload 3 /* targetType */
            invokestatic com.oracle.truffle.polyglot.ToHostNode.isPrimitiveTarget:(Ljava/lang/Class;)Z
            ifeq 16
        14: .line 382
      StackMap locals:
      StackMap stack:
            aload 3 /* targetType */
            aload 11 /* paramType */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.isAssignableFrom:(Ljava/lang/Class;Ljava/lang/Class;)Z
            ifeq 16
            aload 2 /* arg */
            aload 11 /* paramType */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.isSubtypeOf:(Ljava/lang/Object;Ljava/lang/Class;)Z
            ifne 16
        15: .line 383
            aload 8 /* otherPossibleTypes */
            aload 11 /* paramType */
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
        end local 11 // java.lang.Class paramType
        end local 9 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod other
        16: .line 361
      StackMap locals: java.util.List com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod java.lang.Object java.lang.Class int int int java.lang.Class java.util.Collection top java.util.Iterator
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        17: .line 386
            new com.oracle.truffle.polyglot.HostExecuteNode$PrimitiveType
            dup
            aload 7 /* currentTargetType */
            aload 8 /* otherPossibleTypes */
            getstatic com.oracle.truffle.polyglot.HostExecuteNode.EMPTY_CLASS_ARRAY:[Ljava/lang/Class;
            invokeinterface java.util.Collection.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.lang.Class[]
            iload 5 /* priority */
            invokespecial com.oracle.truffle.polyglot.HostExecuteNode$PrimitiveType.<init>:(Ljava/lang/Class;[Ljava/lang/Class;I)V
            areturn
        end local 8 // java.util.Collection otherPossibleTypes
        end local 7 // java.lang.Class currentTargetType
        end local 6 // boolean varArgs
        end local 5 // int priority
        end local 4 // int parameterIndex
        end local 3 // java.lang.Class targetType
        end local 2 // java.lang.Object arg
        end local 1 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod selected
        end local 0 // java.util.List applicable
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   18     0          applicable  Ljava/util/List<Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;>;
            0   18     1            selected  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            0   18     2                 arg  Ljava/lang/Object;
            0   18     3          targetType  Ljava/lang/Class<*>;
            0   18     4      parameterIndex  I
            0   18     5            priority  I
            0   18     6             varArgs  Z
            1   18     7   currentTargetType  Ljava/lang/Class<*>;
            2   18     8  otherPossibleTypes  Ljava/util/Collection<Ljava/lang/Class<*>;>;
            4   16     9               other  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            9   16    11           paramType  Ljava/lang/Class<*>;
    Signature: (Ljava/util/List<Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;>;Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;Ljava/lang/Object;Ljava/lang/Class<*>;IIZ)Lcom/oracle/truffle/polyglot/HostExecuteNode$TypeCheckNode;
    MethodParameters:
                Name  Flags
      applicable      
      selected        
      arg             
      targetType      
      parameterIndex  
      priority        
      varArgs         

  static boolean checkArgTypes(java.lang.Object[], com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[], com.oracle.truffle.api.interop.InteropLibrary, com.oracle.truffle.polyglot.PolyglotLanguageContext, boolean);
    descriptor: ([Ljava/lang/Object;[Lcom/oracle/truffle/polyglot/HostExecuteNode$TypeCheckNode;Lcom/oracle/truffle/api/interop/InteropLibrary;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Z)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=7, args_size=5
        start local 0 // java.lang.Object[] args
        start local 1 // com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] argTypes
        start local 2 // com.oracle.truffle.api.interop.InteropLibrary interop
        start local 3 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        start local 4 // boolean dummy
         0: .line 391
            aload 0 /* args */
            arraylength
            aload 1 /* argTypes */
            arraylength
            if_icmpeq 2
         1: .line 392
            iconst_0
            ireturn
         2: .line 394
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         3: goto 8
         4: .line 395
      StackMap locals: int
      StackMap stack:
            aload 1 /* argTypes */
            iload 5 /* i */
            aaload
            astore 6 /* argType */
        start local 6 // com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode argType
         5: .line 396
            aload 6 /* argType */
            aload 0 /* args */
            iload 5 /* i */
            aaload
            aload 2 /* interop */
            aload 3 /* languageContext */
            invokevirtual com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode.execute:(Ljava/lang/Object;Lcom/oracle/truffle/api/interop/InteropLibrary;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;)Z
            ifne 7
         6: .line 397
            iconst_0
            ireturn
        end local 6 // com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode argType
         7: .line 394
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 5 /* i */
            aload 1 /* argTypes */
            arraylength
            if_icmplt 4
        end local 5 // int i
         9: .line 400
            iconst_1
            ireturn
        end local 4 // boolean dummy
        end local 3 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        end local 2 // com.oracle.truffle.api.interop.InteropLibrary interop
        end local 1 // com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] argTypes
        end local 0 // java.lang.Object[] args
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   10     0             args  [Ljava/lang/Object;
            0   10     1         argTypes  [Lcom/oracle/truffle/polyglot/HostExecuteNode$TypeCheckNode;
            0   10     2          interop  Lcom/oracle/truffle/api/interop/InteropLibrary;
            0   10     3  languageContext  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
            0   10     4            dummy  Z
            3    9     5                i  I
            5    7     6          argType  Lcom/oracle/truffle/polyglot/HostExecuteNode$TypeCheckNode;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.ExplodeLoop()
    MethodParameters:
                 Name  Flags
      args             
      argTypes         
      interop          
      languageContext  
      dummy            

  static boolean asVarArgs(java.lang.Object[], com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod, com.oracle.truffle.polyglot.PolyglotLanguageContext);
    descriptor: ([Ljava/lang/Object;Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=8, locals=5, args_size=3
        start local 0 // java.lang.Object[] args
        start local 1 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod overload
        start local 2 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
         0: .line 405
            aload 1 /* overload */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.isVarArgs:()Z
            ifeq 14
         1: .line 406
            aload 1 /* overload */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterCount:()I
            istore 3 /* parameterCount */
        start local 3 // int parameterCount
         2: .line 407
            aload 0 /* args */
            arraylength
            iload 3 /* parameterCount */
            if_icmpne 12
         3: .line 408
            aload 1 /* overload */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterTypes:()[Ljava/lang/Class;
            iload 3 /* parameterCount */
            iconst_1
            isub
            aaload
            astore 4 /* varArgParamType */
        start local 4 // java.lang.Class varArgParamType
         4: .line 409
            aload 0 /* args */
            iload 3 /* parameterCount */
            iconst_1
            isub
            aaload
            aload 4 /* varArgParamType */
            aload 1 /* overload */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getGenericParameterTypes:()[Ljava/lang/reflect/Type;
            iload 3 /* parameterCount */
            iconst_1
            isub
            aaload
         5: .line 410
            aconst_null
            aload 2 /* languageContext */
            iconst_3
         6: .line 411
            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
            invokestatic com.oracle.truffle.polyglot.TargetMappingNode.getUncached:()Lcom/oracle/truffle/polyglot/TargetMappingNode;
         7: .line 409
            invokestatic com.oracle.truffle.polyglot.ToHostNode.canConvert:(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Type;Ljava/lang/Boolean;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;ILcom/oracle/truffle/api/interop/InteropLibrary;Lcom/oracle/truffle/polyglot/TargetMappingNode;)Z
         8: .line 411
            ifeq 10
         9: .line 409
            iconst_0
            goto 11
      StackMap locals: int java.lang.Class
      StackMap stack:
        10: iconst_1
      StackMap locals:
      StackMap stack: int
        11: ireturn
        end local 4 // java.lang.Class varArgParamType
        12: .line 413
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.polyglot.HostExecuteNode.$assertionsDisabled:Z
            ifne 13
            aload 0 /* args */
            arraylength
            iload 3 /* parameterCount */
            if_icmpne 13
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        13: .line 414
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 3 // int parameterCount
        14: .line 417
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        end local 1 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod overload
        end local 0 // java.lang.Object[] args
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   15     0             args  [Ljava/lang/Object;
            0   15     1         overload  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            0   15     2  languageContext  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
            2   14     3   parameterCount  I
            4   12     4  varArgParamType  Ljava/lang/Class<*>;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
                 Name  Flags
      args             
      overload         
      languageContext  

  static java.lang.Class<?> primitiveTypeToBoxedType(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/Class;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Class primitiveType
         0: .line 422
            getstatic com.oracle.truffle.polyglot.HostExecuteNode.$assertionsDisabled:Z
            ifne 1
            aload 0 /* primitiveType */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 423
      StackMap locals:
      StackMap stack:
            aload 0 /* primitiveType */
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            if_acmpne 3
         2: .line 424
            ldc Ljava/lang/Boolean;
            areturn
         3: .line 425
      StackMap locals:
      StackMap stack:
            aload 0 /* primitiveType */
            getstatic java.lang.Byte.TYPE:Ljava/lang/Class;
            if_acmpne 5
         4: .line 426
            ldc Ljava/lang/Byte;
            areturn
         5: .line 427
      StackMap locals:
      StackMap stack:
            aload 0 /* primitiveType */
            getstatic java.lang.Short.TYPE:Ljava/lang/Class;
            if_acmpne 7
         6: .line 428
            ldc Ljava/lang/Short;
            areturn
         7: .line 429
      StackMap locals:
      StackMap stack:
            aload 0 /* primitiveType */
            getstatic java.lang.Character.TYPE:Ljava/lang/Class;
            if_acmpne 9
         8: .line 430
            ldc Ljava/lang/Character;
            areturn
         9: .line 431
      StackMap locals:
      StackMap stack:
            aload 0 /* primitiveType */
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            if_acmpne 11
        10: .line 432
            ldc Ljava/lang/Integer;
            areturn
        11: .line 433
      StackMap locals:
      StackMap stack:
            aload 0 /* primitiveType */
            getstatic java.lang.Long.TYPE:Ljava/lang/Class;
            if_acmpne 13
        12: .line 434
            ldc Ljava/lang/Long;
            areturn
        13: .line 435
      StackMap locals:
      StackMap stack:
            aload 0 /* primitiveType */
            getstatic java.lang.Float.TYPE:Ljava/lang/Class;
            if_acmpne 15
        14: .line 436
            ldc Ljava/lang/Float;
            areturn
        15: .line 437
      StackMap locals:
      StackMap stack:
            aload 0 /* primitiveType */
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            if_acmpne 17
        16: .line 438
            ldc Ljava/lang/Double;
            areturn
        17: .line 440
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
        end local 0 // java.lang.Class primitiveType
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   18     0  primitiveType  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Ljava/lang/Class<*>;
    MethodParameters:
               Name  Flags
      primitiveType  

  static java.lang.Class<?> boxedTypeToPrimitiveType(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/Class;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Class primitiveType
         0: .line 445
            aload 0 /* primitiveType */
            ldc Ljava/lang/Boolean;
            if_acmpne 2
         1: .line 446
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            areturn
         2: .line 447
      StackMap locals:
      StackMap stack:
            aload 0 /* primitiveType */
            ldc Ljava/lang/Byte;
            if_acmpne 4
         3: .line 448
            getstatic java.lang.Byte.TYPE:Ljava/lang/Class;
            areturn
         4: .line 449
      StackMap locals:
      StackMap stack:
            aload 0 /* primitiveType */
            ldc Ljava/lang/Short;
            if_acmpne 6
         5: .line 450
            getstatic java.lang.Short.TYPE:Ljava/lang/Class;
            areturn
         6: .line 451
      StackMap locals:
      StackMap stack:
            aload 0 /* primitiveType */
            ldc Ljava/lang/Character;
            if_acmpne 8
         7: .line 452
            getstatic java.lang.Character.TYPE:Ljava/lang/Class;
            areturn
         8: .line 453
      StackMap locals:
      StackMap stack:
            aload 0 /* primitiveType */
            ldc Ljava/lang/Integer;
            if_acmpne 10
         9: .line 454
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            areturn
        10: .line 455
      StackMap locals:
      StackMap stack:
            aload 0 /* primitiveType */
            ldc Ljava/lang/Long;
            if_acmpne 12
        11: .line 456
            getstatic java.lang.Long.TYPE:Ljava/lang/Class;
            areturn
        12: .line 457
      StackMap locals:
      StackMap stack:
            aload 0 /* primitiveType */
            ldc Ljava/lang/Float;
            if_acmpne 14
        13: .line 458
            getstatic java.lang.Float.TYPE:Ljava/lang/Class;
            areturn
        14: .line 459
      StackMap locals:
      StackMap stack:
            aload 0 /* primitiveType */
            ldc Ljava/lang/Double;
            if_acmpne 16
        15: .line 460
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            areturn
        16: .line 462
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 0 // java.lang.Class primitiveType
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   17     0  primitiveType  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Ljava/lang/Class<*>;
    MethodParameters:
               Name  Flags
      primitiveType  

  com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod selectOverload(com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod, java.lang.Object[], com.oracle.truffle.polyglot.PolyglotLanguageContext);
    descriptor: (Lcom/oracle/truffle/polyglot/HostMethodDesc$OverloadedMethod;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;)Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
    flags: (0x0000) 
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.oracle.truffle.polyglot.HostExecuteNode this
        start local 1 // com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod method
        start local 2 // java.lang.Object[] args
        start local 3 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
         0: .line 468
            aload 0 /* this */
            aload 1 /* method */
            aload 2 /* args */
            aload 3 /* languageContext */
            aconst_null
            invokevirtual com.oracle.truffle.polyglot.HostExecuteNode.selectOverload:(Lcom/oracle/truffle/polyglot/HostMethodDesc$OverloadedMethod;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;[Lcom/oracle/truffle/polyglot/HostExecuteNode$TypeCheckNode;)Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            areturn
        end local 3 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        end local 2 // java.lang.Object[] args
        end local 1 // com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod method
        end local 0 // com.oracle.truffle.polyglot.HostExecuteNode this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    1     0             this  Lcom/oracle/truffle/polyglot/HostExecuteNode;
            0    1     1           method  Lcom/oracle/truffle/polyglot/HostMethodDesc$OverloadedMethod;
            0    1     2             args  [Ljava/lang/Object;
            0    1     3  languageContext  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
    Exceptions:
      throws com.oracle.truffle.api.interop.ArityException, com.oracle.truffle.api.interop.UnsupportedTypeException
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
                 Name  Flags
      method           
      args             
      languageContext  

  com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod selectOverload(com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod, java.lang.Object[], com.oracle.truffle.polyglot.PolyglotLanguageContext, com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[]);
    descriptor: (Lcom/oracle/truffle/polyglot/HostMethodDesc$OverloadedMethod;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;[Lcom/oracle/truffle/polyglot/HostExecuteNode$TypeCheckNode;)Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
    flags: (0x0000) 
    Code:
      stack=7, locals=16, args_size=5
        start local 0 // com.oracle.truffle.polyglot.HostExecuteNode this
        start local 1 // com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod method
        start local 2 // java.lang.Object[] args
        start local 3 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        start local 4 // com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] cachedArgTypes
         0: .line 474
            aload 1 /* method */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod.getOverloads:()[Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            astore 5 /* overloads */
        start local 5 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod[] overloads
         1: .line 475
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 6 /* applicableByArity */
        start local 6 // java.util.List applicableByArity
         2: .line 476
            ldc 2147483647
            istore 7 /* minOverallArity */
        start local 7 // int minOverallArity
         3: .line 477
            iconst_0
            istore 8 /* maxOverallArity */
        start local 8 // int maxOverallArity
         4: .line 478
            iconst_0
            istore 9 /* anyVarArgs */
        start local 9 // boolean anyVarArgs
         5: .line 479
            aload 5 /* overloads */
            dup
            astore 13
            arraylength
            istore 12
            iconst_0
            istore 11
            goto 21
      StackMap locals: com.oracle.truffle.polyglot.HostExecuteNode com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod java.lang.Object[] com.oracle.truffle.polyglot.PolyglotLanguageContext com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod[] java.util.List int int int top int int com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod[]
      StackMap stack:
         6: aload 13
            iload 11
            aaload
            astore 10 /* overload */
        start local 10 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod overload
         7: .line 480
            aload 10 /* overload */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterCount:()I
            istore 14 /* paramCount */
        start local 14 // int paramCount
         8: .line 481
            aload 10 /* overload */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.isVarArgs:()Z
            ifne 13
         9: .line 482
            aload 2 /* args */
            arraylength
            iload 14 /* paramCount */
            if_icmpeq 19
        10: .line 483
            iload 7 /* minOverallArity */
            iload 14 /* paramCount */
            invokestatic java.lang.Math.min:(II)I
            istore 7 /* minOverallArity */
        11: .line 484
            iload 8 /* maxOverallArity */
            iload 14 /* paramCount */
            invokestatic java.lang.Math.max:(II)I
            istore 8 /* maxOverallArity */
        12: .line 485
            goto 20
        13: .line 488
      StackMap locals: com.oracle.truffle.polyglot.HostExecuteNode com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod java.lang.Object[] com.oracle.truffle.polyglot.PolyglotLanguageContext com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod[] java.util.List int int int com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod int int com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod[] int
      StackMap stack:
            iconst_1
            istore 9 /* anyVarArgs */
        14: .line 489
            iload 14 /* paramCount */
            iconst_1
            isub
            istore 15 /* fixedParamCount */
        start local 15 // int fixedParamCount
        15: .line 490
            aload 2 /* args */
            arraylength
            iload 15 /* fixedParamCount */
            if_icmpge 19
        16: .line 491
            iload 7 /* minOverallArity */
            iload 15 /* fixedParamCount */
            invokestatic java.lang.Math.min:(II)I
            istore 7 /* minOverallArity */
        17: .line 492
            iload 8 /* maxOverallArity */
            iload 15 /* fixedParamCount */
            invokestatic java.lang.Math.max:(II)I
            istore 8 /* maxOverallArity */
        18: .line 493
            goto 20
        end local 15 // int fixedParamCount
        19: .line 496
      StackMap locals:
      StackMap stack:
            aload 6 /* applicableByArity */
            aload 10 /* overload */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 14 // int paramCount
        end local 10 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod overload
        20: .line 479
      StackMap locals: com.oracle.truffle.polyglot.HostExecuteNode com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod java.lang.Object[] com.oracle.truffle.polyglot.PolyglotLanguageContext com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod[] java.util.List int int int top int int com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod[]
      StackMap stack:
            iinc 11 1
      StackMap locals:
      StackMap stack:
        21: iload 11
            iload 12
            if_icmplt 6
        22: .line 498
            aload 6 /* applicableByArity */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 26
        23: .line 499
            aload 2 /* args */
            arraylength
            iload 8 /* maxOverallArity */
            if_icmple 24
            iload 8 /* maxOverallArity */
            goto 25
      StackMap locals: com.oracle.truffle.polyglot.HostExecuteNode com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod java.lang.Object[] com.oracle.truffle.polyglot.PolyglotLanguageContext com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod[] java.util.List int int int
      StackMap stack:
        24: iload 7 /* minOverallArity */
      StackMap locals:
      StackMap stack: int
        25: aload 2 /* args */
            arraylength
            invokestatic com.oracle.truffle.api.interop.ArityException.create:(II)Lcom/oracle/truffle/api/interop/ArityException;
            athrow
        26: .line 503
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.polyglot.ToHostNode.PRIORITIES:[I
            dup
            astore 14
            arraylength
            istore 13
            iconst_0
            istore 12
            goto 32
      StackMap locals: com.oracle.truffle.polyglot.HostExecuteNode com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod java.lang.Object[] com.oracle.truffle.polyglot.PolyglotLanguageContext com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod[] java.util.List int int int top top int int int[]
      StackMap stack:
        27: aload 14
            iload 12
            iaload
            istore 11 /* priority */
        start local 11 // int priority
        28: .line 504
            aload 0 /* this */
            aload 6 /* applicableByArity */
            aload 2 /* args */
            aload 3 /* languageContext */
            iconst_0
            iload 11 /* priority */
            aload 4 /* cachedArgTypes */
            invokevirtual com.oracle.truffle.polyglot.HostExecuteNode.findBestCandidate:(Ljava/util/List;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;ZI[Lcom/oracle/truffle/polyglot/HostExecuteNode$TypeCheckNode;)Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            astore 10 /* best */
        start local 10 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod best
        29: .line 505
            aload 10 /* best */
            ifnull 31
        30: .line 506
            aload 10 /* best */
            areturn
        end local 11 // int priority
        end local 10 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod best
        31: .line 503
      StackMap locals:
      StackMap stack:
            iinc 12 1
      StackMap locals:
      StackMap stack:
        32: iload 12
            iload 13
            if_icmplt 27
        33: .line 509
            iload 9 /* anyVarArgs */
            ifeq 41
        34: .line 510
            getstatic com.oracle.truffle.polyglot.ToHostNode.PRIORITIES:[I
            dup
            astore 14
            arraylength
            istore 13
            iconst_0
            istore 12
            goto 40
      StackMap locals:
      StackMap stack:
        35: aload 14
            iload 12
            iaload
            istore 11 /* priority */
        start local 11 // int priority
        36: .line 511
            aload 0 /* this */
            aload 6 /* applicableByArity */
            aload 2 /* args */
            aload 3 /* languageContext */
            iconst_1
            iload 11 /* priority */
            aload 4 /* cachedArgTypes */
            invokevirtual com.oracle.truffle.polyglot.HostExecuteNode.findBestCandidate:(Ljava/util/List;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;ZI[Lcom/oracle/truffle/polyglot/HostExecuteNode$TypeCheckNode;)Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            astore 10 /* best */
        start local 10 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod best
        37: .line 512
            aload 10 /* best */
            ifnull 39
        38: .line 513
            aload 10 /* best */
            areturn
        end local 11 // int priority
        end local 10 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod best
        39: .line 510
      StackMap locals:
      StackMap stack:
            iinc 12 1
      StackMap locals:
      StackMap stack:
        40: iload 12
            iload 13
            if_icmplt 35
        41: .line 518
      StackMap locals: com.oracle.truffle.polyglot.HostExecuteNode com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod java.lang.Object[] com.oracle.truffle.polyglot.PolyglotLanguageContext com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod[] java.util.List int int int
      StackMap stack:
            aload 5 /* overloads */
            aload 2 /* args */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.noApplicableOverloadsException:([Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;[Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 9 // boolean anyVarArgs
        end local 8 // int maxOverallArity
        end local 7 // int minOverallArity
        end local 6 // java.util.List applicableByArity
        end local 5 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod[] overloads
        end local 4 // com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] cachedArgTypes
        end local 3 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        end local 2 // java.lang.Object[] args
        end local 1 // com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod method
        end local 0 // com.oracle.truffle.polyglot.HostExecuteNode this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   42     0               this  Lcom/oracle/truffle/polyglot/HostExecuteNode;
            0   42     1             method  Lcom/oracle/truffle/polyglot/HostMethodDesc$OverloadedMethod;
            0   42     2               args  [Ljava/lang/Object;
            0   42     3    languageContext  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
            0   42     4     cachedArgTypes  [Lcom/oracle/truffle/polyglot/HostExecuteNode$TypeCheckNode;
            1   42     5          overloads  [Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            2   42     6  applicableByArity  Ljava/util/List<Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;>;
            3   42     7    minOverallArity  I
            4   42     8    maxOverallArity  I
            5   42     9         anyVarArgs  Z
            7   20    10           overload  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            8   20    14         paramCount  I
           15   19    15    fixedParamCount  I
           29   31    10               best  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
           37   39    10               best  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
           28   31    11           priority  I
           36   39    11           priority  I
    Exceptions:
      throws com.oracle.truffle.api.interop.ArityException, com.oracle.truffle.api.interop.UnsupportedTypeException
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
                 Name  Flags
      method           
      args             
      languageContext  
      cachedArgTypes   

  private com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod findBestCandidate(java.util.List<com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod>, [], com.oracle.truffle.polyglot.PolyglotLanguageContext, boolean, int, com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[]);
    descriptor: (Ljava/util/List;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;ZI[Lcom/oracle/truffle/polyglot/HostExecuteNode$TypeCheckNode;)Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=9, locals=17, args_size=7
        start local 0 // com.oracle.truffle.polyglot.HostExecuteNode this
        start local 1 // java.util.List applicableByArity
        start local 2 // java.lang.Object[] args
        start local 3 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        start local 4 // boolean varArgs
        start local 5 // int priority
        start local 6 // com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] cachedArgTypes
         0: .line 524
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 7 /* candidates */
        start local 7 // java.util.List candidates
         1: .line 526
            iload 4 /* varArgs */
            ifne 25
         2: .line 527
            aload 1 /* applicableByArity */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 9
            goto 23
      StackMap locals: com.oracle.truffle.polyglot.HostExecuteNode java.util.List java.lang.Object[] com.oracle.truffle.polyglot.PolyglotLanguageContext int int com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] java.util.List top java.util.Iterator
      StackMap stack:
         3: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod
            astore 8 /* candidate */
        start local 8 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod candidate
         4: .line 528
            aload 8 /* candidate */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterCount:()I
            istore 10 /* paramCount */
        start local 10 // int paramCount
         5: .line 529
            aload 8 /* candidate */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.isVarArgs:()Z
            ifeq 6
            iload 10 /* paramCount */
            aload 2 /* args */
            arraylength
            if_icmpne 23
         6: .line 530
      StackMap locals: com.oracle.truffle.polyglot.HostExecuteNode java.util.List java.lang.Object[] com.oracle.truffle.polyglot.PolyglotLanguageContext int int com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] java.util.List com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod java.util.Iterator int
      StackMap stack:
            getstatic com.oracle.truffle.polyglot.HostExecuteNode.$assertionsDisabled:Z
            ifne 7
            iload 10 /* paramCount */
            aload 2 /* args */
            arraylength
            if_icmpeq 7
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         7: .line 531
      StackMap locals:
      StackMap stack:
            aload 8 /* candidate */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterTypes:()[Ljava/lang/Class;
            astore 11 /* parameterTypes */
        start local 11 // java.lang.Class[] parameterTypes
         8: .line 532
            aload 8 /* candidate */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getGenericParameterTypes:()[Ljava/lang/reflect/Type;
            astore 12 /* genericParameterTypes */
        start local 12 // java.lang.reflect.Type[] genericParameterTypes
         9: .line 533
            iconst_1
            istore 13 /* applicable */
        start local 13 // boolean applicable
        10: .line 534
            iconst_0
            istore 14 /* i */
        start local 14 // int i
        11: goto 20
        12: .line 535
      StackMap locals: com.oracle.truffle.polyglot.HostExecuteNode java.util.List java.lang.Object[] com.oracle.truffle.polyglot.PolyglotLanguageContext int int com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] java.util.List com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod java.util.Iterator int java.lang.Class[] java.lang.reflect.Type[] int int
      StackMap stack:
            aload 2 /* args */
            iload 14 /* i */
            aaload
            aload 11 /* parameterTypes */
            iload 14 /* i */
            aaload
            aload 12 /* genericParameterTypes */
            iload 14 /* i */
            aaload
            aconst_null
        13: .line 536
            aload 3 /* languageContext */
            iload 5 /* priority */
            invokestatic com.oracle.truffle.api.interop.InteropLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
            aload 2 /* args */
            iload 14 /* i */
            aaload
            invokevirtual com.oracle.truffle.api.library.LibraryFactory.getUncached:(Ljava/lang/Object;)Lcom/oracle/truffle/api/library/Library;
            checkcast com.oracle.truffle.api.interop.InteropLibrary
        14: .line 537
            invokestatic com.oracle.truffle.polyglot.TargetMappingNode.getUncached:()Lcom/oracle/truffle/polyglot/TargetMappingNode;
        15: .line 535
            invokestatic com.oracle.truffle.polyglot.ToHostNode.canConvert:(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Type;Ljava/lang/Boolean;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;ILcom/oracle/truffle/api/interop/InteropLibrary;Lcom/oracle/truffle/polyglot/TargetMappingNode;)Z
        16: .line 537
            ifne 19
        17: .line 538
            iconst_0
            istore 13 /* applicable */
        18: .line 539
            goto 21
        19: .line 534
      StackMap locals:
      StackMap stack:
            iinc 14 /* i */ 1
      StackMap locals:
      StackMap stack:
        20: iload 14 /* i */
            iload 10 /* paramCount */
            if_icmplt 12
        end local 14 // int i
        21: .line 542
      StackMap locals:
      StackMap stack:
            iload 13 /* applicable */
            ifeq 23
        22: .line 543
            aload 7 /* candidates */
            aload 8 /* candidate */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 13 // boolean applicable
        end local 12 // java.lang.reflect.Type[] genericParameterTypes
        end local 11 // java.lang.Class[] parameterTypes
        end local 10 // int paramCount
        end local 8 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod candidate
        23: .line 527
      StackMap locals: com.oracle.truffle.polyglot.HostExecuteNode java.util.List java.lang.Object[] com.oracle.truffle.polyglot.PolyglotLanguageContext int int com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] java.util.List top java.util.Iterator
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        24: .line 547
            goto 65
        25: .line 548
      StackMap locals: com.oracle.truffle.polyglot.HostExecuteNode java.util.List java.lang.Object[] com.oracle.truffle.polyglot.PolyglotLanguageContext int int com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] java.util.List
      StackMap stack:
            aload 1 /* applicableByArity */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 9
            goto 64
      StackMap locals: com.oracle.truffle.polyglot.HostExecuteNode java.util.List java.lang.Object[] com.oracle.truffle.polyglot.PolyglotLanguageContext int int com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] java.util.List top java.util.Iterator
      StackMap stack:
        26: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod
            astore 8 /* candidate */
        start local 8 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod candidate
        27: .line 549
            aload 8 /* candidate */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.isVarArgs:()Z
            ifeq 64
        28: .line 550
            aload 8 /* candidate */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterCount:()I
            istore 10 /* parameterCount */
        start local 10 // int parameterCount
        29: .line 551
            aload 8 /* candidate */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterTypes:()[Ljava/lang/Class;
            astore 11 /* parameterTypes */
        start local 11 // java.lang.Class[] parameterTypes
        30: .line 552
            aload 8 /* candidate */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getGenericParameterTypes:()[Ljava/lang/reflect/Type;
            astore 12 /* genericParameterTypes */
        start local 12 // java.lang.reflect.Type[] genericParameterTypes
        31: .line 553
            iconst_1
            istore 13 /* applicable */
        start local 13 // boolean applicable
        32: .line 554
            iconst_0
            istore 14 /* i */
        start local 14 // int i
        33: goto 42
        34: .line 555
      StackMap locals: com.oracle.truffle.polyglot.HostExecuteNode java.util.List java.lang.Object[] com.oracle.truffle.polyglot.PolyglotLanguageContext int int com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] java.util.List com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod java.util.Iterator int java.lang.Class[] java.lang.reflect.Type[] int int
      StackMap stack:
            aload 2 /* args */
            iload 14 /* i */
            aaload
            aload 11 /* parameterTypes */
            iload 14 /* i */
            aaload
            aload 12 /* genericParameterTypes */
            iload 14 /* i */
            aaload
            aconst_null
        35: .line 556
            aload 3 /* languageContext */
            iload 5 /* priority */
            invokestatic com.oracle.truffle.api.interop.InteropLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
            aload 2 /* args */
            iload 14 /* i */
            aaload
            invokevirtual com.oracle.truffle.api.library.LibraryFactory.getUncached:(Ljava/lang/Object;)Lcom/oracle/truffle/api/library/Library;
            checkcast com.oracle.truffle.api.interop.InteropLibrary
        36: .line 557
            invokestatic com.oracle.truffle.polyglot.TargetMappingNode.getUncached:()Lcom/oracle/truffle/polyglot/TargetMappingNode;
        37: .line 555
            invokestatic com.oracle.truffle.polyglot.ToHostNode.canConvert:(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Type;Ljava/lang/Boolean;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;ILcom/oracle/truffle/api/interop/InteropLibrary;Lcom/oracle/truffle/polyglot/TargetMappingNode;)Z
        38: .line 557
            ifne 41
        39: .line 558
            iconst_0
            istore 13 /* applicable */
        40: .line 559
            goto 43
        41: .line 554
      StackMap locals:
      StackMap stack:
            iinc 14 /* i */ 1
      StackMap locals:
      StackMap stack:
        42: iload 14 /* i */
            iload 10 /* parameterCount */
            iconst_1
            isub
            if_icmplt 34
        end local 14 // int i
        43: .line 562
      StackMap locals:
      StackMap stack:
            iload 13 /* applicable */
            ifeq 64
        44: .line 563
            aload 11 /* parameterTypes */
            iload 10 /* parameterCount */
            iconst_1
            isub
            aaload
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            astore 14 /* varArgsComponentType */
        start local 14 // java.lang.Class varArgsComponentType
        45: .line 564
            aload 12 /* genericParameterTypes */
            iload 10 /* parameterCount */
            iconst_1
            isub
            aaload
            astore 15 /* varArgsGenericComponentType */
        start local 15 // java.lang.reflect.Type varArgsGenericComponentType
        46: .line 565
            aload 15 /* varArgsGenericComponentType */
            instanceof java.lang.reflect.GenericArrayType
            ifeq 50
        47: .line 566
            aload 15 /* varArgsGenericComponentType */
            checkcast java.lang.reflect.GenericArrayType
            astore 16 /* arrayType */
        start local 16 // java.lang.reflect.GenericArrayType arrayType
        48: .line 567
            aload 16 /* arrayType */
            invokeinterface java.lang.reflect.GenericArrayType.getGenericComponentType:()Ljava/lang/reflect/Type;
            astore 15 /* varArgsGenericComponentType */
        end local 16 // java.lang.reflect.GenericArrayType arrayType
        49: .line 568
            goto 51
        50: .line 569
      StackMap locals: java.lang.Class java.lang.reflect.Type
      StackMap stack:
            aload 14 /* varArgsComponentType */
            astore 15 /* varArgsGenericComponentType */
        51: .line 571
      StackMap locals:
      StackMap stack:
            iload 10 /* parameterCount */
            iconst_1
            isub
            istore 16 /* i */
        start local 16 // int i
        52: goto 61
        53: .line 572
      StackMap locals: int
      StackMap stack:
            aload 2 /* args */
            iload 16 /* i */
            aaload
            aload 14 /* varArgsComponentType */
            aload 15 /* varArgsGenericComponentType */
            aconst_null
        54: .line 573
            aload 3 /* languageContext */
            iload 5 /* priority */
        55: .line 574
            invokestatic com.oracle.truffle.api.interop.InteropLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
            aload 2 /* args */
            iload 16 /* i */
            aaload
            invokevirtual com.oracle.truffle.api.library.LibraryFactory.getUncached:(Ljava/lang/Object;)Lcom/oracle/truffle/api/library/Library;
            checkcast com.oracle.truffle.api.interop.InteropLibrary
            invokestatic com.oracle.truffle.polyglot.TargetMappingNode.getUncached:()Lcom/oracle/truffle/polyglot/TargetMappingNode;
        56: .line 572
            invokestatic com.oracle.truffle.polyglot.ToHostNode.canConvert:(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Type;Ljava/lang/Boolean;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;ILcom/oracle/truffle/api/interop/InteropLibrary;Lcom/oracle/truffle/polyglot/TargetMappingNode;)Z
        57: .line 574
            ifne 60
        58: .line 575
            iconst_0
            istore 13 /* applicable */
        59: .line 576
            goto 62
        60: .line 571
      StackMap locals:
      StackMap stack:
            iinc 16 /* i */ 1
      StackMap locals:
      StackMap stack:
        61: iload 16 /* i */
            aload 2 /* args */
            arraylength
            if_icmplt 53
        end local 16 // int i
        62: .line 579
      StackMap locals:
      StackMap stack:
            iload 13 /* applicable */
            ifeq 64
        63: .line 580
            aload 7 /* candidates */
            aload 8 /* candidate */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 15 // java.lang.reflect.Type varArgsGenericComponentType
        end local 14 // java.lang.Class varArgsComponentType
        end local 13 // boolean applicable
        end local 12 // java.lang.reflect.Type[] genericParameterTypes
        end local 11 // java.lang.Class[] parameterTypes
        end local 10 // int parameterCount
        end local 8 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod candidate
        64: .line 548
      StackMap locals: com.oracle.truffle.polyglot.HostExecuteNode java.util.List java.lang.Object[] com.oracle.truffle.polyglot.PolyglotLanguageContext int int com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] java.util.List top java.util.Iterator
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 26
        65: .line 587
      StackMap locals: com.oracle.truffle.polyglot.HostExecuteNode java.util.List java.lang.Object[] com.oracle.truffle.polyglot.PolyglotLanguageContext int int com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] java.util.List
      StackMap stack:
            aload 7 /* candidates */
            invokeinterface java.util.List.isEmpty:()Z
            ifne 77
        66: .line 588
            aload 7 /* candidates */
            invokeinterface java.util.List.size:()I
            iconst_1
            if_icmpne 71
        67: .line 589
            aload 7 /* candidates */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod
            astore 8 /* best */
        start local 8 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod best
        68: .line 591
            aload 6 /* cachedArgTypes */
            ifnull 70
        69: .line 592
            aload 0 /* this */
            aload 2 /* args */
            aload 6 /* cachedArgTypes */
            aload 8 /* best */
            iload 4 /* varArgs */
            aload 1 /* applicableByArity */
            iload 5 /* priority */
            aload 3 /* languageContext */
            invokevirtual com.oracle.truffle.polyglot.HostExecuteNode.fillArgTypesArray:([Ljava/lang/Object;[Lcom/oracle/truffle/polyglot/HostExecuteNode$TypeCheckNode;Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;ZLjava/util/List;ILcom/oracle/truffle/polyglot/PolyglotLanguageContext;)V
        70: .line 595
      StackMap locals: com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod
      StackMap stack:
            aload 8 /* best */
            areturn
        end local 8 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod best
        71: .line 597
      StackMap locals:
      StackMap stack:
            aload 3 /* languageContext */
            aload 7 /* candidates */
            aload 2 /* args */
            iload 4 /* varArgs */
            iload 5 /* priority */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.findMostSpecificOverload:(Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Ljava/util/List;[Ljava/lang/Object;ZI)Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            astore 8 /* best */
        start local 8 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod best
        72: .line 598
            aload 8 /* best */
            ifnull 76
        73: .line 599
            aload 6 /* cachedArgTypes */
            ifnull 75
        74: .line 600
            aload 0 /* this */
            aload 2 /* args */
            aload 6 /* cachedArgTypes */
            aload 8 /* best */
            iload 4 /* varArgs */
            aload 1 /* applicableByArity */
            iload 5 /* priority */
            aload 3 /* languageContext */
            invokevirtual com.oracle.truffle.polyglot.HostExecuteNode.fillArgTypesArray:([Ljava/lang/Object;[Lcom/oracle/truffle/polyglot/HostExecuteNode$TypeCheckNode;Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;ZLjava/util/List;ILcom/oracle/truffle/polyglot/PolyglotLanguageContext;)V
        75: .line 603
      StackMap locals: com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod
      StackMap stack:
            aload 8 /* best */
            areturn
        76: .line 605
      StackMap locals:
      StackMap stack:
            aload 7 /* candidates */
            aload 2 /* args */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.ambiguousOverloadsException:(Ljava/util/List;[Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 8 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod best
        77: .line 608
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 7 // java.util.List candidates
        end local 6 // com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode[] cachedArgTypes
        end local 5 // int priority
        end local 4 // boolean varArgs
        end local 3 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        end local 2 // java.lang.Object[] args
        end local 1 // java.util.List applicableByArity
        end local 0 // com.oracle.truffle.polyglot.HostExecuteNode this
      LocalVariableTable:
        Start  End  Slot                         Name  Signature
            0   78     0                         this  Lcom/oracle/truffle/polyglot/HostExecuteNode;
            0   78     1            applicableByArity  Ljava/util/List<Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;>;
            0   78     2                         args  [Ljava/lang/Object;
            0   78     3              languageContext  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
            0   78     4                      varArgs  Z
            0   78     5                     priority  I
            0   78     6               cachedArgTypes  [Lcom/oracle/truffle/polyglot/HostExecuteNode$TypeCheckNode;
            1   78     7                   candidates  Ljava/util/List<Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;>;
            4   23     8                    candidate  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            5   23    10                   paramCount  I
            8   23    11               parameterTypes  [Ljava/lang/Class;
            9   23    12        genericParameterTypes  [Ljava/lang/reflect/Type;
           10   23    13                   applicable  Z
           11   21    14                            i  I
           27   64     8                    candidate  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
           29   64    10               parameterCount  I
           30   64    11               parameterTypes  [Ljava/lang/Class;
           31   64    12        genericParameterTypes  [Ljava/lang/reflect/Type;
           32   64    13                   applicable  Z
           33   43    14                            i  I
           45   64    14         varArgsComponentType  Ljava/lang/Class<*>;
           46   64    15  varArgsGenericComponentType  Ljava/lang/reflect/Type;
           48   49    16                    arrayType  Ljava/lang/reflect/GenericArrayType;
           52   62    16                            i  I
           68   71     8                         best  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
           72   77     8                         best  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
    Exceptions:
      throws com.oracle.truffle.api.interop.UnsupportedTypeException
    Signature: (Ljava/util/List<Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;>;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;ZI[Lcom/oracle/truffle/polyglot/HostExecuteNode$TypeCheckNode;)Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
    MethodParameters:
                   Name  Flags
      applicableByArity  
      args               
      languageContext    
      varArgs            
      priority           
      cachedArgTypes     

  private static com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod findMostSpecificOverload(com.oracle.truffle.polyglot.PolyglotLanguageContext, java.util.List<com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod>, [], boolean, int);
    descriptor: (Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Ljava/util/List;[Ljava/lang/Object;ZI)Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=11, args_size=5
        start local 0 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        start local 1 // java.util.List candidates
        start local 2 // java.lang.Object[] args
        start local 3 // boolean varArgs
        start local 4 // int priority
         0: .line 612
            getstatic com.oracle.truffle.polyglot.HostExecuteNode.$assertionsDisabled:Z
            ifne 1
            aload 1 /* candidates */
            invokeinterface java.util.List.size:()I
            iconst_2
            if_icmpge 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 613
      StackMap locals:
      StackMap stack:
            aload 1 /* candidates */
            invokeinterface java.util.List.size:()I
            iconst_2
            if_icmpne 7
         2: .line 614
            aload 0 /* languageContext */
            aload 1 /* candidates */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod
            aload 1 /* candidates */
            iconst_1
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod
            aload 2 /* args */
            iload 3 /* varArgs */
            iload 4 /* priority */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.compareOverloads:(Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;[Ljava/lang/Object;ZI)I
            istore 5 /* res */
        start local 5 // int res
         3: .line 615
            iload 5 /* res */
            ifne 4
            aconst_null
            goto 6
      StackMap locals: int
      StackMap stack:
         4: iload 5 /* res */
            ifge 5
            aload 1 /* candidates */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod
            goto 6
      StackMap locals:
      StackMap stack:
         5: aload 1 /* candidates */
            iconst_1
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod
      StackMap locals:
      StackMap stack: com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod
         6: areturn
        end local 5 // int res
         7: .line 618
      StackMap locals:
      StackMap stack:
            aload 1 /* candidates */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5 /* candIt */
        start local 5 // java.util.Iterator candIt
         8: .line 619
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            astore 6 /* best */
        start local 6 // java.util.List best
         9: .line 620
            aload 6 /* best */
            aload 5 /* candIt */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        10: .line 622
            goto 27
        11: .line 623
      StackMap locals: java.util.Iterator java.util.List
      StackMap stack:
            aload 5 /* candIt */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod
            astore 7 /* cand */
        start local 7 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod cand
        12: .line 624
            iconst_0
            istore 8 /* add */
        start local 8 // boolean add
        13: .line 625
            aload 6 /* best */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 9 /* bestIt */
        start local 9 // java.util.Iterator bestIt
        14: goto 24
        15: .line 626
      StackMap locals: com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod int java.util.Iterator
      StackMap stack:
            aload 0 /* languageContext */
            aload 7 /* cand */
            aload 9 /* bestIt */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod
            aload 2 /* args */
            iload 3 /* varArgs */
            iload 4 /* priority */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.compareOverloads:(Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;[Ljava/lang/Object;ZI)I
            istore 10 /* res */
        start local 10 // int res
        16: .line 627
            iload 10 /* res */
            ifne 19
        17: .line 628
            iconst_1
            istore 8 /* add */
        18: .line 629
            goto 24
      StackMap locals: int
      StackMap stack:
        19: iload 10 /* res */
            ifge 23
        20: .line 630
            aload 9 /* bestIt */
            invokeinterface java.util.Iterator.remove:()V
        21: .line 631
            iconst_1
            istore 8 /* add */
        22: .line 632
            goto 24
        23: .line 633
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.polyglot.HostExecuteNode.$assertionsDisabled:Z
            ifne 24
            iload 10 /* res */
            ifgt 24
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        end local 10 // int res
        24: .line 625
      StackMap locals:
      StackMap stack:
            aload 9 /* bestIt */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 15
        end local 9 // java.util.Iterator bestIt
        25: .line 636
            iload 8 /* add */
            ifeq 27
        26: .line 637
            aload 6 /* best */
            aload 7 /* cand */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 8 // boolean add
        end local 7 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod cand
        27: .line 622
      StackMap locals:
      StackMap stack:
            aload 5 /* candIt */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 11
        28: .line 641
            getstatic com.oracle.truffle.polyglot.HostExecuteNode.$assertionsDisabled:Z
            ifne 29
            aload 6 /* best */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 29
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        29: .line 642
      StackMap locals:
      StackMap stack:
            aload 6 /* best */
            invokeinterface java.util.List.size:()I
            iconst_1
            if_icmpne 31
        30: .line 643
            aload 6 /* best */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod
            areturn
        31: .line 645
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 6 // java.util.List best
        end local 5 // java.util.Iterator candIt
        end local 4 // int priority
        end local 3 // boolean varArgs
        end local 2 // java.lang.Object[] args
        end local 1 // java.util.List candidates
        end local 0 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   32     0  languageContext  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
            0   32     1       candidates  Ljava/util/List<Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;>;
            0   32     2             args  [Ljava/lang/Object;
            0   32     3          varArgs  Z
            0   32     4         priority  I
            3    7     5              res  I
            8   32     5           candIt  Ljava/util/Iterator<Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;>;
            9   32     6             best  Ljava/util/List<Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;>;
           12   27     7             cand  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
           13   27     8              add  Z
           14   25     9           bestIt  Ljava/util/Iterator<Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;>;
           16   24    10              res  I
    Signature: (Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Ljava/util/List<Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;>;[Ljava/lang/Object;ZI)Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
    MethodParameters:
                 Name  Flags
      languageContext  
      candidates       
      args             
      varArgs          
      priority         

  private static int compareOverloads(com.oracle.truffle.polyglot.PolyglotLanguageContext, com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod, com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod, java.lang.Object[], boolean, int);
    descriptor: (Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;[Ljava/lang/Object;ZI)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=11, args_size=6
        start local 0 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        start local 1 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod m1
        start local 2 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod m2
        start local 3 // java.lang.Object[] args
        start local 4 // boolean varArgs
        start local 5 // int priority
         0: .line 649
            iconst_0
            istore 6 /* res */
        start local 6 // int res
         1: .line 650
            getstatic com.oracle.truffle.polyglot.HostExecuteNode.$assertionsDisabled:Z
            ifne 3
            iload 4 /* varArgs */
            ifeq 3
            aload 1 /* m1 */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.isVarArgs:()Z
            ifeq 2
            aload 2 /* m2 */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.isVarArgs:()Z
            ifne 3
      StackMap locals: int
      StackMap stack:
         2: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 651
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.polyglot.HostExecuteNode.$assertionsDisabled:Z
            ifne 5
            iload 4 /* varArgs */
            ifne 5
            aload 1 /* m1 */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterCount:()I
            aload 2 /* m2 */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterCount:()I
            if_icmpne 4
            aload 3 /* args */
            arraylength
            aload 1 /* m1 */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterCount:()I
            if_icmpeq 5
      StackMap locals:
      StackMap stack:
         4: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         5: .line 652
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         6: goto 23
         7: .line 653
      StackMap locals: int
      StackMap stack:
            aload 1 /* m1 */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterTypes:()[Ljava/lang/Class;
            iload 7 /* i */
            iload 4 /* varArgs */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.getParameterType:([Ljava/lang/Class;IZ)Ljava/lang/Class;
            astore 8 /* t1 */
        start local 8 // java.lang.Class t1
         8: .line 654
            aload 2 /* m2 */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterTypes:()[Ljava/lang/Class;
            iload 7 /* i */
            iload 4 /* varArgs */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.getParameterType:([Ljava/lang/Class;IZ)Ljava/lang/Class;
            astore 9 /* t2 */
        start local 9 // java.lang.Class t2
         9: .line 655
            aload 8 /* t1 */
            aload 9 /* t2 */
            if_acmpne 11
        10: .line 656
            goto 22
        11: .line 658
      StackMap locals: java.lang.Class java.lang.Class
      StackMap stack:
            aload 0 /* languageContext */
            aload 8 /* t1 */
            aload 9 /* t2 */
            aload 3 /* args */
            iload 7 /* i */
            aaload
            iload 5 /* priority */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.compareByPriority:(Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;I)I
            istore 10 /* r */
        start local 10 // int r
        12: .line 659
            iload 10 /* r */
            ifne 16
        13: .line 660
            aload 8 /* t1 */
            aload 9 /* t2 */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.compareAssignable:(Ljava/lang/Class;Ljava/lang/Class;)I
            istore 10 /* r */
        14: .line 661
            iload 10 /* r */
            ifne 16
        15: .line 662
            goto 22
        16: .line 665
      StackMap locals: int
      StackMap stack:
            iload 6 /* res */
            ifne 19
        17: .line 666
            iload 10 /* r */
            istore 6 /* res */
        18: .line 667
            goto 22
      StackMap locals:
      StackMap stack:
        19: iload 6 /* res */
            iload 10 /* r */
            if_icmpeq 22
        20: .line 669
            iconst_0
            istore 6 /* res */
        21: .line 670
            goto 24
        end local 10 // int r
        end local 9 // java.lang.Class t2
        end local 8 // java.lang.Class t1
        22: .line 652
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        23: iload 7 /* i */
            aload 3 /* args */
            arraylength
            if_icmplt 7
        end local 7 // int i
        24: .line 673
      StackMap locals:
      StackMap stack:
            iload 6 /* res */
            ireturn
        end local 6 // int res
        end local 5 // int priority
        end local 4 // boolean varArgs
        end local 3 // java.lang.Object[] args
        end local 2 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod m2
        end local 1 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod m1
        end local 0 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   25     0  languageContext  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
            0   25     1               m1  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            0   25     2               m2  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            0   25     3             args  [Ljava/lang/Object;
            0   25     4          varArgs  Z
            0   25     5         priority  I
            1   25     6              res  I
            6   24     7                i  I
            8   22     8               t1  Ljava/lang/Class<*>;
            9   22     9               t2  Ljava/lang/Class<*>;
           12   22    10                r  I
    MethodParameters:
                 Name  Flags
      languageContext  
      m1               
      m2               
      args             
      varArgs          
      priority         

  private static java.lang.Class<?> getParameterType(java.lang.Class<?>[], int, boolean);
    descriptor: ([Ljava/lang/Class;IZ)Ljava/lang/Class;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // java.lang.Class[] parameterTypes
        start local 1 // int i
        start local 2 // boolean varArgs
         0: .line 677
            iload 2 /* varArgs */
            ifeq 1
            iload 1 /* i */
            aload 0 /* parameterTypes */
            arraylength
            iconst_1
            isub
            if_icmplt 1
            aload 0 /* parameterTypes */
            aload 0 /* parameterTypes */
            arraylength
            iconst_1
            isub
            aaload
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* parameterTypes */
            iload 1 /* i */
            aaload
      StackMap locals:
      StackMap stack: java.lang.Class
         2: areturn
        end local 2 // boolean varArgs
        end local 1 // int i
        end local 0 // java.lang.Class[] parameterTypes
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    3     0  parameterTypes  [Ljava/lang/Class;
            0    3     1               i  I
            0    3     2         varArgs  Z
    Signature: ([Ljava/lang/Class<*>;IZ)Ljava/lang/Class<*>;
    MethodParameters:
                Name  Flags
      parameterTypes  
      i               
      varArgs         

  private static int compareByPriority(com.oracle.truffle.polyglot.PolyglotLanguageContext, java.lang.Class<?>, java.lang.Class<?>, , );
    descriptor: (Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;I)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=8, locals=13, args_size=5
        start local 0 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        start local 1 // java.lang.Class t1
        start local 2 // java.lang.Class t2
        start local 3 // java.lang.Object arg
        start local 4 // int priority
         0: .line 681
            iload 4 /* priority */
            iconst_1
            if_icmpgt 2
         1: .line 682
            iconst_0
            ireturn
         2: .line 684
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.api.interop.InteropLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
            aload 3 /* arg */
            invokevirtual com.oracle.truffle.api.library.LibraryFactory.getUncached:(Ljava/lang/Object;)Lcom/oracle/truffle/api/library/Library;
            checkcast com.oracle.truffle.api.interop.InteropLibrary
            astore 5 /* argInterop */
        start local 5 // com.oracle.truffle.api.interop.InteropLibrary argInterop
         3: .line 685
            invokestatic com.oracle.truffle.polyglot.TargetMappingNode.getUncached:()Lcom/oracle/truffle/polyglot/TargetMappingNode;
            astore 6 /* mapping */
        start local 6 // com.oracle.truffle.polyglot.TargetMappingNode mapping
         4: .line 686
            getstatic com.oracle.truffle.polyglot.ToHostNode.PRIORITIES:[I
            dup
            astore 10
            arraylength
            istore 9
            iconst_0
            istore 8
            goto 15
      StackMap locals: com.oracle.truffle.polyglot.PolyglotLanguageContext java.lang.Class java.lang.Class java.lang.Object int com.oracle.truffle.api.interop.InteropLibrary com.oracle.truffle.polyglot.TargetMappingNode top int int int[]
      StackMap stack:
         5: aload 10
            iload 8
            iaload
            istore 7 /* p */
        start local 7 // int p
         6: .line 687
            iload 7 /* p */
            iload 4 /* priority */
            if_icmple 8
         7: .line 688
            goto 16
         8: .line 690
      StackMap locals: com.oracle.truffle.polyglot.PolyglotLanguageContext java.lang.Class java.lang.Class java.lang.Object int com.oracle.truffle.api.interop.InteropLibrary com.oracle.truffle.polyglot.TargetMappingNode int int int int[]
      StackMap stack:
            aload 3 /* arg */
            aload 1 /* t1 */
            aload 1 /* t1 */
            aconst_null
            aload 0 /* languageContext */
            iload 7 /* p */
            aload 5 /* argInterop */
            aload 6 /* mapping */
            invokestatic com.oracle.truffle.polyglot.ToHostNode.canConvert:(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Type;Ljava/lang/Boolean;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;ILcom/oracle/truffle/api/interop/InteropLibrary;Lcom/oracle/truffle/polyglot/TargetMappingNode;)Z
            istore 11 /* p1 */
        start local 11 // boolean p1
         9: .line 691
            aload 3 /* arg */
            aload 2 /* t2 */
            aload 2 /* t2 */
            aconst_null
            aload 0 /* languageContext */
            iload 7 /* p */
            aload 5 /* argInterop */
            aload 6 /* mapping */
            invokestatic com.oracle.truffle.polyglot.ToHostNode.canConvert:(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Type;Ljava/lang/Boolean;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;ILcom/oracle/truffle/api/interop/InteropLibrary;Lcom/oracle/truffle/polyglot/TargetMappingNode;)Z
            istore 12 /* p2 */
        start local 12 // boolean p2
        10: .line 692
            iload 11 /* p1 */
            iload 12 /* p2 */
            if_icmpeq 14
        11: .line 693
            iload 11 /* p1 */
            ifeq 12
            iconst_m1
            goto 13
      StackMap locals: int int
      StackMap stack:
        12: iconst_1
      StackMap locals:
      StackMap stack: int
        13: ireturn
        end local 12 // boolean p2
        end local 11 // boolean p1
        end local 7 // int p
        14: .line 686
      StackMap locals: com.oracle.truffle.polyglot.PolyglotLanguageContext java.lang.Class java.lang.Class java.lang.Object int com.oracle.truffle.api.interop.InteropLibrary com.oracle.truffle.polyglot.TargetMappingNode top int int int[]
      StackMap stack:
            iinc 8 1
      StackMap locals:
      StackMap stack:
        15: iload 8
            iload 9
            if_icmplt 5
        16: .line 696
      StackMap locals: com.oracle.truffle.polyglot.PolyglotLanguageContext java.lang.Class java.lang.Class java.lang.Object int com.oracle.truffle.api.interop.InteropLibrary com.oracle.truffle.polyglot.TargetMappingNode
      StackMap stack:
            iconst_0
            ireturn
        end local 6 // com.oracle.truffle.polyglot.TargetMappingNode mapping
        end local 5 // com.oracle.truffle.api.interop.InteropLibrary argInterop
        end local 4 // int priority
        end local 3 // java.lang.Object arg
        end local 2 // java.lang.Class t2
        end local 1 // java.lang.Class t1
        end local 0 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   17     0  languageContext  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
            0   17     1               t1  Ljava/lang/Class<*>;
            0   17     2               t2  Ljava/lang/Class<*>;
            0   17     3              arg  Ljava/lang/Object;
            0   17     4         priority  I
            3   17     5       argInterop  Lcom/oracle/truffle/api/interop/InteropLibrary;
            4   17     6          mapping  Lcom/oracle/truffle/polyglot/TargetMappingNode;
            6   14     7                p  I
            9   14    11               p1  Z
           10   14    12               p2  Z
    Signature: (Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Ljava/lang/Class<*>;Ljava/lang/Class<*>;Ljava/lang/Object;I)I
    MethodParameters:
                 Name  Flags
      languageContext  
      t1               
      t2               
      arg              
      priority         

  private static int compareAssignable(java.lang.Class<?>, java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;Ljava/lang/Class;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.Class t1
        start local 1 // java.lang.Class t2
         0: .line 700
            aload 0 /* t1 */
            aload 1 /* t2 */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.isAssignableFrom:(Ljava/lang/Class;Ljava/lang/Class;)Z
            ifeq 2
         1: .line 702
            iconst_1
            ireturn
         2: .line 703
      StackMap locals:
      StackMap stack:
            aload 1 /* t2 */
            aload 0 /* t1 */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.isAssignableFrom:(Ljava/lang/Class;Ljava/lang/Class;)Z
            ifeq 4
         3: .line 705
            iconst_m1
            ireturn
         4: .line 707
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // java.lang.Class t2
        end local 0 // java.lang.Class t1
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0    t1  Ljava/lang/Class<*>;
            0    5     1    t2  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;)I
    MethodParameters:
      Name  Flags
      t1    
      t2    

  private static boolean isAssignableFrom(java.lang.Class<?>, java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;Ljava/lang/Class;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=6, args_size=2
        start local 0 // java.lang.Class toType
        start local 1 // java.lang.Class fromType
         0: .line 712
            aload 0 /* toType */
            aload 1 /* fromType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 2
         1: .line 713
            iconst_1
            ireturn
         2: .line 715
      StackMap locals:
      StackMap stack:
            aload 1 /* fromType */
            invokevirtual java.lang.Class.isPrimitive:()Z
            istore 2 /* fromIsPrimitive */
        start local 2 // boolean fromIsPrimitive
         3: .line 716
            aload 0 /* toType */
            invokevirtual java.lang.Class.isPrimitive:()Z
            istore 3 /* toIsPrimitive */
        start local 3 // boolean toIsPrimitive
         4: .line 717
            iload 2 /* fromIsPrimitive */
            ifeq 5
            aload 1 /* fromType */
            goto 6
      StackMap locals: int int
      StackMap stack:
         5: aload 1 /* fromType */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.boxedTypeToPrimitiveType:(Ljava/lang/Class;)Ljava/lang/Class;
      StackMap locals:
      StackMap stack: java.lang.Class
         6: astore 4 /* fromAsPrimitive */
        start local 4 // java.lang.Class fromAsPrimitive
         7: .line 718
            iload 3 /* toIsPrimitive */
            ifeq 8
            aload 0 /* toType */
            goto 9
      StackMap locals: java.lang.Class
      StackMap stack:
         8: aload 0 /* toType */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.boxedTypeToPrimitiveType:(Ljava/lang/Class;)Ljava/lang/Class;
      StackMap locals:
      StackMap stack: java.lang.Class
         9: astore 5 /* toAsPrimitive */
        start local 5 // java.lang.Class toAsPrimitive
        10: .line 719
            aload 5 /* toAsPrimitive */
            ifnull 16
            aload 4 /* fromAsPrimitive */
            ifnull 16
        11: .line 720
            aload 5 /* toAsPrimitive */
            aload 4 /* fromAsPrimitive */
            if_acmpne 14
        12: .line 721
            getstatic com.oracle.truffle.polyglot.HostExecuteNode.$assertionsDisabled:Z
            ifne 13
            iload 2 /* fromIsPrimitive */
            iload 3 /* toIsPrimitive */
            if_icmpne 13
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        13: .line 723
      StackMap locals: java.lang.Class
      StackMap stack:
            iload 2 /* fromIsPrimitive */
            ireturn
        14: .line 724
      StackMap locals:
      StackMap stack:
            aload 5 /* toAsPrimitive */
            aload 4 /* fromAsPrimitive */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.isWideningPrimitiveConversion:(Ljava/lang/Class;Ljava/lang/Class;)Z
            ifeq 20
        15: .line 726
            iconst_1
            ireturn
        16: .line 728
      StackMap locals:
      StackMap stack:
            aload 4 /* fromAsPrimitive */
            getstatic java.lang.Character.TYPE:Ljava/lang/Class;
            if_acmpne 18
            aload 0 /* toType */
            ldc Ljava/lang/String;
            if_acmpeq 17
            aload 0 /* toType */
            ldc Ljava/lang/CharSequence;
            if_acmpne 18
        17: .line 730
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        18: .line 731
      StackMap locals:
      StackMap stack:
            aload 5 /* toAsPrimitive */
            ifnonnull 20
            aload 4 /* fromAsPrimitive */
            ifnull 20
            aload 0 /* toType */
            aload 4 /* fromAsPrimitive */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.primitiveTypeToBoxedType:(Ljava/lang/Class;)Ljava/lang/Class;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 20
        19: .line 733
            iconst_1
            ireturn
        20: .line 735
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 5 // java.lang.Class toAsPrimitive
        end local 4 // java.lang.Class fromAsPrimitive
        end local 3 // boolean toIsPrimitive
        end local 2 // boolean fromIsPrimitive
        end local 1 // java.lang.Class fromType
        end local 0 // java.lang.Class toType
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   21     0           toType  Ljava/lang/Class<*>;
            0   21     1         fromType  Ljava/lang/Class<*>;
            3   21     2  fromIsPrimitive  Z
            4   21     3    toIsPrimitive  Z
            7   21     4  fromAsPrimitive  Ljava/lang/Class<*>;
           10   21     5    toAsPrimitive  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;)Z
    MethodParameters:
          Name  Flags
      toType    
      fromType  

  private static boolean isSubtypeOf(, java.lang.Class<?>);
    descriptor: (Ljava/lang/Object;Ljava/lang/Class;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // java.lang.Object argument
        start local 1 // java.lang.Class parameterType
         0: .line 739
            aload 0 /* argument */
            astore 2 /* value */
        start local 2 // java.lang.Object value
         1: .line 740
            aload 0 /* argument */
            instanceof com.oracle.truffle.polyglot.HostObject
            ifeq 3
         2: .line 741
            aload 0 /* argument */
            checkcast com.oracle.truffle.polyglot.HostObject
            getfield com.oracle.truffle.polyglot.HostObject.obj:Ljava/lang/Object;
            astore 2 /* value */
         3: .line 743
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1 /* parameterType */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifne 7
         4: .line 744
            aload 2 /* value */
            ifnull 6
            aload 1 /* parameterType */
            aload 2 /* value */
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 5
            aload 2 /* value */
            instanceof com.oracle.truffle.api.interop.TruffleObject
            ifeq 6
      StackMap locals:
      StackMap stack:
         5: iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         6: iconst_1
            ireturn
         7: .line 746
      StackMap locals:
      StackMap stack:
            aload 2 /* value */
            ifnull 12
         8: .line 747
            aload 2 /* value */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.boxedTypeToPrimitiveType:(Ljava/lang/Class;)Ljava/lang/Class;
            astore 3 /* boxedToPrimitive */
        start local 3 // java.lang.Class boxedToPrimitive
         9: .line 748
            aload 3 /* boxedToPrimitive */
            ifnull 12
        10: .line 749
            aload 3 /* boxedToPrimitive */
            aload 1 /* parameterType */
            if_acmpeq 11
            aload 1 /* parameterType */
            aload 3 /* boxedToPrimitive */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.isWideningPrimitiveConversion:(Ljava/lang/Class;Ljava/lang/Class;)Z
            ifne 11
            iconst_0
            ireturn
      StackMap locals: java.lang.Class
      StackMap stack:
        11: iconst_1
            ireturn
        end local 3 // java.lang.Class boxedToPrimitive
        12: .line 753
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // java.lang.Object value
        end local 1 // java.lang.Class parameterType
        end local 0 // java.lang.Object argument
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   13     0          argument  Ljava/lang/Object;
            0   13     1     parameterType  Ljava/lang/Class<*>;
            1   13     2             value  Ljava/lang/Object;
            9   12     3  boxedToPrimitive  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Object;Ljava/lang/Class<*>;)Z
    MethodParameters:
               Name  Flags
      argument       
      parameterType  

  private static boolean isWideningPrimitiveConversion(java.lang.Class<?>, java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;Ljava/lang/Class;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.Class toType
        start local 1 // java.lang.Class fromType
         0: .line 757
            getstatic com.oracle.truffle.polyglot.HostExecuteNode.$assertionsDisabled:Z
            ifne 1
            aload 0 /* toType */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 758
      StackMap locals:
      StackMap stack:
            aload 1 /* fromType */
            getstatic java.lang.Byte.TYPE:Ljava/lang/Class;
            if_acmpne 4
         2: .line 759
            aload 0 /* toType */
            getstatic java.lang.Short.TYPE:Ljava/lang/Class;
            if_acmpeq 3
            aload 0 /* toType */
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            if_acmpeq 3
            aload 0 /* toType */
            getstatic java.lang.Long.TYPE:Ljava/lang/Class;
            if_acmpeq 3
            aload 0 /* toType */
            getstatic java.lang.Float.TYPE:Ljava/lang/Class;
            if_acmpeq 3
            aload 0 /* toType */
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            if_acmpeq 3
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_1
            ireturn
         4: .line 760
      StackMap locals:
      StackMap stack:
            aload 1 /* fromType */
            getstatic java.lang.Short.TYPE:Ljava/lang/Class;
            if_acmpne 7
         5: .line 761
            aload 0 /* toType */
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            if_acmpeq 6
            aload 0 /* toType */
            getstatic java.lang.Long.TYPE:Ljava/lang/Class;
            if_acmpeq 6
            aload 0 /* toType */
            getstatic java.lang.Float.TYPE:Ljava/lang/Class;
            if_acmpeq 6
            aload 0 /* toType */
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            if_acmpeq 6
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         6: iconst_1
            ireturn
         7: .line 762
      StackMap locals:
      StackMap stack:
            aload 1 /* fromType */
            getstatic java.lang.Character.TYPE:Ljava/lang/Class;
            if_acmpne 10
         8: .line 763
            aload 0 /* toType */
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            if_acmpeq 9
            aload 0 /* toType */
            getstatic java.lang.Long.TYPE:Ljava/lang/Class;
            if_acmpeq 9
            aload 0 /* toType */
            getstatic java.lang.Float.TYPE:Ljava/lang/Class;
            if_acmpeq 9
            aload 0 /* toType */
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            if_acmpeq 9
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         9: iconst_1
            ireturn
        10: .line 764
      StackMap locals:
      StackMap stack:
            aload 1 /* fromType */
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            if_acmpne 13
        11: .line 765
            aload 0 /* toType */
            getstatic java.lang.Long.TYPE:Ljava/lang/Class;
            if_acmpeq 12
            aload 0 /* toType */
            getstatic java.lang.Float.TYPE:Ljava/lang/Class;
            if_acmpeq 12
            aload 0 /* toType */
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            if_acmpeq 12
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
        12: iconst_1
            ireturn
        13: .line 766
      StackMap locals:
      StackMap stack:
            aload 1 /* fromType */
            getstatic java.lang.Long.TYPE:Ljava/lang/Class;
            if_acmpne 16
        14: .line 767
            aload 0 /* toType */
            getstatic java.lang.Float.TYPE:Ljava/lang/Class;
            if_acmpeq 15
            aload 0 /* toType */
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            if_acmpeq 15
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
        15: iconst_1
            ireturn
        16: .line 768
      StackMap locals:
      StackMap stack:
            aload 1 /* fromType */
            getstatic java.lang.Float.TYPE:Ljava/lang/Class;
            if_acmpne 19
        17: .line 769
            aload 0 /* toType */
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            if_acmpne 18
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
        18: iconst_0
            ireturn
        19: .line 771
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // java.lang.Class fromType
        end local 0 // java.lang.Class toType
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   20     0    toType  Ljava/lang/Class<*>;
            0   20     1  fromType  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;)Z
    MethodParameters:
          Name  Flags
      toType    
      fromType  

  private static java.lang.RuntimeException ambiguousOverloadsException(java.util.List<com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod>, []);
    descriptor: (Ljava/util/List;[Ljava/lang/Object;)Ljava/lang/RuntimeException;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // java.util.List candidates
        start local 1 // java.lang.Object[] args
         0: .line 776
            ldc "Multiple applicable overloads found for method name %s (candidates: %s, arguments: %s)"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* candidates */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* candidates */
            aastore
            dup
            iconst_2
            aload 1 /* args */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.arrayToStringWithTypes:([Ljava/lang/Object;)Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 2 /* message */
        start local 2 // java.lang.String message
         1: .line 777
            aload 1 /* args */
            aload 2 /* message */
            invokestatic com.oracle.truffle.api.interop.UnsupportedTypeException.create:([Ljava/lang/Object;Ljava/lang/String;)Lcom/oracle/truffle/api/interop/UnsupportedTypeException;
            athrow
        end local 2 // java.lang.String message
        end local 1 // java.lang.Object[] args
        end local 0 // java.util.List candidates
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0  candidates  Ljava/util/List<Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;>;
            0    2     1        args  [Ljava/lang/Object;
            1    2     2     message  Ljava/lang/String;
    Exceptions:
      throws com.oracle.truffle.api.interop.UnsupportedTypeException
    Signature: (Ljava/util/List<Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;>;[Ljava/lang/Object;)Ljava/lang/RuntimeException;
    MethodParameters:
            Name  Flags
      candidates  
      args        

  private static java.lang.RuntimeException noApplicableOverloadsException(com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod[], java.lang.Object[]);
    descriptor: ([Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;[Ljava/lang/Object;)Ljava/lang/RuntimeException;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod[] overloads
        start local 1 // java.lang.Object[] args
         0: .line 781
            ldc "no applicable overload found (overloads: %s, arguments: %s)"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* overloads */
            invokestatic java.util.Arrays.toString:([Ljava/lang/Object;)Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 1 /* args */
            invokestatic com.oracle.truffle.polyglot.HostExecuteNode.arrayToStringWithTypes:([Ljava/lang/Object;)Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 2 /* message */
        start local 2 // java.lang.String message
         1: .line 782
            aload 1 /* args */
            aload 2 /* message */
            invokestatic com.oracle.truffle.api.interop.UnsupportedTypeException.create:([Ljava/lang/Object;Ljava/lang/String;)Lcom/oracle/truffle/api/interop/UnsupportedTypeException;
            athrow
        end local 2 // java.lang.String message
        end local 1 // java.lang.Object[] args
        end local 0 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod[] overloads
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0  overloads  [Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            0    2     1       args  [Ljava/lang/Object;
            1    2     2    message  Ljava/lang/String;
    Exceptions:
      throws com.oracle.truffle.api.interop.UnsupportedTypeException
    MethodParameters:
           Name  Flags
      overloads  
      args       

  private static java.lang.reflect.Type getGenericComponentType(java.lang.reflect.Type);
    descriptor: (Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.reflect.Type type
         0: .line 786
            aload 0 /* type */
            instanceof java.lang.reflect.GenericArrayType
            ifeq 1
            aload 0 /* type */
            checkcast java.lang.reflect.GenericArrayType
            invokeinterface java.lang.reflect.GenericArrayType.getGenericComponentType:()Ljava/lang/reflect/Type;
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* type */
            checkcast java.lang.Class
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
      StackMap locals:
      StackMap stack: java.lang.reflect.Type
         2: areturn
        end local 0 // java.lang.reflect.Type type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  type  Ljava/lang/reflect/Type;
    MethodParameters:
      Name  Flags
      type  

  private static java.lang.Object[] createVarArgsArray(com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod, java.lang.Object[], int);
    descriptor: (Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;[Ljava/lang/Object;I)[Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=9, args_size=3
        start local 0 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod method
        start local 1 // java.lang.Object[] args
        start local 2 // int parameterCount
         0: .line 792
            aload 0 /* method */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterTypes:()[Ljava/lang/Class;
            astore 4 /* parameterTypes */
        start local 4 // java.lang.Class[] parameterTypes
         1: .line 793
            iload 2 /* parameterCount */
            anewarray java.lang.Object
            astore 3 /* arguments */
        start local 3 // java.lang.Object[] arguments
         2: .line 794
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         3: goto 6
         4: .line 795
      StackMap locals: java.lang.Object[] java.lang.Class[] int
      StackMap stack:
            aload 3 /* arguments */
            iload 5 /* i */
            aload 1 /* args */
            iload 5 /* i */
            aaload
            aastore
         5: .line 794
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 5 /* i */
            iload 2 /* parameterCount */
            iconst_1
            isub
            if_icmplt 4
        end local 5 // int i
         7: .line 797
            aload 4 /* parameterTypes */
            iload 2 /* parameterCount */
            iconst_1
            isub
            aaload
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            astore 5 /* varArgsType */
        start local 5 // java.lang.Class varArgsType
         8: .line 798
            aload 5 /* varArgsType */
            aload 1 /* args */
            arraylength
            iload 2 /* parameterCount */
            isub
            iconst_1
            iadd
            invokestatic java.lang.reflect.Array.newInstance:(Ljava/lang/Class;I)Ljava/lang/Object;
            astore 6 /* varArgs */
        start local 6 // java.lang.Object varArgs
         9: .line 799
            iload 2 /* parameterCount */
            iconst_1
            isub
            istore 7 /* i */
        start local 7 // int i
        10: iconst_0
            istore 8 /* j */
        start local 8 // int j
        11: goto 14
        12: .line 800
      StackMap locals: com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod java.lang.Object[] int java.lang.Object[] java.lang.Class[] java.lang.Class java.lang.Object int int
      StackMap stack:
            aload 6 /* varArgs */
            iload 8 /* j */
            aload 1 /* args */
            iload 7 /* i */
            aaload
            invokestatic java.lang.reflect.Array.set:(Ljava/lang/Object;ILjava/lang/Object;)V
        13: .line 799
            iinc 7 /* i */ 1
            iinc 8 /* j */ 1
      StackMap locals:
      StackMap stack:
        14: iload 7 /* i */
            aload 1 /* args */
            arraylength
            if_icmplt 12
        end local 8 // int j
        end local 7 // int i
        15: .line 802
            aload 3 /* arguments */
            iload 2 /* parameterCount */
            iconst_1
            isub
            aload 6 /* varArgs */
            aastore
        16: .line 803
            aload 3 /* arguments */
            areturn
        end local 6 // java.lang.Object varArgs
        end local 5 // java.lang.Class varArgsType
        end local 4 // java.lang.Class[] parameterTypes
        end local 3 // java.lang.Object[] arguments
        end local 2 // int parameterCount
        end local 1 // java.lang.Object[] args
        end local 0 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod method
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   17     0          method  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            0   17     1            args  [Ljava/lang/Object;
            0   17     2  parameterCount  I
            2   17     3       arguments  [Ljava/lang/Object;
            1   17     4  parameterTypes  [Ljava/lang/Class;
            3    7     5               i  I
            8   17     5     varArgsType  Ljava/lang/Class<*>;
            9   17     6         varArgs  Ljava/lang/Object;
           10   15     7               i  I
           11   15     8               j  I
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
                Name  Flags
      method          
      args            
      parameterCount  

  private static java.lang.Object doInvoke(com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod, java.lang.Object, java.lang.Object[], com.oracle.truffle.polyglot.PolyglotEngineImpl, com.oracle.truffle.polyglot.PolyglotLanguageContext, com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode);
    descriptor: (Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;Ljava/lang/Object;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext$ToGuestValueNode;)Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=7, args_size=6
        start local 0 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod method
        start local 1 // java.lang.Object obj
        start local 2 // java.lang.Object[] arguments
        start local 3 // com.oracle.truffle.polyglot.PolyglotEngineImpl engine
        start local 4 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        start local 5 // com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode toGuest
         0: .line 807
            getstatic com.oracle.truffle.polyglot.HostExecuteNode.$assertionsDisabled:Z
            ifne 1
            aload 3 /* engine */
            aload 4 /* languageContext */
            getfield com.oracle.truffle.polyglot.PolyglotLanguageContext.context:Lcom/oracle/truffle/polyglot/PolyglotContextImpl;
            getfield com.oracle.truffle.polyglot.PolyglotContextImpl.engine:Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;
            if_acmpeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 808
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.polyglot.HostExecuteNode.$assertionsDisabled:Z
            ifne 2
            aload 2 /* arguments */
            arraylength
            aload 0 /* method */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.getParameterCount:()I
            if_icmpeq 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 809
      StackMap locals:
      StackMap stack:
            aload 0 /* method */
            aload 1 /* obj */
            aload 2 /* arguments */
            aload 3 /* engine */
            aload 4 /* languageContext */
            aload 5 /* toGuest */
            invokevirtual com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod.invokeGuestToHost:(Ljava/lang/Object;[Ljava/lang/Object;Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Lcom/oracle/truffle/api/nodes/Node;)Ljava/lang/Object;
            astore 6 /* ret */
        start local 6 // java.lang.Object ret
         3: .line 810
            aload 5 /* toGuest */
            aload 4 /* languageContext */
            aload 6 /* ret */
            invokevirtual com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode.execute:(Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 6 // java.lang.Object ret
        end local 5 // com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode toGuest
        end local 4 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        end local 3 // com.oracle.truffle.polyglot.PolyglotEngineImpl engine
        end local 2 // java.lang.Object[] arguments
        end local 1 // java.lang.Object obj
        end local 0 // com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod method
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    4     0           method  Lcom/oracle/truffle/polyglot/HostMethodDesc$SingleMethod;
            0    4     1              obj  Ljava/lang/Object;
            0    4     2        arguments  [Ljava/lang/Object;
            0    4     3           engine  Lcom/oracle/truffle/polyglot/PolyglotEngineImpl;
            0    4     4  languageContext  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
            0    4     5          toGuest  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext$ToGuestValueNode;
            3    4     6              ret  Ljava/lang/Object;
    MethodParameters:
                 Name  Flags
      method           
      obj              
      arguments        
      engine           
      languageContext  
      toGuest          

  private static java.lang.String arrayToStringWithTypes(java.lang.Object[]);
    descriptor: ([Ljava/lang/Object;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=1
        start local 0 // java.lang.Object[] args
         0: .line 814
            new java.util.StringJoiner
            dup
            ldc ", "
            ldc "["
            ldc "]"
            invokespecial java.util.StringJoiner.<init>:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V
            astore 1 /* sj */
        start local 1 // java.util.StringJoiner sj
         1: .line 815
            aload 0 /* args */
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 7
      StackMap locals: java.lang.Object[] java.util.StringJoiner top int int java.lang.Object[]
      StackMap stack:
         2: aload 5
            iload 3
            aaload
            astore 2 /* arg */
        start local 2 // java.lang.Object arg
         3: .line 816
            aload 1 /* sj */
            aload 2 /* arg */
            ifnonnull 4
            aconst_null
            goto 5
      StackMap locals: java.lang.Object[] java.util.StringJoiner java.lang.Object int int java.lang.Object[]
      StackMap stack: java.util.StringJoiner
         4: new java.lang.StringBuilder
            dup
            aload 2 /* arg */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " ("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* arg */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
      StackMap locals: java.lang.Object[] java.util.StringJoiner java.lang.Object int int java.lang.Object[]
      StackMap stack: java.util.StringJoiner java.lang.String
         5: invokevirtual java.util.StringJoiner.add:(Ljava/lang/CharSequence;)Ljava/util/StringJoiner;
            pop
        end local 2 // java.lang.Object arg
         6: .line 815
            iinc 3 1
      StackMap locals: java.lang.Object[] java.util.StringJoiner top int int java.lang.Object[]
      StackMap stack:
         7: iload 3
            iload 4
            if_icmplt 2
         8: .line 818
            aload 1 /* sj */
            invokevirtual java.util.StringJoiner.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.util.StringJoiner sj
        end local 0 // java.lang.Object[] args
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  args  [Ljava/lang/Object;
            1    9     1    sj  Ljava/util/StringJoiner;
            3    6     2   arg  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      args  
}
SourceFile: "HostExecuteNode.java"
NestMembers:
  com.oracle.truffle.polyglot.HostExecuteNode$DirectTypeCheck  com.oracle.truffle.polyglot.HostExecuteNode$HostMethodProfileNode  com.oracle.truffle.polyglot.HostExecuteNode$JavaObjectType  com.oracle.truffle.polyglot.HostExecuteNode$NullCheckNode  com.oracle.truffle.polyglot.HostExecuteNode$PrimitiveType  com.oracle.truffle.polyglot.HostExecuteNode$TargetMappingType  com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode
InnerClasses:
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  public abstract Shared = com.oracle.truffle.api.dsl.Cached$Shared of com.oracle.truffle.api.dsl.Cached
  final DirectTypeCheck = com.oracle.truffle.polyglot.HostExecuteNode$DirectTypeCheck of com.oracle.truffle.polyglot.HostExecuteNode
  abstract HostMethodProfileNode = com.oracle.truffle.polyglot.HostExecuteNode$HostMethodProfileNode of com.oracle.truffle.polyglot.HostExecuteNode
  final JavaObjectType = com.oracle.truffle.polyglot.HostExecuteNode$JavaObjectType of com.oracle.truffle.polyglot.HostExecuteNode
  final NullCheckNode = com.oracle.truffle.polyglot.HostExecuteNode$NullCheckNode of com.oracle.truffle.polyglot.HostExecuteNode
  final PrimitiveType = com.oracle.truffle.polyglot.HostExecuteNode$PrimitiveType of com.oracle.truffle.polyglot.HostExecuteNode
  final TargetMappingType = com.oracle.truffle.polyglot.HostExecuteNode$TargetMappingType of com.oracle.truffle.polyglot.HostExecuteNode
  abstract TypeCheckNode = com.oracle.truffle.polyglot.HostExecuteNode$TypeCheckNode of com.oracle.truffle.polyglot.HostExecuteNode
  final OverloadedMethod = com.oracle.truffle.polyglot.HostMethodDesc$OverloadedMethod of com.oracle.truffle.polyglot.HostMethodDesc
  abstract SingleMethod = com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod of com.oracle.truffle.polyglot.HostMethodDesc
  abstract ToGuestValueNode = com.oracle.truffle.polyglot.PolyglotLanguageContext$ToGuestValueNode of com.oracle.truffle.polyglot.PolyglotLanguageContext
    RuntimeInvisibleAnnotations: 
      com.oracle.truffle.api.dsl.ReportPolymorphism()
      com.oracle.truffle.api.dsl.GenerateUncached()