/// <summary>
 /// Creates new successful result from failure result.
 /// </summary>
 /// <param name="failureResult">Failure result model.</param>
 /// <typeparam name="TMessage">Type of error message.</typeparam>
 /// <returns>New successful result from failure result.</returns>
 public static ISuccessfulResult ToSuccessfulResult <TMessage>(this IFailureResult <TMessage> failureResult)
 => ResultFactoryBase.CreateSuccess <TMessage>();
 /// <summary>
 /// Creates new successful result from failure result.
 /// </summary>
 /// <param name="failureResult">Failure result model.</param>
 /// <param name="data">Value of data.</param>
 /// <typeparam name="TData">Type of data.</typeparam>
 /// <typeparam name="TMessage">Type of error message.</typeparam>
 /// <returns>New successful result from failure result.</returns>
 public static ISuccessfulResult <TData> ToSuccessfulResult <TData, TMessage>(
     this IFailureResult <TMessage> failureResult,
     TData data)
 => ResultFactoryBase.CreateSuccess <TData, TMessage>(data);
 /// <summary>
 /// Creates new failure result from existed <see cref="failureResult"/> with additional errors.
 /// </summary>
 /// <param name="failureResult">Failure result.</param>
 /// <param name="errors">Messages that represent errors.</param>
 /// <typeparam name="TMessage">Type of error message.</typeparam>
 /// <returns>New failure result from existed <see cref="failureResult"/>.</returns>
 public static IFailureResult <TMessage> WithErrors <TMessage>(
     this IFailureResult <TMessage> failureResult,
     IEnumerable <TMessage> errors)
 => ResultFactoryBase.CreateFailure(
     failureResult.ErrorMessages.Concat(errors),
     failureResult.Exception);