public MessageKey MakeComplementKey() { switch (Type) { case MessageType.Unknown: return(new MessageKey(MessageId, MessageType.Unknown, Direction.GetOppositeDirection())); case MessageType.Request: return(new MessageKey(MessageId, MessageType.Request, Direction.GetOppositeDirection())); case MessageType.Response: return(new MessageKey(MessageId, MessageType.Response, Direction.GetOppositeDirection())); default: throw new ArgumentException(); } }