code: public static NlsRuntimeException getOrCreateUserException(Throwable exception) {
  
      if (exception instanceof NlsThrowable) {
        NlsThrowable nlsThrowable = (NlsThrowable) exception;
        if (nlsThrowable.isForUser()) {
          if (exception instanceof NlsRuntimeException) {
            return (NlsRuntimeException) exception;
          } else {
            return new NlsRuntimeWrapperException((NlsException) exception);
          }
        }
      }
      return new TechnicalErrorUserException(exception);
    }
docs: Gets the given {@link Throwable} as {@link NlsThrowable#isForUser() user} {@link NlsRuntimeException
  exception} or converts it to such.
  
  @param exception is the {@link Throwable} to convert.
  @return the {@link NlsRuntimeException} with {@link NlsThrowable#isForUser()} returning {@code true} .