anchor.diff:  function TImpl_oxml_mXmlElement._AddElement(Name: TmXMLString): TmXmlElement;
   var
     NewNode : PXMLNode;
  +  tmp : Tmxml_oxml_PointerShell;
   begin
     NewNode := Self.FNode^.AddChild(Name);
  -  Result := TmXmlElement.Create(Tmxml_oxml_PointerShell.Create(NewNode));
  -end;
  -
  -function TImpl_oxml_mXmlElement._GetAttribute(Name, Default: TmXmlString): TmXmlString;
  +  tmp := Tmxml_oxml_PointerShell.Create(NewNode);
  +  FGarbage.Add(tmp);
  +  Result := TmXmlElement.Create(tmp);
  +  FGarbage.Add(Result);
  +end;
  +
  +function TImpl_oxml_mXmlElement._GetAttribute(Name: TmXmlString;
  +  Default: TmXmlString): TmXmlString;
   begin
     Result := Self.FNode^.GetAttributeDef(Name, Default);
   end;
  
positive.code:   ParentNode : PXMLNode;
    i : integer;
    NewElement : TmXmlElement;
  begin
    ParentNode := (aParent as TImpl_oxml_mXmlElement).FNode;
    if CompareText(aFilter, '') = 0 then
    begin
      for i := 0 to ParentNode^.ChildCount -1 do
      begin
        NewElement := TmXmlElement.Create(Tmxml_oxml_PointerShell.Create(ParentNode^.ChildNodes[i]));
        FList.Add(NewElement);
      end;
    end
  
negative.code: end;
  
  function TImpl_oxml_mXmlDocument._RootElement: TmXmlElement;
  var
    tmp : Tmxml_oxml_PointerShell;
  begin
    if Assigned(FRoot) and (not Assigned(FRootElement)) then
    begin
      tmp := Tmxml_oxml_PointerShell.Create(FRoot);
      FGarbage.Add(tmp);
      FRootElement := TmXmlElement.Create(tmp);
    end;
    Result := FRootElement;
  end;
  
  