public void drawInternal(UGraphic ug) {

		for (Map.Entry<IEntity, Cluster> ent : clusters.entrySet()) {
			final Frame frame = frames.get(ent.getKey());
			final Rectangle2D rect = PositionableUtils.convert(ent.getValue());
			final double oldX = ug.getTranslateX();
			final double oldY = ug.getTranslateY();
			ug.translate(rect.getX(), rect.getY());
			frame.drawU(ug, new Area(new Dimension2DDouble(rect.getWidth(), rect.getHeight())), null);
			ug.setTranslate(oldX, oldY);
		}

		for (Map.Entry<Path, Link> ent : paths.entrySet()) {
			final LinkType type = ent.getValue().getType();
			final PathDrawerInterface pathDrawer = PathDrawerInterface.create(skinParam, type);
			final Path p = ent.getKey();
			ug.getParam().setColor(rose.getHtmlColor(skinParam, ColorParam.classBorder));
			// pathDrawer.drawPathBefore(ug, PositionableUtils.addMargin(p
			// .getStart(), -marginDecorator, -marginDecorator),
			// PositionableUtils.addMargin(p.getEnd(), -marginDecorator,
			// -marginDecorator), p);
			if (p.getLabel() != null) {
				ug.getParam().setColor(HtmlColor.BLACK);
				drawLabel(ug, p);
			}
		}

		for (Map.Entry<IEntity, MargedBlock> ent : blocks.entrySet()) {
			final MargedBlock b = ent.getValue();
			final Point2D pos = b.getImagePosition().getPosition();
			b.getImageBlock().drawU(ug, pos.getX(), pos.getY(), 0, 0);
		}

		for (Map.Entry<Path, Link> ent : paths.entrySet()) {
			final Link link = ent.getValue();
			final LinkType type = link.getType();
			final PathDrawerInterface pathDrawer = PathDrawerInterface.create(skinParam, type);
			final Path p = ent.getKey();
			ug.getParam().setColor(rose.getHtmlColor(skinParam, ColorParam.classBorder));
			// pathDrawer.drawPathAfter(ug, PositionableUtils.addMargin(p
			// .getStart(), -marginDecorator, -marginDecorator),
			// PositionableUtils.addMargin(p.getEnd(), -marginDecorator,
			// -marginDecorator), p);
			pathDrawer.drawPathAfter(ug, getMargedBlock(p.getStart()).getImagePosition(), getMargedBlock(p.getEnd())
					.getImagePosition(), p);

			final String qual1 = link.getQualifier1();
			if (qual1 != null) {
				final TextBlock b = TextBlockUtils.create(Arrays.asList(qual1), new FontConfiguration(fontQualif,
						skinParam.getFontHtmlColor(FontParam.CLASS_ARROW, null)), HorizontalAlignement.LEFT);
				final Point2D pos = p.getDotPath().getStartPoint();
				b.drawU(ug, pos.getX(), pos.getY());
			}

			final String qual2 = link.getQualifier2();
			if (qual2 != null) {
				final TextBlock b = TextBlockUtils.create(Arrays.asList(qual2), new FontConfiguration(fontQualif,
						skinParam.getFontHtmlColor(FontParam.CLASS_ARROW, null)), HorizontalAlignement.LEFT);
				final Point2D pos = p.getDotPath().getEndPoint();
				b.drawU(ug, pos.getX(), pos.getY());
			}

		}
	}