anchor.diff:    FHash.Remove(Item);
   end;
   
  +procedure THashedCollection.ItemNameChanged(Item: TCollectionItem;
  +  AOldName: String; ANewName: String);
  +begin
  +  if(AOldName <> '') and (ANewName <> '') then
  +  begin
  +    FHash.Rename(AOldName,ANewName);
  +  end
  +  else if (AOldName <> '') then
  +  begin
  +    FHash.Remove(Item);
  +  end
  +  else if (ANewName <> '') then
  +  begin
  +    FHash.Add(ANewName,Item);
  +  end;
  +end;
  +
   procedure THashedCollection.Notify(Item: TCollectionItem;
     Action: TCollectionNotification);
   begin
  
positive.code:   protected
      function GetDisplayName: string; override;
      procedure SetDisplayName(const Value: string); override;
    end;
  
    TNamedCollectionItemClass = class of TNamedCollectionItem;
  
negative.code: 
      procedure ItemAdded(Item: TCollectionItem);
      procedure ItemRemoved(Item: TCollectionItem);
      procedure ItemNameChanged(Item: TCollectionItem; AOldName: String; ANewName: String);
    protected
      procedure Notify(Item: TCollectionItem; Action: TCollectionNotification);
        override;
  