public static ConversationRecord <TData> Combine(Func <TData, TData, TData> combineData, ConversationRecord <TData> left, ConversationRecord <TData> right)
 {
     return(new ConversationRecord <TData>
     {
         Key = left.Key,
         OriginalFlowsPresent = left.OriginalFlowsPresent + right.OriginalFlowsPresent,
         ForwardMetrics = FlowMetrics.Aggregate(ref left.ForwardMetrics, ref right.ForwardMetrics),
         ReverseMetrics = FlowMetrics.Aggregate(ref left.ReverseMetrics, ref right.ReverseMetrics),
         Data = combineData(left.Data, right.Data)
     });
 }