public class org.graalvm.tools.lsp.test.server.HoverTest extends org.graalvm.tools.lsp.test.server.TruffleLSPTest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.tools.lsp.test.server.HoverTest
  super_class: org.graalvm.tools.lsp.test.server.TruffleLSPTest
{
  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.HoverTest this
         0: .line 41
            aload 0 /* this */
            invokespecial org.graalvm.tools.lsp.test.server.TruffleLSPTest.<init>:()V
            return
        end local 0 // org.graalvm.tools.lsp.test.server.HoverTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/tools/lsp/test/server/HoverTest;

  public void hoverNoCoverageDataAvailable();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=3, args_size=1
        start local 0 // org.graalvm.tools.lsp.test.server.HoverTest this
         0: .line 45
            aload 0 /* this */
            invokevirtual org.graalvm.tools.lsp.test.server.HoverTest.createDummyFileUriForSL:()Ljava/net/URI;
            astore 1 /* uri */
        start local 1 // java.net.URI uri
         1: .line 46
            aload 0 /* this */
            getfield org.graalvm.tools.lsp.test.server.HoverTest.truffleAdapter:Lorg/graalvm/tools/lsp/server/TruffleAdapter;
            ldc "function main() {\n    abc();\n    x = abc();\n}\n\nfunction abc() {\n  obj = new();\n  obj.p = 1;\n  return obj;\n}\n"
            ldc "sl"
            aload 1 /* uri */
            invokevirtual org.graalvm.tools.lsp.server.TruffleAdapter.parse:(Ljava/lang/String;Ljava/lang/String;Ljava/net/URI;)Ljava/util/concurrent/Future;
            astore 2 /* futureOpen */
        start local 2 // java.util.concurrent.Future futureOpen
         2: .line 47
            aload 2 /* futureOpen */
            invokeinterface java.util.concurrent.Future.get:()Ljava/lang/Object;
            pop
         3: .line 49
            aload 0 /* this */
            aload 1 /* uri */
            iconst_1
            iconst_5
            iconst_1
            iconst_4
            invokestatic org.graalvm.tools.lsp.server.types.Position.create:(II)Lorg/graalvm/tools/lsp/server/types/Position;
            iconst_1
            bipush 7
            invokestatic org.graalvm.tools.lsp.server.types.Position.create:(II)Lorg/graalvm/tools/lsp/server/types/Position;
            invokestatic org.graalvm.tools.lsp.server.types.Range.create:(Lorg/graalvm/tools/lsp/server/types/Position;Lorg/graalvm/tools/lsp/server/types/Position;)Lorg/graalvm/tools/lsp/server/types/Range;
            invokevirtual org.graalvm.tools.lsp.test.server.HoverTest.checkHover:(Ljava/net/URI;IILorg/graalvm/tools/lsp/server/types/Range;)Lorg/graalvm/tools/lsp/server/types/Hover;
            pop
         4: .line 50
            aload 0 /* this */
            aload 1 /* uri */
            iconst_1
            bipush 8
            iconst_1
            iconst_4
            invokestatic org.graalvm.tools.lsp.server.types.Position.create:(II)Lorg/graalvm/tools/lsp/server/types/Position;
            iconst_1
            bipush 9
            invokestatic org.graalvm.tools.lsp.server.types.Position.create:(II)Lorg/graalvm/tools/lsp/server/types/Position;
            invokestatic org.graalvm.tools.lsp.server.types.Range.create:(Lorg/graalvm/tools/lsp/server/types/Position;Lorg/graalvm/tools/lsp/server/types/Position;)Lorg/graalvm/tools/lsp/server/types/Range;
            invokevirtual org.graalvm.tools.lsp.test.server.HoverTest.checkHover:(Ljava/net/URI;IILorg/graalvm/tools/lsp/server/types/Range;)Lorg/graalvm/tools/lsp/server/types/Hover;
            pop
         5: .line 51
            aload 0 /* this */
            aload 1 /* uri */
            iconst_0
            bipush 10
            iconst_0
            bipush 9
            invokestatic org.graalvm.tools.lsp.server.types.Position.create:(II)Lorg/graalvm/tools/lsp/server/types/Position;
            iconst_3
            iconst_1
            invokestatic org.graalvm.tools.lsp.server.types.Position.create:(II)Lorg/graalvm/tools/lsp/server/types/Position;
            invokestatic org.graalvm.tools.lsp.server.types.Range.create:(Lorg/graalvm/tools/lsp/server/types/Position;Lorg/graalvm/tools/lsp/server/types/Position;)Lorg/graalvm/tools/lsp/server/types/Range;
            invokevirtual org.graalvm.tools.lsp.test.server.HoverTest.checkHover:(Ljava/net/URI;IILorg/graalvm/tools/lsp/server/types/Range;)Lorg/graalvm/tools/lsp/server/types/Hover;
            pop
         6: .line 52
            return
        end local 2 // java.util.concurrent.Future futureOpen
        end local 1 // java.net.URI uri
        end local 0 // org.graalvm.tools.lsp.test.server.HoverTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0        this  Lorg/graalvm/tools/lsp/test/server/HoverTest;
            1    7     1         uri  Ljava/net/URI;
            2    7     2  futureOpen  Ljava/util/concurrent/Future<*>;
    Exceptions:
      throws java.lang.InterruptedException, java.util.concurrent.ExecutionException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void hoverWithCoverageDataAvailable();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=5, args_size=1
        start local 0 // org.graalvm.tools.lsp.test.server.HoverTest this
         0: .line 56
            aload 0 /* this */
            invokevirtual org.graalvm.tools.lsp.test.server.HoverTest.createDummyFileUriForSL:()Ljava/net/URI;
            astore 1 /* uri */
        start local 1 // java.net.URI uri
         1: .line 57
            aload 0 /* this */
            getfield org.graalvm.tools.lsp.test.server.HoverTest.truffleAdapter:Lorg/graalvm/tools/lsp/server/TruffleAdapter;
            ldc "function main() {\n    abc();\n    x = abc();\n}\n\nfunction abc() {\n  obj = new();\n  obj.p = 1;\n  return obj;\n}\n"
            ldc "sl"
            aload 1 /* uri */
            invokevirtual org.graalvm.tools.lsp.server.TruffleAdapter.parse:(Ljava/lang/String;Ljava/lang/String;Ljava/net/URI;)Ljava/util/concurrent/Future;
            astore 2 /* futureOpen */
        start local 2 // java.util.concurrent.Future futureOpen
         2: .line 58
            aload 2 /* futureOpen */
            invokeinterface java.util.concurrent.Future.get:()Ljava/lang/Object;
            pop
         3: .line 60
            aload 0 /* this */
            getfield org.graalvm.tools.lsp.test.server.HoverTest.truffleAdapter:Lorg/graalvm/tools/lsp/server/TruffleAdapter;
            aload 1 /* uri */
            invokevirtual org.graalvm.tools.lsp.server.TruffleAdapter.runCoverageAnalysis:(Ljava/net/URI;)Ljava/util/concurrent/Future;
            astore 3 /* futureCoverage */
        start local 3 // java.util.concurrent.Future futureCoverage
         4: .line 61
            aload 3 /* futureCoverage */
            invokeinterface java.util.concurrent.Future.get:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         5: .line 63
            aload 0 /* this */
            aload 1 /* uri */
            bipush 8
            bipush 10
            bipush 8
            bipush 9
            invokestatic org.graalvm.tools.lsp.server.types.Position.create:(II)Lorg/graalvm/tools/lsp/server/types/Position;
            bipush 8
            bipush 12
            invokestatic org.graalvm.tools.lsp.server.types.Position.create:(II)Lorg/graalvm/tools/lsp/server/types/Position;
            invokestatic org.graalvm.tools.lsp.server.types.Range.create:(Lorg/graalvm/tools/lsp/server/types/Position;Lorg/graalvm/tools/lsp/server/types/Position;)Lorg/graalvm/tools/lsp/server/types/Range;
            invokevirtual org.graalvm.tools.lsp.test.server.HoverTest.checkHover:(Ljava/net/URI;IILorg/graalvm/tools/lsp/server/types/Range;)Lorg/graalvm/tools/lsp/server/types/Hover;
            astore 4 /* hover */
        start local 4 // org.graalvm.tools.lsp.server.types.Hover hover
         6: .line 64
            aload 4 /* hover */
            invokevirtual org.graalvm.tools.lsp.server.types.Hover.getContents:()Ljava/lang/Object;
            instanceof java.util.List
            invokestatic org.junit.Assert.assertTrue:(Z)V
         7: .line 65
            ldc 3
            aload 4 /* hover */
            invokevirtual org.graalvm.tools.lsp.server.types.Hover.getContents:()Ljava/lang/Object;
            checkcast java.util.List
            invokeinterface java.util.List.size:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         8: .line 66
            aload 4 /* hover */
            invokevirtual org.graalvm.tools.lsp.server.types.Hover.getContents:()Ljava/lang/Object;
            checkcast java.util.List
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            instanceof org.graalvm.tools.lsp.server.types.MarkedString
            invokestatic org.junit.Assert.assertTrue:(Z)V
         9: .line 67
            ldc "obj"
            aload 4 /* hover */
            invokevirtual org.graalvm.tools.lsp.server.types.Hover.getContents:()Ljava/lang/Object;
            checkcast java.util.List
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.graalvm.tools.lsp.server.types.MarkedString
            invokevirtual org.graalvm.tools.lsp.server.types.MarkedString.getValue:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        10: .line 68
            ldc "Object"
            aload 4 /* hover */
            invokevirtual org.graalvm.tools.lsp.server.types.Hover.getContents:()Ljava/lang/Object;
            checkcast java.util.List
            iconst_1
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        11: .line 69
            ldc "meta-object: Object"
            aload 4 /* hover */
            invokevirtual org.graalvm.tools.lsp.server.types.Hover.getContents:()Ljava/lang/Object;
            checkcast java.util.List
            iconst_2
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        12: .line 70
            return
        end local 4 // org.graalvm.tools.lsp.server.types.Hover hover
        end local 3 // java.util.concurrent.Future futureCoverage
        end local 2 // java.util.concurrent.Future futureOpen
        end local 1 // java.net.URI uri
        end local 0 // org.graalvm.tools.lsp.test.server.HoverTest this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   13     0            this  Lorg/graalvm/tools/lsp/test/server/HoverTest;
            1   13     1             uri  Ljava/net/URI;
            2   13     2      futureOpen  Ljava/util/concurrent/Future<*>;
            4   13     3  futureCoverage  Ljava/util/concurrent/Future<Ljava/lang/Boolean;>;
            6   13     4           hover  Lorg/graalvm/tools/lsp/server/types/Hover;
    Exceptions:
      throws java.lang.InterruptedException, java.util.concurrent.ExecutionException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private org.graalvm.tools.lsp.server.types.Hover checkHover(java.net.URI, int, int, org.graalvm.tools.lsp.server.types.Range);
    descriptor: (Ljava/net/URI;IILorg/graalvm/tools/lsp/server/types/Range;)Lorg/graalvm/tools/lsp/server/types/Hover;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=7, args_size=5
        start local 0 // org.graalvm.tools.lsp.test.server.HoverTest this
        start local 1 // java.net.URI uri
        start local 2 // int line
        start local 3 // int column
        start local 4 // org.graalvm.tools.lsp.server.types.Range range
         0: .line 73
            aload 0 /* this */
            getfield org.graalvm.tools.lsp.test.server.HoverTest.truffleAdapter:Lorg/graalvm/tools/lsp/server/TruffleAdapter;
            aload 1 /* uri */
            iload 2 /* line */
            iload 3 /* column */
            invokevirtual org.graalvm.tools.lsp.server.TruffleAdapter.hover:(Ljava/net/URI;II)Ljava/util/concurrent/Future;
            astore 5 /* future */
        start local 5 // java.util.concurrent.Future future
         1: .line 74
            aload 5 /* future */
            invokeinterface java.util.concurrent.Future.get:()Ljava/lang/Object;
            checkcast org.graalvm.tools.lsp.server.types.Hover
            astore 6 /* hover */
        start local 6 // org.graalvm.tools.lsp.server.types.Hover hover
         2: .line 75
            aload 0 /* this */
            aload 4 /* range */
            aload 6 /* hover */
            invokevirtual org.graalvm.tools.lsp.server.types.Hover.getRange:()Lorg/graalvm/tools/lsp/server/types/Range;
            invokevirtual org.graalvm.tools.lsp.test.server.HoverTest.rangeCheck:(Lorg/graalvm/tools/lsp/server/types/Range;Lorg/graalvm/tools/lsp/server/types/Range;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         3: .line 76
            aload 6 /* hover */
            areturn
        end local 6 // org.graalvm.tools.lsp.server.types.Hover hover
        end local 5 // java.util.concurrent.Future future
        end local 4 // org.graalvm.tools.lsp.server.types.Range range
        end local 3 // int column
        end local 2 // int line
        end local 1 // java.net.URI uri
        end local 0 // org.graalvm.tools.lsp.test.server.HoverTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lorg/graalvm/tools/lsp/test/server/HoverTest;
            0    4     1     uri  Ljava/net/URI;
            0    4     2    line  I
            0    4     3  column  I
            0    4     4   range  Lorg/graalvm/tools/lsp/server/types/Range;
            1    4     5  future  Ljava/util/concurrent/Future<Lorg/graalvm/tools/lsp/server/types/Hover;>;
            2    4     6   hover  Lorg/graalvm/tools/lsp/server/types/Hover;
    Exceptions:
      throws java.lang.InterruptedException, java.util.concurrent.ExecutionException
    MethodParameters:
        Name  Flags
      uri     
      line    
      column  
      range   
}
SourceFile: "HoverTest.java"