docs: public Serializable getUserInfo() throws TimerServiceException {
          if (userInfoBytes == null) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  Tr.debug(tc, "getUserInfo: null");
              return null;
          }
  
          Serializable userInfo = null;
  
          try {
              // Use timer application ClassLoader if installed; otherwise use current thread context ClassLoader
              ClassLoader loader = EJSContainer.getClassLoader(j2eeName);
              if (loader == null) {
                  loader = AccessController.doPrivileged(new GetContextClassLoaderPrivileged());
              }
  
              ByteArrayInputStream bais = new ByteArrayInputStream(userInfoBytes);
              EJBRuntime ejbRuntime = EJSContainer.getDefaultContainer().getEJBRuntime();
              final ObjectInputStream objIstream = ejbRuntime.createObjectInputStream(bais, loader);
  
              userInfo = (Serializable) AccessController.doPrivileged(new PrivilegedExceptionAction<Object>() {
                  @Override
                  public Object run() throws ClassNotFoundException, IOException {
                      return objIstream.readObject();
                  }
              });
          } catch (PrivilegedActionException paex) {
              // Most likely the application is no longer installed, and so Info class
              // could not be found, or there is a bug in the user info serialization code.
              // Let the caller decide whether to FFDC this scenario, since our MBean supports
              // accessing timers when the corresponding application is not installed.
              TimerServiceException ex = new TimerServiceException("Failure deserializing timer info object.", paex.getException());
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  Tr.debug(tc, "getUserInfo: " + ex);
              throw ex;
          } catch (IOException ioex) {
              FFDCFilter.processException(ioex, CLASS_NAME + ".getUserInfo", "406");
              TimerServiceException ex = new TimerServiceException("Failure deserializing timer info object.", ioex);
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  Tr.debug(tc, "getUserInfo: " + ex);
              throw ex;
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
              Tr.debug(tc, "getUserInfo: " + Util.identity(userInfo));
  
          return userInfo;
      }