code: public static InjectionException checkForRecursiveException(Throwable t, String message)
      {
          InjectionException iex;
          RecursiveInjectionException.RecursionDetection rd = RecursiveInjectionException.detectRecursiveInjection(t);
          switch (rd) {
              case Recursive:
                  iex = new RecursiveInjectionException(message);
                  ((RecursiveInjectionException) iex).ivLogged = false;
                  break;
              case RecursiveAlreadyLogged:
                  iex = new RecursiveInjectionException(message);
                  ((RecursiveInjectionException) iex).ivLogged = true;
                  break;
              case NotRecursive:
              default:
                  iex = new InjectionException(message, t);
          }
          return iex;
      }
docs: D408351
  Creates a new InjectionException with the specified message. It init's
  the cause to the specified Throwable. This method attempts to determine
  which InjectionException subclass to return based on the passed-in
  Throwable.
  <br/>
  
  @param t - the cause of this InjectionException
  @param message - the message for the returned InjectionException
  @return an instance of InjectionException or a specific subclass as determined by t