decode :: Word32 -> Word16 -> Message it et -> A.Parser WireMessage
decode sender opcode msg = do
  args <- mapM (boxedParse . argDataProj . argumentType) (messageArguments msg)
  return WireMessage
    { wireMessageSender = sender
    , wireMessageOpcode = opcode
    , wireMessageArguments = args
    }
decode :: Word32 -> Word16 -> Message it et -> A.Parser WireMessage
decode sender opcode msg = do
  args <- mapM (boxedParse . argDataProj . argumentType) (messageArguments msg)
  return WireMessage
    { wireMessageSender = sender
    , wireMessageOpcode = opcode
    , wireMessageArguments = args
    }
decode sender opcode msg = do
  args <- mapM (boxedParse . argDataProj . argumentType) (messageArguments msg)
  return WireMessage
    { wireMessageSender = sender
    , wireMessageOpcode = opcode
    , wireMessageArguments = args
    }