anchor.diff:      foUnknown:
         Result := false;
       foEq:
  -      Result := (VarCompareValue(aActualValue, FValue) = vrEqual);
  +      Result := mUtility.CompareVariants(aActualValue, FValue) = 0;
       foNotEq:
  -      Result := (VarCompareValue(aActualValue, FValue) = vrNotEqual);
  +      Result := mUtility.CompareVariants(aActualValue, FValue) <> 0;
       foGtOrEq:
         begin
  -        rl := VarCompareValue(aActualValue, FValue);
  -        Result := (rl = vrEqual) or (rl = vrGreaterThan);
  +        Result := mUtility.CompareVariants(aActualValue, FValue) >= 0;
         end;
       foLtOrEq:
         begin
  -        rl := VarCompareValue(aActualValue, FValue);
  -        Result := (rl = vrEqual) or (rl = vrLessThan);
  +        Result := mUtility.CompareVariants(aActualValue, FValue) <= 0;
         end;
       foLike:
         begin
  
positive.code:       end;
      foIn:
        begin
          if not Assigned(FValuesAsStrings) then
          begin
            FValuesAsStrings := TStringList.Create;
            FValuesDictionary := TmStringDictionary.Create();
  
            ConvertVariantToStringList(aActualValue, FValuesAsStrings);
            for i := 0 to FValuesAsStrings.Count - 1 do
            begin
              str := lowercase(FValuesAsStrings.Strings[i]);
  
negative.code: procedure TmFilters.Clear;
  begin
    FList.Clear;
  end;
  
  procedure TmFilters.ClearForField(const aFieldName: string);
  var
    i : integer;
  begin
    for i := 0 to FList.Count -1 do
    begin
      if CompareText((FList.Items[i] as TmFilter).FieldName, aFieldName) = 0 then
      begin
        FList.Delete(i);
        exit;
      end;
    end;
  end;
  
  function TmFilters.Count: integer;
  