/// <summary>
        /// The clone with object typing returns shallow clones but with deep cloned child rules for
        /// stream and market closure.
        /// </summary>
        /// <returns>
        /// The <see cref="object"/>.
        /// </returns>
        public object Clone()
        {
            var cloneRule = new FixedIncomeHighProfitsRule(
                this.fixedIncomeParameters,
                (IFixedIncomeHighProfitsStreamRule)this.streamRule.Clone(),
                (IFixedIncomeHighProfitsMarketClosureRule)this.marketClosureRule.Clone(),
                this.logger);

            return(cloneRule);
        }
        /// <summary>
        /// The cloning support for factor values.
        /// </summary>
        /// <param name="factor">
        /// The factor.
        /// </param>
        /// <returns>
        /// The <see cref="IUniverseCloneableRule"/>.
        /// </returns>
        public IUniverseCloneableRule Clone(IFactorValue factor)
        {
            var cloneRule = new FixedIncomeHighProfitsRule(
                this.fixedIncomeParameters,
                this.streamRule.Clone(factor) as IFixedIncomeHighProfitsStreamRule,
                this.marketClosureRule.Clone(factor) as IFixedIncomeHighProfitsMarketClosureRule,
                this.logger);

            cloneRule.OrganisationFactorValue = factor;

            return(cloneRule);
        }