private static LibraryDependencyTarget ParseMultiFlag(string flag, int end)
        {
            var result     = LibraryDependencyTarget.None;
            var flagsAdded = 0;
            var start      = 0;

            do
            {
                var segment = StringSegment.CreateTrimmed(flag, start, end - 1);
                if (segment.Length > 0)
                {
                    flagsAdded++;
                    result |= ParseSingleFlag(segment);
                }

                start = end + 1;
                if (start >= flag.Length)
                {
                    // Reached end, don't look for next comma
                    break;
                }

                end = flag.IndexOf(',', start);
                if (end == -1)
                {
                    end = flag.Length;
                }
            } while (true);

            return(flagsAdded > 0 ? result : LibraryDependencyTarget.All);
        }
        /// <summary>
        /// Convert flag string into a LibraryTypeFlag.
        /// </summary>
        public static LibraryDependencyTarget Parse(string flag)
        {
            // If the LibraryDependency does not have a flag value it is considered all
            if (string.IsNullOrEmpty(flag))
            {
                return(LibraryDependencyTarget.All);
            }

            var flagEnd = flag.IndexOf(',');

            if (flagEnd == -1)
            {
                var segment = StringSegment.CreateTrimmed(flag, 0, flag.Length - 1);
                if (segment.Length == 0)
                {
                    return(LibraryDependencyTarget.All);
                }

                return(ParseSingleFlag(segment));
            }
            else
            {
                return(ParseMultiFlag(flag, flagEnd));
            }
        }