anchor.diff:    Tree: TTreeView;
     Node, NodeParent: TTreeNode;
     Range: TATRangeInCodeTree;
  -  NCounter, i: integer;
  +  i: integer;
   begin
     //Str = '[ ((x1, y1, x2, y2), level, 'title', icon), ... ]'
     //code gets fixed number of numbers/strings from result, ignoring brackets
  
positive.code: var
    NPos: integer;
    //
    function IsDigit(ch: char): boolean; inline;
    begin
      Result:= (ch>='0') and (ch<='9');
    end;
    //
    function GetInt: integer;
  
negative.code:   function GetStr: string;
    var
      N: integer;
      quote: char;
    begin
      //find first quote. then find the same quote, for string end.
      while (NPos<=Length(Str)) and not IsQuote(Str[NPos]) do Inc(NPos);
      quote:= Str[NPos];
      Inc(NPos);
      N:= NPos;
      while (N<=Length(Str)) and not ((Str[N]=quote) and (Str[N-1]<>'\')) do Inc(N);
      Result:= Copy(Str, NPos, N-NPos);
      Inc(N);
      NPos:= N;
  