private void addDiagramElementContainers(
     final DDiagram diagram,
     final DNodeContainer container,
     final Collection<DDiagramElementContainer> result) {
   final Iterator<DDiagramElement> it = container.getOwnedDiagramElements().iterator();
   while (it.hasNext()) {
     final DDiagramElement elem = it.next();
     if (elem instanceof DDiagramElementContainer) {
       result.add((DDiagramElementContainer) elem);
     }
     if (elem instanceof DNodeContainer) {
       addDiagramElementContainers(diagram, (DNodeContainer) elem, result);
     }
   }
 }
 /**
  * FIXME comment.
  *
  * @param elem
  * @param result
  */
 private void addDNodeListElements(
     final DDiagramElementContainer elem, final Collection<DNodeListElement> result) {
   if (elem instanceof DNodeContainer) {
     final DNodeContainer container = (DNodeContainer) elem;
     final Iterator<DDiagramElement> it = container.getOwnedDiagramElements().iterator();
     while (it.hasNext()) {
       final DDiagramElement subElem = it.next();
       if (subElem instanceof DNodeListElement) {
         result.add((DNodeListElement) subElem);
       }
       if (subElem instanceof DDiagramElementContainer) {
         addDNodeListElements((DDiagramElementContainer) subElem, result);
       }
     }
   } else if (elem instanceof DNodeList) {
     final DNodeList list = (DNodeList) elem;
     result.addAll(list.getOwnedElements());
   }
 }
 /**
  * FIXME comment.
  *
  * @param elem
  * @param result
  */
 private void addDNodes(final DDiagramElementContainer elem, final Collection<DNode> result) {
   if (elem instanceof DNodeContainer) {
     final DNodeContainer container = (DNodeContainer) elem;
     addBorderNodes(container, result);
     final Iterator<DDiagramElement> it = container.getOwnedDiagramElements().iterator();
     while (it.hasNext()) {
       final DDiagramElement subElem = it.next();
       if (subElem instanceof DNode) {
         result.add((DNode) subElem);
         final DNode node = (DNode) subElem;
         addBorderNodes(node, result);
       }
       if (subElem instanceof DDiagramElementContainer) {
         addDNodes((DDiagramElementContainer) subElem, result);
       }
     }
   } else if (elem instanceof DNodeList) {
     /* Now DNodeList contains DNodeListElements and bordered nodes */
     addBorderNodes(elem, result);
   }
 }