/// <summary>Get divisions within the specified division bounds.</summary>
        /// <param name="s">Characters to parse.</param>
        /// <param name="delimiter">Delimiter to search for.</param>
        /// <param name="parent">Bounds within which to search.</param>
        /// <returns>Divisions within the bounds specified.</returns>
        public static List <StringDivision> GetDivisions(char[] s, char delimiter, StringDivision parent)
        {
            unchecked
            {
                var divisions = new List <StringDivision>();
                var length    = 0;

                var offset = !parent.Valid
                    ? 0
                    : parent.Offset;

                var inputLength = !parent.Valid
                    ? s.Length
                    : parent.Length;

                var endIndex = offset + inputLength;
                for (var index = offset; index < endIndex; index++)
                {
                    if (s[index] == delimiter)
                    {
                        divisions.Add(new StringDivision(offset, length));
                        length = 0;
                        offset = index + 1;
                    }
                    else
                    {
                        length++;
                    }
                }

                divisions.Add(new StringDivision(offset, length));
                return(divisions);
            }
        }
        /// <summary>Get divisions within the specified division bounds.</summary>
        /// <param name="s">Characters to parse.</param>
        /// <param name="delimiter">Delimiter to search for.</param>
        /// <param name="parent">Bounds within which to search.</param>
        /// <returns>Divisions within the bounds specified.</returns>
        public static List<StringDivision> GetDivisions(char[] s, char delimiter, StringDivision parent)
        {
            unchecked
            {
                var divisions = new List<StringDivision>();
                var length = 0;

                var offset = !parent.Valid
                    ? 0
                    : parent.Offset;

                var inputLength = !parent.Valid
                    ? s.Length
                    : parent.Length;

                var endIndex = offset + inputLength;
                for (var index = offset; index < endIndex; index++)
                {
                    if (s[index] == delimiter)
                    {
                        divisions.Add(new StringDivision(offset, length));
                        length = 0;
                        offset = index + 1;
                    }
                    else
                    {
                        length++;
                    }
                }

                divisions.Add(new StringDivision(offset, length));
                return divisions;
            }
        }