-// public void write(Resource root, XMLStreamWriter writer) throws DatabaseException, XMLStreamException {\r
-// XMLResource XML = XMLResource.getInstance(graph);\r
-// \r
-// Deque<Element> stack = new ArrayDeque<>();\r
-// Element rootElement = new Element(root);\r
-// loadElement(rootElement);\r
-// stack.push(rootElement);\r
-// while (!stack.isEmpty()) {\r
-// \r
-// Element instance = stack.pop();\r
-// XMLElementWriter elementWriter = instance.writer;\r
-// elementWriter.start(graph, instance.instance, writer);\r
-// elementWriter.attributes(graph, graph.getStatements(instance.instance, XML.hasAttribute), writer);\r
-// // get all child elements\r
-// Collection<Statement> childElements = graph.getStatements(instance.instance, XML.hasElement);\r
-// // get original element order, if available\r
-// Resource originalElementList = graph.getPossibleObject(instance.instance, XML.hasOriginalElementList);\r
-// List<Resource> originalList = null;\r
-// if (originalElementList != null) {\r
-// originalList = ListUtils.toList(graph, originalElementList);\r
-// }\r
-// if (originalList != null) {\r
-// // check for elements that are missing form the original list (should be empty). \r
-// for (Statement stm : childElements) {\r
-// if (originalList.contains(stm.getObject()))\r
-// continue;\r
-// Element child = new Element(instance,stm.getObject());\r
-// loadElement(child);\r
-// stack.push(child);\r
-// }\r
-// // process the list in reverse order so that the stack processing processes the items in correct order.\r
-// for (int i = originalList.size()-1; i >= 0; i--) {\r
-// Resource r = originalList.get(i);\r
-// Element child = new Element(instance, r);\r
-// loadElement(child);\r
-// stack.push(child);\r
-// }\r
-// } else {\r
-// for (Statement stm : childElements) {\r
-// Element child = new Element(instance, stm.getObject());\r
-// loadElement(child);\r
-// stack.push(child);\r
-// }\r
-// }\r
-// }\r
-// }\r
- \r