anchor.diff:  
   procedure TImpl_fpxml_mXmlDocument._LoadFromStream(aStream: TStream);
   begin
  +  FreeAndNil(FXMLDocument);
  +  FreeAndNil(FRootElement);
     ReadXMLFile(FXMLDocument, aStream);
  -  if Assigned(FRootElement) then
  -    FRootElement.Free;
  -  FRootElement := nil;
     FRoot := FXMLDocument.DocumentElement;
   end;
   
  
positive.code: 
  { TImpl_fpxml_mXmlDocument }
  
  constructor TImpl_fpxml_mXmlDocument.Create;
  begin
    FXMLDocument := TXMLDocument.Create;
    FRoot := nil;
    FRootElement := nil;
  end;
  
negative.code: 
  procedure TImpl_fpxml_mXmlDocument._Clear;
  begin
    if Assigned(FRoot) and Assigned(FXMLDocument) then
      FXMLDocument.RemoveChild(FRoot);
    FreeAndNil(FRootElement);
  end;
  
  procedure TImpl_fpxml_mXmlDocument._SaveToStream(aStream: TStream);
  