class com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem extends com.oracle.truffle.polyglot.FileSystems$DeniedIOFileSystem
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem
  super_class: com.oracle.truffle.polyglot.FileSystems$DeniedIOFileSystem
{
  private final org.graalvm.polyglot.io.FileSystem fullIO;
    descriptor: Lorg/graalvm/polyglot/io/FileSystem;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private volatile java.util.Set<java.nio.file.Path> languageHomes;
    descriptor: Ljava/util/Set;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
    Signature: Ljava/util/Set<Ljava/nio/file/Path;>;

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 1051
            ldc Lcom/oracle/truffle/polyglot/FileSystems;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
         0: .line 1056
            aload 0 /* this */
            invokespecial com.oracle.truffle.polyglot.FileSystems$DeniedIOFileSystem.<init>:()V
         1: .line 1057
            aload 0 /* this */
            invokestatic com.oracle.truffle.polyglot.FileSystems.newDefaultFileSystem:()Lorg/graalvm/polyglot/io/FileSystem;
            putfield com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.fullIO:Lorg/graalvm/polyglot/io/FileSystem;
         2: .line 1058
            return
        end local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/polyglot/FileSystems$LanguageHomeFileSystem;

  public void checkAccess(java.nio.file.Path, java.util.Set<? extends java.nio.file.AccessMode>, java.nio.file.LinkOption[]);
    descriptor: (Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/LinkOption;)V
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
        start local 1 // java.nio.file.Path path
        start local 2 // java.util.Set modes
        start local 3 // java.nio.file.LinkOption[] linkOptions
         0: .line 1062
            aload 0 /* this */
            aload 1 /* path */
            invokevirtual com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.toNormalizedAbsolutePath:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 4 /* absolutePath */
        start local 4 // java.nio.file.Path absolutePath
         1: .line 1063
            aload 0 /* this */
            aload 4 /* absolutePath */
            invokevirtual com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.inLanguageHome:(Ljava/nio/file/Path;)Z
            ifeq 6
         2: .line 1064
            aload 2 /* modes */
            getstatic java.nio.file.AccessMode.WRITE:Ljava/nio/file/AccessMode;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 1065
            new java.io.IOException
            dup
            ldc "Read-only file"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 1067
      StackMap locals: java.nio.file.Path
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.fullIO:Lorg/graalvm/polyglot/io/FileSystem;
            aload 4 /* absolutePath */
            aload 2 /* modes */
            aload 3 /* linkOptions */
            invokeinterface org.graalvm.polyglot.io.FileSystem.checkAccess:(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/LinkOption;)V
         5: .line 1068
            return
         6: .line 1070
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* path */
            aload 2 /* modes */
            aload 3 /* linkOptions */
            invokespecial com.oracle.truffle.polyglot.FileSystems$DeniedIOFileSystem.checkAccess:(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/LinkOption;)V
         7: .line 1071
            return
        end local 4 // java.nio.file.Path absolutePath
        end local 3 // java.nio.file.LinkOption[] linkOptions
        end local 2 // java.util.Set modes
        end local 1 // java.nio.file.Path path
        end local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    8     0          this  Lcom/oracle/truffle/polyglot/FileSystems$LanguageHomeFileSystem;
            0    8     1          path  Ljava/nio/file/Path;
            0    8     2         modes  Ljava/util/Set<+Ljava/nio/file/AccessMode;>;
            0    8     3   linkOptions  [Ljava/nio/file/LinkOption;
            1    8     4  absolutePath  Ljava/nio/file/Path;
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/nio/file/Path;Ljava/util/Set<+Ljava/nio/file/AccessMode;>;[Ljava/nio/file/LinkOption;)V
    MethodParameters:
             Name  Flags
      path         
      modes        
      linkOptions  

  public java.nio.channels.SeekableByteChannel newByteChannel(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>[]);
    descriptor: (Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/SeekableByteChannel;
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
        start local 1 // java.nio.file.Path inPath
        start local 2 // java.util.Set options
        start local 3 // java.nio.file.attribute.FileAttribute[] attrs
         0: .line 1075
            aload 2 /* options */
            getstatic java.nio.file.StandardOpenOption.READ:Ljava/nio/file/StandardOpenOption;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            istore 4 /* read */
        start local 4 // boolean read
         1: .line 1076
            aload 2 /* options */
            getstatic java.nio.file.StandardOpenOption.WRITE:Ljava/nio/file/StandardOpenOption;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 2
            aload 2 /* options */
            getstatic java.nio.file.StandardOpenOption.DELETE_ON_CLOSE:Ljava/nio/file/StandardOpenOption;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 2
            iconst_0
            goto 3
      StackMap locals: int
      StackMap stack:
         2: iconst_1
      StackMap locals:
      StackMap stack: int
         3: istore 5 /* write */
        start local 5 // boolean write
         4: .line 1077
            iload 4 /* read */
            ifne 9
            iload 5 /* write */
            ifne 9
         5: .line 1078
            aload 2 /* options */
            getstatic java.nio.file.StandardOpenOption.APPEND:Ljava/nio/file/StandardOpenOption;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 8
         6: .line 1079
            iconst_1
            istore 5 /* write */
         7: .line 1080
            goto 9
         8: .line 1081
      StackMap locals: int
      StackMap stack:
            iconst_1
            istore 4 /* read */
         9: .line 1084
      StackMap locals:
      StackMap stack:
            iload 5 /* write */
            ifne 14
        10: .line 1085
            getstatic com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.$assertionsDisabled:Z
            ifne 11
            iload 4 /* read */
            ifne 11
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        11: .line 1086
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* inPath */
            invokevirtual com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.toNormalizedAbsolutePath:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 6 /* absolutePath */
        start local 6 // java.nio.file.Path absolutePath
        12: .line 1087
            aload 0 /* this */
            aload 6 /* absolutePath */
            invokevirtual com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.inLanguageHome:(Ljava/nio/file/Path;)Z
            ifeq 14
        13: .line 1088
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.fullIO:Lorg/graalvm/polyglot/io/FileSystem;
            aload 6 /* absolutePath */
            aload 2 /* options */
            aload 3 /* attrs */
            invokeinterface org.graalvm.polyglot.io.FileSystem.newByteChannel:(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/SeekableByteChannel;
            areturn
        end local 6 // java.nio.file.Path absolutePath
        14: .line 1091
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* inPath */
            aload 2 /* options */
            aload 3 /* attrs */
            invokespecial com.oracle.truffle.polyglot.FileSystems$DeniedIOFileSystem.newByteChannel:(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/SeekableByteChannel;
            areturn
        end local 5 // boolean write
        end local 4 // boolean read
        end local 3 // java.nio.file.attribute.FileAttribute[] attrs
        end local 2 // java.util.Set options
        end local 1 // java.nio.file.Path inPath
        end local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   15     0          this  Lcom/oracle/truffle/polyglot/FileSystems$LanguageHomeFileSystem;
            0   15     1        inPath  Ljava/nio/file/Path;
            0   15     2       options  Ljava/util/Set<+Ljava/nio/file/OpenOption;>;
            0   15     3         attrs  [Ljava/nio/file/attribute/FileAttribute;
            1   15     4          read  Z
            4   15     5         write  Z
           12   14     6  absolutePath  Ljava/nio/file/Path;
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/nio/file/Path;Ljava/util/Set<+Ljava/nio/file/OpenOption;>;[Ljava/nio/file/attribute/FileAttribute<*>;)Ljava/nio/channels/SeekableByteChannel;
    MethodParameters:
         Name  Flags
      inPath   
      options  
      attrs    

  public java.nio.file.DirectoryStream<java.nio.file.Path> newDirectoryStream(java.nio.file.Path, java.nio.file.DirectoryStream$Filter<? super java.nio.file.Path>);
    descriptor: (Ljava/nio/file/Path;Ljava/nio/file/DirectoryStream$Filter;)Ljava/nio/file/DirectoryStream;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
        start local 1 // java.nio.file.Path dir
        start local 2 // java.nio.file.DirectoryStream$Filter filter
         0: .line 1096
            aload 0 /* this */
            aload 1 /* dir */
            invokevirtual com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.toNormalizedAbsolutePath:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 3 /* absoluteDir */
        start local 3 // java.nio.file.Path absoluteDir
         1: .line 1097
            aload 0 /* this */
            aload 3 /* absoluteDir */
            invokevirtual com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.inLanguageHome:(Ljava/nio/file/Path;)Z
            ifeq 3
         2: .line 1098
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.fullIO:Lorg/graalvm/polyglot/io/FileSystem;
            aload 3 /* absoluteDir */
            aload 2 /* filter */
            invokeinterface org.graalvm.polyglot.io.FileSystem.newDirectoryStream:(Ljava/nio/file/Path;Ljava/nio/file/DirectoryStream$Filter;)Ljava/nio/file/DirectoryStream;
            areturn
         3: .line 1100
      StackMap locals: java.nio.file.Path
      StackMap stack:
            aload 0 /* this */
            aload 1 /* dir */
            aload 2 /* filter */
            invokespecial com.oracle.truffle.polyglot.FileSystems$DeniedIOFileSystem.newDirectoryStream:(Ljava/nio/file/Path;Ljava/nio/file/DirectoryStream$Filter;)Ljava/nio/file/DirectoryStream;
            areturn
        end local 3 // java.nio.file.Path absoluteDir
        end local 2 // java.nio.file.DirectoryStream$Filter filter
        end local 1 // java.nio.file.Path dir
        end local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lcom/oracle/truffle/polyglot/FileSystems$LanguageHomeFileSystem;
            0    4     1          dir  Ljava/nio/file/Path;
            0    4     2       filter  Ljava/nio/file/DirectoryStream$Filter<-Ljava/nio/file/Path;>;
            1    4     3  absoluteDir  Ljava/nio/file/Path;
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/nio/file/Path;Ljava/nio/file/DirectoryStream$Filter<-Ljava/nio/file/Path;>;)Ljava/nio/file/DirectoryStream<Ljava/nio/file/Path;>;
    MethodParameters:
        Name  Flags
      dir     
      filter  

  public java.util.Map<java.lang.String, java.lang.Object> readAttributes(java.nio.file.Path, java.lang.String, java.nio.file.LinkOption[]);
    descriptor: (Ljava/nio/file/Path;Ljava/lang/String;[Ljava/nio/file/LinkOption;)Ljava/util/Map;
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
        start local 1 // java.nio.file.Path path
        start local 2 // java.lang.String attributes
        start local 3 // java.nio.file.LinkOption[] options
         0: .line 1105
            aload 0 /* this */
            aload 1 /* path */
            invokevirtual com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.toNormalizedAbsolutePath:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 4 /* absolutePath */
        start local 4 // java.nio.file.Path absolutePath
         1: .line 1106
            aload 0 /* this */
            aload 4 /* absolutePath */
            invokevirtual com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.inLanguageHome:(Ljava/nio/file/Path;)Z
            ifeq 3
         2: .line 1107
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.fullIO:Lorg/graalvm/polyglot/io/FileSystem;
            aload 4 /* absolutePath */
            aload 2 /* attributes */
            aload 3 /* options */
            invokeinterface org.graalvm.polyglot.io.FileSystem.readAttributes:(Ljava/nio/file/Path;Ljava/lang/String;[Ljava/nio/file/LinkOption;)Ljava/util/Map;
            areturn
         3: .line 1109
      StackMap locals: java.nio.file.Path
      StackMap stack:
            aload 0 /* this */
            aload 1 /* path */
            aload 2 /* attributes */
            aload 3 /* options */
            invokespecial com.oracle.truffle.polyglot.FileSystems$DeniedIOFileSystem.readAttributes:(Ljava/nio/file/Path;Ljava/lang/String;[Ljava/nio/file/LinkOption;)Ljava/util/Map;
            areturn
        end local 4 // java.nio.file.Path absolutePath
        end local 3 // java.nio.file.LinkOption[] options
        end local 2 // java.lang.String attributes
        end local 1 // java.nio.file.Path path
        end local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lcom/oracle/truffle/polyglot/FileSystems$LanguageHomeFileSystem;
            0    4     1          path  Ljava/nio/file/Path;
            0    4     2    attributes  Ljava/lang/String;
            0    4     3       options  [Ljava/nio/file/LinkOption;
            1    4     4  absolutePath  Ljava/nio/file/Path;
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/nio/file/Path;Ljava/lang/String;[Ljava/nio/file/LinkOption;)Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
    MethodParameters:
            Name  Flags
      path        
      attributes  
      options     

  public java.nio.file.Path toAbsolutePath(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Ljava/nio/file/Path;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
        start local 1 // java.nio.file.Path path
         0: .line 1114
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.fullIO:Lorg/graalvm/polyglot/io/FileSystem;
            aload 1 /* path */
            invokeinterface org.graalvm.polyglot.io.FileSystem.toAbsolutePath:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            areturn
        end local 1 // java.nio.file.Path path
        end local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/polyglot/FileSystems$LanguageHomeFileSystem;
            0    1     1  path  Ljava/nio/file/Path;
    MethodParameters:
      Name  Flags
      path  

  private java.nio.file.Path toNormalizedAbsolutePath(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Ljava/nio/file/Path;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
        start local 1 // java.nio.file.Path path
         0: .line 1118
            aload 1 /* path */
            invokeinterface java.nio.file.Path.isAbsolute:()Z
            ifeq 2
         1: .line 1119
            aload 1 /* path */
            areturn
         2: .line 1121
      StackMap locals:
      StackMap stack:
            aload 1 /* path */
            invokestatic com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.isNormalized:(Ljava/nio/file/Path;)Z
            ifeq 3
            iconst_0
            goto 4
      StackMap locals:
      StackMap stack:
         3: iconst_1
      StackMap locals:
      StackMap stack: int
         4: istore 2 /* needsToNormalize */
        start local 2 // boolean needsToNormalize
         5: .line 1122
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.fullIO:Lorg/graalvm/polyglot/io/FileSystem;
            aload 1 /* path */
            invokeinterface org.graalvm.polyglot.io.FileSystem.toAbsolutePath:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 3 /* absolutePath */
        start local 3 // java.nio.file.Path absolutePath
         6: .line 1123
            iload 2 /* needsToNormalize */
            ifeq 7
            aload 3 /* absolutePath */
            invokeinterface java.nio.file.Path.normalize:()Ljava/nio/file/Path;
            goto 8
      StackMap locals: int java.nio.file.Path
      StackMap stack:
         7: aload 3 /* absolutePath */
      StackMap locals:
      StackMap stack: java.nio.file.Path
         8: areturn
        end local 3 // java.nio.file.Path absolutePath
        end local 2 // boolean needsToNormalize
        end local 1 // java.nio.file.Path path
        end local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    9     0              this  Lcom/oracle/truffle/polyglot/FileSystems$LanguageHomeFileSystem;
            0    9     1              path  Ljava/nio/file/Path;
            5    9     2  needsToNormalize  Z
            6    9     3      absolutePath  Ljava/nio/file/Path;
    MethodParameters:
      Name  Flags
      path  

  public void setCurrentWorkingDirectory(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
        start local 1 // java.nio.file.Path currentWorkingDirectory
         0: .line 1128
            aload 0 /* this */
            aload 1 /* currentWorkingDirectory */
            invokevirtual com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.inLanguageHome:(Ljava/nio/file/Path;)Z
            ifeq 2
         1: .line 1129
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.fullIO:Lorg/graalvm/polyglot/io/FileSystem;
            aload 1 /* currentWorkingDirectory */
            invokeinterface org.graalvm.polyglot.io.FileSystem.setCurrentWorkingDirectory:(Ljava/nio/file/Path;)V
         2: .line 1131
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* currentWorkingDirectory */
            invokespecial com.oracle.truffle.polyglot.FileSystems$DeniedIOFileSystem.setCurrentWorkingDirectory:(Ljava/nio/file/Path;)V
         3: .line 1132
            return
        end local 1 // java.nio.file.Path currentWorkingDirectory
        end local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0    4     0                     this  Lcom/oracle/truffle/polyglot/FileSystems$LanguageHomeFileSystem;
            0    4     1  currentWorkingDirectory  Ljava/nio/file/Path;
    MethodParameters:
                         Name  Flags
      currentWorkingDirectory  

  public java.nio.file.Path toRealPath(java.nio.file.Path, java.nio.file.LinkOption[]);
    descriptor: (Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Ljava/nio/file/Path;
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
        start local 1 // java.nio.file.Path path
        start local 2 // java.nio.file.LinkOption[] linkOptions
         0: .line 1136
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.fullIO:Lorg/graalvm/polyglot/io/FileSystem;
            aload 1 /* path */
            aload 2 /* linkOptions */
            invokeinterface org.graalvm.polyglot.io.FileSystem.toRealPath:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Ljava/nio/file/Path;
            areturn
        end local 2 // java.nio.file.LinkOption[] linkOptions
        end local 1 // java.nio.file.Path path
        end local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lcom/oracle/truffle/polyglot/FileSystems$LanguageHomeFileSystem;
            0    1     1         path  Ljava/nio/file/Path;
            0    1     2  linkOptions  [Ljava/nio/file/LinkOption;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
             Name  Flags
      path         
      linkOptions  

  public boolean isSameFile(java.nio.file.Path, java.nio.file.Path, java.nio.file.LinkOption[]);
    descriptor: (Ljava/nio/file/Path;Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
        start local 1 // java.nio.file.Path path1
        start local 2 // java.nio.file.Path path2
        start local 3 // java.nio.file.LinkOption[] options
         0: .line 1141
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.fullIO:Lorg/graalvm/polyglot/io/FileSystem;
            aload 1 /* path1 */
            aload 2 /* path2 */
            aload 3 /* options */
            invokeinterface org.graalvm.polyglot.io.FileSystem.isSameFile:(Ljava/nio/file/Path;Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ireturn
        end local 3 // java.nio.file.LinkOption[] options
        end local 2 // java.nio.file.Path path2
        end local 1 // java.nio.file.Path path1
        end local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lcom/oracle/truffle/polyglot/FileSystems$LanguageHomeFileSystem;
            0    1     1    path1  Ljava/nio/file/Path;
            0    1     2    path2  Ljava/nio/file/Path;
            0    1     3  options  [Ljava/nio/file/LinkOption;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      path1    
      path2    
      options  

  private boolean inLanguageHome(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
        start local 1 // java.nio.file.Path path
         0: .line 1145
            aload 0 /* this */
            invokevirtual com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.getLanguageHomes:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem java.nio.file.Path top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.nio.file.Path
            astore 2 /* home */
        start local 2 // java.nio.file.Path home
         2: .line 1146
            aload 1 /* path */
            aload 2 /* home */
            invokeinterface java.nio.file.Path.startsWith:(Ljava/nio/file/Path;)Z
            ifeq 4
         3: .line 1147
            iconst_1
            ireturn
        end local 2 // java.nio.file.Path home
         4: .line 1145
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         5: .line 1150
            iconst_0
            ireturn
        end local 1 // java.nio.file.Path path
        end local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/oracle/truffle/polyglot/FileSystems$LanguageHomeFileSystem;
            0    6     1  path  Ljava/nio/file/Path;
            2    4     2  home  Ljava/nio/file/Path;
    MethodParameters:
      Name  Flags
      path  final

  private java.util.Set<java.nio.file.Path> getLanguageHomes();
    descriptor: ()Ljava/util/Set;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=6, args_size=1
        start local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
         0: .line 1154
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.languageHomes:Ljava/util/Set;
            astore 1 /* res */
        start local 1 // java.util.Set res
         1: .line 1155
            aload 1 /* res */
            ifnonnull 17
         2: .line 1156
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         3: .line 1157
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.languageHomes:Ljava/util/Set;
            astore 1 /* res */
         4: .line 1158
            aload 1 /* res */
            ifnonnull 13
         5: .line 1159
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 1 /* res */
         6: .line 1160
            invokestatic com.oracle.truffle.polyglot.LanguageCache.languages:()Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 4
            goto 11
      StackMap locals: com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem java.util.Set com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem top java.util.Iterator
      StackMap stack:
         7: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.polyglot.LanguageCache
            astore 3 /* cache */
        start local 3 // com.oracle.truffle.polyglot.LanguageCache cache
         8: .line 1161
            aload 3 /* cache */
            invokevirtual com.oracle.truffle.polyglot.LanguageCache.getLanguageHome:()Ljava/lang/String;
            astore 5 /* languageHome */
        start local 5 // java.lang.String languageHome
         9: .line 1162
            aload 5 /* languageHome */
            ifnull 11
        10: .line 1163
            aload 1 /* res */
            aload 5 /* languageHome */
            iconst_0
            anewarray java.lang.String
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 5 // java.lang.String languageHome
        end local 3 // com.oracle.truffle.polyglot.LanguageCache cache
        11: .line 1160
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        12: .line 1166
            aload 0 /* this */
            aload 1 /* res */
            putfield com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem.languageHomes:Ljava/util/Set;
        13: .line 1156
      StackMap locals: com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem java.util.Set com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem
      StackMap stack:
            aload 2
            monitorexit
        14: goto 17
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: aload 2
            monitorexit
        16: athrow
        17: .line 1170
      StackMap locals:
      StackMap stack:
            aload 1 /* res */
            areturn
        end local 1 // java.util.Set res
        end local 0 // com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   18     0          this  Lcom/oracle/truffle/polyglot/FileSystems$LanguageHomeFileSystem;
            1   18     1           res  Ljava/util/Set<Ljava/nio/file/Path;>;
            8   11     3         cache  Lcom/oracle/truffle/polyglot/LanguageCache;
            9   11     5  languageHome  Ljava/lang/String;
      Exception table:
        from    to  target  type
           3    14      15  any
          15    16      15  any
    Signature: ()Ljava/util/Set<Ljava/nio/file/Path;>;

  private static boolean isNormalized(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // java.nio.file.Path path
         0: .line 1174
            aload 0 /* path */
            invokeinterface java.nio.file.Path.iterator:()Ljava/util/Iterator;
            astore 2
            goto 5
      StackMap locals: java.nio.file.Path top java.util.Iterator
      StackMap stack:
         1: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.nio.file.Path
            astore 1 /* name */
        start local 1 // java.nio.file.Path name
         2: .line 1175
            aload 1 /* name */
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            astore 3 /* strName */
        start local 3 // java.lang.String strName
         3: .line 1176
            ldc "."
            aload 3 /* strName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 4
            ldc ".."
            aload 3 /* strName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 5
         4: .line 1177
      StackMap locals: java.nio.file.Path java.nio.file.Path java.util.Iterator java.lang.String
      StackMap stack:
            iconst_0
            ireturn
        end local 3 // java.lang.String strName
        end local 1 // java.nio.file.Path name
         5: .line 1174
      StackMap locals: java.nio.file.Path top java.util.Iterator
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         6: .line 1180
            iconst_1
            ireturn
        end local 0 // java.nio.file.Path path
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     path  Ljava/nio/file/Path;
            2    5     1     name  Ljava/nio/file/Path;
            3    5     3  strName  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      path  
}
SourceFile: "FileSystems.java"
NestHost: com.oracle.truffle.polyglot.FileSystems
InnerClasses:
  private DeniedIOFileSystem = com.oracle.truffle.polyglot.FileSystems$DeniedIOFileSystem of com.oracle.truffle.polyglot.FileSystems
  private LanguageHomeFileSystem = com.oracle.truffle.polyglot.FileSystems$LanguageHomeFileSystem of com.oracle.truffle.polyglot.FileSystems
  public abstract Filter = java.nio.file.DirectoryStream$Filter of java.nio.file.DirectoryStream