docs: public Throwable invokeAnnotTypeOnObjectAndHierarchy(Object obj, ANNOT_TYPE type) {
          String methodName = "invokeAnnotTypeOnObjectAndHierarchy";
  
          if (obj == null) {
              if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && logger.isLoggable(Level.FINE)) {
                  logger.logp(Level.FINE, CLASS_NAME, methodName, "Unable to invoke [ {0} ] methods: Null object", type);
              }
              return null;
          }
  
          if (type == ANNOT_TYPE.POST_CONSTRUCT) {
              //need to validate the preDestroy methods as well
              Throwable t = validateAndRun(false, obj, ANNOT_TYPE.PRE_DESTROY);
              if (t!=null) {
                  return t; //only return here if a throwable was thrown
              }
          }
          //validate and run the methods
          return validateAndRun(true, obj, type);
          
     }