/// <summary>
        /// Adds <see cref="Action"/> to initialize.
        /// </summary>
        /// <param name="origination">
        /// <see cref="Action"/> to initialize.
        /// </param>
        /// <returns>
        /// <see cref="IService"/> added <paramref name="origination"/>.
        /// </returns>
        /// <exception cref="ArgumentNullException">
        /// Thrown if <paramref name="origination"/> is null.
        /// </exception>
        public static IService OnOriginated(this IService service, Action origination)
        {
            if (service is null)
            {
                throw new ArgumentNullException(nameof(origination));
            }
            if (origination is null)
            {
                throw new ArgumentNullException(nameof(origination));
            }

            return(service.Configure(Origination.Of(origination)));
        }
        /// <summary>
        /// Creates <see cref="ICycle"/> from <see cref="IExecution"/>, two <see cref="Action"/>s.
        /// </summary>
        /// <param name="execution">
        /// <see cref="IExecution"/> to execute in <see cref="ICycle"/>.
        /// </param>
        /// <param name="origination">
        /// <see cref="Action"/> to originate in <see cref="ICycle"/>.
        /// </param>
        /// <param name="termination">
        /// <see cref="Action"/> to terminate in <see cref="ICycle"/>.
        /// </param>
        /// <returns>
        /// <see cref="ICycle"/> created.
        /// </returns>
        /// <exception cref="ArgumentNullException">
        /// Thrown if <paramref name="execution"/> is null.
        /// </exception>
        /// <exception cref="ArgumentNullException">
        /// Thrown if <paramref name="origination"/> is null.
        /// </exception>
        /// <exception cref="ArgumentNullException">
        /// Thrown if <paramref name="termination"/> is null.
        /// </exception>
        public static ICycle Between(this IExecution execution, Action origination, Action termination)
        {
            if (execution is null)
            {
                throw new ArgumentNullException(nameof(execution));
            }
            if (origination is null)
            {
                throw new ArgumentNullException(nameof(origination));
            }
            if (termination is null)
            {
                throw new ArgumentNullException(nameof(termination));
            }

            return(execution.Between(Origination.Of(origination), Termination.Of(termination)));
        }