protected void addEdge(Node node, SemanticElement semanticElement, Element notationInfoElement) {
   NotationElement notationElement = node.getRegisteredNotationElementFor(semanticElement);
   if (notationElement == null) {
     String notationElementId =
         NotationMapping.getNotationElementId(semanticElement.getElementId());
     notationElement = (NotationElement) node.getFactory().create(notationElementId);
     notationElement.setSemanticElement(semanticElement);
     notationElement.register();
     node.addLeavingEdge((Edge) notationElement);
     semanticElement.addPropertyChangeListener(notationElement);
   }
   processEdge((Edge) notationElement, notationInfoElement);
 }
 protected void addNode(
     NodeContainer nodeContainer, SemanticElement semanticElement, Element notationInfoElement) {
   String notationElementId = NotationMapping.getNotationElementId(semanticElement.getElementId());
   Node notationElement = (Node) nodeContainer.getFactory().create(notationElementId);
   notationElement.setSemanticElement(semanticElement);
   notationElement.register();
   nodeContainer.addNode(notationElement);
   semanticElement.addPropertyChangeListener(notationElement);
   processNode(notationElement, notationInfoElement);
   if (notationElement instanceof NodeContainer) {
     addNodes((NodeContainer) notationElement, notationInfoElement);
   }
 }