public void OnInvocation(IInvocation invocation)
        {
            if (invocation == null)
            {
                throw new ArgumentNullException("invocation");
            }

            Action action;

            var wasMet =
                expectationScope.TryMeet(invocation, out action) ||
                TryMeetDefaultObjectMethodInvocation(invocation, out action);

            expectationScope.InvocationHistory.RegisterInvocation(invocation, wasMet);

            if (wasMet)
            {
                action();
            }
            else
            {
                throw new ExpectationsException(expectationScope, "Unexpected invocation '{0}', expected:", invocation);
            }
        }