class com.oracle.truffle.tck.TruffleTestInvoker$TestStatement extends org.junit.runners.model.Statement
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.oracle.truffle.tck.TruffleTestInvoker$TestStatement
  super_class: org.junit.runners.model.Statement
{
  private final com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule rule;
    descriptor: Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.junit.runners.model.Statement stmt;
    descriptor: Lorg/junit/runners/model/Statement;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  void <init>(com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule, org.junit.runners.model.Statement);
    descriptor: (Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;Lorg/junit/runners/model/Statement;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.tck.TruffleTestInvoker$TestStatement this
        start local 1 // com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule rule
        start local 2 // org.junit.runners.model.Statement stmt
         0: .line 97
            aload 0 /* this */
            invokespecial org.junit.runners.model.Statement.<init>:()V
         1: .line 98
            aload 0 /* this */
            aload 1 /* rule */
            putfield com.oracle.truffle.tck.TruffleTestInvoker$TestStatement.rule:Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
         2: .line 99
            aload 0 /* this */
            aload 2 /* stmt */
            putfield com.oracle.truffle.tck.TruffleTestInvoker$TestStatement.stmt:Lorg/junit/runners/model/Statement;
         3: .line 100
            return
        end local 2 // org.junit.runners.model.Statement stmt
        end local 1 // com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule rule
        end local 0 // com.oracle.truffle.tck.TruffleTestInvoker$TestStatement this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/tck/TruffleTestInvoker$TestStatement;
            0    4     1  rule  Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
            0    4     2  stmt  Lorg/junit/runners/model/Statement;
    MethodParameters:
      Name  Flags
      rule  
      stmt  

  public void evaluate();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=9, args_size=1
        start local 0 // com.oracle.truffle.tck.TruffleTestInvoker$TestStatement this
         0: .line 104
            aload 0 /* this */
            getfield com.oracle.truffle.tck.TruffleTestInvoker$TestStatement.rule:Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
            getfield com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule.context:Lorg/graalvm/polyglot/Context;
            astore 1 /* prevContext */
        start local 1 // org.graalvm.polyglot.Context prevContext
         1: .line 105
            aconst_null
            astore 2
            aconst_null
            astore 3
         2: aload 0 /* this */
            getfield com.oracle.truffle.tck.TruffleTestInvoker$TestStatement.rule:Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
            getfield com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule.contextBuilder:Lorg/graalvm/polyglot/Context$Builder;
            getstatic org.graalvm.polyglot.PolyglotAccess.ALL:Lorg/graalvm/polyglot/PolyglotAccess;
            invokevirtual org.graalvm.polyglot.Context$Builder.allowPolyglotAccess:(Lorg/graalvm/polyglot/PolyglotAccess;)Lorg/graalvm/polyglot/Context$Builder;
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
            astore 4 /* context */
        start local 4 // org.graalvm.polyglot.Context context
         3: .line 106
            aload 0 /* this */
            getfield com.oracle.truffle.tck.TruffleTestInvoker$TestStatement.rule:Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
            aload 4 /* context */
            putfield com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule.context:Lorg/graalvm/polyglot/Context;
         4: .line 108
            aload 4 /* context */
            ldc "truffletestinvoker"
            invokevirtual org.graalvm.polyglot.Context.initialize:(Ljava/lang/String;)Z
            pop
         5: .line 109
            aload 4 /* context */
            invokevirtual org.graalvm.polyglot.Context.enter:()V
         6: .line 110
            aload 0 /* this */
            getfield com.oracle.truffle.tck.TruffleTestInvoker$TestStatement.rule:Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
            getfield com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule.testEnv:Lcom/oracle/truffle/api/TruffleLanguage$Env;
            astore 5 /* prevEnv */
        start local 5 // com.oracle.truffle.api.TruffleLanguage$Env prevEnv
         7: .line 112
            aload 0 /* this */
            getfield com.oracle.truffle.tck.TruffleTestInvoker$TestStatement.rule:Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
            aload 4 /* context */
            invokevirtual org.graalvm.polyglot.Context.getPolyglotBindings:()Lorg/graalvm/polyglot/Value;
            ldc "env"
            invokevirtual org.graalvm.polyglot.Value.getMember:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asHostObject:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.TruffleLanguage$Env
            putfield com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule.testEnv:Lcom/oracle/truffle/api/TruffleLanguage$Env;
         8: .line 113
            aload 0 /* this */
            getfield com.oracle.truffle.tck.TruffleTestInvoker$TestStatement.stmt:Lorg/junit/runners/model/Statement;
            invokevirtual org.junit.runners.model.Statement.evaluate:()V
         9: .line 114
            goto 16
      StackMap locals: com.oracle.truffle.tck.TruffleTestInvoker$TestStatement org.graalvm.polyglot.Context java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context com.oracle.truffle.api.TruffleLanguage$Env
      StackMap stack: java.lang.Throwable
        10: astore 6 /* t */
        start local 6 // java.lang.Throwable t
        11: .line 115
            aload 6 /* t */
            athrow
        end local 6 // java.lang.Throwable t
        12: .line 116
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 7
        13: .line 117
            aload 0 /* this */
            getfield com.oracle.truffle.tck.TruffleTestInvoker$TestStatement.rule:Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
            aload 5 /* prevEnv */
            putfield com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule.testEnv:Lcom/oracle/truffle/api/TruffleLanguage$Env;
        14: .line 118
            aload 4 /* context */
            invokevirtual org.graalvm.polyglot.Context.leave:()V
        15: .line 119
            aload 7
            athrow
        16: .line 117
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.tck.TruffleTestInvoker$TestStatement.rule:Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
            aload 5 /* prevEnv */
            putfield com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule.testEnv:Lcom/oracle/truffle/api/TruffleLanguage$Env;
        17: .line 118
            aload 4 /* context */
            invokevirtual org.graalvm.polyglot.Context.leave:()V
        end local 5 // com.oracle.truffle.api.TruffleLanguage$Env prevEnv
        18: .line 120
            aload 4 /* context */
            ifnull 27
            aload 4 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 27
      StackMap locals: com.oracle.truffle.tck.TruffleTestInvoker$TestStatement org.graalvm.polyglot.Context java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        19: astore 2
            aload 4 /* context */
            ifnull 20
            aload 4 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 4 // org.graalvm.polyglot.Context context
      StackMap locals:
      StackMap stack:
        20: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        21: astore 3
            aload 2
            ifnonnull 22
            aload 3
            astore 2
            goto 23
      StackMap locals:
      StackMap stack:
        22: aload 2
            aload 3
            if_acmpeq 23
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        23: aload 2
            athrow
      StackMap locals: com.oracle.truffle.tck.TruffleTestInvoker$TestStatement org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        24: astore 8
        25: .line 121
            aload 0 /* this */
            getfield com.oracle.truffle.tck.TruffleTestInvoker$TestStatement.rule:Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
            aload 1 /* prevContext */
            putfield com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule.context:Lorg/graalvm/polyglot/Context;
        26: .line 122
            aload 8
            athrow
        27: .line 121
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.tck.TruffleTestInvoker$TestStatement.rule:Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
            aload 1 /* prevContext */
            putfield com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule.context:Lorg/graalvm/polyglot/Context;
        28: .line 123
            return
        end local 1 // org.graalvm.polyglot.Context prevContext
        end local 0 // com.oracle.truffle.tck.TruffleTestInvoker$TestStatement this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   29     0         this  Lcom/oracle/truffle/tck/TruffleTestInvoker$TestStatement;
            1   29     1  prevContext  Lorg/graalvm/polyglot/Context;
            3   20     4      context  Lorg/graalvm/polyglot/Context;
            7   18     5      prevEnv  Lcom/oracle/truffle/api/TruffleLanguage$Env;
           11   12     6            t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           7     9      10  Class java.lang.Throwable
           7    12      12  any
           3    18      19  any
           2    21      21  any
           1    24      24  any
    Exceptions:
      throws java.lang.Throwable
}
SourceFile: "TruffleTestInvoker.java"
NestHost: com.oracle.truffle.tck.TruffleTestInvoker
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
  private TestStatement = com.oracle.truffle.tck.TruffleTestInvoker$TestStatement of com.oracle.truffle.tck.TruffleTestInvoker
  public final Builder = org.graalvm.polyglot.Context$Builder of org.graalvm.polyglot.Context