anchor.diff:  /// that it mimics the intended function. They don't return a constant value.
   type IFlexQueryFunction = 
       abstract GetConstantResult : Constant list * Dictionary<string, IFlexQueryFunction> * Dictionary<string, string> option -> Result<string option>
  -    abstract GetVariableResult : FieldName * SearchQuery * Constant list * Dictionary<string, IFlexQueryFunction> * Dictionary<string, string> option -> Result<SearchQuery>
  +    abstract GetVariableResult : Field.T * FieldFunction * IFlexQuery * string [] -> Result<Query>
   
   
   [<AutoOpenAttribute>]
  
positive.code:                                        // we can ignore this condition, thus generate a matchall query
                                         | None -> generateMatchAllQuery := true; ok [||])
                  | _ -> fail <| SearchProfileUnsupportedFieldValue(fieldName)
              | None -> v |> getFieldValueAsArray fieldName
          
          /// Generate the query from the CONSTANT condition
          let getConstantCondition (fieldName, operator, v : Constant, p) = 
              maybe { 
                  let! field = fields |> keyExists2 (fieldName, fieldNotFound)
                  do! FieldType.searchable field.FieldType |> boolToResult (StoredFieldCannotBeSearched(field.FieldName))
                  let! query = queryTypes |> keyExists (operator, queryNotFound)
                  let! value = getValue (fieldName, v)
                  if generateMatchAllQuery.Value = true then return! ok <| getMatchAllDocsQuery()
                  else 
                      let! q = query.GetQuery(field, value.ToArray(), p)
                      q.SetBoost(float32 <| doubleFromOptDict "boost" 1.0 p)
                      return q
              }
          
          /// Main rec function responsible for generating predicate
          let rec generateQuery (pred : Predicate) = 
              maybe { 
  
negative.code: [<Name("substr"); Sealed>]
  type SubstrFunc() =
      interface IFlexQueryFunction with
          member __.GetVariableResult(_,_,_,_) = 
              fail <| VariableFunctionNotSupported (__.GetType() |> getTypeNameFromAttribute) 
          member __.GetConstantResult(parameters, queryFunctionTypes, source) = 
              try
  