public static DirectoryProvider<?> createDirectoryProvider(
      String directoryProviderName, Properties indexProps, WorkerBuildContext context) {
    String className = indexProps.getProperty("directory_provider", "");
    String maybeShortCut = className.toLowerCase();

    DirectoryProvider<?> provider;
    // try and use the built-in shortcuts before loading the provider as a fully qualified class
    // name
    if (defaultProviderClasses.containsKey(maybeShortCut)) {
      String fullClassName = defaultProviderClasses.get(maybeShortCut);
      provider =
          ClassLoaderHelper.instanceFromName(
              DirectoryProvider.class,
              fullClassName,
              DirectoryProviderFactory.class,
              "directory provider");
    } else {
      provider =
          ClassLoaderHelper.instanceFromName(
              DirectoryProvider.class,
              className,
              DirectoryProviderFactory.class,
              "directory provider");
    }
    try {
      provider.initialize(directoryProviderName, indexProps, context);
    } catch (Exception e) {
      throw new SearchException(
          "Unable to initialize directory provider: " + directoryProviderName, e);
    }
    return provider;
  }