docs: @Override
      public Timer createIntervalTimer(Date initialExpiration,
                                       long intervalDuration,
                                       TimerConfig timerConfig)
                      throws IllegalArgumentException, IllegalStateException, EJBException {
  
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled(); // F743-425.CodRev
  
          boolean persistent = (timerConfig == null ? true : timerConfig.isPersistent());
          Serializable info = (timerConfig == null ? (Serializable) null : timerConfig.getInfo());
  
          if (isTraceOn && tc.isEntryEnabled()) {
              Tr.entry(tc, "createIntervalTimer: " + initialExpiration + ", " +
                           intervalDuration + ": " + info + ", " + persistent, this); // F743-425.1
          }
  
          // Bean must implement TimedObject interface or have a timeout method to create a timer.
          if (!home.beanMetaData.isTimedObject) {
  
              IllegalStateException ise;
  
              ise = new IllegalStateException("Timer Service: Bean does not " +
                                              "implement TimedObject: " +
                                              beanId);
              if (isTraceOn && tc.isDebugEnabled()) {
                  Tr.debug(tc, "createIntervalTimer: " + ise); // F743-425.1
              }
  
              throw ise;
  
          }
  
          // Determine if this bean is in a state that allows timer service
          // method access - throws IllegalStateException if not allowed.
          checkTimerServiceAccess();
  
          IllegalArgumentException iae = null;
  
          // Make sure the arguments are valid....
          if (initialExpiration == null ||
              initialExpiration.getTime() < 0)
          {
              iae = new IllegalArgumentException("TimerService: initialExpiration not " +
                                                 "a valid value: " + initialExpiration);
          }
          else if (intervalDuration < 0)
          {
              iae = new IllegalArgumentException("TimerService: intervalDuration not " +
                                                 "a valid value: " + intervalDuration);
          }
  
          if (iae != null)
          {
              if (isTraceOn && tc.isDebugEnabled())
                  Tr.debug(tc, "createIntervalTimer: " + iae); // F743-425.1
  
              throw iae;
          }
  
          Timer timer = container.getEJBRuntime().createTimer(this, initialExpiration, intervalDuration, null, info, persistent); // F743-13022
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.exit(tc, "createIntervalTimer: " + timer); // F743-425.1
  
          return timer;
      }