public final class com.oracle.truffle.sl.runtime.SLContext
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.sl.runtime.SLContext
  super_class: java.lang.Object
{
  private final com.oracle.truffle.sl.SLLanguage language;
    descriptor: Lcom/oracle/truffle/sl/SLLanguage;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.api.TruffleLanguage$Env env;
    descriptor: Lcom/oracle/truffle/api/TruffleLanguage$Env;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.io.BufferedReader input;
    descriptor: Ljava/io/BufferedReader;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.io.PrintWriter output;
    descriptor: Ljava/io/PrintWriter;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.sl.runtime.SLFunctionRegistry functionRegistry;
    descriptor: Lcom/oracle/truffle/sl/runtime/SLFunctionRegistry;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.api.instrumentation.AllocationReporter allocationReporter;
    descriptor: Lcom/oracle/truffle/api/instrumentation/AllocationReporter;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(com.oracle.truffle.sl.SLLanguage, com.oracle.truffle.api.TruffleLanguage$Env, java.util.List<com.oracle.truffle.api.dsl.NodeFactory<? extends com.oracle.truffle.sl.builtins.SLBuiltinNode>>);
    descriptor: (Lcom/oracle/truffle/sl/SLLanguage;Lcom/oracle/truffle/api/TruffleLanguage$Env;Ljava/util/List;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // com.oracle.truffle.sl.runtime.SLContext this
        start local 1 // com.oracle.truffle.sl.SLLanguage language
        start local 2 // com.oracle.truffle.api.TruffleLanguage$Env env
        start local 3 // java.util.List externalBuiltins
         0: .line 97
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 98
            aload 0 /* this */
            aload 2 /* env */
            putfield com.oracle.truffle.sl.runtime.SLContext.env:Lcom/oracle/truffle/api/TruffleLanguage$Env;
         2: .line 99
            aload 0 /* this */
            new java.io.BufferedReader
            dup
            new java.io.InputStreamReader
            dup
            aload 2 /* env */
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.in:()Ljava/io/InputStream;
            invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;)V
            invokespecial java.io.BufferedReader.<init>:(Ljava/io/Reader;)V
            putfield com.oracle.truffle.sl.runtime.SLContext.input:Ljava/io/BufferedReader;
         3: .line 100
            aload 0 /* this */
            new java.io.PrintWriter
            dup
            aload 2 /* env */
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.out:()Ljava/io/OutputStream;
            iconst_1
            invokespecial java.io.PrintWriter.<init>:(Ljava/io/OutputStream;Z)V
            putfield com.oracle.truffle.sl.runtime.SLContext.output:Ljava/io/PrintWriter;
         4: .line 101
            aload 0 /* this */
            aload 1 /* language */
            putfield com.oracle.truffle.sl.runtime.SLContext.language:Lcom/oracle/truffle/sl/SLLanguage;
         5: .line 102
            aload 0 /* this */
            aload 2 /* env */
            ldc Lcom/oracle/truffle/api/instrumentation/AllocationReporter;
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.AllocationReporter
            putfield com.oracle.truffle.sl.runtime.SLContext.allocationReporter:Lcom/oracle/truffle/api/instrumentation/AllocationReporter;
         6: .line 103
            aload 0 /* this */
            new com.oracle.truffle.sl.runtime.SLFunctionRegistry
            dup
            aload 1 /* language */
            invokespecial com.oracle.truffle.sl.runtime.SLFunctionRegistry.<init>:(Lcom/oracle/truffle/sl/SLLanguage;)V
            putfield com.oracle.truffle.sl.runtime.SLContext.functionRegistry:Lcom/oracle/truffle/sl/runtime/SLFunctionRegistry;
         7: .line 104
            aload 0 /* this */
            invokevirtual com.oracle.truffle.sl.runtime.SLContext.installBuiltins:()V
         8: .line 105
            aload 3 /* externalBuiltins */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 11
      StackMap locals: com.oracle.truffle.sl.runtime.SLContext com.oracle.truffle.sl.SLLanguage com.oracle.truffle.api.TruffleLanguage$Env java.util.List top java.util.Iterator
      StackMap stack:
         9: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.dsl.NodeFactory
            astore 4 /* builtin */
        start local 4 // com.oracle.truffle.api.dsl.NodeFactory builtin
        10: .line 106
            aload 0 /* this */
            aload 4 /* builtin */
            invokevirtual com.oracle.truffle.sl.runtime.SLContext.installBuiltin:(Lcom/oracle/truffle/api/dsl/NodeFactory;)V
        end local 4 // com.oracle.truffle.api.dsl.NodeFactory builtin
        11: .line 105
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 9
        12: .line 108
            return
        end local 3 // java.util.List externalBuiltins
        end local 2 // com.oracle.truffle.api.TruffleLanguage$Env env
        end local 1 // com.oracle.truffle.sl.SLLanguage language
        end local 0 // com.oracle.truffle.sl.runtime.SLContext this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   13     0              this  Lcom/oracle/truffle/sl/runtime/SLContext;
            0   13     1          language  Lcom/oracle/truffle/sl/SLLanguage;
            0   13     2               env  Lcom/oracle/truffle/api/TruffleLanguage$Env;
            0   13     3  externalBuiltins  Ljava/util/List<Lcom/oracle/truffle/api/dsl/NodeFactory<+Lcom/oracle/truffle/sl/builtins/SLBuiltinNode;>;>;
           10   11     4           builtin  Lcom/oracle/truffle/api/dsl/NodeFactory<+Lcom/oracle/truffle/sl/builtins/SLBuiltinNode;>;
    Signature: (Lcom/oracle/truffle/sl/SLLanguage;Lcom/oracle/truffle/api/TruffleLanguage$Env;Ljava/util/List<Lcom/oracle/truffle/api/dsl/NodeFactory<+Lcom/oracle/truffle/sl/builtins/SLBuiltinNode;>;>;)V
    MethodParameters:
                  Name  Flags
      language          
      env               
      externalBuiltins  

  public com.oracle.truffle.api.TruffleLanguage$Env getEnv();
    descriptor: ()Lcom/oracle/truffle/api/TruffleLanguage$Env;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.sl.runtime.SLContext this
         0: .line 114
            aload 0 /* this */
            getfield com.oracle.truffle.sl.runtime.SLContext.env:Lcom/oracle/truffle/api/TruffleLanguage$Env;
            areturn
        end local 0 // com.oracle.truffle.sl.runtime.SLContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/sl/runtime/SLContext;

  public java.io.BufferedReader getInput();
    descriptor: ()Ljava/io/BufferedReader;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.sl.runtime.SLContext this
         0: .line 122
            aload 0 /* this */
            getfield com.oracle.truffle.sl.runtime.SLContext.input:Ljava/io/BufferedReader;
            areturn
        end local 0 // com.oracle.truffle.sl.runtime.SLContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/sl/runtime/SLContext;

  public java.io.PrintWriter getOutput();
    descriptor: ()Ljava/io/PrintWriter;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.sl.runtime.SLContext this
         0: .line 130
            aload 0 /* this */
            getfield com.oracle.truffle.sl.runtime.SLContext.output:Ljava/io/PrintWriter;
            areturn
        end local 0 // com.oracle.truffle.sl.runtime.SLContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/sl/runtime/SLContext;

  public com.oracle.truffle.sl.runtime.SLFunctionRegistry getFunctionRegistry();
    descriptor: ()Lcom/oracle/truffle/sl/runtime/SLFunctionRegistry;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.sl.runtime.SLContext this
         0: .line 137
            aload 0 /* this */
            getfield com.oracle.truffle.sl.runtime.SLContext.functionRegistry:Lcom/oracle/truffle/sl/runtime/SLFunctionRegistry;
            areturn
        end local 0 // com.oracle.truffle.sl.runtime.SLContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/sl/runtime/SLContext;

  private void installBuiltins();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.sl.runtime.SLContext this
         0: .line 145
            new java.lang.Error
            dup
            ldc "Unresolved compilation problems: \n\tSLReadlnBuiltinFactory cannot be resolved\n\tSLPrintlnBuiltinFactory cannot be resolved\n\tSLNanoTimeBuiltinFactory cannot be resolved\n\tSLDefineFunctionBuiltinFactory cannot be resolved\n\tSLStackTraceBuiltinFactory cannot be resolved\n\tSLHelloEqualsWorldBuiltinFactory cannot be resolved\n\tSLNewObjectBuiltinFactory cannot be resolved\n\tSLEvalBuiltinFactory cannot be resolved\n\tSLImportBuiltinFactory cannot be resolved\n\tSLGetSizeBuiltinFactory cannot be resolved\n\tSLHasSizeBuiltinFactory cannot be resolved\n\tSLIsExecutableBuiltinFactory cannot be resolved\n\tSLIsNullBuiltinFactory cannot be resolved\n\tSLWrapPrimitiveBuiltinFactory cannot be resolved\n\tSLTypeOfBuiltinFactory cannot be resolved\n\tSLIsInstanceBuiltinFactory cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.oracle.truffle.sl.runtime.SLContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/sl/runtime/SLContext;

  public void installBuiltin(com.oracle.truffle.api.dsl.NodeFactory<? extends com.oracle.truffle.sl.builtins.SLBuiltinNode>);
    descriptor: (Lcom/oracle/truffle/api/dsl/NodeFactory;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.oracle.truffle.sl.runtime.SLContext this
        start local 1 // com.oracle.truffle.api.dsl.NodeFactory factory
         0: .line 165
            aload 0 /* this */
            getfield com.oracle.truffle.sl.runtime.SLContext.language:Lcom/oracle/truffle/sl/SLLanguage;
            aload 1 /* factory */
            invokevirtual com.oracle.truffle.sl.SLLanguage.lookupBuiltin:(Lcom/oracle/truffle/api/dsl/NodeFactory;)Lcom/oracle/truffle/api/RootCallTarget;
            astore 2 /* target */
        start local 2 // com.oracle.truffle.api.RootCallTarget target
         1: .line 166
            aload 2 /* target */
            invokeinterface com.oracle.truffle.api.RootCallTarget.getRootNode:()Lcom/oracle/truffle/api/nodes/RootNode;
            invokevirtual com.oracle.truffle.api.nodes.RootNode.getName:()Ljava/lang/String;
            astore 3 /* rootName */
        start local 3 // java.lang.String rootName
         2: .line 167
            aload 0 /* this */
            invokevirtual com.oracle.truffle.sl.runtime.SLContext.getFunctionRegistry:()Lcom/oracle/truffle/sl/runtime/SLFunctionRegistry;
            aload 3 /* rootName */
            aload 2 /* target */
            invokevirtual com.oracle.truffle.sl.runtime.SLFunctionRegistry.register:(Ljava/lang/String;Lcom/oracle/truffle/api/RootCallTarget;)Lcom/oracle/truffle/sl/runtime/SLFunction;
            pop
         3: .line 168
            return
        end local 3 // java.lang.String rootName
        end local 2 // com.oracle.truffle.api.RootCallTarget target
        end local 1 // com.oracle.truffle.api.dsl.NodeFactory factory
        end local 0 // com.oracle.truffle.sl.runtime.SLContext this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lcom/oracle/truffle/sl/runtime/SLContext;
            0    4     1   factory  Lcom/oracle/truffle/api/dsl/NodeFactory<+Lcom/oracle/truffle/sl/builtins/SLBuiltinNode;>;
            1    4     2    target  Lcom/oracle/truffle/api/RootCallTarget;
            2    4     3  rootName  Ljava/lang/String;
    Signature: (Lcom/oracle/truffle/api/dsl/NodeFactory<+Lcom/oracle/truffle/sl/builtins/SLBuiltinNode;>;)V
    MethodParameters:
         Name  Flags
      factory  

  public com.oracle.truffle.api.instrumentation.AllocationReporter getAllocationReporter();
    descriptor: ()Lcom/oracle/truffle/api/instrumentation/AllocationReporter;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.sl.runtime.SLContext this
         0: .line 174
            aload 0 /* this */
            getfield com.oracle.truffle.sl.runtime.SLContext.allocationReporter:Lcom/oracle/truffle/api/instrumentation/AllocationReporter;
            areturn
        end local 0 // com.oracle.truffle.sl.runtime.SLContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/sl/runtime/SLContext;

  public static java.lang.Object fromForeignValue(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Object a
         0: .line 181
            aload 0 /* a */
            instanceof java.lang.Long
            ifne 1
            aload 0 /* a */
            instanceof com.oracle.truffle.sl.runtime.SLBigNumber
            ifne 1
            aload 0 /* a */
            instanceof java.lang.String
            ifne 1
            aload 0 /* a */
            instanceof java.lang.Boolean
            ifeq 2
         1: .line 182
      StackMap locals:
      StackMap stack:
            aload 0 /* a */
            areturn
         2: .line 183
      StackMap locals:
      StackMap stack:
            aload 0 /* a */
            instanceof java.lang.Character
            ifeq 4
         3: .line 184
            aload 0 /* a */
            checkcast java.lang.Character
            invokevirtual java.lang.Character.charValue:()C
            invokestatic com.oracle.truffle.sl.runtime.SLContext.fromForeignCharacter:(C)Ljava/lang/String;
            areturn
         4: .line 185
      StackMap locals:
      StackMap stack:
            aload 0 /* a */
            instanceof java.lang.Number
            ifeq 6
         5: .line 186
            aload 0 /* a */
            invokestatic com.oracle.truffle.sl.runtime.SLContext.fromForeignNumber:(Ljava/lang/Object;)J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            areturn
         6: .line 187
      StackMap locals:
      StackMap stack:
            aload 0 /* a */
            instanceof com.oracle.truffle.api.interop.TruffleObject
            ifeq 8
         7: .line 188
            aload 0 /* a */
            areturn
         8: .line 189
      StackMap locals:
      StackMap stack:
            aload 0 /* a */
            instanceof com.oracle.truffle.sl.runtime.SLContext
            ifeq 10
         9: .line 190
            aload 0 /* a */
            areturn
        10: .line 192
      StackMap locals:
      StackMap stack:
            ldc "Value is not a truffle value."
            invokestatic com.oracle.truffle.api.CompilerDirectives.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 0 // java.lang.Object a
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0     a  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      a     

  private static long fromForeignNumber(java.lang.Object);
    descriptor: (Ljava/lang/Object;)J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Object a
         0: .line 197
            aload 0 /* a */
            checkcast java.lang.Number
            invokevirtual java.lang.Number.longValue:()J
            lreturn
        end local 0 // java.lang.Object a
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     a  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
      Name  Flags
      a     

  private static java.lang.String fromForeignCharacter(char);
    descriptor: (C)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // char c
         0: .line 202
            iload 0 /* c */
            invokestatic java.lang.String.valueOf:(C)Ljava/lang/String;
            areturn
        end local 0 // char c
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     c  C
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
      Name  Flags
      c     

  public com.oracle.truffle.api.CallTarget parse(com.oracle.truffle.api.source.Source);
    descriptor: (Lcom/oracle/truffle/api/source/Source;)Lcom/oracle/truffle/api/CallTarget;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.sl.runtime.SLContext this
        start local 1 // com.oracle.truffle.api.source.Source source
         0: .line 206
            aload 0 /* this */
            getfield com.oracle.truffle.sl.runtime.SLContext.env:Lcom/oracle/truffle/api/TruffleLanguage$Env;
            aload 1 /* source */
            iconst_0
            anewarray java.lang.String
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.parsePublic:(Lcom/oracle/truffle/api/source/Source;[Ljava/lang/String;)Lcom/oracle/truffle/api/CallTarget;
            areturn
        end local 1 // com.oracle.truffle.api.source.Source source
        end local 0 // com.oracle.truffle.sl.runtime.SLContext this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/oracle/truffle/sl/runtime/SLContext;
            0    1     1  source  Lcom/oracle/truffle/api/source/Source;
    MethodParameters:
        Name  Flags
      source  

  public com.oracle.truffle.api.interop.TruffleObject getPolyglotBindings();
    descriptor: ()Lcom/oracle/truffle/api/interop/TruffleObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.sl.runtime.SLContext this
         0: .line 214
            aload 0 /* this */
            getfield com.oracle.truffle.sl.runtime.SLContext.env:Lcom/oracle/truffle/api/TruffleLanguage$Env;
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.getPolyglotBindings:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.interop.TruffleObject
            areturn
        end local 0 // com.oracle.truffle.sl.runtime.SLContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/sl/runtime/SLContext;

  public static com.oracle.truffle.sl.runtime.SLContext getCurrent();
    descriptor: ()Lcom/oracle/truffle/sl/runtime/SLContext;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 218
            invokestatic com.oracle.truffle.sl.SLLanguage.getCurrentContext:()Lcom/oracle/truffle/sl/runtime/SLContext;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "SLContext.java"
InnerClasses:
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  public final Env = com.oracle.truffle.api.TruffleLanguage$Env of com.oracle.truffle.api.TruffleLanguage