anchor.diff:      procedure Clear;
       function Count : integer;
       function Get(aIndex : integer) : TmFilter;
  +    procedure CopyFrom (aSource : TmFilters);
     end;
   
   implementation
  
positive.code:     FFieldName : string;
      FFilterOperator : TmFilterOperator;
      FValue : Variant;
    public
      constructor Create;
      destructor Destroy; override;
  
      function GetFormattedValue : Variant;
  
      property FieldName : string read FFieldName write FFieldName;
      property FilterOperator : TmFilterOperator read FFilterOperator write FFilterOperator;
      property Value : Variant read FValue write FValue;
    end;
  
  
  
negative.code:   Result := FList.Items[aIndex] as TmFilter;
  end;
  
  procedure TmFilters.CopyFrom(aSource: TmFilters);
  var
    i : integer;
  begin
    Self.Clear;
    for i := 0 to aSource.Count - 1 do
      Self.Add.CopyFrom(aSource.Get(i));
  end;
  
  { TmFilter }
  
  procedure TmFilter.SetValue(AValue: Variant);
  begin
    if FValue=AValue then Exit;
    FValue:=AValue;
    FreeAndNil(FValuesAsStrings);
    FreeAndNil(FValuesDictionary);
  end;
  
  constructor TmFilter.Create;
  begin
    FFilterOperator:= foUnknown;
    FValuesAsStrings:= nil;
    FValuesDictionary:= nil;
  end;
  
  destructor TmFilter.Destroy;
  