@Override
    protected final void configure()
    {
        checkState( jobListeners == null, "Re-entry is not allowed." );
        checkState( triggerListeners == null, "Re-entry is not allowed." );
        checkState( schedulerListeners == null, "Re-entry is not allowed." );
        checkState( schedulerConfiguration == null, "Re-entry is not allowed." );

        jobListeners = newSetBinder( binder(), JobListener.class );
        triggerListeners = newSetBinder( binder(), TriggerListener.class );
        schedulerListeners = newSetBinder( binder(), SchedulerListener.class );
        schedulerConfiguration = new SchedulerConfiguration();

        try
        {
            schedule();
            bind( JobFactory.class ).to( InjectorJobFactory.class ).in( SINGLETON );
            bind( Scheduler.class ).toProvider( SchedulerProvider.class ).asEagerSingleton();
            bind( SchedulerConfiguration.class ).toInstance( schedulerConfiguration );
        }
        finally
        {
            jobListeners = null;
            triggerListeners = null;
            schedulerListeners = null;
            schedulerConfiguration = null;
        }
    }