void ISearchValueVisitor.Visit(StringSearchValue s)
        {
            EnsureArg.IsNotNull(s, nameof(s));

            EnsureOnlyEqualComparatorIsSupported();

            if (_modifier == null)
            {
                // Based on spec http://hl7.org/fhir/STU3/search.html#string,
                // is case-insensitive search so we will normalize into lower case for search.
                _outputExpression = Expression.StartsWith(FieldName.String, _componentIndex, s.String, true);
            }
            else if (_modifier == SearchModifierCode.Exact)
            {
                _outputExpression = Expression.StringEquals(FieldName.String, _componentIndex, s.String, false);
            }
            else if (_modifier == SearchModifierCode.Contains)
            {
                // Based on spec http://hl7.org/fhir/STU3/search.html#modifiers,
                // contains is case-insensitive search so we will normalize into lower case for search.
                _outputExpression = Expression.Contains(FieldName.String, _componentIndex, s.String, true);
            }
            else
            {
                ThrowModifierNotSupported();
            }
        }