private Dictionary <string, string> PopulateInfo(List <string> keys, byte[] array)
        {
            const string infoIdText       = "INFO";
            var          infoIdStartIndex = ArraySearcher.GetStartIndexOfText(array, infoIdText);

            const int notFoundIndicator      = -1;
            Dictionary <string, string> info = new Dictionary <string, string>();

            if (infoIdStartIndex != notFoundIndicator)
            {
                var infoDataStartIndex          = infoIdStartIndex + infoIdText.Length;
                var arrayFromInfoDataStartIndex = array.SubArray(infoDataStartIndex, array.Length - infoDataStartIndex);

                info = ArraySearcher.GetKeysAndValues(keys, arrayFromInfoDataStartIndex);
            }
            return(info);
        }
        private int GetDataStartIndex(byte[] array)
        {
            var indexAfterSubChunk2Size = SubChunk2Size.StartIndex + SubChunk2Size.Length;
            int dataStartIndex;

            if (SubChunk2Id.Value == DataText) //Expected start index for "data"
            {
                dataStartIndex = indexAfterSubChunk2Size;
            }
            else
            {
                const int chunkSizeLength  = 4;
                var       startIndexOfText = ArraySearcher.GetStartIndexOfText(array, DataText);
                if (startIndexOfText == -1)
                {
                    throw new ArgumentException($"{DataText} not found.");
                }
                dataStartIndex = startIndexOfText + DataText.Length + chunkSizeLength;
            }
            return(dataStartIndex);
        }