private byte[] BuildBuffer(bool generateBitmap)
        {
            BitArray  primaryBitmap = new BitArray(64);
            ByteArray dataBuffer    = new ByteArray();

            foreach (KeyValuePair <int, byte[]> element in dataElements)
            {
                if (generateBitmap)
                {
                    primaryBitmap.Set(element.Key - 1, !primaryBitmap.Get(element.Key - 1));
                }
                dataBuffer.append(element.Value);
            }

            if (generateBitmap)
            {
                dataBuffer.prepend(StringUtil.HexStringToByteArray(StringUtil.BitArrayToHexString(primaryBitmap)));
            }

            dataBuffer.prepend(
                StringUtil.HexStringToByteArray((version + messageClass + messageFunction + messageOrigin)));

            if (header != null && generateBitmap)
            {
                dataBuffer.prepend(StringUtil.HexStringToByteArray(header));
            }

            return(dataBuffer.array());
        }