code: public static <K, T extends ScheduledTask<K>> TaskScheduler<K, T> get(TaskSchedulerType type, Optional<String> name) {
      try {
        TaskScheduler<K, T> taskScheduler = type.getTaskSchedulerClass().newInstance();
        taskScheduler.start(name);
        return taskScheduler;
      } catch (InstantiationException | IllegalAccessException e) {
        throw new RuntimeException("Unable to instantiate task scheduler '" + name + "'.", e);
      }
    }
docs: Gets an instance of the {@link TaskScheduler} with the specified type and ensures that it is started. If
  the type is unknown an instance of the default {@link TaskScheduler} will be returned.
  
  @param type the type of the {@link TaskScheduler}
  @param name the name associated threads created by the {@link TaskScheduler}
  @param <K> the type of the key for the {@link ScheduledTask}
  @param <T> the type of the {@link ScheduledTask}
  @return an instance of {@link TaskScheduler}