protected void ExecuteDelegateInSubWxeFunction(
            ITransactionMode parentFunctionTransactionMode,
            ITransactionMode subFunctionTransactionMode,
            Action <WxeContext, DelegateExecutingTransactedFunction> testDelegate)
        {
            var subFunction = new DelegateExecutingTransactedFunction(subFunctionTransactionMode, testDelegate);

            var rootFunction = new TransactedFunctionWithChildFunction(parentFunctionTransactionMode, subFunction);

            rootFunction.Execute(Context);

            Assert.That(subFunction.DelegatesExecuted, Is.True);
        }
        protected void ExecuteDelegateInSubWxeFunctionWithParameters(
            ITransactionMode parentFunctionTransactionMode,
            ITransactionMode subFunctionTransactionMode,
            Action <WxeContext, DomainObjectParameterTestTransactedFunction> testDelegate,
            SampleObject inParameter,
            SampleObject[] inParameterArray,
            out SampleObject outParameter,
            out SampleObject[] outParameterArray)
        {
            var subFunction = new DomainObjectParameterTestTransactedFunction(
                subFunctionTransactionMode,
                testDelegate,
                inParameter,
                inParameterArray);

            var rootFunction = new TransactedFunctionWithChildFunction(parentFunctionTransactionMode, subFunction);

            rootFunction.Execute(Context);

            Assert.That(subFunction.DelegatesExecuted, Is.True);

            outParameter      = subFunction.OutParameter;
            outParameterArray = subFunction.OutParameterArray;
        }