docs: public static ElasticsearchClient getInstance(Path config, FsSettings settings, int version) throws ClassNotFoundException {
          Objects.requireNonNull(settings, "settings can not be null");
  
          Class<ElasticsearchClient> clazz = null;
          try {
              clazz = findClass(version);
          } catch (ClassNotFoundException e) {
              logger.trace("ElasticsearchClient class not found for version {} in the classpath. Skipping...", version);
          }
  
          if (clazz == null) {
              throw new ClassNotFoundException("Can not find any ElasticsearchClient in the classpath. " +
                      "Did you forget to add the elasticsearch client library?");
          }
  
          logger.trace("Found [{}] class as the elasticsearch client implementation.", clazz.getName());
          try {
              Constructor<? extends ElasticsearchClient> constructor = clazz.getConstructor(Path.class, FsSettings.class);
              return constructor.newInstance(config, settings);
          } catch (NoSuchMethodException e) {
              throw new IllegalArgumentException("Class " + clazz.getName() + " does not have the expected ctor (Path, FsSettings).", e);
          } catch (IllegalAccessException|InstantiationException| InvocationTargetException e) {
              throw new IllegalArgumentException("Can not create an instance of " + clazz.getName(), e);
          }
      }