private bool ParseData(byte[] data)
        {
            var reader = new PacketReader(data);
            var header = reader.ReadLong();
            var id = reader.ReadLong();
            logger.Debug("ID: {0}", id);
            if (IsIncorrectId(id))
            {
                return false;
            }
            this.id = id;
            totalNumberOfParts = reader.ReadByte();
            logger.Debug("TOTAL PARTS: {0}", totalNumberOfParts);
            var number = reader.ReadByte();
            logger.Debug("NUMBER: {0}", number);
            size = reader.ReadShort();
            logger.Debug("SIZE: {0}", size);
            //if (number == 0 && IsPacketCompressed())
            //{
            //    uncompressedSize = reader.ReadLong();
            //    logger.Debug("USIZE: {0}", uncompressedSize);
            //    checkSum = reader.ReadLong();
            //    logger.Debug("SUM: {0}", checkSum);
            //}
            if (number == 0)
            {
                var strangeNumberInFirstPacket = reader.ReadLong();
                logger.Debug("Strange number: {0}", strangeNumberInFirstPacket);
            }

            var payloadPart = reader.GetRest();
            parts.Add(new PacketPartData { Number = number, Data = payloadPart });

            logger.Debug("END PART");

            return true;
        }