private string GetExceptionMessage(CallSpecAndTarget[] querySpec, ICall[] matchingCallsInOrder)
 {
     const string callDelimiter = "\n    ";
     var instanceLookup = new TypeInstanceNumberLookup();
     var isAcrossMultipleTargets = IsAcrossMultipleTargets(querySpec);
     var formattedQuery = string.Join(callDelimiter,
                                      querySpec.Select(x => FormatCallSpec(x, isAcrossMultipleTargets, instanceLookup)).ToArray());
     var formattedCalls = string.Join(callDelimiter,
                                      matchingCallsInOrder.Select(x => FormatCall(x, isAcrossMultipleTargets, instanceLookup)).ToArray());
     return string.Format("\nExpected to receive these calls in order:{0}{1}\n" +
                          "Actually received matching calls in this order:{0}{2}\n\n{3}",
                          callDelimiter,
                          formattedQuery,
                          formattedCalls,
                          "*** Note: calls to property getters are not considered part of the query. ***");
 }