/// <summary>
        ///     Converts an UnevenByte to EncodedLZByte based on the control bit-
        /// </summary>
        /// <param name="unevenByte"> UnevenByte to convert. </param>
        public EncodedLZByte ToEncodedByte(UnevenByte unevenByte)
        {
            // Check if control bit is 1
            if (unevenByte[0] == 1)
            {
                unevenByte -= 1;
                var pointerData = unevenByte.GetBits(PointerByte.POINTER_SIZE);
                unevenByte -= PointerByte.POINTER_SIZE;
                var lengthData = unevenByte.GetBits(PointerByte.LENGTH_SIZE);
                return(new PointerByte(pointerData + 1, lengthData + 1));
            }

            unevenByte -= 1;
            return(new RawByte((byte)unevenByte.Data));
        }