code: private static boolean isBoring(Throwable t) {
  
          // Last throwable in the causal chain is never boring.
          if (t.getCause() == null) {
              return false;
          }
  
          // Some GSSExceptions have no semantic content, therefore boring.
          if (t instanceof GSSException) {
              GSSException g = (GlobusGSSException) t;
  
              if (g.getMajor() == GSSException.FAILURE && g.getMinor() == 0) {
                  if (g instanceof GlobusGSSException) {
                      return !((GlobusGSSException)g).hasCustomMessage;
                  } else {
                      // Unfortunately, for GSSException, we must compare the
                      // actual message.
                      return g.getMessage().equals("Failure unspecified at GSS-API level");
                  }
              }
          }
  
          // SSLEngine can return a message with no meaning, therefore boring.
          if (t instanceof SSLException &&
                  t.getMessage().equals("General SSLEngine problem")) {
              return true;
          }
  
          return false;
      }
docs: Use heuristics to determine whether the supplied Throwable has any
  semantic content (i.e., does it provide any additional information).
  
  It seems that many GSSException objects are created with no information.
  Instead, the useful information is contained within the causing
  Throwable.
  
  Also, an SSLException may be thrown by SSLEngine that wraps some more
  interesting exception but the message has no information.
  
  As part of a work-around for this problem, this method tries to guess
  whether the supplied Throwable contains useful information.
  
  @return true if the Throwable contains no useful information, false
  otherwise.