@Override
  protected @NotNull FileSystemProvider getDelegate(@Nullable Path path1, @Nullable Path path2) {
    if (ourForceDefaultFs) {
      return myLocalProvider;
    }

    if (path1 == null) {
      if (path2 == null) {
        return myLocalProvider;
      }
      path1 = path2;
      path2 = null;
    }

    if (!path1.isAbsolute()) {
      path1 = path1.toAbsolutePath();
    }

    FileSystemProvider provider1 = myFileSystem.getBackend(path1.getRoot().toString()).provider();
    if (path2 == null) {
      return provider1;
    }

    if (!path2.isAbsolute()) {
      path2 = path2.toAbsolutePath();
    }

    FileSystemProvider provider2 = myFileSystem.getBackend(path2.getRoot().toString()).provider();

    if (provider1.equals(provider2)) {
      return provider1;
    }
    else if (canHandleRouting(provider1)) {
      return provider1;
    }
    else if (canHandleRouting(provider2)) {
      return provider2;
    }
    else {
      throw new IllegalArgumentException(String.format("Provider mismatch: %s != %s", provider1, provider2));
    }
  }
@Override
  protected @NotNull FileSystemProvider getDelegate(@Nullable Path path1, @Nullable Path path2)