@Override
  public List<SapphireActionHandler> create() {
    final ListFactory<SapphireActionHandler> handlers = ListFactory.start();

    for (DiagramNodeTemplate nodeTemplate :
        ((SapphireDiagramEditorPagePart) getPart()).getNodeTemplates()) {
      if (nodeTemplate.visible()) {
        final DiagramNodeAddActionHandler addNodeHandler =
            new DiagramNodeAddActionHandler(nodeTemplate);
        handlers.add(addNodeHandler);
      }
    }

    return handlers.result();
  }
  @Override
  protected List<?> readUnderlyingList() {
    final XmlElement parent = getXmlElement(false);

    if (parent == null) {
      return Collections.emptyList();
    } else {
      final ListFactory<XmlElement> list = ListFactory.start();

      for (XmlElement element : parent.getChildElements()) {
        final QName xmlElementName = createQualifiedName(element.getDomNode());

        if (contains(this.xmlElementNames, xmlElementName, xmlElementName.getNamespaceURI())) {
          list.add(element);
        }
      }

      return list.result();
    }
  }