private void handleHelperNodes(HyperEdge edge,
                                   Color color, 
                                   String style,
                                   String arrowType,
                                   String graphId,
                                   Map<Point, Element> pointToElm,
                                   Map<Renderable, String> rToGraphId,
                                   Element pathwayElm, 
                                   List<Node> helperNodes,
                                   List<List<Point>> branches) {
        if (helperNodes == null || helperNodes.size() == 0)
            return;
        if (branches != null && branches.size() > 0) {
            String anchorId = "e_" + edge.getID() + "_a_p"; // p is for position
            Point anchor = edge.getPosition();
            int index = 0;
            for (List<Point> points : branches) {
                Element elm = createLineElmForBranch(points,
                                                     anchor,
                                                     anchorId,
                                                     false, 
                                                     graphId + "_" + index, 
                                                     color,
                                                     pointToElm);
                // Want to use dashed line for catalysts
                Element graphics = getGraphicsChild(elm);
                graphics.setAttribute(GPMLConstants.LineStyle,
                                      style);
                index ++;
                pathwayElm.addContent(elm);
            }
            // Get the last point for arrow head
            Element anchorElm = pointToElm.get(anchor);
            anchorElm.setAttribute(GPMLConstants.ArrowHead, 
                                   arrowType);
        }
        
        // Link edge to nodes
        for (int i = 0; i < helperNodes.size(); i ++) {
            Node catalyst = helperNodes.get(i);
            List<Point> points = branches.get(i);
            Point point = points.get(0);
            linkPointToNode(point, 
                            pointToElm,
                            rToGraphId,
                            catalyst);
        }
    }