/// <summary>
 /// Success: Calls <paramref name="onSuccess"/> and returns a <see cref="ResultOrError{TError}.Success"/>.
 /// <para></para>
 /// Error: Calls <paramref name="onError"/> and returns a <see cref="ResultOrError{TError}.Error(TError)"/> with the <typeparamref name="TError"/> from <paramref name="onError"/>.
 /// </summary>
 /// <typeparam name="TError">The type of the Error.</typeparam>
 /// <param name="onSuccess">Is called if This is a <see cref="Success"/>.</param>
 /// <param name="onError">Is called and returned as <see cref="ResultOrError{TError}.Error(TError)"/> if This is a <see cref="Error"/>.</param>
 /// <returns></returns>
 /// <exception cref="ArgumentNullException"></exception>
 public ResultOrError <TError> Either <TError>(Action onSuccess, Func <TError> onError)
 {
     Args.ExceptionIfNull(onSuccess, nameof(onSuccess), onError, nameof(onError));
     if (_isSuccess)
     {
         onSuccess();
         return(ResultOrError <TError> .Success());
     }
     return(onError());
 }
 /// <summary>
 /// Creates a instance of <see cref="ResultOrError{TError}"/>.
 /// </summary>
 /// <typeparam name="TError"></typeparam>
 /// <param name="success"></param>
 /// <param name="errorFunc"></param>
 /// <returns></returns>
 public static ResultOrError <TError> Create <TError>(bool success, Func <TError> errorFunc)
 {
     Args.ExceptionIfNull(errorFunc, nameof(errorFunc));
     return(success ? ResultOrError <TError> .Success() : ResultOrError <TError> .Error(errorFunc()));
 }
 /// <summary>
 /// Success: Returns a <see cref="ResultOrError{TError}.Success"/>.
 /// <para></para>
 /// Error: Calls <paramref name="onError"/> and returns a <see cref="ResultOrError{TError}.Error(TError)"/> with the <typeparamref name="TError"/> from <paramref name="onError"/>.
 /// </summary>
 /// <typeparam name="TError">The type of the Error.</typeparam>
 /// <param name="onError">Is called and returned as <see cref="ResultOrError{TError}.Error(TError)"/> if This is a <see cref="Error"/>.</param>
 /// <returns></returns>
 /// <exception cref="ArgumentNullException"></exception>
 public ResultOrError <TError> OnError <TError>(Func <TError> onError)
 {
     Args.ExceptionIfNull(onError, nameof(onError));
     return(_isSuccess ? ResultOrError <TError> .Success() : onError());
 }