public Node buildGraph(GraphContext graphContext, Node parentGroupNode, Node precedingNode) {
    NodeList nl = new NodeList();

    // Create node as subnode of parent node
    Node newNode = graphContext.createNode(this.getNavigationStep());

    nl.add(newNode);
    graphContext.getHierarchyManager().groupSubgraph(nl, parentGroupNode);

    String contentString = "";
    if (getNavigationStep() instanceof AssociationNavigationStep
        || getNavigationStep() instanceof IdentityNavigationStep) {
      contentString = ((AbstractNavigationStep) this.getNavigationStep()).contentToString(null, 0);
    }
    graphContext.setLabelTextForNode(this.getNodeName(), contentString, newNode);

    if (precedingNode != null) {
      graphContext.connectNodes(precedingNode, newNode);
    }

    return newNode;
  }