docs: @Override
      @SuppressWarnings("nls")
      protected <T> T doInstantiate(Class<T> type, Map<String, String> mapConfig) {
          try {
              Constructor<T> constructor = type.getConstructor(Vertx.class, VertxEngineConfig.class, Map.class);
              return constructor.newInstance(vertx, vxConfig, mapConfig);
          } catch (NoSuchMethodException e) { // If doesn't have constructor, try other method.
          } catch (Exception e ) {
              throw new RuntimeException(e);
          }
          try {
              Constructor<T> constructor = type.getConstructor(Vertx.class, IEngineConfig.class, Map.class);
              return constructor.newInstance(vertx, vxConfig, mapConfig);
          } catch (NoSuchMethodException e) { // If doesn't have constructor, try other method.
          } catch (Exception e ) {
              throw new RuntimeException(e);
          }
          try {
              Constructor<T> constructor = type.getConstructor(Map.class);
              return constructor.newInstance(mapConfig);
          } catch (Exception e) {
          }
          try {
              return type.newInstance();
          } catch (InstantiationException | IllegalAccessException e) {
              throw new RuntimeException(String.format(
                      "Could not instantiate %s. Verify class has valid constructor parameters: %s", type,
                      e.getMessage()), e);
          }
      }