anchor.diff:  begin
     if aData = nil then
       exit;
  +  list.BeginUpdate;
     for i := List.Items.Count-1 downto 0 do
     begin
       msgdt := PMessageData(List.Items[i].Data);
       if (msgdt^.data = aData) then
         List.Items.Delete(List.Items[i]);
     end;
  +  list.EndUpdate;
   end;
   {$ENDREGION}
   
  
positive.code:       amcMisc: itm.Visible := aCtxt = amcMisc;
      end;
    end;
  end;
  
  function guessMessageKind(const aMessg: string): TCEAppMessageKind;
  
negative.code: 
  procedure TCEMessagesWidget.clearOutOfRangeMessg;
  begin
    list.BeginUpdate;
    while List.Items.Count > fMaxMessCnt do
      List.Items.Delete(List.Items.GetFirstNode);
    list.EndUpdate;
  end;
  
  procedure TCEMessagesWidget.scrollToBack;
  