protected void drawCaps(Graphics2D g) { if (getNodeCount() > 1) { if (get(START_DECORATION) != null) { BezierPath cp = getCappedPath(); Point2D.Double p1 = path.get(0, 0); Point2D.Double p2 = cp.get(0, 0); if (p2.equals(p1)) { p2 = path.get(1, 0); } get(START_DECORATION).draw(g, this, p1, p2); } if (get(END_DECORATION) != null) { BezierPath cp = getCappedPath(); Point2D.Double p1 = path.get(path.size() - 1, 0); Point2D.Double p2 = cp.get(path.size() - 1, 0); if (p2.equals(p1)) { p2 = path.get(path.size() - 2, 0); } get(END_DECORATION).draw(g, this, p1, p2); } } }