final class com.oracle.truffle.polyglot.FileSystems
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.polyglot.FileSystems
  super_class: java.lang.Object
{
  static final java.lang.String FILE_SCHEME;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "file"

  static final org.graalvm.polyglot.io.FileSystem INVALID_FILESYSTEM;
    descriptor: Lorg/graalvm/polyglot/io/FileSystem;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  private static final java.util.concurrent.atomic.AtomicReference<java.nio.file.spi.FileSystemProvider> DEFAULT_FILE_SYSTEM_PROVIDER;
    descriptor: Ljava/util/concurrent/atomic/AtomicReference;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/concurrent/atomic/AtomicReference<Ljava/nio/file/spi/FileSystemProvider;>;

  private static final java.lang.String TMP_FILE;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 91
            new com.oracle.truffle.polyglot.FileSystems$InvalidFileSystem
            dup
            invokespecial com.oracle.truffle.polyglot.FileSystems$InvalidFileSystem.<init>:()V
            putstatic com.oracle.truffle.polyglot.FileSystems.INVALID_FILESYSTEM:Lorg/graalvm/polyglot/io/FileSystem;
         1: .line 92
            new java.util.concurrent.atomic.AtomicReference
            dup
            invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
            putstatic com.oracle.truffle.polyglot.FileSystems.DEFAULT_FILE_SYSTEM_PROVIDER:Ljava/util/concurrent/atomic/AtomicReference;
         2: .line 93
            ldc "java.io.tmpdir"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            putstatic com.oracle.truffle.polyglot.FileSystems.TMP_FILE:Ljava/lang/String;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.FileSystems this
         0: .line 95
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 96
            new java.lang.IllegalStateException
            dup
            ldc "No instance allowed"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.oracle.truffle.polyglot.FileSystems this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/polyglot/FileSystems;

  static org.graalvm.polyglot.io.FileSystem newDefaultFileSystem();
    descriptor: ()Lorg/graalvm/polyglot/io/FileSystem;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 100
            invokestatic com.oracle.truffle.polyglot.FileSystems.findDefaultFileSystemProvider:()Ljava/nio/file/spi/FileSystemProvider;
            invokestatic com.oracle.truffle.polyglot.FileSystems.newFileSystem:(Ljava/nio/file/spi/FileSystemProvider;)Lorg/graalvm/polyglot/io/FileSystem;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static org.graalvm.polyglot.io.FileSystem newDefaultFileSystem(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Lorg/graalvm/polyglot/io/FileSystem;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.nio.file.Path userDir
         0: .line 104
            invokestatic com.oracle.truffle.polyglot.FileSystems.findDefaultFileSystemProvider:()Ljava/nio/file/spi/FileSystemProvider;
            aload 0 /* userDir */
            invokestatic com.oracle.truffle.polyglot.FileSystems.newFileSystem:(Ljava/nio/file/spi/FileSystemProvider;Ljava/nio/file/Path;)Lorg/graalvm/polyglot/io/FileSystem;
            areturn
        end local 0 // java.nio.file.Path userDir
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  userDir  Ljava/nio/file/Path;
    MethodParameters:
         Name  Flags
      userDir  

  static org.graalvm.polyglot.io.FileSystem newNoIOFileSystem();
    descriptor: ()Lorg/graalvm/polyglot/io/FileSystem;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 108
            new com.oracle.truffle.polyglot.FileSystems$DeniedIOFileSystem
            dup
            invokespecial com.oracle.truffle.polyglot.FileSystems$DeniedIOFileSystem.<init>:()V
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static org.graalvm.polyglot.io.FileSystem newLanguageHomeFileSystem();
    descriptor: ()Lorg/graalvm/polyglot/io/FileSystem;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 112
            new com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem
            dup
            invokespecial com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.<init>:()V
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static boolean hasAllAccess(org.graalvm.polyglot.io.FileSystem);
    descriptor: (Lorg/graalvm/polyglot/io/FileSystem;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.polyglot.io.FileSystem fileSystem
         0: .line 116
            aload 0 /* fileSystem */
            instanceof com.oracle.truffle.polyglot.FileSystems$InternalFileSystem
            ifeq 1
            aload 0 /* fileSystem */
            checkcast com.oracle.truffle.polyglot.FileSystems$InternalFileSystem
            invokeinterface com.oracle.truffle.polyglot.FileSystems$InternalFileSystem.hasAllAccess:()Z
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // org.graalvm.polyglot.io.FileSystem fileSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0  fileSystem  Lorg/graalvm/polyglot/io/FileSystem;
    MethodParameters:
            Name  Flags
      fileSystem  

  static boolean isInternal(org.graalvm.polyglot.io.FileSystem);
    descriptor: (Lorg/graalvm/polyglot/io/FileSystem;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.polyglot.io.FileSystem fileSystem
         0: .line 120
            aload 0 /* fileSystem */
            instanceof com.oracle.truffle.polyglot.FileSystems$InternalFileSystem
            ireturn
        end local 0 // org.graalvm.polyglot.io.FileSystem fileSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  fileSystem  Lorg/graalvm/polyglot/io/FileSystem;
    MethodParameters:
            Name  Flags
      fileSystem  

  static boolean hasNoIOFileSystem(com.oracle.truffle.api.TruffleFile);
    descriptor: (Lcom/oracle/truffle/api/TruffleFile;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // com.oracle.truffle.api.TruffleFile file
         0: .line 124
            getstatic com.oracle.truffle.polyglot.EngineAccessor.LANGUAGE:Lcom/oracle/truffle/api/impl/Accessor$LanguageSupport;
            aload 0 /* file */
            invokevirtual com.oracle.truffle.api.impl.Accessor$LanguageSupport.getFileSystem:(Lcom/oracle/truffle/api/TruffleFile;)Lorg/graalvm/polyglot/io/FileSystem;
            astore 1 /* fileSystem */
        start local 1 // org.graalvm.polyglot.io.FileSystem fileSystem
         1: .line 125
            aload 1 /* fileSystem */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            ldc Lcom/oracle/truffle/polyglot/FileSystems$DeniedIOFileSystem;
            if_acmpne 3
         2: .line 126
            iconst_1
            ireturn
         3: .line 128
      StackMap locals: org.graalvm.polyglot.io.FileSystem
      StackMap stack:
            aload 1 /* fileSystem */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            ldc Lcom/oracle/truffle/polyglot/FileSystems$LanguageHomeFileSystem;
            if_acmpne 9
         4: .line 129
            getstatic com.oracle.truffle.polyglot.EngineAccessor.LANGUAGE:Lcom/oracle/truffle/api/impl/Accessor$LanguageSupport;
            aload 0 /* file */
            invokevirtual com.oracle.truffle.api.impl.Accessor$LanguageSupport.getPath:(Lcom/oracle/truffle/api/TruffleFile;)Ljava/nio/file/Path;
            astore 2 /* path */
        start local 2 // java.nio.file.Path path
         5: .line 130
            aload 1 /* fileSystem */
            checkcast com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem
            astore 3 /* lhfs */
        start local 3 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem lhfs
         6: .line 131
            aload 3 /* lhfs */
            aload 3 /* lhfs */
            aload 2 /* path */
            invokevirtual com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.toNormalizedAbsolutePath:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            invokevirtual com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.inLanguageHome:(Ljava/nio/file/Path;)Z
            ifeq 7
            iconst_0
            goto 8
      StackMap locals: java.nio.file.Path com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem
      StackMap stack:
         7: iconst_1
      StackMap locals:
      StackMap stack: int
         8: ireturn
        end local 3 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem lhfs
        end local 2 // java.nio.file.Path path
         9: .line 133
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // org.graalvm.polyglot.io.FileSystem fileSystem
        end local 0 // com.oracle.truffle.api.TruffleFile file
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0        file  Lcom/oracle/truffle/api/TruffleFile;
            1   10     1  fileSystem  Lorg/graalvm/polyglot/io/FileSystem;
            5    9     2        path  Ljava/nio/file/Path;
            6    9     3        lhfs  Lcom/oracle/truffle/polyglot/FileSystems$LanguageHomeFileSystem;
    MethodParameters:
      Name  Flags
      file  

  static java.util.function.Supplier<java.util.Map<java.lang.String, java.util.Collection<? extends com.oracle.truffle.api.TruffleFile$FileTypeDetector>>> newFileTypeDetectorsSupplier(java.lang.Iterable<com.oracle.truffle.polyglot.LanguageCache>);
    descriptor: (Ljava/lang/Iterable;)Ljava/util/function/Supplier;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Iterable languageCaches
         0: .line 137
            new com.oracle.truffle.polyglot.FileSystems$FileTypeDetectorsSupplier
            dup
            aload 0 /* languageCaches */
            invokespecial com.oracle.truffle.polyglot.FileSystems$FileTypeDetectorsSupplier.<init>:(Ljava/lang/Iterable;)V
            areturn
        end local 0 // java.lang.Iterable languageCaches
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0  languageCaches  Ljava/lang/Iterable<Lcom/oracle/truffle/polyglot/LanguageCache;>;
    Signature: (Ljava/lang/Iterable<Lcom/oracle/truffle/polyglot/LanguageCache;>;)Ljava/util/function/Supplier<Ljava/util/Map<Ljava/lang/String;Ljava/util/Collection<+Lcom/oracle/truffle/api/TruffleFile$FileTypeDetector;>;>;>;
    MethodParameters:
                Name  Flags
      languageCaches  

  static void resetDefaultFileSystemProvider();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 145
            getstatic com.oracle.truffle.polyglot.FileSystems.DEFAULT_FILE_SYSTEM_PROVIDER:Ljava/util/concurrent/atomic/AtomicReference;
            aconst_null
            invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
         1: .line 146
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static java.lang.String getRelativePathInLanguageHome(com.oracle.truffle.api.TruffleFile);
    descriptor: (Lcom/oracle/truffle/api/TruffleFile;)Ljava/lang/String;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=10, args_size=1
        start local 0 // com.oracle.truffle.api.TruffleFile file
         0: .line 149
            getstatic com.oracle.truffle.polyglot.EngineAccessor.LANGUAGE:Lcom/oracle/truffle/api/impl/Accessor$LanguageSupport;
            getstatic com.oracle.truffle.polyglot.EngineAccessor.LANGUAGE:Lcom/oracle/truffle/api/impl/Accessor$LanguageSupport;
            aload 0 /* file */
            invokevirtual com.oracle.truffle.api.impl.Accessor$LanguageSupport.getFileSystemContext:(Lcom/oracle/truffle/api/TruffleFile;)Ljava/lang/Object;
            invokevirtual com.oracle.truffle.api.impl.Accessor$LanguageSupport.getFileSystemEngineObject:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 1 /* engineObject */
        start local 1 // java.lang.Object engineObject
         1: .line 150
            aload 1 /* engineObject */
            instanceof com.oracle.truffle.polyglot.PolyglotLanguageContext
            ifeq 18
         2: .line 151
            aload 1 /* engineObject */
            checkcast com.oracle.truffle.polyglot.PolyglotLanguageContext
            astore 2 /* context */
        start local 2 // com.oracle.truffle.polyglot.PolyglotLanguageContext context
         3: .line 152
            getstatic com.oracle.truffle.polyglot.EngineAccessor.LANGUAGE:Lcom/oracle/truffle/api/impl/Accessor$LanguageSupport;
            aload 0 /* file */
            invokevirtual com.oracle.truffle.api.impl.Accessor$LanguageSupport.getFileSystem:(Lcom/oracle/truffle/api/TruffleFile;)Lorg/graalvm/polyglot/io/FileSystem;
            astore 3 /* fs */
        start local 3 // org.graalvm.polyglot.io.FileSystem fs
         4: .line 153
            getstatic com.oracle.truffle.polyglot.EngineAccessor.LANGUAGE:Lcom/oracle/truffle/api/impl/Accessor$LanguageSupport;
            aload 0 /* file */
            invokevirtual com.oracle.truffle.api.impl.Accessor$LanguageSupport.getPath:(Lcom/oracle/truffle/api/TruffleFile;)Ljava/nio/file/Path;
            astore 4 /* path */
        start local 4 // java.nio.file.Path path
         5: .line 154
            aload 3 /* fs */
            aload 4 /* path */
            aload 2 /* context */
            getfield com.oracle.truffle.polyglot.PolyglotLanguageContext.language:Lcom/oracle/truffle/polyglot/PolyglotLanguage;
            invokestatic com.oracle.truffle.polyglot.FileSystems.relativizeToLanguageHome:(Lorg/graalvm/polyglot/io/FileSystem;Ljava/nio/file/Path;Lcom/oracle/truffle/polyglot/PolyglotLanguage;)Ljava/lang/String;
            astore 5 /* result */
        start local 5 // java.lang.String result
         6: .line 155
            aload 5 /* result */
            ifnull 8
         7: .line 156
            aload 5 /* result */
            areturn
         8: .line 158
      StackMap locals: com.oracle.truffle.api.TruffleFile java.lang.Object com.oracle.truffle.polyglot.PolyglotLanguageContext org.graalvm.polyglot.io.FileSystem java.nio.file.Path java.lang.String
      StackMap stack:
            aload 2 /* context */
            iconst_1
            invokevirtual com.oracle.truffle.polyglot.PolyglotLanguageContext.getAccessibleLanguages:(Z)Ljava/util/Map;
            astore 6 /* accessibleLanguages */
        start local 6 // java.util.Map accessibleLanguages
         9: .line 164
            aload 6 /* accessibleLanguages */
            ifnull 17
        10: .line 165
            aload 6 /* accessibleLanguages */
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 8
            goto 16
      StackMap locals: com.oracle.truffle.api.TruffleFile java.lang.Object com.oracle.truffle.polyglot.PolyglotLanguageContext org.graalvm.polyglot.io.FileSystem java.nio.file.Path java.lang.String java.util.Map top java.util.Iterator
      StackMap stack:
        11: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.nodes.LanguageInfo
            astore 7 /* language */
        start local 7 // com.oracle.truffle.api.nodes.LanguageInfo language
        12: .line 166
            getstatic com.oracle.truffle.polyglot.EngineAccessor.NODES:Lcom/oracle/truffle/api/impl/Accessor$NodeSupport;
            aload 7 /* language */
            invokevirtual com.oracle.truffle.api.impl.Accessor$NodeSupport.getPolyglotLanguage:(Lcom/oracle/truffle/api/nodes/LanguageInfo;)Ljava/lang/Object;
            checkcast com.oracle.truffle.polyglot.PolyglotLanguage
            astore 9 /* lang */
        start local 9 // com.oracle.truffle.polyglot.PolyglotLanguage lang
        13: .line 167
            aload 3 /* fs */
            aload 4 /* path */
            aload 9 /* lang */
            invokestatic com.oracle.truffle.polyglot.FileSystems.relativizeToLanguageHome:(Lorg/graalvm/polyglot/io/FileSystem;Ljava/nio/file/Path;Lcom/oracle/truffle/polyglot/PolyglotLanguage;)Ljava/lang/String;
            astore 5 /* result */
        14: .line 168
            aload 5 /* result */
            ifnull 16
        15: .line 169
            aload 5 /* result */
            areturn
        end local 9 // com.oracle.truffle.polyglot.PolyglotLanguage lang
        end local 7 // com.oracle.truffle.api.nodes.LanguageInfo language
        16: .line 165
      StackMap locals:
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 11
        17: .line 173
      StackMap locals: com.oracle.truffle.api.TruffleFile java.lang.Object com.oracle.truffle.polyglot.PolyglotLanguageContext org.graalvm.polyglot.io.FileSystem java.nio.file.Path java.lang.String java.util.Map
      StackMap stack:
            aconst_null
            areturn
        end local 6 // java.util.Map accessibleLanguages
        end local 5 // java.lang.String result
        end local 4 // java.nio.file.Path path
        end local 3 // org.graalvm.polyglot.io.FileSystem fs
        end local 2 // com.oracle.truffle.polyglot.PolyglotLanguageContext context
        18: .line 174
      StackMap locals: com.oracle.truffle.api.TruffleFile java.lang.Object
      StackMap stack:
            aload 1 /* engineObject */
            instanceof com.oracle.truffle.polyglot.PolyglotSource$EmbedderFileSystemContext
            ifeq 20
        19: .line 176
            aconst_null
            areturn
        20: .line 178
      StackMap locals:
      StackMap stack:
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        end local 1 // java.lang.Object engineObject
        end local 0 // com.oracle.truffle.api.TruffleFile file
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   21     0                 file  Lcom/oracle/truffle/api/TruffleFile;
            1   21     1         engineObject  Ljava/lang/Object;
            3   18     2              context  Lcom/oracle/truffle/polyglot/PolyglotLanguageContext;
            4   18     3                   fs  Lorg/graalvm/polyglot/io/FileSystem;
            5   18     4                 path  Ljava/nio/file/Path;
            6   18     5               result  Ljava/lang/String;
            9   18     6  accessibleLanguages  Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/api/nodes/LanguageInfo;>;
           12   16     7             language  Lcom/oracle/truffle/api/nodes/LanguageInfo;
           13   16     9                 lang  Lcom/oracle/truffle/polyglot/PolyglotLanguage;
    MethodParameters:
      Name  Flags
      file  

  private static java.lang.String relativizeToLanguageHome(org.graalvm.polyglot.io.FileSystem, java.nio.file.Path, com.oracle.truffle.polyglot.PolyglotLanguage);
    descriptor: (Lorg/graalvm/polyglot/io/FileSystem;Ljava/nio/file/Path;Lcom/oracle/truffle/polyglot/PolyglotLanguage;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // org.graalvm.polyglot.io.FileSystem fs
        start local 1 // java.nio.file.Path path
        start local 2 // com.oracle.truffle.polyglot.PolyglotLanguage language
         0: .line 183
            aload 2 /* language */
            getfield com.oracle.truffle.polyglot.PolyglotLanguage.cache:Lcom/oracle/truffle/polyglot/LanguageCache;
            invokevirtual com.oracle.truffle.polyglot.LanguageCache.getLanguageHome:()Ljava/lang/String;
            astore 3 /* languageHome */
        start local 3 // java.lang.String languageHome
         1: .line 184
            aload 3 /* languageHome */
            ifnonnull 3
         2: .line 185
            aconst_null
            areturn
         3: .line 187
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* fs */
            aload 2 /* language */
            getfield com.oracle.truffle.polyglot.PolyglotLanguage.cache:Lcom/oracle/truffle/polyglot/LanguageCache;
            invokevirtual com.oracle.truffle.polyglot.LanguageCache.getLanguageHome:()Ljava/lang/String;
            invokeinterface org.graalvm.polyglot.io.FileSystem.parsePath:(Ljava/lang/String;)Ljava/nio/file/Path;
            astore 4 /* languageHomePath */
        start local 4 // java.nio.file.Path languageHomePath
         4: .line 188
            aload 1 /* path */
            aload 4 /* languageHomePath */
            invokeinterface java.nio.file.Path.startsWith:(Ljava/nio/file/Path;)Z
            ifeq 6
         5: .line 189
            aload 4 /* languageHomePath */
            aload 1 /* path */
            invokeinterface java.nio.file.Path.relativize:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            areturn
         6: .line 191
      StackMap locals: java.nio.file.Path
      StackMap stack:
            aconst_null
            areturn
        end local 4 // java.nio.file.Path languageHomePath
        end local 3 // java.lang.String languageHome
        end local 2 // com.oracle.truffle.polyglot.PolyglotLanguage language
        end local 1 // java.nio.file.Path path
        end local 0 // org.graalvm.polyglot.io.FileSystem fs
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    7     0                fs  Lorg/graalvm/polyglot/io/FileSystem;
            0    7     1              path  Ljava/nio/file/Path;
            0    7     2          language  Lcom/oracle/truffle/polyglot/PolyglotLanguage;
            1    7     3      languageHome  Ljava/lang/String;
            4    7     4  languageHomePath  Ljava/nio/file/Path;
    MethodParameters:
          Name  Flags
      fs        
      path      
      language  

  private static org.graalvm.polyglot.io.FileSystem newFileSystem(java.nio.file.spi.FileSystemProvider);
    descriptor: (Ljava/nio/file/spi/FileSystemProvider;)Lorg/graalvm/polyglot/io/FileSystem;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.nio.file.spi.FileSystemProvider fileSystemProvider
         0: .line 195
            new com.oracle.truffle.polyglot.FileSystems$NIOFileSystem
            dup
            aload 0 /* fileSystemProvider */
            invokespecial com.oracle.truffle.polyglot.FileSystems$NIOFileSystem.<init>:(Ljava/nio/file/spi/FileSystemProvider;)V
            areturn
        end local 0 // java.nio.file.spi.FileSystemProvider fileSystemProvider
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    1     0  fileSystemProvider  Ljava/nio/file/spi/FileSystemProvider;
    MethodParameters:
                    Name  Flags
      fileSystemProvider  final

  private static org.graalvm.polyglot.io.FileSystem newFileSystem(java.nio.file.spi.FileSystemProvider, java.nio.file.Path);
    descriptor: (Ljava/nio/file/spi/FileSystemProvider;Ljava/nio/file/Path;)Lorg/graalvm/polyglot/io/FileSystem;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.nio.file.spi.FileSystemProvider fileSystemProvider
        start local 1 // java.nio.file.Path userDir
         0: .line 199
            new com.oracle.truffle.polyglot.FileSystems$NIOFileSystem
            dup
            aload 0 /* fileSystemProvider */
            aload 1 /* userDir */
            invokespecial com.oracle.truffle.polyglot.FileSystems$NIOFileSystem.<init>:(Ljava/nio/file/spi/FileSystemProvider;Ljava/nio/file/Path;)V
            areturn
        end local 1 // java.nio.file.Path userDir
        end local 0 // java.nio.file.spi.FileSystemProvider fileSystemProvider
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    1     0  fileSystemProvider  Ljava/nio/file/spi/FileSystemProvider;
            0    1     1             userDir  Ljava/nio/file/Path;
    MethodParameters:
                    Name  Flags
      fileSystemProvider  final
      userDir             final

  private static java.nio.file.spi.FileSystemProvider findDefaultFileSystemProvider();
    descriptor: ()Ljava/nio/file/spi/FileSystemProvider;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=0
         0: .line 203
            getstatic com.oracle.truffle.polyglot.FileSystems.DEFAULT_FILE_SYSTEM_PROVIDER:Ljava/util/concurrent/atomic/AtomicReference;
            invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
            checkcast java.nio.file.spi.FileSystemProvider
            astore 0 /* defaultFsProvider */
        start local 0 // java.nio.file.spi.FileSystemProvider defaultFsProvider
         1: .line 204
            aload 0 /* defaultFsProvider */
            ifnonnull 11
         2: .line 205
            invokestatic java.nio.file.spi.FileSystemProvider.installedProviders:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 2
            goto 7
      StackMap locals: java.nio.file.spi.FileSystemProvider top java.util.Iterator
      StackMap stack:
         3: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.nio.file.spi.FileSystemProvider
            astore 1 /* fsp */
        start local 1 // java.nio.file.spi.FileSystemProvider fsp
         4: .line 206
            ldc "file"
            aload 1 /* fsp */
            invokevirtual java.nio.file.spi.FileSystemProvider.getScheme:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 7
         5: .line 207
            aload 1 /* fsp */
            astore 0 /* defaultFsProvider */
         6: .line 208
            goto 8
        end local 1 // java.nio.file.spi.FileSystemProvider fsp
         7: .line 205
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         8: .line 211
      StackMap locals: java.nio.file.spi.FileSystemProvider
      StackMap stack:
            aload 0 /* defaultFsProvider */
            ifnonnull 10
         9: .line 212
            new java.lang.IllegalStateException
            dup
            ldc "No FileSystemProvider for scheme 'file'."
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 214
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.polyglot.FileSystems.DEFAULT_FILE_SYSTEM_PROVIDER:Ljava/util/concurrent/atomic/AtomicReference;
            aload 0 /* defaultFsProvider */
            invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
        11: .line 216
      StackMap locals:
      StackMap stack:
            aload 0 /* defaultFsProvider */
            areturn
        end local 0 // java.nio.file.spi.FileSystemProvider defaultFsProvider
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            1   12     0  defaultFsProvider  Ljava/nio/file/spi/FileSystemProvider;
            4    7     1                fsp  Ljava/nio/file/spi/FileSystemProvider;

  private static boolean isFollowLinks(java.nio.file.LinkOption[]);
    descriptor: ([Ljava/nio/file/LinkOption;)Z
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // java.nio.file.LinkOption[] linkOptions
         0: .line 220
            aload 0 /* linkOptions */
            dup
            astore 4
            arraylength
            istore 3
            iconst_0
            istore 2
            goto 5
      StackMap locals: java.nio.file.LinkOption[] top int int java.nio.file.LinkOption[]
      StackMap stack:
         1: aload 4
            iload 2
            aaload
            astore 1 /* lo */
        start local 1 // java.nio.file.LinkOption lo
         2: .line 221
            aload 1 /* lo */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            getstatic java.nio.file.LinkOption.NOFOLLOW_LINKS:Ljava/nio/file/LinkOption;
            if_acmpne 4
         3: .line 222
            iconst_0
            ireturn
        end local 1 // java.nio.file.LinkOption lo
         4: .line 220
      StackMap locals:
      StackMap stack:
            iinc 2 1
      StackMap locals:
      StackMap stack:
         5: iload 2
            iload 3
            if_icmplt 1
         6: .line 225
            iconst_1
            ireturn
        end local 0 // java.nio.file.LinkOption[] linkOptions
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0  linkOptions  [Ljava/nio/file/LinkOption;
            2    4     1           lo  Ljava/nio/file/LinkOption;
    MethodParameters:
             Name  Flags
      linkOptions  final

  private static java.lang.SecurityException forbidden(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Ljava/lang/SecurityException;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // java.nio.file.Path path
         0: .line 1312
            new java.lang.SecurityException
            dup
            aload 0 /* path */
            ifnonnull 1
            ldc "Operation is not allowed."
            goto 2
      StackMap locals: java.nio.file.Path
      StackMap stack: new 0 new 0
         1: new java.lang.StringBuilder
            dup
            ldc "Operation is not allowed for: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* path */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
      StackMap locals: java.nio.file.Path
      StackMap stack: new 0 new 0 java.lang.String
         2: invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.nio.file.Path path
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  path  Ljava/nio/file/Path;
    MethodParameters:
      Name  Flags
      path  final
}
SourceFile: "FileSystems.java"
NestMembers:
  com.oracle.truffle.polyglot.FileSystems$DeniedIOFileSystem  com.oracle.truffle.polyglot.FileSystems$FileTypeDetectorsSupplier  com.oracle.truffle.polyglot.FileSystems$InternalFileSystem  com.oracle.truffle.polyglot.FileSystems$InvalidFileSystem  com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem  com.oracle.truffle.polyglot.FileSystems$NIOFileSystem  com.oracle.truffle.polyglot.FileSystems$NIOFileSystem$RelativizeDirectoryStream  com.oracle.truffle.polyglot.FileSystems$NIOFileSystem$RelativizeDirectoryStream$RelativizeIterator  com.oracle.truffle.polyglot.FileSystems$PreInitializeContextFileSystem  com.oracle.truffle.polyglot.FileSystems$PreInitializeContextFileSystem$1  com.oracle.truffle.polyglot.FileSystems$PreInitializeContextFileSystem$ImageBuildTimeFactory  com.oracle.truffle.polyglot.FileSystems$PreInitializeContextFileSystem$ImageExecutionTimeFactory  com.oracle.truffle.polyglot.FileSystems$PreInitializeContextFileSystem$ImageHeapPath  com.oracle.truffle.polyglot.FileSystems$PreInitializeContextFileSystem$PreInitializePath  com.oracle.truffle.polyglot.FileSystems$PreInitializeContextFileSystem$WrappingPathIterator
InnerClasses:
  public abstract LanguageSupport = com.oracle.truffle.api.impl.Accessor$LanguageSupport of com.oracle.truffle.api.impl.Accessor
  public abstract NodeSupport = com.oracle.truffle.api.impl.Accessor$NodeSupport of com.oracle.truffle.api.impl.Accessor
  private DeniedIOFileSystem = com.oracle.truffle.polyglot.FileSystems$DeniedIOFileSystem of com.oracle.truffle.polyglot.FileSystems
  private final FileTypeDetectorsSupplier = com.oracle.truffle.polyglot.FileSystems$FileTypeDetectorsSupplier of com.oracle.truffle.polyglot.FileSystems
  private abstract InternalFileSystem = com.oracle.truffle.polyglot.FileSystems$InternalFileSystem of com.oracle.truffle.polyglot.FileSystems
  private final InvalidFileSystem = com.oracle.truffle.polyglot.FileSystems$InvalidFileSystem of com.oracle.truffle.polyglot.FileSystems
  private LanguageHomeFileSystem = com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem of com.oracle.truffle.polyglot.FileSystems
  private final NIOFileSystem = com.oracle.truffle.polyglot.FileSystems$NIOFileSystem of com.oracle.truffle.polyglot.FileSystems
  final PreInitializeContextFileSystem = com.oracle.truffle.polyglot.FileSystems$PreInitializeContextFileSystem of com.oracle.truffle.polyglot.FileSystems
  final EmbedderFileSystemContext = com.oracle.truffle.polyglot.PolyglotSource$EmbedderFileSystemContext of com.oracle.truffle.polyglot.PolyglotSource