public IArrangement GetArrangement(IInvocation invocation) { var proxy = invocation.Proxy; var proxyIdentifier = GetProxyIdentifier(proxy); var metadataToken = invocation.Method.MetadataToken; var memberName = invocation.GetFriendlyMemberName(); var arrangementCount = GetArrangementCallsMade(proxyIdentifier, metadataToken); var invocationCount = GetInvocationCallsMade(proxyIdentifier, metadataToken); if (_arrangementQueue.ContainsKey(proxyIdentifier)) { if (_arrangementQueue[proxyIdentifier].ContainsKey(metadataToken)) { var arrangementQueue = _arrangementQueue[proxyIdentifier][metadataToken]; if (arrangementQueue.TryDequeue(out var arrangement)) { return(arrangement); } } } var mockExceptionMessage = _mockFailureMessageFactory.GetUnarrangedInvocationFailureMessage(memberName, arrangementCount, invocationCount); throw new MockException(mockExceptionMessage); }