anchor.diff:  
   procedure TImpl_fpxml_mXmlDocument._Clear;
   begin
  -  if Assigned(FRoot) then
  +  if Assigned(FRoot) and Assigned(FXMLDocument) then
       FXMLDocument.RemoveChild(FRoot);
  +  FreeAndNil(FRootElement);
   end;
   
   procedure TImpl_fpxml_mXmlDocument._SaveToStream(aStream: TStream);
  
positive.code:   NewNode := FNode.OwnerDocument.CreateElement(aName);
    Self.FNode.AppendChild(NewNode);
    Result := TmXmlElement.Create(NewNode);
  end;
  
  function TImpl_fpxml_mXmlElement._HasAttribute(const aName: TmXMLString): boolean;
  
negative.code: 
  function TImpl_fpxml_mXmlDocument._RootElement: TmXmlElement;
  begin
    CheckXMLDocument;
    if Assigned(FRoot) and (not Assigned(FRootElement)) then
      FRootElement := TmXmlElement.Create(FRoot);
    Result := FRootElement;
  