code: public void setFirstFireTimeAfter() {
          if ( getStartTime().after( this.nextFireTime ) ) {
              this.nextFireTime = new Date( getStartTime().getTime() - 1000l );
          }
  
          if ( getEndTime() != null && (this.nextFireTime.compareTo( getEndTime() ) >= 0) ) {
              this.nextFireTime = null;
          }
  
          Date pot = getTimeAfter( this.nextFireTime );
          if ( getEndTime() != null && pot != null && pot.after( getEndTime() ) ) {
              this.nextFireTime = null;
          } else {
              this.nextFireTime = pot;
          }
      }
docs: <p>
  Returns the next time at which the <code>CronTrigger</code> will fire,
  after the given time. If the trigger will not fire after the given time,
  <code>null</code> will be returned.
  </p>
  
  <p>
  Note that the date returned is NOT validated against the related
  org.quartz.Calendar (if any)
  </p>