public final class com.oracle.truffle.tools.dap.server.StackFramesHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.tools.dap.server.StackFramesHandler
  super_class: java.lang.Object
{
  private final com.oracle.truffle.tools.dap.server.ExecutionContext context;
    descriptor: Lcom/oracle/truffle/tools/dap/server/ExecutionContext;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.api.debug.DebuggerSession debuggerSession;
    descriptor: Lcom/oracle/truffle/api/debug/DebuggerSession;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(com.oracle.truffle.tools.dap.server.ExecutionContext, com.oracle.truffle.api.debug.DebuggerSession);
    descriptor: (Lcom/oracle/truffle/tools/dap/server/ExecutionContext;Lcom/oracle/truffle/api/debug/DebuggerSession;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.tools.dap.server.StackFramesHandler this
        start local 1 // com.oracle.truffle.tools.dap.server.ExecutionContext context
        start local 2 // com.oracle.truffle.api.debug.DebuggerSession debuggerSession
         0: .line 48
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 49
            aload 0 /* this */
            aload 1 /* context */
            putfield com.oracle.truffle.tools.dap.server.StackFramesHandler.context:Lcom/oracle/truffle/tools/dap/server/ExecutionContext;
         2: .line 50
            aload 0 /* this */
            aload 2 /* debuggerSession */
            putfield com.oracle.truffle.tools.dap.server.StackFramesHandler.debuggerSession:Lcom/oracle/truffle/api/debug/DebuggerSession;
         3: .line 51
            return
        end local 2 // com.oracle.truffle.api.debug.DebuggerSession debuggerSession
        end local 1 // com.oracle.truffle.tools.dap.server.ExecutionContext context
        end local 0 // com.oracle.truffle.tools.dap.server.StackFramesHandler this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    4     0             this  Lcom/oracle/truffle/tools/dap/server/StackFramesHandler;
            0    4     1          context  Lcom/oracle/truffle/tools/dap/server/ExecutionContext;
            0    4     2  debuggerSession  Lcom/oracle/truffle/api/debug/DebuggerSession;
    MethodParameters:
                 Name  Flags
      context          
      debuggerSession  

  public java.util.List<com.oracle.truffle.tools.dap.types.StackFrame> getStackTrace(com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo);
    descriptor: (Lcom/oracle/truffle/tools/dap/server/ThreadsHandler$SuspendedThreadInfo;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=10, args_size=2
        start local 0 // com.oracle.truffle.tools.dap.server.StackFramesHandler this
        start local 1 // com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo info
         0: .line 54
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* sfs */
        start local 2 // java.util.List sfs
         1: .line 55
            iconst_1
            istore 3 /* top */
        start local 3 // boolean top
         2: .line 56
            aload 1 /* info */
            invokevirtual com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo.getSuspendedEvent:()Lcom/oracle/truffle/api/debug/SuspendedEvent;
            invokevirtual com.oracle.truffle.api.debug.SuspendedEvent.getStackFrames:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 5
            goto 34
      StackMap locals: com.oracle.truffle.tools.dap.server.StackFramesHandler com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo java.util.List int top java.util.Iterator
      StackMap stack:
         3: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.debug.DebugStackFrame
            astore 4 /* frame */
        start local 4 // com.oracle.truffle.api.debug.DebugStackFrame frame
         4: .line 57
            aload 4 /* frame */
            invokevirtual com.oracle.truffle.api.debug.DebugStackFrame.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            astore 6 /* sourceSection */
        start local 6 // com.oracle.truffle.api.source.SourceSection sourceSection
         5: .line 58
            aload 6 /* sourceSection */
            ifnull 34
            aload 6 /* sourceSection */
            invokevirtual com.oracle.truffle.api.source.SourceSection.isAvailable:()Z
            ifne 7
         6: .line 59
            goto 34
         7: .line 61
      StackMap locals: com.oracle.truffle.tools.dap.server.StackFramesHandler com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo java.util.List int com.oracle.truffle.api.debug.DebugStackFrame java.util.Iterator com.oracle.truffle.api.source.SourceSection
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.tools.dap.server.StackFramesHandler.context:Lcom/oracle/truffle/tools/dap/server/ExecutionContext;
            invokevirtual com.oracle.truffle.tools.dap.server.ExecutionContext.isInspectInternal:()Z
            ifne 9
            aload 4 /* frame */
            invokevirtual com.oracle.truffle.api.debug.DebugStackFrame.isInternal:()Z
            ifeq 9
         8: .line 62
            goto 34
         9: .line 64
      StackMap locals:
      StackMap stack:
            aload 6 /* sourceSection */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getSource:()Lcom/oracle/truffle/api/source/Source;
            astore 7 /* source */
        start local 7 // com.oracle.truffle.api.source.Source source
        10: .line 65
            aload 0 /* this */
            getfield com.oracle.truffle.tools.dap.server.StackFramesHandler.context:Lcom/oracle/truffle/tools/dap/server/ExecutionContext;
            invokevirtual com.oracle.truffle.tools.dap.server.ExecutionContext.isInspectInternal:()Z
            ifne 12
            aload 7 /* source */
            invokevirtual com.oracle.truffle.api.source.Source.isInternal:()Z
            ifeq 12
        11: .line 67
            goto 34
        12: .line 69
      StackMap locals: com.oracle.truffle.api.source.Source
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.tools.dap.server.StackFramesHandler.context:Lcom/oracle/truffle/tools/dap/server/ExecutionContext;
            invokevirtual com.oracle.truffle.tools.dap.server.ExecutionContext.getLoadedSourcesHandler:()Lcom/oracle/truffle/tools/dap/server/LoadedSourcesHandler;
            aload 7 /* source */
            invokevirtual com.oracle.truffle.tools.dap.server.LoadedSourcesHandler.assureLoaded:(Lcom/oracle/truffle/api/source/Source;)I
            pop
        13: .line 70
            getstatic com.oracle.truffle.api.debug.SuspendAnchor.BEFORE:Lcom/oracle/truffle/api/debug/SuspendAnchor;
            astore 8 /* anchor */
        start local 8 // com.oracle.truffle.api.debug.SuspendAnchor anchor
        14: .line 71
            aconst_null
            astore 9 /* returnValue */
        start local 9 // com.oracle.truffle.api.debug.DebugValue returnValue
        15: .line 72
            iload 3 /* top */
            ifeq 19
        16: .line 73
            aload 1 /* info */
            invokevirtual com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo.getSuspendedEvent:()Lcom/oracle/truffle/api/debug/SuspendedEvent;
            invokevirtual com.oracle.truffle.api.debug.SuspendedEvent.getSuspendAnchor:()Lcom/oracle/truffle/api/debug/SuspendAnchor;
            astore 8 /* anchor */
        17: .line 74
            aload 1 /* info */
            invokevirtual com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo.getSuspendedEvent:()Lcom/oracle/truffle/api/debug/SuspendedEvent;
            getstatic com.oracle.truffle.api.debug.SourceElement.ROOT:Lcom/oracle/truffle/api/debug/SourceElement;
            invokevirtual com.oracle.truffle.api.debug.SuspendedEvent.hasSourceElement:(Lcom/oracle/truffle/api/debug/SourceElement;)Z
            ifeq 19
        18: .line 77
            aload 1 /* info */
            invokevirtual com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo.getSuspendedEvent:()Lcom/oracle/truffle/api/debug/SuspendedEvent;
            invokevirtual com.oracle.truffle.api.debug.SuspendedEvent.getReturnValue:()Lcom/oracle/truffle/api/debug/DebugValue;
            astore 9 /* returnValue */
        19: .line 80
      StackMap locals: com.oracle.truffle.api.debug.SuspendAnchor com.oracle.truffle.api.debug.DebugValue
      StackMap stack:
            aload 8 /* anchor */
            getstatic com.oracle.truffle.api.debug.SuspendAnchor.BEFORE:Lcom/oracle/truffle/api/debug/SuspendAnchor;
            if_acmpne 27
        20: .line 81
            aload 2 /* sfs */
            aload 1 /* info */
            new com.oracle.truffle.tools.dap.server.StackFramesHandler$FrameWrapper
            dup
            aload 4 /* frame */
            aload 9 /* returnValue */
            invokespecial com.oracle.truffle.tools.dap.server.StackFramesHandler$FrameWrapper.<init>:(Lcom/oracle/truffle/api/debug/DebugStackFrame;Lcom/oracle/truffle/api/debug/DebugValue;)V
            invokevirtual com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo.getId:(Ljava/lang/Object;)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 4 /* frame */
            invokevirtual com.oracle.truffle.api.debug.DebugStackFrame.getName:()Ljava/lang/String;
        21: .line 82
            aload 0 /* this */
            getfield com.oracle.truffle.tools.dap.server.StackFramesHandler.context:Lcom/oracle/truffle/tools/dap/server/ExecutionContext;
            aload 6 /* sourceSection */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getStartLine:()I
            invokevirtual com.oracle.truffle.tools.dap.server.ExecutionContext.debuggerToClientLine:(I)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 0 /* this */
            getfield com.oracle.truffle.tools.dap.server.StackFramesHandler.context:Lcom/oracle/truffle/tools/dap/server/ExecutionContext;
            aload 6 /* sourceSection */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getStartColumn:()I
            invokevirtual com.oracle.truffle.tools.dap.server.ExecutionContext.debuggerToClientColumn:(I)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
        22: .line 81
            invokestatic com.oracle.truffle.tools.dap.types.StackFrame.create:(Ljava/lang/Integer;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;)Lcom/oracle/truffle/tools/dap/types/StackFrame;
        23: .line 83
            aload 0 /* this */
            getfield com.oracle.truffle.tools.dap.server.StackFramesHandler.context:Lcom/oracle/truffle/tools/dap/server/ExecutionContext;
            invokevirtual com.oracle.truffle.tools.dap.server.ExecutionContext.getLoadedSourcesHandler:()Lcom/oracle/truffle/tools/dap/server/LoadedSourcesHandler;
            aload 7 /* source */
            invokevirtual com.oracle.truffle.tools.dap.server.LoadedSourcesHandler.from:(Lcom/oracle/truffle/api/source/Source;)Lcom/oracle/truffle/tools/dap/types/Source;
        24: .line 82
            invokevirtual com.oracle.truffle.tools.dap.types.StackFrame.setSource:(Lcom/oracle/truffle/tools/dap/types/Source;)Lcom/oracle/truffle/tools/dap/types/StackFrame;
        25: .line 81
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        26: .line 84
            goto 33
        27: .line 85
      StackMap locals:
      StackMap stack:
            aload 2 /* sfs */
            aload 1 /* info */
            new com.oracle.truffle.tools.dap.server.StackFramesHandler$FrameWrapper
            dup
            aload 4 /* frame */
            aload 9 /* returnValue */
            invokespecial com.oracle.truffle.tools.dap.server.StackFramesHandler$FrameWrapper.<init>:(Lcom/oracle/truffle/api/debug/DebugStackFrame;Lcom/oracle/truffle/api/debug/DebugValue;)V
            invokevirtual com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo.getId:(Ljava/lang/Object;)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 4 /* frame */
            invokevirtual com.oracle.truffle.api.debug.DebugStackFrame.getName:()Ljava/lang/String;
        28: .line 86
            aload 0 /* this */
            getfield com.oracle.truffle.tools.dap.server.StackFramesHandler.context:Lcom/oracle/truffle/tools/dap/server/ExecutionContext;
            aload 6 /* sourceSection */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getEndLine:()I
            invokevirtual com.oracle.truffle.tools.dap.server.ExecutionContext.debuggerToClientLine:(I)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 0 /* this */
            getfield com.oracle.truffle.tools.dap.server.StackFramesHandler.context:Lcom/oracle/truffle/tools/dap/server/ExecutionContext;
            aload 6 /* sourceSection */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getEndColumn:()I
            invokevirtual com.oracle.truffle.tools.dap.server.ExecutionContext.debuggerToClientColumn:(I)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
        29: .line 85
            invokestatic com.oracle.truffle.tools.dap.types.StackFrame.create:(Ljava/lang/Integer;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;)Lcom/oracle/truffle/tools/dap/types/StackFrame;
        30: .line 87
            aload 0 /* this */
            getfield com.oracle.truffle.tools.dap.server.StackFramesHandler.context:Lcom/oracle/truffle/tools/dap/server/ExecutionContext;
            invokevirtual com.oracle.truffle.tools.dap.server.ExecutionContext.getLoadedSourcesHandler:()Lcom/oracle/truffle/tools/dap/server/LoadedSourcesHandler;
            aload 7 /* source */
            invokevirtual com.oracle.truffle.tools.dap.server.LoadedSourcesHandler.from:(Lcom/oracle/truffle/api/source/Source;)Lcom/oracle/truffle/tools/dap/types/Source;
        31: .line 86
            invokevirtual com.oracle.truffle.tools.dap.types.StackFrame.setSource:(Lcom/oracle/truffle/tools/dap/types/Source;)Lcom/oracle/truffle/tools/dap/types/StackFrame;
        32: .line 85
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        33: .line 89
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* top */
        end local 9 // com.oracle.truffle.api.debug.DebugValue returnValue
        end local 8 // com.oracle.truffle.api.debug.SuspendAnchor anchor
        end local 7 // com.oracle.truffle.api.source.Source source
        end local 6 // com.oracle.truffle.api.source.SourceSection sourceSection
        end local 4 // com.oracle.truffle.api.debug.DebugStackFrame frame
        34: .line 56
      StackMap locals: com.oracle.truffle.tools.dap.server.StackFramesHandler com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo java.util.List int top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        35: .line 91
            aload 2 /* sfs */
            areturn
        end local 3 // boolean top
        end local 2 // java.util.List sfs
        end local 1 // com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo info
        end local 0 // com.oracle.truffle.tools.dap.server.StackFramesHandler this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   36     0           this  Lcom/oracle/truffle/tools/dap/server/StackFramesHandler;
            0   36     1           info  Lcom/oracle/truffle/tools/dap/server/ThreadsHandler$SuspendedThreadInfo;
            1   36     2            sfs  Ljava/util/List<Lcom/oracle/truffle/tools/dap/types/StackFrame;>;
            2   36     3            top  Z
            4   34     4          frame  Lcom/oracle/truffle/api/debug/DebugStackFrame;
            5   34     6  sourceSection  Lcom/oracle/truffle/api/source/SourceSection;
           10   34     7         source  Lcom/oracle/truffle/api/source/Source;
           14   34     8         anchor  Lcom/oracle/truffle/api/debug/SuspendAnchor;
           15   34     9    returnValue  Lcom/oracle/truffle/api/debug/DebugValue;
    Signature: (Lcom/oracle/truffle/tools/dap/server/ThreadsHandler$SuspendedThreadInfo;)Ljava/util/List<Lcom/oracle/truffle/tools/dap/types/StackFrame;>;
    MethodParameters:
      Name  Flags
      info  

  public java.util.List<com.oracle.truffle.tools.dap.types.Scope> getScopes(com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo, int);
    descriptor: (Lcom/oracle/truffle/tools/dap/server/ThreadsHandler$SuspendedThreadInfo;I)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=13, args_size=3
        start local 0 // com.oracle.truffle.tools.dap.server.StackFramesHandler this
        start local 1 // com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo info
        start local 2 // int frameId
         0: .line 95
            aload 1 /* info */
            ldc Lcom/oracle/truffle/tools/dap/server/StackFramesHandler$FrameWrapper;
            iload 2 /* frameId */
            invokevirtual com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo.getById:(Ljava/lang/Class;I)Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.dap.server.StackFramesHandler$FrameWrapper
            astore 3 /* frameWrapper */
        start local 3 // com.oracle.truffle.tools.dap.server.StackFramesHandler$FrameWrapper frameWrapper
         1: .line 96
            aload 3 /* frameWrapper */
            ifnull 2
            aload 3 /* frameWrapper */
            invokevirtual com.oracle.truffle.tools.dap.server.StackFramesHandler$FrameWrapper.getFrame:()Lcom/oracle/truffle/api/debug/DebugStackFrame;
            goto 3
      StackMap locals: com.oracle.truffle.tools.dap.server.StackFramesHandler$FrameWrapper
      StackMap stack:
         2: aconst_null
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.debug.DebugStackFrame
         3: astore 4 /* frame */
        start local 4 // com.oracle.truffle.api.debug.DebugStackFrame frame
         4: .line 97
            aload 4 /* frame */
            ifnull 49
         5: .line 98
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 5 /* scopes */
        start local 5 // java.util.List scopes
         6: .line 101
            aload 4 /* frame */
            invokevirtual com.oracle.truffle.api.debug.DebugStackFrame.getScope:()Lcom/oracle/truffle/api/debug/DebugScope;
            astore 6 /* dscope */
        start local 6 // com.oracle.truffle.api.debug.DebugScope dscope
         7: .line 102
            goto 14
        end local 6 // com.oracle.truffle.api.debug.DebugScope dscope
      StackMap locals: com.oracle.truffle.tools.dap.server.StackFramesHandler com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo int com.oracle.truffle.tools.dap.server.StackFramesHandler$FrameWrapper com.oracle.truffle.api.debug.DebugStackFrame java.util.List
      StackMap stack: com.oracle.truffle.api.debug.DebugException
         8: astore 7 /* ex */
        start local 7 // com.oracle.truffle.api.debug.DebugException ex
         9: .line 103
            aload 0 /* this */
            getfield com.oracle.truffle.tools.dap.server.StackFramesHandler.context:Lcom/oracle/truffle/tools/dap/server/ExecutionContext;
            invokevirtual com.oracle.truffle.tools.dap.server.ExecutionContext.getErr:()Ljava/io/PrintWriter;
            astore 8 /* err */
        start local 8 // java.io.PrintWriter err
        10: .line 104
            aload 8 /* err */
            ifnull 13
        11: .line 105
            aload 8 /* err */
            new java.lang.StringBuilder
            dup
            ldc "getScope() has caused "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 7 /* ex */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintWriter.println:(Ljava/lang/String;)V
        12: .line 106
            aload 7 /* ex */
            aload 8 /* err */
            invokevirtual com.oracle.truffle.api.debug.DebugException.printStackTrace:(Ljava/io/PrintWriter;)V
        13: .line 108
      StackMap locals: com.oracle.truffle.tools.dap.server.StackFramesHandler com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo int com.oracle.truffle.tools.dap.server.StackFramesHandler$FrameWrapper com.oracle.truffle.api.debug.DebugStackFrame java.util.List top com.oracle.truffle.api.debug.DebugException java.io.PrintWriter
      StackMap stack:
            aconst_null
            astore 6 /* dscope */
        end local 8 // java.io.PrintWriter err
        end local 7 // com.oracle.truffle.api.debug.DebugException ex
        start local 6 // com.oracle.truffle.api.debug.DebugScope dscope
        14: .line 110
      StackMap locals: com.oracle.truffle.tools.dap.server.StackFramesHandler com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo int com.oracle.truffle.tools.dap.server.StackFramesHandler$FrameWrapper com.oracle.truffle.api.debug.DebugStackFrame java.util.List com.oracle.truffle.api.debug.DebugScope
      StackMap stack:
            ldc "Block"
            astore 7 /* scopeName */
        start local 7 // java.lang.String scopeName
        15: .line 111
            iconst_0
            istore 8 /* wasFunction */
        start local 8 // boolean wasFunction
        16: .line 112
            aconst_null
            astore 9 /* topScopeWrapper */
        start local 9 // com.oracle.truffle.tools.dap.server.StackFramesHandler$ScopeWrapper topScopeWrapper
        17: .line 113
            aconst_null
            astore 10 /* thisValue */
        start local 10 // com.oracle.truffle.api.debug.DebugValue thisValue
        18: .line 114
            goto 33
        19: .line 115
      StackMap locals: com.oracle.truffle.tools.dap.server.StackFramesHandler com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo int com.oracle.truffle.tools.dap.server.StackFramesHandler$FrameWrapper com.oracle.truffle.api.debug.DebugStackFrame java.util.List com.oracle.truffle.api.debug.DebugScope java.lang.String int com.oracle.truffle.tools.dap.server.StackFramesHandler$ScopeWrapper com.oracle.truffle.api.debug.DebugValue
      StackMap stack:
            iload 8 /* wasFunction */
            ifeq 22
        20: .line 116
            ldc "Closure"
            astore 7 /* scopeName */
        21: .line 117
            goto 26
      StackMap locals:
      StackMap stack:
        22: aload 6 /* dscope */
            invokevirtual com.oracle.truffle.api.debug.DebugScope.isFunctionScope:()Z
            ifeq 26
        23: .line 118
            ldc "Local"
            astore 7 /* scopeName */
        24: .line 119
            aload 6 /* dscope */
            invokevirtual com.oracle.truffle.api.debug.DebugScope.getReceiver:()Lcom/oracle/truffle/api/debug/DebugValue;
            astore 10 /* thisValue */
        25: .line 120
            iconst_1
            istore 8 /* wasFunction */
        26: .line 122
      StackMap locals:
      StackMap stack:
            aload 6 /* dscope */
            invokevirtual com.oracle.truffle.api.debug.DebugScope.isFunctionScope:()Z
            ifne 27
            aload 6 /* dscope */
            invokevirtual com.oracle.truffle.api.debug.DebugScope.getDeclaredValues:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.hasNext:()Z
            ifeq 32
        27: .line 124
      StackMap locals:
      StackMap stack:
            aload 5 /* scopes */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 31
        28: .line 125
            new com.oracle.truffle.tools.dap.server.StackFramesHandler$ScopeWrapper
            dup
            aload 3 /* frameWrapper */
            aload 6 /* dscope */
            invokespecial com.oracle.truffle.tools.dap.server.StackFramesHandler$ScopeWrapper.<init>:(Lcom/oracle/truffle/tools/dap/server/StackFramesHandler$FrameWrapper;Lcom/oracle/truffle/api/debug/DebugScope;)V
            astore 9 /* topScopeWrapper */
        29: .line 126
            aload 5 /* scopes */
            aload 7 /* scopeName */
            aload 1 /* info */
            aload 9 /* topScopeWrapper */
            invokevirtual com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo.getId:(Ljava/lang/Object;)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            iconst_0
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokestatic com.oracle.truffle.tools.dap.types.Scope.create:(Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Boolean;)Lcom/oracle/truffle/tools/dap/types/Scope;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        30: .line 127
            goto 32
        31: .line 128
      StackMap locals:
      StackMap stack:
            aload 5 /* scopes */
            aload 7 /* scopeName */
            aload 1 /* info */
            new com.oracle.truffle.tools.dap.server.StackFramesHandler$ScopeWrapper
            dup
            aload 3 /* frameWrapper */
            aload 6 /* dscope */
            invokespecial com.oracle.truffle.tools.dap.server.StackFramesHandler$ScopeWrapper.<init>:(Lcom/oracle/truffle/tools/dap/server/StackFramesHandler$FrameWrapper;Lcom/oracle/truffle/api/debug/DebugScope;)V
            invokevirtual com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo.getId:(Ljava/lang/Object;)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            iconst_0
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokestatic com.oracle.truffle.tools.dap.types.Scope.create:(Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Boolean;)Lcom/oracle/truffle/tools/dap/types/Scope;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        32: .line 131
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 6 /* dscope */
            invokevirtual com.oracle.truffle.tools.dap.server.StackFramesHandler.getParent:(Lcom/oracle/truffle/api/debug/DebugScope;)Lcom/oracle/truffle/api/debug/DebugScope;
            astore 6 /* dscope */
        33: .line 114
      StackMap locals:
      StackMap stack:
            aload 6 /* dscope */
            ifnonnull 19
        34: .line 133
            aload 10 /* thisValue */
            ifnull 36
            aload 9 /* topScopeWrapper */
            ifnull 36
        35: .line 134
            aload 9 /* topScopeWrapper */
            aload 10 /* thisValue */
            putfield com.oracle.truffle.tools.dap.server.StackFramesHandler$ScopeWrapper.thisValue:Lcom/oracle/truffle/api/debug/DebugValue;
        36: .line 137
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.tools.dap.server.StackFramesHandler.debuggerSession:Lcom/oracle/truffle/api/debug/DebuggerSession;
            aload 4 /* frame */
            invokevirtual com.oracle.truffle.api.debug.DebugStackFrame.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            invokevirtual com.oracle.truffle.api.source.SourceSection.getSource:()Lcom/oracle/truffle/api/source/Source;
            invokevirtual com.oracle.truffle.api.source.Source.getLanguage:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.api.debug.DebuggerSession.getTopScope:(Ljava/lang/String;)Lcom/oracle/truffle/api/debug/DebugScope;
            astore 6 /* dscope */
        37: .line 138
            goto 47
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.debug.DebugException
        38: astore 11 /* ex */
        start local 11 // com.oracle.truffle.api.debug.DebugException ex
        39: .line 139
            aload 0 /* this */
            getfield com.oracle.truffle.tools.dap.server.StackFramesHandler.context:Lcom/oracle/truffle/tools/dap/server/ExecutionContext;
            invokevirtual com.oracle.truffle.tools.dap.server.ExecutionContext.getErr:()Ljava/io/PrintWriter;
            astore 12 /* err */
        start local 12 // java.io.PrintWriter err
        40: .line 140
            aload 12 /* err */
            ifnull 47
        41: .line 141
            aload 12 /* err */
            new java.lang.StringBuilder
            dup
            ldc "getTopScope() has caused "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 11 /* ex */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintWriter.println:(Ljava/lang/String;)V
        42: .line 142
            aload 11 /* ex */
            aload 12 /* err */
            invokevirtual com.oracle.truffle.api.debug.DebugException.printStackTrace:(Ljava/io/PrintWriter;)V
        end local 12 // java.io.PrintWriter err
        end local 11 // com.oracle.truffle.api.debug.DebugException ex
        43: .line 145
            goto 47
        44: .line 146
      StackMap locals:
      StackMap stack:
            aload 6 /* dscope */
            invokevirtual com.oracle.truffle.api.debug.DebugScope.isFunctionScope:()Z
            ifne 45
            aload 6 /* dscope */
            invokevirtual com.oracle.truffle.api.debug.DebugScope.getDeclaredValues:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.hasNext:()Z
            ifeq 46
        45: .line 148
      StackMap locals:
      StackMap stack:
            aload 5 /* scopes */
            ldc "Global"
            aload 1 /* info */
            aload 6 /* dscope */
            invokevirtual com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo.getId:(Ljava/lang/Object;)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokestatic com.oracle.truffle.tools.dap.types.Scope.create:(Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Boolean;)Lcom/oracle/truffle/tools/dap/types/Scope;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        46: .line 150
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 6 /* dscope */
            invokevirtual com.oracle.truffle.tools.dap.server.StackFramesHandler.getParent:(Lcom/oracle/truffle/api/debug/DebugScope;)Lcom/oracle/truffle/api/debug/DebugScope;
            astore 6 /* dscope */
        47: .line 145
      StackMap locals:
      StackMap stack:
            aload 6 /* dscope */
            ifnonnull 44
        48: .line 152
            aload 5 /* scopes */
            areturn
        end local 10 // com.oracle.truffle.api.debug.DebugValue thisValue
        end local 9 // com.oracle.truffle.tools.dap.server.StackFramesHandler$ScopeWrapper topScopeWrapper
        end local 8 // boolean wasFunction
        end local 7 // java.lang.String scopeName
        end local 6 // com.oracle.truffle.api.debug.DebugScope dscope
        end local 5 // java.util.List scopes
        49: .line 154
      StackMap locals: com.oracle.truffle.tools.dap.server.StackFramesHandler com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo int com.oracle.truffle.tools.dap.server.StackFramesHandler$FrameWrapper com.oracle.truffle.api.debug.DebugStackFrame
      StackMap stack:
            aconst_null
            areturn
        end local 4 // com.oracle.truffle.api.debug.DebugStackFrame frame
        end local 3 // com.oracle.truffle.tools.dap.server.StackFramesHandler$FrameWrapper frameWrapper
        end local 2 // int frameId
        end local 1 // com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo info
        end local 0 // com.oracle.truffle.tools.dap.server.StackFramesHandler this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   50     0             this  Lcom/oracle/truffle/tools/dap/server/StackFramesHandler;
            0   50     1             info  Lcom/oracle/truffle/tools/dap/server/ThreadsHandler$SuspendedThreadInfo;
            0   50     2          frameId  I
            1   50     3     frameWrapper  Lcom/oracle/truffle/tools/dap/server/StackFramesHandler$FrameWrapper;
            4   50     4            frame  Lcom/oracle/truffle/api/debug/DebugStackFrame;
            6   49     5           scopes  Ljava/util/List<Lcom/oracle/truffle/tools/dap/types/Scope;>;
            7    8     6           dscope  Lcom/oracle/truffle/api/debug/DebugScope;
           14   49     6           dscope  Lcom/oracle/truffle/api/debug/DebugScope;
            9   14     7               ex  Lcom/oracle/truffle/api/debug/DebugException;
           10   14     8              err  Ljava/io/PrintWriter;
           15   49     7        scopeName  Ljava/lang/String;
           16   49     8      wasFunction  Z
           17   49     9  topScopeWrapper  Lcom/oracle/truffle/tools/dap/server/StackFramesHandler$ScopeWrapper;
           18   49    10        thisValue  Lcom/oracle/truffle/api/debug/DebugValue;
           39   43    11               ex  Lcom/oracle/truffle/api/debug/DebugException;
           40   43    12              err  Ljava/io/PrintWriter;
      Exception table:
        from    to  target  type
           6     7       8  Class com.oracle.truffle.api.debug.DebugException
          36    37      38  Class com.oracle.truffle.api.debug.DebugException
    Signature: (Lcom/oracle/truffle/tools/dap/server/ThreadsHandler$SuspendedThreadInfo;I)Ljava/util/List<Lcom/oracle/truffle/tools/dap/types/Scope;>;
    MethodParameters:
         Name  Flags
      info     
      frameId  

  public static com.oracle.truffle.tools.dap.types.Variable evaluateOnStackFrame(com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo, int, java.lang.String);
    descriptor: (Lcom/oracle/truffle/tools/dap/server/ThreadsHandler$SuspendedThreadInfo;ILjava/lang/String;)Lcom/oracle/truffle/tools/dap/types/Variable;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo info
        start local 1 // int frameId
        start local 2 // java.lang.String expression
         0: .line 158
            aload 0 /* info */
            ldc Lcom/oracle/truffle/tools/dap/server/StackFramesHandler$FrameWrapper;
            iload 1 /* frameId */
            invokevirtual com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo.getById:(Ljava/lang/Class;I)Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.dap.server.StackFramesHandler$FrameWrapper
            astore 3 /* frameWrapper */
        start local 3 // com.oracle.truffle.tools.dap.server.StackFramesHandler$FrameWrapper frameWrapper
         1: .line 159
            aload 3 /* frameWrapper */
            ifnull 2
            aload 3 /* frameWrapper */
            invokevirtual com.oracle.truffle.tools.dap.server.StackFramesHandler$FrameWrapper.getFrame:()Lcom/oracle/truffle/api/debug/DebugStackFrame;
            goto 3
      StackMap locals: com.oracle.truffle.tools.dap.server.StackFramesHandler$FrameWrapper
      StackMap stack:
         2: aconst_null
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.debug.DebugStackFrame
         3: astore 4 /* frame */
        start local 4 // com.oracle.truffle.api.debug.DebugStackFrame frame
         4: .line 160
            aload 4 /* frame */
            ifnull 8
         5: .line 161
            aload 4 /* frame */
            aload 2 /* expression */
            invokestatic com.oracle.truffle.tools.dap.server.VariablesHandler.getDebugValue:(Lcom/oracle/truffle/api/debug/DebugStackFrame;Ljava/lang/String;)Lcom/oracle/truffle/api/debug/DebugValue;
            astore 5 /* value */
        start local 5 // com.oracle.truffle.api.debug.DebugValue value
         6: .line 162
            aload 5 /* value */
            ifnull 8
         7: .line 163
            aload 0 /* info */
            aload 5 /* value */
            ldc ""
            invokestatic com.oracle.truffle.tools.dap.server.VariablesHandler.createVariable:(Lcom/oracle/truffle/tools/dap/server/ThreadsHandler$SuspendedThreadInfo;Lcom/oracle/truffle/api/debug/DebugValue;Ljava/lang/String;)Lcom/oracle/truffle/tools/dap/types/Variable;
            areturn
        end local 5 // com.oracle.truffle.api.debug.DebugValue value
         8: .line 166
      StackMap locals: com.oracle.truffle.api.debug.DebugStackFrame
      StackMap stack:
            aconst_null
            areturn
        end local 4 // com.oracle.truffle.api.debug.DebugStackFrame frame
        end local 3 // com.oracle.truffle.tools.dap.server.StackFramesHandler$FrameWrapper frameWrapper
        end local 2 // java.lang.String expression
        end local 1 // int frameId
        end local 0 // com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo info
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    9     0          info  Lcom/oracle/truffle/tools/dap/server/ThreadsHandler$SuspendedThreadInfo;
            0    9     1       frameId  I
            0    9     2    expression  Ljava/lang/String;
            1    9     3  frameWrapper  Lcom/oracle/truffle/tools/dap/server/StackFramesHandler$FrameWrapper;
            4    9     4         frame  Lcom/oracle/truffle/api/debug/DebugStackFrame;
            6    8     5         value  Lcom/oracle/truffle/api/debug/DebugValue;
    MethodParameters:
            Name  Flags
      info        
      frameId     
      expression  

  private com.oracle.truffle.api.debug.DebugScope getParent(com.oracle.truffle.api.debug.DebugScope);
    descriptor: (Lcom/oracle/truffle/api/debug/DebugScope;)Lcom/oracle/truffle/api/debug/DebugScope;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // com.oracle.truffle.tools.dap.server.StackFramesHandler this
        start local 1 // com.oracle.truffle.api.debug.DebugScope dscope
         0: .line 172
            aload 1 /* dscope */
            invokevirtual com.oracle.truffle.api.debug.DebugScope.getParent:()Lcom/oracle/truffle/api/debug/DebugScope;
            astore 2 /* parentScope */
        start local 2 // com.oracle.truffle.api.debug.DebugScope parentScope
         1: .line 173
            goto 8
        end local 2 // com.oracle.truffle.api.debug.DebugScope parentScope
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.debug.DebugException
         2: astore 3 /* ex */
        start local 3 // com.oracle.truffle.api.debug.DebugException ex
         3: .line 174
            aload 0 /* this */
            getfield com.oracle.truffle.tools.dap.server.StackFramesHandler.context:Lcom/oracle/truffle/tools/dap/server/ExecutionContext;
            invokevirtual com.oracle.truffle.tools.dap.server.ExecutionContext.getErr:()Ljava/io/PrintWriter;
            astore 4 /* err */
        start local 4 // java.io.PrintWriter err
         4: .line 175
            aload 4 /* err */
            ifnull 7
         5: .line 176
            aload 4 /* err */
            new java.lang.StringBuilder
            dup
            ldc "Scope.getParent() has caused "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* ex */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintWriter.println:(Ljava/lang/String;)V
         6: .line 177
            aload 3 /* ex */
            aload 4 /* err */
            invokevirtual com.oracle.truffle.api.debug.DebugException.printStackTrace:(Ljava/io/PrintWriter;)V
         7: .line 179
      StackMap locals: com.oracle.truffle.tools.dap.server.StackFramesHandler com.oracle.truffle.api.debug.DebugScope top com.oracle.truffle.api.debug.DebugException java.io.PrintWriter
      StackMap stack:
            aconst_null
            astore 2 /* parentScope */
        end local 4 // java.io.PrintWriter err
        end local 3 // com.oracle.truffle.api.debug.DebugException ex
        start local 2 // com.oracle.truffle.api.debug.DebugScope parentScope
         8: .line 181
      StackMap locals: com.oracle.truffle.tools.dap.server.StackFramesHandler com.oracle.truffle.api.debug.DebugScope com.oracle.truffle.api.debug.DebugScope
      StackMap stack:
            aload 2 /* parentScope */
            areturn
        end local 2 // com.oracle.truffle.api.debug.DebugScope parentScope
        end local 1 // com.oracle.truffle.api.debug.DebugScope dscope
        end local 0 // com.oracle.truffle.tools.dap.server.StackFramesHandler this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    9     0         this  Lcom/oracle/truffle/tools/dap/server/StackFramesHandler;
            0    9     1       dscope  Lcom/oracle/truffle/api/debug/DebugScope;
            1    2     2  parentScope  Lcom/oracle/truffle/api/debug/DebugScope;
            8    9     2  parentScope  Lcom/oracle/truffle/api/debug/DebugScope;
            3    8     3           ex  Lcom/oracle/truffle/api/debug/DebugException;
            4    8     4          err  Ljava/io/PrintWriter;
      Exception table:
        from    to  target  type
           0     1       2  Class com.oracle.truffle.api.debug.DebugException
    MethodParameters:
        Name  Flags
      dscope  
}
SourceFile: "StackFramesHandler.java"
NestMembers:
  com.oracle.truffle.tools.dap.server.StackFramesHandler$FrameWrapper  com.oracle.truffle.tools.dap.server.StackFramesHandler$ScopeWrapper
InnerClasses:
  private final FrameWrapper = com.oracle.truffle.tools.dap.server.StackFramesHandler$FrameWrapper of com.oracle.truffle.tools.dap.server.StackFramesHandler
  final ScopeWrapper = com.oracle.truffle.tools.dap.server.StackFramesHandler$ScopeWrapper of com.oracle.truffle.tools.dap.server.StackFramesHandler
  public final SuspendedThreadInfo = com.oracle.truffle.tools.dap.server.ThreadsHandler$SuspendedThreadInfo of com.oracle.truffle.tools.dap.server.ThreadsHandler