anchor.diff:    Col := Lexer.PosXY.X;
   
     RawExprNode := TSyntaxNode.Create('expression');
  -
  -  FStack.Push(RawExprNode);
  -  try
  -    inherited;
  -  finally
  -    FStack.Pop;
  -  end;
  -
  -  if RawExprNode.HasChildren then
  -  begin
  -    ExprNode := FStack.Push('EXPRESSION', False);
  +  try
  +    FStack.Push(RawExprNode);
       try
  -      ExprNode.SetAttribute('line', IntToStr(Line));
  -      ExprNode.SetAttribute('col', IntToStr(Col));
  -
  -      NodeList := TList<TSyntaxNode>.Create;
  -      try
  -        for Node in RawExprNode.ChildNodes do
  -          NodeList.Add(Node);
  -        TExpressionTools.RawNodeListToTree(RawExprNode, NodeList, ExprNode);
  -      finally
  -        NodeList.Free;
  -      end;
  +      inherited;
       finally
         FStack.Pop;
       end;
  +
  +    if RawExprNode.HasChildren then
  +    begin
  +      ExprNode := FStack.Push('EXPRESSION', False);
  +      try
  +        ExprNode.SetAttribute('line', IntToStr(Line));
  +        ExprNode.SetAttribute('col', IntToStr(Col));
  +
  +        NodeList := TList<TSyntaxNode>.Create;
  +        try
  +          for Node in RawExprNode.ChildNodes do
  +            NodeList.Add(Node);
  +          TExpressionTools.RawNodeListToTree(RawExprNode, NodeList, ExprNode);
  +        finally
  +          NodeList.Free;
  +        end;
  +      finally
  +        FStack.Pop;
  +      end;
  +    end;
  +  finally
  +    RawExprNode.Free;
     end;
   end;
   
  
positive.code:   Field, TypeInfo: TSyntaxNode;
  begin
    Fields := TSyntaxNode.Create('fields');
  
    FStack.Push(Fields);
    try
      inherited;
    finally
      FStack.Pop;
    end;
  
    FStack.Push('fields');
    try
      TypeInfo := Fields.FindNode(UpperCase(sTYPE));
      for Field in Fields.ChildNodes do
      begin
        if not SameText(Field.Name, sNAME) then
          Continue;
  
        FStack.Push('field', False);
        try
          FStack.AddChild(Field.Clone);
          FStack.AddChild(TypeInfo.Clone);
        finally
          FStack.Pop;
        end;
      end;
    finally;
      FStack.Pop;
    end;
  end;
  
  
negative.code:   Str: string;
  begin
    StrConst := TSyntaxNode.Create('StringConst');
    try
      FStack.Push(StrConst);
      try
        inherited;
      finally
        FStack.Pop;
      end;
  
      Str := '';
      for Literal in StrConst.ChildNodes do
        Str := Str + Literal.GetAttribute(sValue);
    finally
      StrConst.Free;
    end;
  
    Node := FStack.AddChild(sLITERAL);
    Node.SetAttribute(sTYPE, 'string');
  