anchor.diff:  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;
  
positive.code:               FValuesDictionary.Add(str, FValuesAsStrings); // FValuesAsString is just a placeholder, to be able to check return value of find as nil
            end;
          end;
          Result := FValuesDictionary.Find(lowercase(VarToStr(FValue))) <> nil;
        end;
    end;
  end;
  
  procedure TmFilter.CopyFrom(aSource: TmFilter);
  
negative.code:     Self.Add.CopyFrom(aSource.Get(i));
  end;
  
  procedure TmFilters.StartEvaluation;
  var
    i : integer;
  begin
    for i := 0 to Self.Count -1 do
      Self.Get(i).StartEvaluation;
  end;
  
  procedure TmFilters.EndEvaluation;
  var
    i : integer;
  begin
    for i := 0 to Self.Count -1 do
      Self.Get(i).EndEvaluation;
  end;
  
  { TmFilter }
  
  procedure TmFilter.SetValue(AValue: Variant);
  begin
    if CompareVariants(FValue, AValue ) = 0 then
      exit;
    FValue:=AValue;
    FreeAndNil(FValuesAsStrings);
    FreeAndNil(FValuesDictionary);
  