/// <summary>
        /// Return concrete "Torque" message type
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>
        public static UdpMessage ParseUdpReceiveResult(UdpReceiveResult result)
        {
            using (var stream = new MemoryStream(result.Buffer))
            {
                using (var reader = new BinaryReader(stream))
                {
                    var packetType = reader.ReadByte();

                    switch ((TorqueMessageTypes)packetType)
                    {
                    case TorqueMessageTypes.GameHeartbeat:
                        return(result.ToGameHeartbeat(reader, result.RemoteEndPoint));

                    case TorqueMessageTypes.GameMasterInfoResponse:
                        return(result.ToGameInfoResponse(reader, result.RemoteEndPoint));

                    default:
                        return(new UdpMessage(result.RemoteEndPoint)
                        {
                            PacketType = packetType,
                            Message = result.Buffer
                        });
                    }
                }
            }
        }
        /// <summary>
        /// Return concrete "Torque" message type
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>
        public static UdpMessage ParseUdpReceiveResult(UdpReceiveResult result)
        {
            using (var stream = new MemoryStream(result.Buffer))
            {
                using (var reader = new BinaryReader(stream))
                {
                    var packetType = reader.ReadByte();

                    switch ((TorqueMessageTypes)packetType)
                    {
                        case TorqueMessageTypes.GameHeartbeat:
                            return result.ToGameHeartbeat(reader, result.RemoteEndPoint);
                        case TorqueMessageTypes.GameMasterInfoResponse:
                            return result.ToGameInfoResponse(reader, result.RemoteEndPoint);
                        default:
                            return new UdpMessage(result.RemoteEndPoint)
                            {
                                PacketType = packetType,
                                Message = result.Buffer
                            };
                    }

                }
            }
        }