anchor.diff:    Ed.DoEventChange(AY);
   end;
   
  +{ TEditorHtmlTagList }
  +
  +function TEditorHtmlTagList.ItemPtr(AIndex: integer): PEditorHtmlTagRecord;
  +begin
  +  Result:= PEditorHtmlTagRecord(InternalGet(AIndex));
  +end;
  +
   { TEditorHtmlTagRecord }
   
   class operator TEditorHtmlTagRecord.=(const a, b: TEditorHtmlTagRecord): boolean;
  
positive.code:     //delete pairs <tag> - </tag>
      for i:= tags.Count-1 downto 0 do
      begin
        if not tags[i].bClosing then
          for j:= i+1 to tags.Count-1 do
            if tags[j].bClosing and SameText(tags[i].sTagName, tags[j].sTagName) then
            begin
              tags.Delete(j);
              tags.Delete(i);
              Break;
            end;
      end;
  
      //take last opened tag
      for i:= tags.Count-1 downto 0 do
        if not tags[i].bClosing then
        begin
          Result:= tags[i].sTagName;
          Break
        end;
    finally
      FreeAndNil(tags);
    end;
  
negative.code: function EditorFindHtmlLastOpenedTagInText(const AText: UnicodeString): string;
  var
    tags: TEditorHtmlTagList;
    tagPtr, tagPtr2: PEditorHtmlTagRecord;
    i, j: integer;
  begin
    Result:= '';
  