public void drawPathAfter(UGraphic ug, Positionable start, Positionable end, Path path) {
		DotPath dotPath = path.getDotPath();
		final Racorder racorder = new RacorderOrthogonal();
		// final Racorder racorder = new RacorderInToCenter();
		// final Racorder racorder = new RacorderFollowTangeante();

		final Point2D endPath = dotPath.getEndPoint();
		final DotPath in = racorder.getRacordIn(PositionableUtils.convert(end), dotPath.getEndTangeante());
		// final Point2D inPoint = in.getFrontierIntersection(end);
		final Point2D inPoint = in.getEndPoint();
		// final double theta1_ = in.getEndAngle() + Math.PI / 2;
		// Log.println("theta1_=" + theta1_ + " " + theta1_ * 180 /
		// Math.PI);
		final double theta1 = atan2(endPath, inPoint);
		// Log.println("theta1=" + theta1 + " " + theta1 * 180 /
		// Math.PI);
		final Point2D middle1 = drawSymbol(ug, theta1, inPoint, linkType.getDecor1());

		final Point2D startPath = dotPath.getStartPoint();
		final DotPath out = racorder.getRacordOut(PositionableUtils.convert(start), dotPath.getStartTangeante());
		// final Point2D outPoint = out.getFrontierIntersection(start);
		final Point2D outPoint = out.getStartPoint();
		// final double theta2_ = out.getStartAngle() - Math.PI / 2;
		// Log.println("theta2_=" + theta2_ + " " + theta2_ * 180 /
		// Math.PI);
		final double theta2 = atan2(startPath, outPoint);
		// Log.println("theta2=" + theta2 + " " + theta2 * 180 /
		// Math.PI);
		final Point2D middle2 = drawSymbol(ug, theta2, outPoint, linkType.getDecor2());

		if (middle1 != null) {
			final CubicCurve2D.Double after = getLine(endPath, middle1);
			dotPath = dotPath.addAfter(after);
			// dotPath = dotPath.addAfter(in);
		}

		if (middle2 != null) {
			final CubicCurve2D.Double before = getLine(middle2, startPath);
			dotPath = dotPath.addBefore(before);
			// dotPath = dotPath.addBefore(out);
		}

		final LinkStyle style = linkType.getStyle();
		if (style == LinkStyle.__toremove_INTERFACE_PROVIDER || style == LinkStyle.__toremove_INTERFACE_USER) {
			final Decor decor = new DecorInterfaceProvider(style);
			final Map<Point2D, Double> all = dotPath.somePoints();
			final Point2D p = getFarest(outPoint, inPoint, all.keySet());

			ug = ug.apply(new UChangeBackColor(rose.getHtmlColor(param, ColorParam.background)));
			ug = ug.apply(new UChangeColor(rose.getHtmlColor(param, ColorParam.classBorder)));

			decor.drawDecor(ug, p, all.get(p));
		}

		ug = ug.apply(new UChangeColor(rose.getHtmlColor(param, ColorParam.classBorder)));
		if (linkType.isDashed()) {
			goDash(ug);
		}
		ug.draw(dotPath);
		if (linkType.isDashed()) {
			noDash(ug);
		}
	}