private void createPath() {
		if( path == null ) {
			EndPointAttachement source = getSourceEndPoint().getAttachement();
			EndPointAttachement target = getTargetEndPoint().getAttachement();

			Point sl = source.getLanding();
			Point sa = source.getApproach();
			Point ta = target.getApproach();
			Point tl = target.getLanding();

			Line2D.Float lineS = new Line2D.Float( sl.x, sl.y, sa.x, sa.y );
			Line2D.Float between = new Line2D.Float( sa.x, sa.y, ta.x, ta.y );
			Line2D.Float lineT = new Line2D.Float( ta.x, ta.y, tl.x, tl.y );
			Line2D.Float revLineT = new Line2D.Float( tl.x, tl.y, ta.x, ta.y );
			Line2D.Float revBetween = new Line2D.Float( ta.x, ta.y, sa.x, sa.y );
			Line2D.Float revLineS = new Line2D.Float( sa.x, sa.y, sl.x, sl.y );

			path = new Path2D.Float();
			path.append( lineS, true );
			path.append( between, true );
			path.append( lineT, true );

			closedPath = new Path2D.Float();
			closedPath.append( lineS, true );
			closedPath.append( between, true );
			closedPath.append( lineT, true );
			closedPath.append( revLineT, true );
			closedPath.append( revBetween, true );
			closedPath.append( revLineS, true );
		}
	}