protected synchronized FileSystem getFileSystem() throws IOException {
    FileSystem fs = dereference(myFileSystem);
    if (fs == null) {
      String path = getFile().getPath();
      try {
        fs = FileSystems.newFileSystem(ROOT_URI, Collections.singletonMap("java.home", path));
        myFileSystem = new SoftReference<>(fs);
      }
      catch (RuntimeException | Error e) {
        throw new IOException("Error mounting JRT filesystem at " + path, e);
      }
    }
    return fs;
  }
protected synchronized FileSystem getFileSystem()