/// <summary>
 ///
 /// </summary>
 /// <param name="actualActionInvokeInfo"></param>
 private void AssertExpectedParameterAsserts(ActualActionInvokeInfo actualActionInvokeInfo)
 {
     foreach (var parameterAssert in _parameterAsserts)
     {
         var index = actualActionInvokeInfo
                     .ActionMethodInfo
                     .GetParameters()
                     .Select((p, ix) => new { Parameter = p, Index = ix })
                     .Single(p => p.Parameter.Name == parameterAssert.Name)
                     .Index;
         var value = actualActionInvokeInfo.Arguments[index];
         parameterAssert.Action(value);
     }
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="actualActionInvokeInfo"></param>
        private void AssertExpectedParameterValues(ActualActionInvokeInfo actualActionInvokeInfo)
        {
            // TODO: Remove Xunit usage
            for (var ix = 0; ix < _expectedActionInvokeInfo.ActionMethodInfo.GetParameters().Length; ix++)
            {
                switch (_expectedActionInvokeInfo.ArgumentAssertKinds[ix])
                {
                case ArgumentAssertKind.Value:
                    Assert.Equal(
                        _expectedActionInvokeInfo.Arguments[ix],
                        actualActionInvokeInfo.Arguments[ix]);
                    break;

                case ArgumentAssertKind.Any:
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
        }