public <T> T createInstance(String className,
                              Class<?>[] paramClasses,
                              Object... params) {
    try {
      ClassLoader loader = (myUseContextClassLoader ? Thread.currentThread().getContextClassLoader()
                                                    : CoreRoutingFileSystemProvider.class.getClassLoader());
      String loaderName = loader.getClass().getName();
      if (!("com.intellij.util.lang.PathClassLoader").equals(loaderName) &&
          !("com.intellij.util.lang.UrlClassLoader").equals(loaderName) &&
          !("com.intellij.ide.plugins.cl.PluginClassLoader" /* Downburst */).equals(loaderName)) {
        throw new RuntimeException("Trying to initialize a mounted file system with wrong classloader: " + loader);
      }
      Class<?> loaded = loader.loadClass(className);
      //noinspection unchecked
      return (T)loaded.getConstructor(paramClasses).newInstance(params);
    }
    catch (Exception e) {
      throw new RuntimeException(e);
    }
  }
public <T> T createInstance(String className,
                              Class<?>[] paramClasses,
                              Object... params)