+++ /dev/null
-Index: parser/gapi-fixup.cs
-===================================================================
---- parser/gapi-fixup.cs (revision 60863)
-+++ parser/gapi-fixup.cs (working copy)
-@@ -136,6 +136,21 @@
- Console.WriteLine ("Warning: <attr path=\"{0}\"/> matched no nodes", path);\r
- }\r
- \r
-+ XPathNodeIterator remove_attr_iter = meta_nav.Select ("/metadata/remove-attr");\r
-+ while (remove_attr_iter.MoveNext ()) {\r
-+ string path = remove_attr_iter.Current.GetAttribute ("path", "");\r
-+ string attr_name = remove_attr_iter.Current.GetAttribute ("name", "");\r
-+ XPathNodeIterator api_iter = api_nav.Select (path);\r
-+ bool matched = false;\r
-+ while (api_iter.MoveNext ()) {\r
-+ XmlElement node = ((IHasXmlNode)api_iter.Current).GetNode () as XmlElement;\r
-+ node.RemoveAttribute (attr_name);\r
-+ matched = true;\r
-+ }\r
-+ if (!matched)\r
-+ Console.WriteLine ("Warning: <attr path=\"{0}\"/> matched no nodes", path);\r
-+ }\r
-+\r
- XPathNodeIterator move_iter = meta_nav.Select ("/metadata/move-node");\r
- while (move_iter.MoveNext ()) {\r
- string path = move_iter.Current.GetAttribute ("path", "");\r
-@@ -157,6 +172,32 @@
- Console.WriteLine ("Warning: <move-node path=\"{0}\"/> matched no nodes", path);\r
- }\r
- \r
-+ XPathNodeIterator change_iter = meta_nav.Select ("/metadata/change-node-type");\r
-+ while (change_iter.MoveNext ()) {\r
-+ string path = change_iter.Current.GetAttribute ("path", "");\r
-+ XPathNodeIterator api_iter = api_nav.Select (path);\r
-+ bool matched = false;\r
-+ while (api_iter.MoveNext ()) {\r
-+ XmlElement node = ((IHasXmlNode)api_iter.Current).GetNode () as XmlElement;\r
-+ XmlElement new_node = api_doc.CreateElement (change_iter.Current.Value);\r
-+ foreach (XmlNode child in node.ChildNodes)\r
-+ {\r
-+ XmlNode new_child = child.CloneNode (true);\r
-+ new_node.AppendChild (new_child);\r
-+ }\r
-+ \r
-+ foreach (XmlAttribute attr in node.Attributes)\r
-+ {\r
-+ new_node.SetAttribute (attr.Name, attr.Value);\r
-+ }\r
-+ \r
-+ node.ParentNode.ReplaceChild (new_node, node);\r
-+ matched = true;\r
-+ }\r
-+ if (!matched)\r
-+ Console.WriteLine ("Warning: <change-node-type path=\"{0}\"/> matched no nodes", path);\r
-+ }\r
-+\r
- if (symbol_doc != null) {\r
- XPathNavigator symbol_nav = symbol_doc.CreateNavigator ();\r
- XPathNodeIterator iter = symbol_nav.Select ("/api/*");\r