public GraphArc addArc(Object userObject, GraphNode src, GraphNode dest, Object type, Icon icon) { if (userObject == null) { throw new NullPointerException("All graph arcs must have a user object."); } if (!arcs.containsKey(userObject)) { addNodeInternal(src); addNodeInternal(dest); DefaultGraphArc arc = new DefaultGraphArc(userObject, src, dest, icon, type); addArcInternal(arc); arrangeArcs(arc.getSource(), arc.getDestination()); } return arcs.get(userObject); }