code: protected Scheduler createScheduler() throws SchedulerException {
          Properties props;
          if (this.quartzProperties != null) {
              props = new Properties(this.quartzProperties);
          } else {
              props = new Properties();
          }
          if (this.schedulerName != null) {
              props.put(StdSchedulerFactory.PROP_SCHED_INSTANCE_NAME, this.schedulerName);
          }
  
          String schedulerName = props.getProperty(StdSchedulerFactory.PROP_SCHED_INSTANCE_NAME);
          if (schedulerName != null) {
              SchedulerRepository repository = SchedulerRepository.getInstance();
              Scheduler existingScheduler = repository.lookup(schedulerName);
              if (existingScheduler != null) {
                  throw new IllegalStateException("Active Scheduler of name '" + schedulerName + "' already registered " +
                          "in Quartz SchedulerRepository. Cannot create a new Aspectran-managed Scheduler of the same name!");
              }
          }
  
          SchedulerFactory schedulerFactory = new StdSchedulerFactory(props);
          Scheduler newScheduler = schedulerFactory.getScheduler();
          if (!this.exposeSchedulerInRepository) {
              // Need to remove it in this case, since Quartz shares the Scheduler instance by default!
              SchedulerRepository.getInstance().remove(newScheduler.getSchedulerName());
          }
          return newScheduler;
      }
docs: Create the Scheduler instance.
  <p>The default implementation invokes SchedulerFactory's {@code getScheduler}
  method. Can be overridden for custom Scheduler creation.</p>
  
  @return the Scheduler instance
  @throws SchedulerException if thrown by Quartz methods
  @see org.quartz.SchedulerFactory#getScheduler