final class com.oracle.truffle.api.debug.DebugSourcesResolver
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.api.debug.DebugSourcesResolver
  super_class: java.lang.Object
{
  private final com.oracle.truffle.api.instrumentation.TruffleInstrument$Env env;
    descriptor: Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private volatile java.net.URI[] sourcePath;
    descriptor: [Ljava/net/URI;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private final java.util.Map<com.oracle.truffle.api.source.Source, com.oracle.truffle.api.source.Source> resolvedMap;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Lcom/oracle/truffle/api/source/Source;Lcom/oracle/truffle/api/source/Source;>;

  void <init>(com.oracle.truffle.api.instrumentation.TruffleInstrument$Env);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.debug.DebugSourcesResolver this
        start local 1 // com.oracle.truffle.api.instrumentation.TruffleInstrument$Env env
         0: .line 74
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 71
            aload 0 /* this */
            iconst_0
            anewarray java.net.URI
            putfield com.oracle.truffle.api.debug.DebugSourcesResolver.sourcePath:[Ljava/net/URI;
         2: .line 72
            aload 0 /* this */
            new java.util.WeakHashMap
            dup
            invokespecial java.util.WeakHashMap.<init>:()V
            putfield com.oracle.truffle.api.debug.DebugSourcesResolver.resolvedMap:Ljava/util/Map;
         3: .line 75
            aload 0 /* this */
            aload 1 /* env */
            putfield com.oracle.truffle.api.debug.DebugSourcesResolver.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
         4: .line 76
            return
        end local 1 // com.oracle.truffle.api.instrumentation.TruffleInstrument$Env env
        end local 0 // com.oracle.truffle.api.debug.DebugSourcesResolver this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/oracle/truffle/api/debug/DebugSourcesResolver;
            0    5     1   env  Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
    MethodParameters:
      Name  Flags
      env   

  void setSourcePath(java.lang.Iterable<java.net.URI>);
    descriptor: (Ljava/lang/Iterable;)V
    flags: (0x0000) 
    Code:
      stack=7, locals=6, args_size=2
        start local 0 // com.oracle.truffle.api.debug.DebugSourcesResolver this
        start local 1 // java.lang.Iterable uris
         0: .line 80
            aload 1 /* uris */
            instanceof java.util.Collection
            ifeq 3
         1: .line 81
            aload 1 /* uris */
            checkcast java.util.Collection
            astore 2 /* collection */
        start local 2 // java.util.Collection collection
         2: .line 82
            goto 9
        end local 2 // java.util.Collection collection
         3: .line 83
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* list */
        start local 3 // java.util.List list
         4: .line 84
            aload 1 /* uris */
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 5
            goto 7
      StackMap locals: com.oracle.truffle.api.debug.DebugSourcesResolver java.lang.Iterable top java.util.List top java.util.Iterator
      StackMap stack:
         5: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.net.URI
            astore 4 /* uri */
        start local 4 // java.net.URI uri
         6: .line 85
            aload 3 /* list */
            aload 4 /* uri */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 4 // java.net.URI uri
         7: .line 84
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
         8: .line 87
            aload 3 /* list */
            astore 2 /* collection */
        end local 3 // java.util.List list
        start local 2 // java.util.Collection collection
         9: .line 89
      StackMap locals: com.oracle.truffle.api.debug.DebugSourcesResolver java.lang.Iterable java.util.Collection
      StackMap stack:
            aload 2 /* collection */
            aload 2 /* collection */
            invokeinterface java.util.Collection.size:()I
            anewarray java.net.URI
            invokeinterface java.util.Collection.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.net.URI[]
            astore 3 /* array */
        start local 3 // java.net.URI[] array
        10: .line 90
            iconst_0
            istore 4 /* i */
        start local 4 // int i
        11: goto 18
        12: .line 91
      StackMap locals: java.net.URI[] int
      StackMap stack:
            aload 3 /* array */
            iload 4 /* i */
            aaload
            invokevirtual java.net.URI.isAbsolute:()Z
            ifne 17
        13: .line 93
            aload 3 /* array */
            iload 4 /* i */
            new java.net.URI
            dup
            new java.lang.StringBuilder
            dup
            ldc "file://"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* array */
            iload 4 /* i */
            aaload
            invokevirtual java.net.URI.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.net.URI.<init>:(Ljava/lang/String;)V
            aastore
        14: .line 94
            goto 17
      StackMap locals:
      StackMap stack: java.net.URISyntaxException
        15: astore 5 /* ex */
        start local 5 // java.net.URISyntaxException ex
        16: .line 95
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "URI "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* array */
            iload 4 /* i */
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " is not absolute and can not be converted to a file: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* ex */
            invokevirtual java.net.URISyntaxException.getLocalizedMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 5 // java.net.URISyntaxException ex
        17: .line 90
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        18: iload 4 /* i */
            aload 3 /* array */
            arraylength
            if_icmplt 12
        end local 4 // int i
        19: .line 99
            aload 0 /* this */
            aload 3 /* array */
            putfield com.oracle.truffle.api.debug.DebugSourcesResolver.sourcePath:[Ljava/net/URI;
        20: .line 100
            return
        end local 3 // java.net.URI[] array
        end local 2 // java.util.Collection collection
        end local 1 // java.lang.Iterable uris
        end local 0 // com.oracle.truffle.api.debug.DebugSourcesResolver this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   21     0        this  Lcom/oracle/truffle/api/debug/DebugSourcesResolver;
            0   21     1        uris  Ljava/lang/Iterable<Ljava/net/URI;>;
            2    3     2  collection  Ljava/util/Collection<Ljava/net/URI;>;
            9   21     2  collection  Ljava/util/Collection<Ljava/net/URI;>;
            4    9     3        list  Ljava/util/List<Ljava/net/URI;>;
            6    7     4         uri  Ljava/net/URI;
           10   21     3       array  [Ljava/net/URI;
           11   19     4           i  I
           16   17     5          ex  Ljava/net/URISyntaxException;
      Exception table:
        from    to  target  type
          13    14      15  Class java.net.URISyntaxException
    Signature: (Ljava/lang/Iterable<Ljava/net/URI;>;)V
    MethodParameters:
      Name  Flags
      uris  

  com.oracle.truffle.api.source.Source resolve(com.oracle.truffle.api.source.Source);
    descriptor: (Lcom/oracle/truffle/api/source/Source;)Lcom/oracle/truffle/api/source/Source;
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.oracle.truffle.api.debug.DebugSourcesResolver this
        start local 1 // com.oracle.truffle.api.source.Source source
         0: .line 103
            aload 1 /* source */
            invokevirtual com.oracle.truffle.api.source.Source.hasCharacters:()Z
            ifne 1
            aload 1 /* source */
            invokevirtual com.oracle.truffle.api.source.Source.hasBytes:()Z
            ifeq 2
         1: .line 104
      StackMap locals:
      StackMap stack:
            aload 1 /* source */
            areturn
         2: .line 107
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.DebugSourcesResolver.resolvedMap:Ljava/util/Map;
            dup
            astore 3
            monitorenter
         3: .line 108
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.DebugSourcesResolver.resolvedMap:Ljava/util/Map;
            aload 1 /* source */
            aload 1 /* source */
            invokeinterface java.util.Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.source.Source
            astore 2 /* resolved */
        start local 2 // com.oracle.truffle.api.source.Source resolved
         4: .line 109
            aload 2 /* resolved */
            aload 1 /* source */
            if_acmpne 7
         5: .line 110
            aload 0 /* this */
            aload 1 /* source */
            invokevirtual com.oracle.truffle.api.debug.DebugSourcesResolver.doResolve:(Lcom/oracle/truffle/api/source/Source;)Lcom/oracle/truffle/api/source/Source;
            astore 2 /* resolved */
         6: .line 111
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.DebugSourcesResolver.resolvedMap:Ljava/util/Map;
            aload 1 /* source */
            aload 2 /* resolved */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         7: .line 107
      StackMap locals: com.oracle.truffle.api.source.Source java.util.Map
      StackMap stack:
            aload 3
            monitorexit
         8: goto 11
        end local 2 // com.oracle.truffle.api.source.Source resolved
      StackMap locals: com.oracle.truffle.api.debug.DebugSourcesResolver com.oracle.truffle.api.source.Source top java.util.Map
      StackMap stack: java.lang.Throwable
         9: aload 3
            monitorexit
        10: athrow
        start local 2 // com.oracle.truffle.api.source.Source resolved
        11: .line 114
      StackMap locals: com.oracle.truffle.api.debug.DebugSourcesResolver com.oracle.truffle.api.source.Source com.oracle.truffle.api.source.Source
      StackMap stack:
            aload 2 /* resolved */
            areturn
        end local 2 // com.oracle.truffle.api.source.Source resolved
        end local 1 // com.oracle.truffle.api.source.Source source
        end local 0 // com.oracle.truffle.api.debug.DebugSourcesResolver this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   12     0      this  Lcom/oracle/truffle/api/debug/DebugSourcesResolver;
            0   12     1    source  Lcom/oracle/truffle/api/source/Source;
            4    9     2  resolved  Lcom/oracle/truffle/api/source/Source;
           11   12     2  resolved  Lcom/oracle/truffle/api/source/Source;
      Exception table:
        from    to  target  type
           3     8       9  any
           9    10       9  any
    MethodParameters:
        Name  Flags
      source  

  private com.oracle.truffle.api.source.Source doResolve(com.oracle.truffle.api.source.Source);
    descriptor: (Lcom/oracle/truffle/api/source/Source;)Lcom/oracle/truffle/api/source/Source;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=10, args_size=2
        start local 0 // com.oracle.truffle.api.debug.DebugSourcesResolver this
        start local 1 // com.oracle.truffle.api.source.Source source
         0: .line 118
            aload 1 /* source */
            invokevirtual com.oracle.truffle.api.source.Source.getURI:()Ljava/net/URI;
            astore 2 /* uri */
        start local 2 // java.net.URI uri
         1: .line 119
            aconst_null
            astore 3 /* stream */
        start local 3 // java.io.InputStream stream
         2: .line 120
            aload 2 /* uri */
            invokevirtual java.net.URI.isAbsolute:()Z
            ifeq 7
         3: .line 122
            aload 2 /* uri */
            invokevirtual java.net.URI.toURL:()Ljava/net/URL;
            invokevirtual java.net.URL.openConnection:()Ljava/net/URLConnection;
            invokevirtual java.net.URLConnection.getInputStream:()Ljava/io/InputStream;
            astore 3 /* stream */
         4: .line 123
            goto 17
      StackMap locals: com.oracle.truffle.api.debug.DebugSourcesResolver com.oracle.truffle.api.source.Source java.net.URI java.io.InputStream
      StackMap stack: java.io.IOException
         5: pop
         6: .line 124
            aconst_null
            areturn
         7: .line 127
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.DebugSourcesResolver.sourcePath:[Ljava/net/URI;
            astore 4 /* roots */
        start local 4 // java.net.URI[] roots
         8: .line 128
            aload 4 /* roots */
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 16
      StackMap locals: com.oracle.truffle.api.debug.DebugSourcesResolver com.oracle.truffle.api.source.Source java.net.URI java.io.InputStream java.net.URI[] top int int java.net.URI[]
      StackMap stack:
         9: aload 8
            iload 6
            aaload
            astore 5 /* root */
        start local 5 // java.net.URI root
        10: .line 129
            aload 5 /* root */
            aload 2 /* uri */
            invokestatic com.oracle.truffle.api.debug.DebugSourcesResolver.resolve:(Ljava/net/URI;Ljava/net/URI;)Ljava/net/URI;
            astore 9 /* resolved */
        start local 9 // java.net.URI resolved
        11: .line 131
            aload 9 /* resolved */
            invokevirtual java.net.URI.toURL:()Ljava/net/URL;
            invokevirtual java.net.URL.openConnection:()Ljava/net/URLConnection;
            invokevirtual java.net.URLConnection.getInputStream:()Ljava/io/InputStream;
            astore 3 /* stream */
        12: .line 132
            aload 9 /* resolved */
            astore 2 /* uri */
        13: .line 133
            goto 17
        14: .line 134
      StackMap locals: com.oracle.truffle.api.debug.DebugSourcesResolver com.oracle.truffle.api.source.Source java.net.URI java.io.InputStream java.net.URI[] java.net.URI int int java.net.URI[] java.net.URI
      StackMap stack: java.io.IOException
            pop
        end local 9 // java.net.URI resolved
        end local 5 // java.net.URI root
        15: .line 128
            iinc 6 1
      StackMap locals: com.oracle.truffle.api.debug.DebugSourcesResolver com.oracle.truffle.api.source.Source java.net.URI java.io.InputStream java.net.URI[] top int int java.net.URI[]
      StackMap stack:
        16: iload 6
            iload 7
            if_icmplt 9
        end local 4 // java.net.URI[] roots
        17: .line 139
      StackMap locals: com.oracle.truffle.api.debug.DebugSourcesResolver com.oracle.truffle.api.source.Source java.net.URI java.io.InputStream
      StackMap stack:
            aload 3 /* stream */
            ifnonnull 19
        18: .line 140
            aconst_null
            areturn
        19: .line 143
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 4 /* builder */
        start local 4 // com.oracle.truffle.api.source.Source$SourceBuilder builder
        20: .line 144
            ldc "file"
            aload 2 /* uri */
            invokevirtual java.net.URI.getScheme:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 24
        21: .line 145
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.DebugSourcesResolver.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            aload 2 /* uri */
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getTruffleFile:(Ljava/net/URI;)Lcom/oracle/truffle/api/TruffleFile;
            astore 5 /* file */
        start local 5 // com.oracle.truffle.api.TruffleFile file
        22: .line 146
            aload 1 /* source */
            invokevirtual com.oracle.truffle.api.source.Source.getLanguage:()Ljava/lang/String;
            aload 5 /* file */
            invokestatic com.oracle.truffle.api.source.Source.newBuilder:(Ljava/lang/String;Lcom/oracle/truffle/api/TruffleFile;)Lcom/oracle/truffle/api/source/Source$SourceBuilder;
            astore 4 /* builder */
        end local 5 // com.oracle.truffle.api.TruffleFile file
        23: .line 147
            goto 28
        24: .line 150
      StackMap locals: com.oracle.truffle.api.source.Source$SourceBuilder
      StackMap stack:
            aload 2 /* uri */
            invokevirtual java.net.URI.toURL:()Ljava/net/URL;
            astore 5 /* url */
        start local 5 // java.net.URL url
        25: .line 151
            aload 1 /* source */
            invokevirtual com.oracle.truffle.api.source.Source.getLanguage:()Ljava/lang/String;
            aload 5 /* url */
            invokestatic com.oracle.truffle.api.source.Source.newBuilder:(Ljava/lang/String;Ljava/net/URL;)Lcom/oracle/truffle/api/source/Source$SourceBuilder;
            astore 4 /* builder */
        26: .line 152
            goto 28
        end local 5 // java.net.URL url
      StackMap locals:
      StackMap stack: java.lang.Exception
        27: pop
        28: .line 156
      StackMap locals:
      StackMap stack:
            aload 4 /* builder */
            ifnonnull 33
        29: .line 157
            aload 2 /* uri */
            invokevirtual java.net.URI.getPath:()Ljava/lang/String;
            ifnull 30
            aload 2 /* uri */
            invokevirtual java.net.URI.getPath:()Ljava/lang/String;
            goto 31
      StackMap locals:
      StackMap stack:
        30: aload 2 /* uri */
            invokevirtual java.net.URI.getSchemeSpecificPart:()Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String
        31: astore 5 /* name */
        start local 5 // java.lang.String name
        32: .line 158
            aload 1 /* source */
            invokevirtual com.oracle.truffle.api.source.Source.getLanguage:()Ljava/lang/String;
            new java.io.InputStreamReader
            dup
            aload 3 /* stream */
            invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;)V
            aload 5 /* name */
            invokestatic com.oracle.truffle.api.source.Source.newBuilder:(Ljava/lang/String;Ljava/io/Reader;Ljava/lang/String;)Lcom/oracle/truffle/api/source/Source$SourceBuilder;
            aload 2 /* uri */
            invokevirtual com.oracle.truffle.api.source.Source$SourceBuilder.uri:(Ljava/net/URI;)Lcom/oracle/truffle/api/source/Source$SourceBuilder;
            astore 4 /* builder */
        end local 5 // java.lang.String name
        33: .line 161
      StackMap locals:
      StackMap stack:
            aload 4 /* builder */
            iconst_0
            invokevirtual com.oracle.truffle.api.source.Source$SourceBuilder.cached:(Z)Lcom/oracle/truffle/api/source/Source$SourceBuilder;
            aload 1 /* source */
            invokevirtual com.oracle.truffle.api.source.Source.isInteractive:()Z
            invokevirtual com.oracle.truffle.api.source.Source$SourceBuilder.interactive:(Z)Lcom/oracle/truffle/api/source/Source$SourceBuilder;
            aload 1 /* source */
            invokevirtual com.oracle.truffle.api.source.Source.isInternal:()Z
            invokevirtual com.oracle.truffle.api.source.Source$SourceBuilder.internal:(Z)Lcom/oracle/truffle/api/source/Source$SourceBuilder;
            aload 1 /* source */
            invokevirtual com.oracle.truffle.api.source.Source.getMimeType:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.api.source.Source$SourceBuilder.mimeType:(Ljava/lang/String;)Lcom/oracle/truffle/api/source/Source$SourceBuilder;
            invokevirtual com.oracle.truffle.api.source.Source$SourceBuilder.build:()Lcom/oracle/truffle/api/source/Source;
            astore 7
        34: .line 168
            aload 3 /* stream */
            invokevirtual java.io.InputStream.close:()V
        35: .line 169
            goto 37
      StackMap locals: com.oracle.truffle.api.debug.DebugSourcesResolver com.oracle.truffle.api.source.Source java.net.URI java.io.InputStream com.oracle.truffle.api.source.Source$SourceBuilder top top com.oracle.truffle.api.source.Source
      StackMap stack: java.io.IOException
        36: pop
        37: .line 161
      StackMap locals:
      StackMap stack:
            aload 7
            areturn
        38: .line 162
      StackMap locals: com.oracle.truffle.api.debug.DebugSourcesResolver com.oracle.truffle.api.source.Source java.net.URI java.io.InputStream com.oracle.truffle.api.source.Source$SourceBuilder
      StackMap stack: java.lang.Exception
            astore 5 /* e */
        start local 5 // java.lang.Exception e
        39: .line 163
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.DebugSourcesResolver.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            ldc ""
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getLogger:(Ljava/lang/String;)Lcom/oracle/truffle/api/TruffleLogger;
            ldc "Failed to resolve %s: %s%s"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* source */
            invokevirtual com.oracle.truffle.api.source.Source.getURI:()Ljava/net/URI;
            aastore
            dup
            iconst_1
            aload 5 /* e */
            invokevirtual java.lang.Exception.getLocalizedMessage:()Ljava/lang/String;
            aastore
            dup
            iconst_2
            invokestatic java.lang.System.lineSeparator:()Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual com.oracle.truffle.api.TruffleLogger.warning:(Ljava/lang/String;)V
        40: .line 168
            aload 3 /* stream */
            invokevirtual java.io.InputStream.close:()V
        41: .line 169
            goto 43
      StackMap locals: com.oracle.truffle.api.debug.DebugSourcesResolver com.oracle.truffle.api.source.Source java.net.URI java.io.InputStream com.oracle.truffle.api.source.Source$SourceBuilder java.lang.Exception
      StackMap stack: java.io.IOException
        42: pop
        43: .line 164
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 5 // java.lang.Exception e
        end local 4 // com.oracle.truffle.api.source.Source$SourceBuilder builder
        44: .line 166
      StackMap locals: com.oracle.truffle.api.debug.DebugSourcesResolver com.oracle.truffle.api.source.Source java.net.URI java.io.InputStream
      StackMap stack: java.lang.Throwable
            astore 6
        45: .line 168
            aload 3 /* stream */
            invokevirtual java.io.InputStream.close:()V
        46: .line 169
            goto 48
      StackMap locals: com.oracle.truffle.api.debug.DebugSourcesResolver com.oracle.truffle.api.source.Source java.net.URI java.io.InputStream top top java.lang.Throwable
      StackMap stack: java.io.IOException
        47: pop
        48: .line 171
      StackMap locals:
      StackMap stack:
            aload 6
            athrow
        end local 3 // java.io.InputStream stream
        end local 2 // java.net.URI uri
        end local 1 // com.oracle.truffle.api.source.Source source
        end local 0 // com.oracle.truffle.api.debug.DebugSourcesResolver this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   49     0      this  Lcom/oracle/truffle/api/debug/DebugSourcesResolver;
            0   49     1    source  Lcom/oracle/truffle/api/source/Source;
            1   49     2       uri  Ljava/net/URI;
            2   49     3    stream  Ljava/io/InputStream;
            8   17     4     roots  [Ljava/net/URI;
           10   15     5      root  Ljava/net/URI;
           11   15     9  resolved  Ljava/net/URI;
           20   44     4   builder  Lcom/oracle/truffle/api/source/Source$SourceBuilder;
           22   23     5      file  Lcom/oracle/truffle/api/TruffleFile;
           25   27     5       url  Ljava/net/URL;
           32   33     5      name  Ljava/lang/String;
           39   44     5         e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           3     4       5  Class java.io.IOException
          11    13      14  Class java.io.IOException
          24    26      27  Class java.net.MalformedURLException
          24    26      27  Class java.lang.IllegalArgumentException
          34    35      36  Class java.io.IOException
          33    34      38  Class java.io.IOException
          33    34      38  Class java.lang.SecurityException
          40    41      42  Class java.io.IOException
          19    34      44  any
          38    40      44  any
          45    46      47  Class java.io.IOException
    MethodParameters:
        Name  Flags
      source  

  private static java.net.URI resolve(java.net.URI, java.net.URI);
    descriptor: (Ljava/net/URI;Ljava/net/URI;)Ljava/net/URI;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=9, locals=6, args_size=2
        start local 0 // java.net.URI base
        start local 1 // java.net.URI child
         0: .line 176
            aload 1 /* child */
            invokevirtual java.net.URI.getPath:()Ljava/lang/String;
            astore 2 /* childPath */
        start local 2 // java.lang.String childPath
         1: .line 177
            aload 2 /* childPath */
            ifnull 2
            aload 2 /* childPath */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 3
         2: .line 178
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* base */
            areturn
         3: .line 180
      StackMap locals:
      StackMap stack:
            aload 0 /* base */
            invokevirtual java.net.URI.getPath:()Ljava/lang/String;
            astore 3 /* path */
        start local 3 // java.lang.String path
         4: .line 183
            aload 3 /* path */
            ifnull 11
         5: .line 184
            aload 3 /* path */
            ldc "/"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 8
         6: .line 185
            new java.lang.StringBuilder
            dup
            aload 3 /* path */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* childPath */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 3 /* path */
         7: .line 186
            goto 9
         8: .line 187
      StackMap locals: java.lang.String
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 3 /* path */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* childPath */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 3 /* path */
         9: .line 189
      StackMap locals:
      StackMap stack:
            new java.net.URI
            dup
            aload 0 /* base */
            invokevirtual java.net.URI.getScheme:()Ljava/lang/String;
            aload 0 /* base */
            invokevirtual java.net.URI.getUserInfo:()Ljava/lang/String;
            aload 0 /* base */
            invokevirtual java.net.URI.getHost:()Ljava/lang/String;
            aload 0 /* base */
            invokevirtual java.net.URI.getPort:()I
            aload 3 /* path */
            aload 0 /* base */
            invokevirtual java.net.URI.getQuery:()Ljava/lang/String;
            aload 0 /* base */
            invokevirtual java.net.URI.getFragment:()Ljava/lang/String;
            invokespecial java.net.URI.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
            astore 4 /* resolved */
        start local 4 // java.net.URI resolved
        10: .line 190
            goto 17
        end local 4 // java.net.URI resolved
        11: .line 191
      StackMap locals:
      StackMap stack:
            aload 0 /* base */
            invokevirtual java.net.URI.getSchemeSpecificPart:()Ljava/lang/String;
            astore 5 /* ssp */
        start local 5 // java.lang.String ssp
        12: .line 192
            aload 5 /* ssp */
            ldc "/"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 15
        13: .line 193
            new java.lang.StringBuilder
            dup
            aload 5 /* ssp */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* childPath */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 5 /* ssp */
        14: .line 194
            goto 16
        15: .line 195
      StackMap locals: java.net.URI java.net.URI java.lang.String java.lang.String top java.lang.String
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 5 /* ssp */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* childPath */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 5 /* ssp */
        16: .line 197
      StackMap locals:
      StackMap stack:
            new java.net.URI
            dup
            aload 0 /* base */
            invokevirtual java.net.URI.getScheme:()Ljava/lang/String;
            aload 5 /* ssp */
            aload 0 /* base */
            invokevirtual java.net.URI.getFragment:()Ljava/lang/String;
            invokespecial java.net.URI.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
            astore 4 /* resolved */
        end local 5 // java.lang.String ssp
        start local 4 // java.net.URI resolved
        17: .line 199
      StackMap locals: java.net.URI java.net.URI java.lang.String java.lang.String java.net.URI
      StackMap stack:
            aload 4 /* resolved */
            invokevirtual java.net.URI.normalize:()Ljava/net/URI;
        18: areturn
        end local 4 // java.net.URI resolved
        19: .line 200
      StackMap locals: java.net.URI java.net.URI java.lang.String java.lang.String
      StackMap stack: java.net.URISyntaxException
            pop
        20: .line 201
            aload 0 /* base */
            areturn
        end local 3 // java.lang.String path
        end local 2 // java.lang.String childPath
        end local 1 // java.net.URI child
        end local 0 // java.net.URI base
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   21     0       base  Ljava/net/URI;
            0   21     1      child  Ljava/net/URI;
            1   21     2  childPath  Ljava/lang/String;
            4   21     3       path  Ljava/lang/String;
           10   11     4   resolved  Ljava/net/URI;
           17   19     4   resolved  Ljava/net/URI;
           12   17     5        ssp  Ljava/lang/String;
      Exception table:
        from    to  target  type
           4    18      19  Class java.net.URISyntaxException
    MethodParameters:
       Name  Flags
      base   
      child  

  com.oracle.truffle.api.source.SourceSection resolve(com.oracle.truffle.api.source.SourceSection);
    descriptor: (Lcom/oracle/truffle/api/source/SourceSection;)Lcom/oracle/truffle/api/source/SourceSection;
    flags: (0x0000) 
    Code:
      stack=6, locals=9, args_size=2
        start local 0 // com.oracle.truffle.api.debug.DebugSourcesResolver this
        start local 1 // com.oracle.truffle.api.source.SourceSection section
         0: .line 206
            aload 1 /* section */
            ifnonnull 2
         1: .line 207
            aconst_null
            areturn
         2: .line 209
      StackMap locals:
      StackMap stack:
            aload 1 /* section */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getSource:()Lcom/oracle/truffle/api/source/Source;
            astore 2 /* source */
        start local 2 // com.oracle.truffle.api.source.Source source
         3: .line 210
            aload 0 /* this */
            aload 2 /* source */
            invokevirtual com.oracle.truffle.api.debug.DebugSourcesResolver.resolve:(Lcom/oracle/truffle/api/source/Source;)Lcom/oracle/truffle/api/source/Source;
            astore 3 /* rSource */
        start local 3 // com.oracle.truffle.api.source.Source rSource
         4: .line 211
            aload 3 /* rSource */
            aload 2 /* source */
            if_acmpeq 5
            aload 3 /* rSource */
            ifnonnull 6
         5: .line 212
      StackMap locals: com.oracle.truffle.api.source.Source com.oracle.truffle.api.source.Source
      StackMap stack:
            aload 1 /* section */
            areturn
         6: .line 215
      StackMap locals:
      StackMap stack:
            aload 1 /* section */
            invokevirtual com.oracle.truffle.api.source.SourceSection.isAvailable:()Z
            ifne 9
         7: .line 216
            aload 3 /* rSource */
            invokevirtual com.oracle.truffle.api.source.Source.createUnavailableSection:()Lcom/oracle/truffle/api/source/SourceSection;
         8: areturn
         9: .line 217
      StackMap locals:
      StackMap stack:
            aload 1 /* section */
            invokevirtual com.oracle.truffle.api.source.SourceSection.hasCharIndex:()Z
            ifeq 12
        10: .line 218
            aload 3 /* rSource */
            aload 1 /* section */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getCharIndex:()I
            aload 1 /* section */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getCharLength:()I
            invokevirtual com.oracle.truffle.api.source.Source.createSection:(II)Lcom/oracle/truffle/api/source/SourceSection;
        11: areturn
        12: .line 219
      StackMap locals:
      StackMap stack:
            aload 1 /* section */
            invokevirtual com.oracle.truffle.api.source.SourceSection.hasColumns:()Z
            ifeq 17
        13: .line 220
            aload 3 /* rSource */
            aload 1 /* section */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getStartLine:()I
            aload 1 /* section */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getStartColumn:()I
        14: .line 221
            aload 1 /* section */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getEndLine:()I
            aload 1 /* section */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getEndColumn:()I
        15: .line 220
            invokevirtual com.oracle.truffle.api.source.Source.createSection:(IIII)Lcom/oracle/truffle/api/source/SourceSection;
        16: areturn
        17: .line 222
      StackMap locals:
      StackMap stack:
            aload 1 /* section */
            invokevirtual com.oracle.truffle.api.source.SourceSection.hasLines:()Z
            ifeq 30
        18: .line 223
            aload 1 /* section */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getStartLine:()I
            istore 4 /* startLine */
        start local 4 // int startLine
        19: .line 224
            aload 1 /* section */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getEndLine:()I
            istore 5 /* endLine */
        start local 5 // int endLine
        20: .line 225
            iconst_0
            istore 6 /* startColumn */
        start local 6 // int startColumn
        21: .line 226
            aload 3 /* rSource */
            iload 4 /* startLine */
            invokevirtual com.oracle.truffle.api.source.Source.getCharacters:(I)Ljava/lang/CharSequence;
            astore 7 /* firstLine */
        start local 7 // java.lang.CharSequence firstLine
        22: .line 227
            aload 7 /* firstLine */
            invokeinterface java.lang.CharSequence.length:()I
            istore 8 /* length */
        start local 8 // int length
        23: .line 228
            goto 25
        24: .line 229
      StackMap locals: com.oracle.truffle.api.debug.DebugSourcesResolver com.oracle.truffle.api.source.SourceSection com.oracle.truffle.api.source.Source com.oracle.truffle.api.source.Source int int int java.lang.CharSequence int
      StackMap stack:
            iinc 6 /* startColumn */ 1
        25: .line 228
      StackMap locals:
      StackMap stack:
            iload 6 /* startColumn */
            iload 8 /* length */
            if_icmpge 26
            aload 7 /* firstLine */
            iload 6 /* startColumn */
            invokeinterface java.lang.CharSequence.charAt:(I)C
            invokestatic java.lang.Character.isWhitespace:(C)Z
            ifne 24
        26: .line 231
      StackMap locals:
      StackMap stack:
            iload 6 /* startColumn */
            iload 8 /* length */
            if_icmpne 28
        27: .line 232
            iconst_0
            istore 6 /* startColumn */
        28: .line 234
      StackMap locals:
      StackMap stack:
            aload 3 /* rSource */
            iload 4 /* startLine */
            iload 6 /* startColumn */
            iconst_1
            iadd
            iload 5 /* endLine */
            aload 3 /* rSource */
            iload 5 /* endLine */
            invokevirtual com.oracle.truffle.api.source.Source.getLineLength:(I)I
            invokevirtual com.oracle.truffle.api.source.Source.createSection:(IIII)Lcom/oracle/truffle/api/source/SourceSection;
        29: areturn
        end local 8 // int length
        end local 7 // java.lang.CharSequence firstLine
        end local 6 // int startColumn
        end local 5 // int endLine
        end local 4 // int startLine
        30: .line 236
      StackMap locals: com.oracle.truffle.api.debug.DebugSourcesResolver com.oracle.truffle.api.source.SourceSection com.oracle.truffle.api.source.Source com.oracle.truffle.api.source.Source
      StackMap stack:
            aload 1 /* section */
        31: areturn
        32: .line 238
      StackMap locals:
      StackMap stack: java.lang.IllegalArgumentException
            pop
        33: .line 240
            aload 1 /* section */
            areturn
        end local 3 // com.oracle.truffle.api.source.Source rSource
        end local 2 // com.oracle.truffle.api.source.Source source
        end local 1 // com.oracle.truffle.api.source.SourceSection section
        end local 0 // com.oracle.truffle.api.debug.DebugSourcesResolver this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   34     0         this  Lcom/oracle/truffle/api/debug/DebugSourcesResolver;
            0   34     1      section  Lcom/oracle/truffle/api/source/SourceSection;
            3   34     2       source  Lcom/oracle/truffle/api/source/Source;
            4   34     3      rSource  Lcom/oracle/truffle/api/source/Source;
           19   30     4    startLine  I
           20   30     5      endLine  I
           21   30     6  startColumn  I
           22   30     7    firstLine  Ljava/lang/CharSequence;
           23   30     8       length  I
      Exception table:
        from    to  target  type
           6     8      32  Class java.lang.IllegalArgumentException
           9    11      32  Class java.lang.IllegalArgumentException
          12    16      32  Class java.lang.IllegalArgumentException
          17    29      32  Class java.lang.IllegalArgumentException
          30    31      32  Class java.lang.IllegalArgumentException
    MethodParameters:
         Name  Flags
      section  

  static com.oracle.truffle.api.source.SourceSection findEncapsulatedSourceSection(com.oracle.truffle.api.nodes.Node);
    descriptor: (Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/source/SourceSection;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.nodes.Node node
         0: .line 248
            aload 0 /* node */
            astore 1 /* n */
        start local 1 // com.oracle.truffle.api.nodes.Node n
         1: .line 249
            goto 7
         2: .line 250
      StackMap locals: com.oracle.truffle.api.nodes.Node
      StackMap stack:
            aload 1 /* n */
            instanceof com.oracle.truffle.api.instrumentation.InstrumentableNode
            ifeq 6
            aload 1 /* n */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentableNode
            invokeinterface com.oracle.truffle.api.instrumentation.InstrumentableNode.isInstrumentable:()Z
            ifeq 6
         3: .line 251
            aload 1 /* n */
            invokevirtual com.oracle.truffle.api.nodes.Node.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            astore 2 /* sourceSection */
        start local 2 // com.oracle.truffle.api.source.SourceSection sourceSection
         4: .line 252
            aload 2 /* sourceSection */
            ifnull 6
            aload 2 /* sourceSection */
            invokevirtual com.oracle.truffle.api.source.SourceSection.isAvailable:()Z
            ifeq 6
         5: .line 253
            aload 2 /* sourceSection */
            areturn
        end local 2 // com.oracle.truffle.api.source.SourceSection sourceSection
         6: .line 256
      StackMap locals:
      StackMap stack:
            aload 1 /* n */
            invokevirtual com.oracle.truffle.api.nodes.Node.getParent:()Lcom/oracle/truffle/api/nodes/Node;
            astore 1 /* n */
         7: .line 249
      StackMap locals:
      StackMap stack:
            aload 1 /* n */
            ifnonnull 2
         8: .line 258
            aload 0 /* node */
            invokevirtual com.oracle.truffle.api.nodes.Node.getRootNode:()Lcom/oracle/truffle/api/nodes/RootNode;
            astore 2 /* rootNode */
        start local 2 // com.oracle.truffle.api.nodes.RootNode rootNode
         9: .line 259
            aload 2 /* rootNode */
            ifnull 10
            aload 2 /* rootNode */
            invokevirtual com.oracle.truffle.api.nodes.RootNode.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            goto 11
      StackMap locals: com.oracle.truffle.api.nodes.RootNode
      StackMap stack:
        10: aconst_null
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.source.SourceSection
        11: areturn
        end local 2 // com.oracle.truffle.api.nodes.RootNode rootNode
        end local 1 // com.oracle.truffle.api.nodes.Node n
        end local 0 // com.oracle.truffle.api.nodes.Node node
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   12     0           node  Lcom/oracle/truffle/api/nodes/Node;
            1   12     1              n  Lcom/oracle/truffle/api/nodes/Node;
            4    6     2  sourceSection  Lcom/oracle/truffle/api/source/SourceSection;
            9   12     2       rootNode  Lcom/oracle/truffle/api/nodes/RootNode;
    MethodParameters:
      Name  Flags
      node  
}
SourceFile: "DebugSourcesResolver.java"
InnerClasses:
  public final Env = com.oracle.truffle.api.instrumentation.TruffleInstrument$Env of com.oracle.truffle.api.instrumentation.TruffleInstrument
  public SourceBuilder = com.oracle.truffle.api.source.Source$SourceBuilder of com.oracle.truffle.api.source.Source