code: public <E extends Exception> E findWrapped(Class<E> exceptionType) {
  		
  		if (exceptionType == null) {
  			return null;
  		}
  		
  		Throwable cause = getCause();
  		
  		while (true) {
  			
  			if (cause == null) {
  				return null;
  			}
  			
  			if (exceptionType.isInstance(cause)) {
  				
  				@SuppressWarnings("unchecked") E matchedCause = (E) cause;
  				return matchedCause;
  			}
  			
  			if (cause.getCause() == cause) {
  				return null;
  			}
  			
  			if (cause instanceof WrappedRuntimeException) {
  				return ((WrappedRuntimeException) cause).findWrapped(exceptionType);
  			}
  			if (cause instanceof WrappedCheckedException) {
  				return ((WrappedCheckedException) cause).findWrapped(exceptionType);
  			}
  			
  			cause = cause.getCause();
  		}
  	}
docs: Returns the next parent exception of the given type, or null
  @param exceptionType the exception type to match
  @param <E> The exception type
  @return The matched exception of the target type, or null