public ISearchModifier GetSearchModifier(string modifier)
        {
            int    splitIndex = modifier.IndexOf(':');
            string name       = modifier.Substring(0, splitIndex).Trim();
            string value      = modifier.Substring(splitIndex + 1, modifier.Length - splitIndex - 1).Trim();
            bool   invert     = name.Length > 0 ? name[0] == '-' : false;

            if (name.StartsWith("-"))
            {
                name = name.Substring(1, name.Length - 1);
            }

            // Trim outer quotes from the value.

            if (value.Length > 1 && value.First() == '"' && value.Last() == '"')
            {
                value = value.Trim('"');
            }

            ISearchModifier searchModifier = GetSearchModifier(name, value);

            if (searchModifier != null)
            {
                searchModifier.Invert = invert;
            }

            return(searchModifier);
        }
        public ISearchModifier GetSearchModifier(string name, string value)
        {
            ISearchModifier modifier = modifiers.GetOrDefault(name.ToLowerInvariant())?.Invoke();

            if (modifier != null)
            {
                modifier.Name  = name;
                modifier.Value = value;
            }

            return(modifier);
        }