void ISearchValueVisitor.Visit(UriSearchValue uri) { EnsureArg.IsNotNull(uri, nameof(uri)); switch (_modifier) { case null: _outputExpression = Expression.Equals(FieldName.Uri, _componentIndex, uri.Uri); break; case SearchModifierCode.Above: _outputExpression = Expression.And( Expression.EndsWith(FieldName.Uri, _componentIndex, uri.Uri, false), Expression.NotStartsWith(FieldName.Uri, _componentIndex, KnownUriSchemes.Urn, false)); break; case SearchModifierCode.Below: _outputExpression = Expression.And( Expression.StartsWith(FieldName.Uri, _componentIndex, uri.Uri, false), Expression.NotStartsWith(FieldName.Uri, _componentIndex, KnownUriSchemes.Urn, false)); break; default: ThrowModifierNotSupported(); break; } }