public class com.oracle.truffle.llvm.tests.ToolchainAPITest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.llvm.tests.ToolchainAPITest
  super_class: java.lang.Object
{
  public com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule runWithPolyglot;
    descriptor: Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
    flags: (0x0001) ACC_PUBLIC
    RuntimeVisibleAnnotations: 
      org.junit.Rule()

  private static final java.lang.String TOOLCHAIN_PATH_PATTERN_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "sulongtest.toolchainPathPattern"

  private static final java.lang.String TOOLCHAIN_PATH_PATTERN;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  protected static final java.lang.String HELLO_WORLD_C;
    descriptor: Ljava/lang/String;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: "#include <stdio.h>\nint main() {\n  printf(\"Hello World!\");\n  return 0;\n}"

  protected static final java.lang.String HELLO_WORLD_CXX;
    descriptor: Ljava/lang/String;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: "#include <iostream>\nint main() {\n  std::cout << \"Hello World!\";\n  return 0;\n}"

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 60
            ldc "sulongtest.toolchainPathPattern"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            putstatic com.oracle.truffle.llvm.tests.ToolchainAPITest.TOOLCHAIN_PATH_PATTERN:Ljava/lang/String;
         1: .line 122
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.llvm.tests.ToolchainAPITest this
         0: .line 56
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 57
            aload 0 /* this */
            new com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule
            dup
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.tests.ToolchainAPITest.getContextBuilder:()Lorg/graalvm/polyglot/Context$Builder;
            invokespecial com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule.<init>:(Lorg/graalvm/polyglot/Context$Builder;)V
            putfield com.oracle.truffle.llvm.tests.ToolchainAPITest.runWithPolyglot:Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
         2: .line 56
            return
        end local 0 // com.oracle.truffle.llvm.tests.ToolchainAPITest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/llvm/tests/ToolchainAPITest;

  protected org.graalvm.polyglot.Context$Builder getContextBuilder();
    descriptor: ()Lorg/graalvm/polyglot/Context$Builder;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.llvm.tests.ToolchainAPITest this
         0: .line 63
            iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            iconst_1
            invokevirtual org.graalvm.polyglot.Context$Builder.allowAllAccess:(Z)Lorg/graalvm/polyglot/Context$Builder;
            areturn
        end local 0 // com.oracle.truffle.llvm.tests.ToolchainAPITest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/llvm/tests/ToolchainAPITest;

  protected org.graalvm.polyglot.Value load(java.io.File);
    descriptor: (Ljava/io/File;)Lorg/graalvm/polyglot/Value;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.truffle.llvm.tests.ToolchainAPITest this
        start local 1 // java.io.File file
         0: .line 68
            ldc "llvm"
            aload 1 /* file */
            invokestatic org.graalvm.polyglot.Source.newBuilder:(Ljava/lang/String;Ljava/io/File;)Lorg/graalvm/polyglot/Source$Builder;
            invokevirtual org.graalvm.polyglot.Source$Builder.build:()Lorg/graalvm/polyglot/Source;
            astore 2 /* source */
        start local 2 // org.graalvm.polyglot.Source source
         1: .line 69
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.ToolchainAPITest.runWithPolyglot:Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
            invokevirtual com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule.getPolyglotContext:()Lorg/graalvm/polyglot/Context;
            aload 2 /* source */
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
         2: areturn
        end local 2 // org.graalvm.polyglot.Source source
         3: .line 70
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
            astore 2 /* e */
        start local 2 // java.lang.RuntimeException e
         4: .line 71
            aload 2 /* e */
            athrow
        end local 2 // java.lang.RuntimeException e
         5: .line 72
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 2 /* e */
        start local 2 // java.lang.Exception e
         6: .line 73
            new java.lang.RuntimeException
            dup
            aload 2 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.Exception e
        end local 1 // java.io.File file
        end local 0 // com.oracle.truffle.llvm.tests.ToolchainAPITest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Lcom/oracle/truffle/llvm/tests/ToolchainAPITest;
            0    7     1    file  Ljava/io/File;
            1    3     2  source  Lorg/graalvm/polyglot/Source;
            4    5     2       e  Ljava/lang/RuntimeException;
            6    7     2       e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     2       3  Class java.lang.RuntimeException
           0     2       5  Class java.lang.Exception
    MethodParameters:
      Name  Flags
      file  

  private com.oracle.truffle.llvm.api.Toolchain getToolchain();
    descriptor: ()Lcom/oracle/truffle/llvm/api/Toolchain;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // com.oracle.truffle.llvm.tests.ToolchainAPITest this
         0: .line 78
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.ToolchainAPITest.runWithPolyglot:Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
            invokevirtual com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule.getTruffleTestEnv:()Lcom/oracle/truffle/api/TruffleLanguage$Env;
            astore 1 /* env */
        start local 1 // com.oracle.truffle.api.TruffleLanguage$Env env
         1: .line 79
            aload 1 /* env */
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.getInternalLanguages:()Ljava/util/Map;
            ldc "llvm"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.nodes.LanguageInfo
            astore 2 /* llvmInfo */
        start local 2 // com.oracle.truffle.api.nodes.LanguageInfo llvmInfo
         2: .line 80
            aload 1 /* env */
            aload 2 /* llvmInfo */
            ldc Lcom/oracle/truffle/llvm/api/Toolchain;
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.lookup:(Lcom/oracle/truffle/api/nodes/LanguageInfo;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.llvm.api.Toolchain
            areturn
        end local 2 // com.oracle.truffle.api.nodes.LanguageInfo llvmInfo
        end local 1 // com.oracle.truffle.api.TruffleLanguage$Env env
        end local 0 // com.oracle.truffle.llvm.tests.ToolchainAPITest this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lcom/oracle/truffle/llvm/tests/ToolchainAPITest;
            1    3     1       env  Lcom/oracle/truffle/api/TruffleLanguage$Env;
            2    3     2  llvmInfo  Lcom/oracle/truffle/api/nodes/LanguageInfo;

  protected int compile(java.lang.String, java.io.File, java.io.File, java.lang.String[]);
    descriptor: (Ljava/lang/String;Ljava/io/File;Ljava/io/File;[Ljava/lang/String;)I
    flags: (0x0084) ACC_PROTECTED, ACC_VARARGS
    Code:
      stack=6, locals=9, args_size=5
        start local 0 // com.oracle.truffle.llvm.tests.ToolchainAPITest this
        start local 1 // java.lang.String tool
        start local 2 // java.io.File src
        start local 3 // java.io.File dst
        start local 4 // java.lang.String[] args
         0: .line 84
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.tests.ToolchainAPITest.getToolchain:()Lcom/oracle/truffle/llvm/api/Toolchain;
            astore 5 /* toolchain */
        start local 5 // com.oracle.truffle.llvm.api.Toolchain toolchain
         1: .line 85
            aload 5 /* toolchain */
            aload 1 /* tool */
            invokeinterface com.oracle.truffle.llvm.api.Toolchain.getToolPath:(Ljava/lang/String;)Lcom/oracle/truffle/api/TruffleFile;
            astore 6 /* clang */
        start local 6 // com.oracle.truffle.api.TruffleFile clang
         2: .line 86
            new java.lang.StringBuilder
            dup
            ldc "Tool '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* tool */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "' is not supported by "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* toolchain */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 6 /* clang */
            ifnull 3
            iconst_1
            goto 4
      StackMap locals: com.oracle.truffle.llvm.tests.ToolchainAPITest java.lang.String java.io.File java.io.File java.lang.String[] com.oracle.truffle.llvm.api.Toolchain com.oracle.truffle.api.TruffleFile
      StackMap stack: java.lang.String
         3: iconst_0
      StackMap locals: com.oracle.truffle.llvm.tests.ToolchainAPITest java.lang.String java.io.File java.io.File java.lang.String[] com.oracle.truffle.llvm.api.Toolchain com.oracle.truffle.api.TruffleFile
      StackMap stack: java.lang.String int
         4: invokestatic org.junit.Assume.assumeTrue:(Ljava/lang/String;Z)V
         5: .line 87
            getstatic com.oracle.truffle.llvm.tests.ToolchainAPITest.TOOLCHAIN_PATH_PATTERN:Ljava/lang/String;
            ifnull 9
         6: .line 88
            ldc "Toolchain path ('%s') does not contain '%s'='%s'"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 6 /* clang */
            aastore
            dup
            iconst_1
            ldc "sulongtest.toolchainPathPattern"
            aastore
            dup
            iconst_2
            getstatic com.oracle.truffle.llvm.tests.ToolchainAPITest.TOOLCHAIN_PATH_PATTERN:Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
         7: .line 89
            aload 6 /* clang */
            invokevirtual com.oracle.truffle.api.TruffleFile.toString:()Ljava/lang/String;
            getstatic com.oracle.truffle.llvm.tests.ToolchainAPITest.TOOLCHAIN_PATH_PATTERN:Ljava/lang/String;
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
         8: .line 88
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
         9: .line 91
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            iconst_4
            anewarray java.lang.String
            dup
            iconst_0
            aload 6 /* clang */
            invokevirtual com.oracle.truffle.api.TruffleFile.toString:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 2 /* src */
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            aastore
            dup
            iconst_2
            ldc "-o"
            aastore
            dup
            iconst_3
            aload 3 /* dst */
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 7 /* allArgs */
        start local 7 // java.util.List allArgs
        10: .line 92
            aload 7 /* allArgs */
            aload 4 /* args */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
        11: .line 93
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.ToolchainAPITest.runWithPolyglot:Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
            invokevirtual com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule.getTruffleTestEnv:()Lcom/oracle/truffle/api/TruffleLanguage$Env;
            aload 7 /* allArgs */
            iconst_0
            anewarray java.lang.String
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.lang.String[]
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.newProcessBuilder:([Ljava/lang/String;)Lcom/oracle/truffle/api/io/TruffleProcessBuilder;
            iconst_1
            invokevirtual com.oracle.truffle.api.io.TruffleProcessBuilder.inheritIO:(Z)Lcom/oracle/truffle/api/io/TruffleProcessBuilder;
            invokevirtual com.oracle.truffle.api.io.TruffleProcessBuilder.start:()Ljava/lang/Process;
            astore 8 /* p */
        start local 8 // java.lang.Process p
        12: .line 94
            aload 8 /* p */
            invokevirtual java.lang.Process.waitFor:()I
            pop
        13: .line 95
            aload 8 /* p */
            invokevirtual java.lang.Process.exitValue:()I
            ireturn
        end local 8 // java.lang.Process p
        end local 7 // java.util.List allArgs
        end local 6 // com.oracle.truffle.api.TruffleFile clang
        end local 5 // com.oracle.truffle.llvm.api.Toolchain toolchain
        end local 4 // java.lang.String[] args
        end local 3 // java.io.File dst
        end local 2 // java.io.File src
        end local 1 // java.lang.String tool
        end local 0 // com.oracle.truffle.llvm.tests.ToolchainAPITest this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       this  Lcom/oracle/truffle/llvm/tests/ToolchainAPITest;
            0   14     1       tool  Ljava/lang/String;
            0   14     2        src  Ljava/io/File;
            0   14     3        dst  Ljava/io/File;
            0   14     4       args  [Ljava/lang/String;
            1   14     5  toolchain  Lcom/oracle/truffle/llvm/api/Toolchain;
            2   14     6      clang  Lcom/oracle/truffle/api/TruffleFile;
           10   14     7    allArgs  Ljava/util/List<Ljava/lang/String;>;
           12   14     8          p  Ljava/lang/Process;
    Exceptions:
      throws java.io.IOException, java.lang.InterruptedException
    MethodParameters:
      Name  Flags
      tool  
      src   
      dst   
      args  

  protected static void write(java.io.File, java.lang.String);
    descriptor: (Ljava/io/File;Ljava/lang/String;)V
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.io.File src
        start local 1 // java.lang.String text
         0: .line 99
            new java.io.FileWriter
            dup
            aload 0 /* src */
            invokespecial java.io.FileWriter.<init>:(Ljava/io/File;)V
            astore 2 /* fw */
        start local 2 // java.io.FileWriter fw
         1: .line 100
            aload 2 /* fw */
            aload 1 /* text */
            invokevirtual java.io.FileWriter.write:(Ljava/lang/String;)V
         2: .line 101
            aload 2 /* fw */
            invokevirtual java.io.FileWriter.close:()V
         3: .line 102
            return
        end local 2 // java.io.FileWriter fw
        end local 1 // java.lang.String text
        end local 0 // java.io.File src
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0   src  Ljava/io/File;
            0    4     1  text  Ljava/lang/String;
            1    4     2    fw  Ljava/io/FileWriter;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      src   
      text  

  public void testCC();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=1
        start local 0 // com.oracle.truffle.llvm.tests.ToolchainAPITest this
         0: .line 108
            ldc Lcom/oracle/truffle/llvm/tests/ToolchainAPITest;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            ldc ".c"
            invokestatic java.io.File.createTempFile:(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;
            astore 1 /* src */
        start local 1 // java.io.File src
         1: .line 109
            aload 1 /* src */
            invokevirtual java.io.File.deleteOnExit:()V
         2: .line 110
            ldc Lcom/oracle/truffle/llvm/tests/ToolchainAPITest;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            ldc ".out"
            invokestatic java.io.File.createTempFile:(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;
            astore 2 /* dst */
        start local 2 // java.io.File dst
         3: .line 111
            aload 2 /* dst */
            invokevirtual java.io.File.deleteOnExit:()V
         4: .line 112
            aload 1 /* src */
            ldc "#include <stdio.h>\nint main() {\n  printf(\"Hello World!\");\n  return 0;\n}"
            invokestatic com.oracle.truffle.llvm.tests.ToolchainAPITest.write:(Ljava/io/File;Ljava/lang/String;)V
         5: .line 113
            aload 0 /* this */
            ldc "CC"
            aload 1 /* src */
            aload 2 /* dst */
            iconst_0
            anewarray java.lang.String
            invokevirtual com.oracle.truffle.llvm.tests.ToolchainAPITest.compile:(Ljava/lang/String;Ljava/io/File;Ljava/io/File;[Ljava/lang/String;)I
            istore 3 /* compileResult */
        start local 3 // int compileResult
         6: .line 114
            ldc "compiler result"
            lconst_0
            iload 3 /* compileResult */
            i2l
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;JJ)V
         7: .line 115
            aconst_null
            astore 4
            aconst_null
            astore 5
         8: new com.oracle.truffle.llvm.tests.pipe.CaptureNativeOutput
            dup
            invokespecial com.oracle.truffle.llvm.tests.pipe.CaptureNativeOutput.<init>:()V
            astore 6 /* out */
        start local 6 // com.oracle.truffle.llvm.tests.pipe.CaptureOutput out
         9: .line 116
            aload 0 /* this */
            aload 2 /* dst */
            invokevirtual com.oracle.truffle.llvm.tests.ToolchainAPITest.load:(Ljava/io/File;)Lorg/graalvm/polyglot/Value;
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asInt:()I
            istore 7 /* runResult */
        start local 7 // int runResult
        10: .line 117
            ldc "run result"
            lconst_0
            iload 7 /* runResult */
            i2l
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;JJ)V
        11: .line 118
            ldc "Hello World!"
            aload 6 /* out */
            invokeinterface com.oracle.truffle.llvm.tests.pipe.CaptureOutput.getStdOut:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 7 // int runResult
        12: .line 119
            aload 6 /* out */
            ifnull 18
            aload 6 /* out */
            invokeinterface com.oracle.truffle.llvm.tests.pipe.CaptureOutput.close:()V
            goto 18
      StackMap locals: com.oracle.truffle.llvm.tests.ToolchainAPITest java.io.File java.io.File int java.lang.Throwable java.lang.Throwable com.oracle.truffle.llvm.tests.pipe.CaptureOutput
      StackMap stack: java.lang.Throwable
        13: astore 4
            aload 6 /* out */
            ifnull 14
            aload 6 /* out */
            invokeinterface com.oracle.truffle.llvm.tests.pipe.CaptureOutput.close:()V
        end local 6 // com.oracle.truffle.llvm.tests.pipe.CaptureOutput out
      StackMap locals:
      StackMap stack:
        14: aload 4
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: astore 5
            aload 4
            ifnonnull 16
            aload 5
            astore 4
            goto 17
      StackMap locals:
      StackMap stack:
        16: aload 4
            aload 5
            if_acmpeq 17
            aload 4
            aload 5
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        17: aload 4
            athrow
        18: .line 120
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int compileResult
        end local 2 // java.io.File dst
        end local 1 // java.io.File src
        end local 0 // com.oracle.truffle.llvm.tests.ToolchainAPITest this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   19     0           this  Lcom/oracle/truffle/llvm/tests/ToolchainAPITest;
            1   19     1            src  Ljava/io/File;
            3   19     2            dst  Ljava/io/File;
            6   19     3  compileResult  I
            9   14     6            out  Lcom/oracle/truffle/llvm/tests/pipe/CaptureOutput;
           10   12     7      runResult  I
      Exception table:
        from    to  target  type
           9    12      13  any
           8    15      15  any
    Exceptions:
      throws java.io.IOException, java.lang.InterruptedException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testCXX();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=1
        start local 0 // com.oracle.truffle.llvm.tests.ToolchainAPITest this
         0: .line 126
            ldc Lcom/oracle/truffle/llvm/tests/ToolchainAPITest;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            ldc ".cpp"
            invokestatic java.io.File.createTempFile:(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;
            astore 1 /* src */
        start local 1 // java.io.File src
         1: .line 127
            aload 1 /* src */
            invokevirtual java.io.File.deleteOnExit:()V
         2: .line 128
            ldc Lcom/oracle/truffle/llvm/tests/ToolchainAPITest;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            ldc ".out"
            invokestatic java.io.File.createTempFile:(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;
            astore 2 /* dst */
        start local 2 // java.io.File dst
         3: .line 129
            aload 2 /* dst */
            invokevirtual java.io.File.deleteOnExit:()V
         4: .line 130
            aload 1 /* src */
            ldc "#include <iostream>\nint main() {\n  std::cout << \"Hello World!\";\n  return 0;\n}"
            invokestatic com.oracle.truffle.llvm.tests.ToolchainAPITest.write:(Ljava/io/File;Ljava/lang/String;)V
         5: .line 131
            aload 0 /* this */
            ldc "CXX"
            aload 1 /* src */
            aload 2 /* dst */
            iconst_0
            anewarray java.lang.String
            invokevirtual com.oracle.truffle.llvm.tests.ToolchainAPITest.compile:(Ljava/lang/String;Ljava/io/File;Ljava/io/File;[Ljava/lang/String;)I
            istore 3 /* compileResult */
        start local 3 // int compileResult
         6: .line 132
            ldc "compiler result"
            lconst_0
            iload 3 /* compileResult */
            i2l
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;JJ)V
         7: .line 133
            aconst_null
            astore 4
            aconst_null
            astore 5
         8: new com.oracle.truffle.llvm.tests.pipe.CaptureNativeOutput
            dup
            invokespecial com.oracle.truffle.llvm.tests.pipe.CaptureNativeOutput.<init>:()V
            astore 6 /* out */
        start local 6 // com.oracle.truffle.llvm.tests.pipe.CaptureOutput out
         9: .line 134
            aload 0 /* this */
            aload 2 /* dst */
            invokevirtual com.oracle.truffle.llvm.tests.ToolchainAPITest.load:(Ljava/io/File;)Lorg/graalvm/polyglot/Value;
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asInt:()I
            istore 7 /* runResult */
        start local 7 // int runResult
        10: .line 135
            ldc "run result"
            lconst_0
            iload 7 /* runResult */
            i2l
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;JJ)V
        11: .line 136
            ldc "Hello World!"
            aload 6 /* out */
            invokeinterface com.oracle.truffle.llvm.tests.pipe.CaptureOutput.getStdOut:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 7 // int runResult
        12: .line 137
            aload 6 /* out */
            ifnull 18
            aload 6 /* out */
            invokeinterface com.oracle.truffle.llvm.tests.pipe.CaptureOutput.close:()V
            goto 18
      StackMap locals: com.oracle.truffle.llvm.tests.ToolchainAPITest java.io.File java.io.File int java.lang.Throwable java.lang.Throwable com.oracle.truffle.llvm.tests.pipe.CaptureOutput
      StackMap stack: java.lang.Throwable
        13: astore 4
            aload 6 /* out */
            ifnull 14
            aload 6 /* out */
            invokeinterface com.oracle.truffle.llvm.tests.pipe.CaptureOutput.close:()V
        end local 6 // com.oracle.truffle.llvm.tests.pipe.CaptureOutput out
      StackMap locals:
      StackMap stack:
        14: aload 4
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: astore 5
            aload 4
            ifnonnull 16
            aload 5
            astore 4
            goto 17
      StackMap locals:
      StackMap stack:
        16: aload 4
            aload 5
            if_acmpeq 17
            aload 4
            aload 5
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        17: aload 4
            athrow
        18: .line 138
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int compileResult
        end local 2 // java.io.File dst
        end local 1 // java.io.File src
        end local 0 // com.oracle.truffle.llvm.tests.ToolchainAPITest this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   19     0           this  Lcom/oracle/truffle/llvm/tests/ToolchainAPITest;
            1   19     1            src  Ljava/io/File;
            3   19     2            dst  Ljava/io/File;
            6   19     3  compileResult  I
            9   14     6            out  Lcom/oracle/truffle/llvm/tests/pipe/CaptureOutput;
           10   12     7      runResult  I
      Exception table:
        from    to  target  type
           9    12      13  any
           8    15      15  any
    Exceptions:
      throws java.io.IOException, java.lang.InterruptedException
    RuntimeVisibleAnnotations: 
      org.junit.Test()
}
SourceFile: "ToolchainAPITest.java"
InnerClasses:
  public final Env = com.oracle.truffle.api.TruffleLanguage$Env of com.oracle.truffle.api.TruffleLanguage
  public final RunWithPolyglotRule = com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule of com.oracle.truffle.tck.TruffleRunner
  public final Builder = org.graalvm.polyglot.Context$Builder of org.graalvm.polyglot.Context
  public Builder = org.graalvm.polyglot.Source$Builder of org.graalvm.polyglot.Source