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();
  
          PersistentTimerTaskHandler taskHandler = getTimerTaskHandler(ALLOW_CACHED_TIMER_GET_INFO);
          Serializable userInfo = taskHandler.getUserInfo(); // returns a new copy every time
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.exit(tc, "getInfo: " + Util.identity(userInfo));
  
          return userInfo;
      }
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.
  
  @throws IllegalStateException If this method is invoked while the
  instance is in a state that does not allow access to this method.
  @throws NoSuchObjectLocalException If invoked on a timer that has
  expired or has been cancelled.
  @throws EJBException If this method could not complete due to a
  system-level failure.