anchor.diff:  
     { TRemodelRequest }
   
  +  TOnHandleChildNode = procedure(AChildNode: TDOMNode) of object;
  +
     TRemodelRequest = class
     private
       FXMLDocument: TXMLDocument;
     protected
  -    procedure RemoveEmptyElements(AChildNode: TDOMNode); overload;
  -    procedure RemoveEmptyElements; overload;
  +    procedure AlterChildNodeNamespaceProc(AChildnode: tDOMNode);
  +    procedure RemoveEmptyChildNodeProc(AChildNode: TDOMNode); overload;
  +    procedure LoopChildNodes(AHandleChildNodeProc: TOnHandleChildNode); overload;
  +    procedure RemoveEmptyChildNodes;
       procedure AlterNamespace;
   
       procedure GetXMLByStream(AStream: TStream);
  
positive.code: 
  procedure TRemodelRequest.SetXMLToStream(AStream: TStream);
  begin
    WriteXML(FXMLDocument, AStream);
  end;
  
  
negative.code:   for anz := 0 to FXMLDocument.DocumentElement.ChildNodes.Count-1 do
    begin
      child_node := FXMLDocument.DocumentElement.ChildNodes.Item[anz];
      if Assigned(AHandleChildNodeProc) then
        AHandleChildNodeProc(child_node);
    end;
  end;
  
  procedure TRemodelRequest.RemoveEmptyChildNodes;
  begin
    LoopChildNodes(RemoveEmptyChildNodeProc);
  end;
  
  procedure TRemodelRequest.AlterNamespace;
  begin
    LoopChildNodes(AlterChildNodeNamespaceProc);
  end;
  
  destructor TRemodelRequest.Destroy;
  