private static void ToXmlRecursively(
object obj, StringBuilder buffer, int depth) {
if (obj != null) {
var nodeName = obj.GetType().Name;
PrintTabs(depth, buffer);
buffer.AppendLine("<" + nodeName + ">");
var elem = obj as UnifiedElement;
if (elem != null) {
XmlWriteUnifiedElement(elem, buffer, depth);
} else {
XmlWriteNonUnifiedElement(obj, buffer, depth);
}
PrintTabs(depth, buffer);
buffer.AppendLine("</" + nodeName + ">");
}
}