docs: public static <T extends Throwable> T getCause( final Throwable    ex,
                                                      final Class<T>     exceptionClass )
      {
          Throwable    cause = ex;
  
          while( cause != null && ! exceptionClass.isInstance( cause ) )
          {
              cause = cause.getCause();
          }
  
          return ( cause == null ) ? null : exceptionClass.cast( cause );
      }