public void drawU(UGraphic ug, double x, double y, HtmlColor borderColor, DotData dotData) {
		if (hasEntryOrExitPoint()) {
			manageEntryExitPoint(dotData, ug.getStringBounder());
		}
		if (skinParam.useSwimlanes()) {
			drawSwinLinesState(ug, x, y, borderColor, dotData);
			return;
		}
		final boolean isState = dotData.getUmlDiagramType() == UmlDiagramType.STATE;
		if (isState) {
			drawUState(ug, x, y, borderColor, dotData);
			return;
		}
		PackageStyle style = group.zgetPackageStyle();
		if (style == null) {
			style = dotData.getSkinParam().getPackageStyle();
		}
		if (title != null) {
			final HtmlColor stateBack = getStateBackColor(getBackColor(), dotData.getSkinParam(),
					group.getStereotype() == null ? null : group.getStereotype().getLabel());
			final ClusterDecoration decoration = new ClusterDecoration(style, title, stateBack, minX, minY, maxX, maxY);
			decoration.drawU(ug, x, y, borderColor, dotData.getSkinParam().shadowing());
			return;
		}
		final URectangle rect = new URectangle(maxX - minX, maxY - minY);
		if (dotData.getSkinParam().shadowing()) {
			rect.setDeltaShadow(3.0);
		}
		final HtmlColor stateBack = getStateBackColor(getBackColor(), dotData.getSkinParam(),
				group.getStereotype() == null ? null : group.getStereotype().getLabel());
		ug.getParam().setBackcolor(stateBack);
		ug.getParam().setColor(borderColor);
		ug.getParam().setStroke(new UStroke(2));
		ug.draw(x + minX, y + minY, rect);
		ug.getParam().setStroke(new UStroke());
	}