public abstract class org.graalvm.tools.lsp.test.server.TruffleLSPTest
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.graalvm.tools.lsp.test.server.TruffleLSPTest
  super_class: java.lang.Object
{
  protected static final java.lang.String PROG_OBJ;
    descriptor: Ljava/lang/String;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: "function main() {\n    abc();\n    x = abc();\n}\n\nfunction abc() {\n  obj = new();\n  obj.p = 1;\n  return obj;\n}\n"

  protected static final java.lang.String PROG_OBJ_NOT_CALLED;
    descriptor: Ljava/lang/String;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: "function main() {\n    x = abc();\n    return x;\n}\n\nfunction abc() {\n  obj = new();\n  obj.p = 1;\n  return obj;\n}\n\nfunction notCalled() {\n  abc();\n  return abc();\n}\n"

  protected org.graalvm.polyglot.Engine engine;
    descriptor: Lorg/graalvm/polyglot/Engine;
    flags: (0x0004) ACC_PROTECTED

  protected org.graalvm.tools.lsp.server.TruffleAdapter truffleAdapter;
    descriptor: Lorg/graalvm/tools/lsp/server/TruffleAdapter;
    flags: (0x0004) ACC_PROTECTED

  protected org.graalvm.polyglot.Context context;
    descriptor: Lorg/graalvm/polyglot/Context;
    flags: (0x0004) ACC_PROTECTED

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.tools.lsp.test.server.TruffleLSPTest this
         0: .line 50
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.graalvm.tools.lsp.test.server.TruffleLSPTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/tools/lsp/test/server/TruffleLSPTest;

  public void setup();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // org.graalvm.tools.lsp.test.server.TruffleLSPTest this
         0: .line 87
            aload 0 /* this */
            invokestatic org.graalvm.polyglot.Engine.newBuilder:()Lorg/graalvm/polyglot/Engine$Builder;
            iconst_1
            invokevirtual org.graalvm.polyglot.Engine$Builder.allowExperimentalOptions:(Z)Lorg/graalvm/polyglot/Engine$Builder;
            invokevirtual org.graalvm.polyglot.Engine$Builder.build:()Lorg/graalvm/polyglot/Engine;
            putfield org.graalvm.tools.lsp.test.server.TruffleLSPTest.engine:Lorg/graalvm/polyglot/Engine;
         1: .line 88
            aload 0 /* this */
            getfield org.graalvm.tools.lsp.test.server.TruffleLSPTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            ldc "lsp"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            astore 1 /* instrument */
        start local 1 // org.graalvm.polyglot.Instrument instrument
         2: .line 89
            aload 1 /* instrument */
            ldc Lorg/graalvm/tools/lsp/instrument/EnvironmentProvider;
            invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast org.graalvm.tools.lsp.instrument.EnvironmentProvider
            astore 2 /* envProvider */
        start local 2 // org.graalvm.tools.lsp.instrument.EnvironmentProvider envProvider
         3: .line 91
            aload 0 /* this */
            new org.graalvm.tools.lsp.server.TruffleAdapter
            dup
            aload 2 /* envProvider */
            invokeinterface org.graalvm.tools.lsp.instrument.EnvironmentProvider.getEnvironment:()Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            iconst_1
            invokespecial org.graalvm.tools.lsp.server.TruffleAdapter.<init>:(Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;Z)V
            putfield org.graalvm.tools.lsp.test.server.TruffleLSPTest.truffleAdapter:Lorg/graalvm/tools/lsp/server/TruffleAdapter;
         4: .line 93
            iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            astore 3 /* contextBuilder */
        start local 3 // org.graalvm.polyglot.Context$Builder contextBuilder
         5: .line 94
            aload 3 /* contextBuilder */
            iconst_1
            invokevirtual org.graalvm.polyglot.Context$Builder.allowAllAccess:(Z)Lorg/graalvm/polyglot/Context$Builder;
            pop
         6: .line 95
            aload 3 /* contextBuilder */
            aload 0 /* this */
            getfield org.graalvm.tools.lsp.test.server.TruffleLSPTest.truffleAdapter:Lorg/graalvm/tools/lsp/server/TruffleAdapter;
            invokestatic org.graalvm.tools.lsp.server.LSPFileSystem.newReadOnlyFileSystem:(Lorg/graalvm/tools/lsp/server/VirtualLanguageServerFileProvider;)Lorg/graalvm/polyglot/io/FileSystem;
            invokevirtual org.graalvm.polyglot.Context$Builder.fileSystem:(Lorg/graalvm/polyglot/io/FileSystem;)Lorg/graalvm/polyglot/Context$Builder;
            pop
         7: .line 96
            aload 3 /* contextBuilder */
            aload 0 /* this */
            getfield org.graalvm.tools.lsp.test.server.TruffleLSPTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Context$Builder.engine:(Lorg/graalvm/polyglot/Engine;)Lorg/graalvm/polyglot/Context$Builder;
            pop
         8: .line 97
            aload 0 /* this */
            aload 3 /* contextBuilder */
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
            putfield org.graalvm.tools.lsp.test.server.TruffleLSPTest.context:Lorg/graalvm/polyglot/Context;
         9: .line 98
            aload 0 /* this */
            getfield org.graalvm.tools.lsp.test.server.TruffleLSPTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.enter:()V
        10: .line 100
            new org.graalvm.tools.lsp.test.server.TruffleLSPTest$1
            dup
            aload 0 /* this */
            aload 3 /* contextBuilder */
            invokespecial org.graalvm.tools.lsp.test.server.TruffleLSPTest$1.<init>:(Lorg/graalvm/tools/lsp/test/server/TruffleLSPTest;Lorg/graalvm/polyglot/Context$Builder;)V
            astore 4 /* executorWrapper */
        start local 4 // org.graalvm.tools.lsp.server.ContextAwareExecutor executorWrapper
        11: .line 164
            aload 0 /* this */
            getfield org.graalvm.tools.lsp.test.server.TruffleLSPTest.truffleAdapter:Lorg/graalvm/tools/lsp/server/TruffleAdapter;
            aload 2 /* envProvider */
            invokeinterface org.graalvm.tools.lsp.instrument.EnvironmentProvider.getEnvironment:()Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            aload 4 /* executorWrapper */
            invokevirtual org.graalvm.tools.lsp.server.TruffleAdapter.register:(Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;Lorg/graalvm/tools/lsp/server/ContextAwareExecutor;)V
        12: .line 165
            return
        end local 4 // org.graalvm.tools.lsp.server.ContextAwareExecutor executorWrapper
        end local 3 // org.graalvm.polyglot.Context$Builder contextBuilder
        end local 2 // org.graalvm.tools.lsp.instrument.EnvironmentProvider envProvider
        end local 1 // org.graalvm.polyglot.Instrument instrument
        end local 0 // org.graalvm.tools.lsp.test.server.TruffleLSPTest this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   13     0             this  Lorg/graalvm/tools/lsp/test/server/TruffleLSPTest;
            2   13     1       instrument  Lorg/graalvm/polyglot/Instrument;
            3   13     2      envProvider  Lorg/graalvm/tools/lsp/instrument/EnvironmentProvider;
            5   13     3   contextBuilder  Lorg/graalvm/polyglot/Context$Builder;
           11   13     4  executorWrapper  Lorg/graalvm/tools/lsp/server/ContextAwareExecutor;
    RuntimeVisibleAnnotations: 
      org.junit.Before()

  public void tearDown();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.tools.lsp.test.server.TruffleLSPTest this
         0: .line 169
            aload 0 /* this */
            getfield org.graalvm.tools.lsp.test.server.TruffleLSPTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.leave:()V
         1: .line 170
            aload 0 /* this */
            getfield org.graalvm.tools.lsp.test.server.TruffleLSPTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.close:()V
         2: .line 171
            return
        end local 0 // org.graalvm.tools.lsp.test.server.TruffleLSPTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/tools/lsp/test/server/TruffleLSPTest;
    RuntimeVisibleAnnotations: 
      org.junit.After()

  public java.net.URI createDummyFileUriForSL();
    descriptor: ()Ljava/net/URI;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.graalvm.tools.lsp.test.server.TruffleLSPTest this
         0: .line 175
            ldc "truffle-lsp-test-file-"
            ldc ".sl"
            invokestatic java.io.File.createTempFile:(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;
            astore 1 /* dummy */
        start local 1 // java.io.File dummy
         1: .line 176
            aload 1 /* dummy */
            invokevirtual java.io.File.deleteOnExit:()V
         2: .line 177
            aload 1 /* dummy */
            invokevirtual java.io.File.getCanonicalFile:()Ljava/io/File;
            invokevirtual java.io.File.toPath:()Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.toUri:()Ljava/net/URI;
         3: areturn
        end local 1 // java.io.File dummy
         4: .line 178
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 1 /* e */
        start local 1 // java.io.IOException e
         5: .line 179
            new java.lang.RuntimeException
            dup
            aload 1 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.io.IOException e
        end local 0 // org.graalvm.tools.lsp.test.server.TruffleLSPTest this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lorg/graalvm/tools/lsp/test/server/TruffleLSPTest;
            1    4     1  dummy  Ljava/io/File;
            5    6     1      e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     3       4  Class java.io.IOException

  protected org.graalvm.tools.lsp.exceptions.DiagnosticsNotification getDiagnosticsNotification(java.util.concurrent.ExecutionException);
    descriptor: (Ljava/util/concurrent/ExecutionException;)Lorg/graalvm/tools/lsp/exceptions/DiagnosticsNotification;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.graalvm.tools.lsp.test.server.TruffleLSPTest this
        start local 1 // java.util.concurrent.ExecutionException e
         0: .line 184
            aload 1 /* e */
            invokevirtual java.util.concurrent.ExecutionException.getCause:()Ljava/lang/Throwable;
            instanceof org.graalvm.tools.lsp.exceptions.DiagnosticsNotification
            ifeq 2
         1: .line 185
            aload 1 /* e */
            invokevirtual java.util.concurrent.ExecutionException.getCause:()Ljava/lang/Throwable;
            checkcast org.graalvm.tools.lsp.exceptions.DiagnosticsNotification
            areturn
         2: .line 187
      StackMap locals:
      StackMap stack:
            new java.lang.RuntimeException
            dup
            aload 1 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.util.concurrent.ExecutionException e
        end local 0 // org.graalvm.tools.lsp.test.server.TruffleLSPTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/tools/lsp/test/server/TruffleLSPTest;
            0    3     1     e  Ljava/util/concurrent/ExecutionException;
    MethodParameters:
      Name  Flags
      e     

  protected boolean rangeCheck(org.graalvm.tools.lsp.server.types.Range, org.graalvm.tools.lsp.server.types.Range);
    descriptor: (Lorg/graalvm/tools/lsp/server/types/Range;Lorg/graalvm/tools/lsp/server/types/Range;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // org.graalvm.tools.lsp.test.server.TruffleLSPTest this
        start local 1 // org.graalvm.tools.lsp.server.types.Range orig
        start local 2 // org.graalvm.tools.lsp.server.types.Range range
         0: .line 192
            aload 0 /* this */
            aload 1 /* orig */
            invokevirtual org.graalvm.tools.lsp.server.types.Range.getStart:()Lorg/graalvm/tools/lsp/server/types/Position;
            invokevirtual org.graalvm.tools.lsp.server.types.Position.getLine:()I
            aload 1 /* orig */
            invokevirtual org.graalvm.tools.lsp.server.types.Range.getStart:()Lorg/graalvm/tools/lsp/server/types/Position;
            invokevirtual org.graalvm.tools.lsp.server.types.Position.getCharacter:()I
            aload 1 /* orig */
            invokevirtual org.graalvm.tools.lsp.server.types.Range.getEnd:()Lorg/graalvm/tools/lsp/server/types/Position;
            invokevirtual org.graalvm.tools.lsp.server.types.Position.getLine:()I
            aload 1 /* orig */
            invokevirtual org.graalvm.tools.lsp.server.types.Range.getEnd:()Lorg/graalvm/tools/lsp/server/types/Position;
            invokevirtual org.graalvm.tools.lsp.server.types.Position.getCharacter:()I
            aload 2 /* range */
            invokevirtual org.graalvm.tools.lsp.test.server.TruffleLSPTest.rangeCheck:(IIIILorg/graalvm/tools/lsp/server/types/Range;)Z
            ireturn
        end local 2 // org.graalvm.tools.lsp.server.types.Range range
        end local 1 // org.graalvm.tools.lsp.server.types.Range orig
        end local 0 // org.graalvm.tools.lsp.test.server.TruffleLSPTest this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/graalvm/tools/lsp/test/server/TruffleLSPTest;
            0    1     1   orig  Lorg/graalvm/tools/lsp/server/types/Range;
            0    1     2  range  Lorg/graalvm/tools/lsp/server/types/Range;
    MethodParameters:
       Name  Flags
      orig   
      range  

  protected boolean rangeCheck(int, int, int, int, org.graalvm.tools.lsp.server.types.Range);
    descriptor: (IIIILorg/graalvm/tools/lsp/server/types/Range;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=6, args_size=6
        start local 0 // org.graalvm.tools.lsp.test.server.TruffleLSPTest this
        start local 1 // int startLine
        start local 2 // int startColumn
        start local 3 // int endLine
        start local 4 // int endColumn
        start local 5 // org.graalvm.tools.lsp.server.types.Range range
         0: .line 196
            iload 1 /* startLine */
            aload 5 /* range */
            invokevirtual org.graalvm.tools.lsp.server.types.Range.getStart:()Lorg/graalvm/tools/lsp/server/types/Position;
            invokevirtual org.graalvm.tools.lsp.server.types.Position.getLine:()I
            if_icmpne 1
            iload 2 /* startColumn */
            aload 5 /* range */
            invokevirtual org.graalvm.tools.lsp.server.types.Range.getStart:()Lorg/graalvm/tools/lsp/server/types/Position;
            invokevirtual org.graalvm.tools.lsp.server.types.Position.getCharacter:()I
            if_icmpne 1
            iload 3 /* endLine */
            aload 5 /* range */
            invokevirtual org.graalvm.tools.lsp.server.types.Range.getEnd:()Lorg/graalvm/tools/lsp/server/types/Position;
            invokevirtual org.graalvm.tools.lsp.server.types.Position.getLine:()I
            if_icmpne 1
            iload 4 /* endColumn */
            aload 5 /* range */
            invokevirtual org.graalvm.tools.lsp.server.types.Range.getEnd:()Lorg/graalvm/tools/lsp/server/types/Position;
            invokevirtual org.graalvm.tools.lsp.server.types.Position.getCharacter:()I
            if_icmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 5 // org.graalvm.tools.lsp.server.types.Range range
        end local 4 // int endColumn
        end local 3 // int endLine
        end local 2 // int startColumn
        end local 1 // int startLine
        end local 0 // org.graalvm.tools.lsp.test.server.TruffleLSPTest this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lorg/graalvm/tools/lsp/test/server/TruffleLSPTest;
            0    2     1    startLine  I
            0    2     2  startColumn  I
            0    2     3      endLine  I
            0    2     4    endColumn  I
            0    2     5        range  Lorg/graalvm/tools/lsp/server/types/Range;
    MethodParameters:
             Name  Flags
      startLine    
      startColumn  
      endLine      
      endColumn    
      range        
}
SourceFile: "TruffleLSPTest.java"
NestMembers:
  org.graalvm.tools.lsp.test.server.TruffleLSPTest$1
InnerClasses:
  public final Env = com.oracle.truffle.api.instrumentation.TruffleInstrument$Env of com.oracle.truffle.api.instrumentation.TruffleInstrument
  public final Builder = org.graalvm.polyglot.Context$Builder of org.graalvm.polyglot.Context
  public final Builder = org.graalvm.polyglot.Engine$Builder of org.graalvm.polyglot.Engine
  org.graalvm.tools.lsp.test.server.TruffleLSPTest$1