code: @Override
      public Serializable getInfo() throws IllegalStateException, NoSuchObjectLocalException, EJBException
      {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "getInfo: " + this);
  
          // Determine if the calling bean is in a state that allows timer service
          // method access - throws IllegalStateException if not allowed.
          checkTimerAccess();
  
          // Determine if this timer is considered cancelled for the current
          // thread/transaction - throws NoSuchObjectLocalException if cancelled.
          checkIfCancelled();
  
          Serializable info = ivContainer.ivObjectCopier.copy(ivInfo); // d587232, RTC102299
          if (isTraceOn && tc.isEntryEnabled())
              Tr.exit(tc, "getInfo: " + Util.identity(info));
  
          return info;
      }
docs: Get the information associated with the timer at the time of creation. <p>
  
  @return The Serializable object that was passed in at timer creation,
  or null if the info argument passed in at timer creation was null.
  
  @exception IllegalStateException If this method is invoked while the
  instance is in a state that does not allow access to this method.
  @exception NoSuchObjectLocalException If invoked on a timer that has
  expired or has been canceled.
  @exception EJBException If this method could not complete due to a
  system-level failure.