pub fn decode<A, B, T>(msg: Message<A, B>) -> Result<T, MessageError>where
    A: Action,
    B: PacketBytes,
    T: DeserializeOwned,