public static void AssignOutAndRefParameterForVoidDelegate(
            VoidDelegateWithOutAndRefParameters subject, int refValue, int outValue)
        {
            "Given a faked delegate with void return type and ref and out parameters"
            .x(() => subject = A.Fake <VoidDelegateWithOutAndRefParameters>());

            "When the faked delegate is configured to assign the out and ref parameters"
            .x(() => A.CallTo(() => subject(1, ref refValue, out outValue)).AssignsOutAndRefParameters(42, 99));

            "And I call the faked delegate"
            .x(() => subject(1, ref refValue, out outValue));

            "Then the ref parameter is set to the specified value"
            .x(() => refValue.Should().Be(42));

            "And the out parameter is set to the specified value"
            .x(() => outValue.Should().Be(99));
        }
        public static void AssignOutAndRefParameterForVoidDelegate(
            VoidDelegateWithOutAndRefParameters subject, int refValue, int outValue)
        {
            "Given a faked delegate with void return type and ref and out parameters"
                .x(() => subject = A.Fake<VoidDelegateWithOutAndRefParameters>());

            "When the faked delegate is configured to assign the out and ref parameters"
                .x(() => A.CallTo(() => subject(1, ref refValue, out outValue)).AssignsOutAndRefParameters(42, 99));

            "And I call the faked delegate"
                .x(() => subject(1, ref refValue, out outValue));

            "Then the ref parameter is set to the specified value"
                .x(() => refValue.Should().Be(42));

            "And the out parameter is set to the specified value"
                .x(() => outValue.Should().Be(99));
        }