anchor.diff:    TValuedSyntaxNode(Result).Value := Self.Value;
   end;
   
  +function TValuedSyntaxNode.GetValue: string;
  +begin
  +  {$ifdef USESTRINGCACHE}
  +    Result := TStringCache.Instance.Get(FValue);
  +  {$else}
  +    Result := FValue;
  +  {$endif}
  +end;
  +
  +procedure TValuedSyntaxNode.SetValue(const Value: string);
  +begin
  +  {$ifdef USESTRINGCACHE}
  +    FValue := TStringCache.Instance.Add(Value);
  +  {$else}
  +    FValue := Value;
  +  {$endif}
  +end;
  +
   { TCommentNode }
   
   function TCommentNode.Clone: TSyntaxNode;
  
positive.code:   SetLength(FAttributes, 0);
    SetLength(FChildNodes, 0);
    FParentNode := nil;
  end;
  
  procedure TSyntaxNode.ExtractChild(Node: TSyntaxNode);
  
negative.code: var
    i: integer;
  begin
    {$ifdef USESTRINGCACHE}TStringCache.Instance.DecRef;{$endif}
  
    for i := 0 to Length(FChildNodes) - 1 do
      FChildNodes[i].Free;
    SetLength(FChildNodes, 0);
  