docs: public synchronized void schedule()
      {
          // Avoid scheduling a timer that was destroyed on another thread and
          // avoid scheduling a timer twice, which might be attempted if two
          // threads concurrently attempt to cancel and then both rollback.
          if (ivTaskHandler == null && !ivDestroyed)
          {
              // Create the timer task handler (Runnable/Listener) and schedule the task
              ivTaskHandler = ivContainer.getEJBRuntime().createNonPersistentTimerTaskHandler(this);
  
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  Tr.debug(tc, "schedule: scheduling timer for " + ivExpiration + " / " + new Date(ivExpiration));
  
              ivTaskHandler.schedule(ivExpiration);
          }
          else
          {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  Tr.debug(tc, "schedule: timer already scheduled or destroyed : destroyed=" + ivDestroyed);
          }
      }