final class com.oracle.truffle.polyglot.PolyglotThread extends java.lang.Thread
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.polyglot.PolyglotThread
  super_class: java.lang.Thread
{
  private final com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext;
    descriptor: Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  com.oracle.truffle.polyglot.PolyglotContextImpl context;
    descriptor: Lcom/oracle/truffle/polyglot/PolyglotContextImpl;
    flags: (0x0000) 

  final com.oracle.truffle.api.CallTarget callTarget;
    descriptor: Lcom/oracle/truffle/api/CallTarget;
    flags: (0x0010) ACC_FINAL

  private static final java.util.concurrent.atomic.AtomicInteger THREAD_INIT_NUMBER;
    descriptor: Ljava/util/concurrent/atomic/AtomicInteger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 92
            new java.util.concurrent.atomic.AtomicInteger
            dup
            iconst_0
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:(I)V
            putstatic com.oracle.truffle.polyglot.PolyglotThread.THREAD_INIT_NUMBER:Ljava/util/concurrent/atomic/AtomicInteger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(com.oracle.truffle.polyglot.PolyglotLanguageContext, java.lang.Runnable, java.lang.ThreadGroup, long);
    descriptor: (Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Ljava/lang/Runnable;Ljava/lang/ThreadGroup;J)V
    flags: (0x0000) 
    Code:
      stack=6, locals=6, args_size=5
        start local 0 // com.oracle.truffle.polyglot.PolyglotThread this
        start local 1 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        start local 2 // java.lang.Runnable runnable
        start local 3 // java.lang.ThreadGroup group
        start local 4 // long stackSize
         0: .line 57
            aload 0 /* this */
            aload 3 /* group */
            aload 2 /* runnable */
            aload 1 /* languageContext */
            invokestatic com.oracle.truffle.polyglot.PolyglotThread.createDefaultName:(Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;)Ljava/lang/String;
            lload 4 /* stackSize */
            invokespecial java.lang.Thread.<init>:(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;J)V
         1: .line 58
            aload 0 /* this */
            aload 1 /* languageContext */
            putfield com.oracle.truffle.polyglot.PolyglotThread.languageContext:Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
         2: .line 59
            aload 0 /* this */
            aload 1 /* languageContext */
            invokevirtual com.oracle.truffle.polyglot.PolyglotLanguageContext.getPolyglotExceptionHandler:()Ljava/lang/Thread$UncaughtExceptionHandler;
            invokevirtual com.oracle.truffle.polyglot.PolyglotThread.setUncaughtExceptionHandler:(Ljava/lang/Thread$UncaughtExceptionHandler;)V
         3: .line 60
            aload 0 /* this */
            aload 1 /* languageContext */
            invokestatic com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.lookup:(Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;)Lcom/oracle/truffle/api/CallTarget;
            putfield com.oracle.truffle.polyglot.PolyglotThread.callTarget:Lcom/oracle/truffle/api/CallTarget;
         4: .line 61
            return
        end local 4 // long stackSize
        end local 3 // java.lang.ThreadGroup group
        end local 2 // java.lang.Runnable runnable
        end local 1 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        end local 0 // com.oracle.truffle.polyglot.PolyglotThread this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    5     0             this  Lcom/oracle/truffle/polyglot/PolyglotThread;
            0    5     1  languageContext  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
            0    5     2         runnable  Ljava/lang/Runnable;
            0    5     3            group  Ljava/lang/ThreadGroup;
            0    5     4        stackSize  J
    MethodParameters:
                 Name  Flags
      languageContext  
      runnable         
      group            
      stackSize        

  void <init>(com.oracle.truffle.polyglot.PolyglotLanguageContext, java.lang.Runnable, java.lang.ThreadGroup);
    descriptor: (Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Ljava/lang/Runnable;Ljava/lang/ThreadGroup;)V
    flags: (0x0000) 
    Code:
      stack=6, locals=4, args_size=4
        start local 0 // com.oracle.truffle.polyglot.PolyglotThread this
        start local 1 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        start local 2 // java.lang.Runnable runnable
        start local 3 // java.lang.ThreadGroup group
         0: .line 64
            aload 0 /* this */
            aload 1 /* languageContext */
            aload 2 /* runnable */
            aload 3 /* group */
            lconst_0
            invokespecial com.oracle.truffle.polyglot.PolyglotThread.<init>:(Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Ljava/lang/Runnable;Ljava/lang/ThreadGroup;J)V
         1: .line 65
            return
        end local 3 // java.lang.ThreadGroup group
        end local 2 // java.lang.Runnable runnable
        end local 1 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        end local 0 // com.oracle.truffle.polyglot.PolyglotThread this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Lcom/oracle/truffle/polyglot/PolyglotThread;
            0    2     1  languageContext  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
            0    2     2         runnable  Ljava/lang/Runnable;
            0    2     3            group  Ljava/lang/ThreadGroup;
    MethodParameters:
                 Name  Flags
      languageContext  
      runnable         
      group            

  void <init>(com.oracle.truffle.polyglot.PolyglotLanguageContext, java.lang.Runnable);
    descriptor: (Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Ljava/lang/Runnable;)V
    flags: (0x0000) 
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // com.oracle.truffle.polyglot.PolyglotThread this
        start local 1 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        start local 2 // java.lang.Runnable runnable
         0: .line 68
            aload 0 /* this */
            aload 1 /* languageContext */
            aload 2 /* runnable */
            aconst_null
            lconst_0
            invokespecial com.oracle.truffle.polyglot.PolyglotThread.<init>:(Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;Ljava/lang/Runnable;Ljava/lang/ThreadGroup;J)V
         1: .line 69
            return
        end local 2 // java.lang.Runnable runnable
        end local 1 // com.oracle.truffle.polyglot.PolyglotLanguageContext languageContext
        end local 0 // com.oracle.truffle.polyglot.PolyglotThread this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Lcom/oracle/truffle/polyglot/PolyglotThread;
            0    2     1  languageContext  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
            0    2     2         runnable  Ljava/lang/Runnable;
    MethodParameters:
                 Name  Flags
      languageContext  
      runnable         

  private static java.lang.String createDefaultName(com.oracle.truffle.polyglot.PolyglotLanguageContext);
    descriptor: (Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.PolyglotLanguageContext creator
         0: .line 72
            new java.lang.StringBuilder
            dup
            ldc "Polyglot-"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* creator */
            getfield com.oracle.truffle.polyglot.PolyglotLanguageContext.language:Lcom/oracle/truffle/polyglot/PolyglotLanguage;
            invokevirtual com.oracle.truffle.polyglot.PolyglotLanguage.getId:()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;
            getstatic com.oracle.truffle.polyglot.PolyglotThread.THREAD_INIT_NUMBER:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.getAndIncrement:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.polyglot.PolyglotLanguageContext creator
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  creator  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
    MethodParameters:
         Name  Flags
      creator  

  boolean isOwner(com.oracle.truffle.polyglot.PolyglotContextImpl);
    descriptor: (Lcom/oracle/truffle/polyglot/PolyglotContextImpl;)Z
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.polyglot.PolyglotThread this
        start local 1 // com.oracle.truffle.polyglot.PolyglotContextImpl testContext
         0: .line 76
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.PolyglotThread.languageContext:Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
            getfield com.oracle.truffle.polyglot.PolyglotLanguageContext.context:Lcom/oracle/truffle/polyglot/PolyglotContextImpl;
            aload 1 /* testContext */
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // com.oracle.truffle.polyglot.PolyglotContextImpl testContext
        end local 0 // com.oracle.truffle.polyglot.PolyglotThread this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lcom/oracle/truffle/polyglot/PolyglotThread;
            0    2     1  testContext  Lcom/oracle/truffle/polyglot/PolyglotContextImpl;
    MethodParameters:
             Name  Flags
      testContext  

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.PolyglotThread this
         0: .line 83
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.PolyglotThread.callTarget:Lcom/oracle/truffle/api/CallTarget;
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.PolyglotThread.languageContext:Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            aastore
            dup
            iconst_2
            new com.oracle.truffle.polyglot.PolyglotThread$1
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.polyglot.PolyglotThread$1.<init>:(Lcom/oracle/truffle/polyglot/PolyglotThread;)V
            aastore
            invokeinterface com.oracle.truffle.api.CallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 90
            return
        end local 0 // com.oracle.truffle.polyglot.PolyglotThread this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/polyglot/PolyglotThread;

  static void access$0(com.oracle.truffle.polyglot.PolyglotThread);
    descriptor: (Lcom/oracle/truffle/polyglot/PolyglotThread;)V
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokespecial java.lang.Thread.run:()V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "PolyglotThread.java"
NestMembers:
  com.oracle.truffle.polyglot.PolyglotThread$1  com.oracle.truffle.polyglot.PolyglotThread$PolyglotThreadRunnable  com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode
InnerClasses:
  com.oracle.truffle.polyglot.PolyglotThread$1
  private abstract PolyglotThreadRunnable = com.oracle.truffle.polyglot.PolyglotThread$PolyglotThreadRunnable of com.oracle.truffle.polyglot.PolyglotThread
  private final ThreadSpawnRootNode = com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode of com.oracle.truffle.polyglot.PolyglotThread
  public abstract UncaughtExceptionHandler = java.lang.Thread$UncaughtExceptionHandler of java.lang.Thread