anchor.diff:  
       procedure ItemAdded(Item: TCollectionItem);
       procedure ItemRemoved(Item: TCollectionItem);
  +    procedure ItemNameChanged(Item: TCollectionItem; AOldName: String; ANewName: String);
     protected
       procedure Notify(Item: TCollectionItem; Action: TCollectionNotification);
         override;
  
positive.code:   protected
      function GetDisplayName: string; override;
      procedure SetDisplayName(const Value: string); override;
    end;
  
    TNamedCollectionItemClass = class of TNamedCollectionItem;
  
negative.code: procedure TNamedCollectionItem.SetDisplayName(const Value: string);
  begin
    inherited SetDisplayName(Value);
    if Assigned(Collection) then
      (Collection as THashedCollection).ItemNameChanged(Self, FDisplayName, Value);
    FDisplayName := Value;
  end;
  
  