static bool TryMatch(QueryParameterMatcher matcher, string queryValue, string expectedValue)
 {
     return(matcher.Mode switch
     {
         QueryParameterMatchMode.Exact => queryValue.Equals(expectedValue, matcher.Comparison),
         QueryParameterMatchMode.Prefix => queryValue.StartsWith(expectedValue, matcher.Comparison),
         _ => queryValue.Contains(expectedValue, matcher.Comparison)
     });
    private static bool TryMatch(QueryParameterMatcher matcher, StringValues requestHeaderValues)
    {
        var requestHeaderCount = requestHeaderValues.Count;

        for (var i = 0; i < requestHeaderCount; i++)
        {
            var requestValue = requestHeaderValues[i];
            if (requestValue is null)
            {
                continue;
            }

            foreach (var expectedValue in matcher.Values)
            {
                if (TryMatch(matcher, requestValue, expectedValue))
                {
                    return(matcher.Mode != QueryParameterMatchMode.NotContains);
                }
            }
        }

        return(matcher.Mode == QueryParameterMatchMode.NotContains);