docs: public ManagedObject inject(Class<?> Klass, boolean delayPostConstruct) {
  
          if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)) 
              logger.entering(CLASS_NAME, "inject(Class<?>,boolean)", "class = " + Klass.getName() + ", delayPostConstruct = " + delayPostConstruct);
  
          ManagedObject mo = null;
          Throwable th = null;
          try {
              if (wrapper != null) {
                  if (!delayPostConstruct) {
                      // Post construct before returning
                      mo = wrapper.injectAndPostConstruct(Klass);
                  } else {
                      // Inject independently of post construct
                      mo = wrapper.inject(Klass);
                  }
              } else {
                  if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)) {
                      logger.logp (Level.FINE, CLASS_NAME, "inject", "injection not attempted because wrapper is null ");
                 }
              }
          } catch (InjectionException e) {
              // in tWAS during inject() this exception is not thrown back, and doPostConstruct would do nothing.
              if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)) {
                  logger.logp (Level.FINE, CLASS_NAME, "inject", "caught injection exception: " + e);
              }
              if (!delayPostConstruct) {
                  th = e;
              } else {
                  throw new RuntimeException(e);
              }
          } catch (RuntimeException e) {
              if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)) {
                  logger.logp (Level.FINE, CLASS_NAME, "inject", "caught runtime exception: " + e);
              }
              if (!delayPostConstruct) {
                  th = e;
              } else {
                  throw e;
              }
          }
          // We've invoked post construct on this 
          if (!delayPostConstruct) {
              // in tWAS on doPostConstruct all exceptions get re-thrown as RuntimeExceptions
              // in WAS7 no RuntimeException is thrown at all, set THROW_POSTCONSTRUCT_EXCEPTION=false to reverse back to V7
              if (th!=null && WCCustomProperties.THROW_POSTCONSTRUCT_EXCEPTION) {     //PM63754
                  if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)) {        
                      logger.logp (Level.FINE, CLASS_NAME, "inject", "doPostConstruct exceptions are re-thrown as RuntimeException");  
                  }
                  if (th instanceof RuntimeException) {
                          throw (RuntimeException) th;
                  } else {
                          throw new RuntimeException(th);
                  }
              }
          }
          
          if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE))
              logger.exiting(CLASS_NAME, "inject(Class<?>,boolean)");
  
          return mo;
      }