code: public static void fireRootCause(Throwable t) {
          Throwable root = t;
          while (root != null) {
              Throwable cause = root.getCause();
              if (cause == null) {
                  break;
              }
              root = cause;
          }
          fire(root);
      }
docs: Throws the root cause of the given exception, even though it may be
  checked. If the root cause is null, then the original exception is
  thrown. This method only returns normally if the exception is null.
  
  @param t exception whose root cause is to be thrown