public static void computeBackend(
    @NotNull FileSystemProvider provider,
    @NotNull String root,
    boolean isPrefix,
    boolean caseSensitive,
    @NotNull BiFunction<@NotNull FileSystemProvider, @Nullable FileSystem, @Nullable FileSystem> function
  ) {
    if (provider.getClass().getName().equals(MultiRoutingFileSystemProvider.class.getName())) {
      Map<String, Object> arguments = new HashMap<>();
      arguments.put(KEY_ROOT, root);
      arguments.put(KEY_PREFIX, isPrefix);
      arguments.put(KEY_CASE_SENSITIVE, caseSensitive);
      arguments.put(KEY_FUNCTION, function);

      try {
        //noinspection resource
        provider.newFileSystem(URI.create("file:/"), arguments);
      }
      catch (IOException e) {
        throw new UncheckedIOException(e);
      }
    }
    else {
      throw new IllegalArgumentException(String.format("%s is not an instance of %s", provider, MultiRoutingFileSystemProvider.class));
    }
  }
public static void computeBackend(
    @NotNull FileSystemProvider provider,
    @NotNull String root,
    boolean isPrefix,
    boolean caseSensitive,
    @NotNull BiFunction<@NotNull FileSystemProvider, @Nullable FileSystem, @Nullable FileSystem> function
  )