public PictogramElement add(IAddContext context) {
int width = context.getWidth() > 0 ? context.getWidth() : 100;
int height = context.getHeight() > 0 ? context.getHeight() : 100;
SubProcess subprocess = (SubProcess) context.getNewObject();
IGaService gaService = Graphiti.getGaService();
IPeService peService = Graphiti.getPeService();
ContainerShape containerShape = peService.createContainerShape(context.getTargetContainer(), true);
Rectangle invisibleRect = gaService.createInvisibleRectangle(containerShape);
gaService.setLocationAndSize(invisibleRect, context.getX(), context.getY(), width, height + 18);
Shape rectShape = peService.createShape(containerShape, false);
RoundedRectangle rect = gaService.createRoundedRectangle(rectShape, 5, 5);
StyleUtil.applyBGStyle(rect, this);
gaService.setLocationAndSize(rect, 0, 0, width, height);
decorateRect(rect);
link(rectShape, subprocess);
Rectangle box = gaService.createRectangle(rect);
gaService.setLocationAndSize(box, 40, 80, 20, 20);
box.setFilled(false);
box.setForeground(manageColor(StyleUtil.CLASS_FOREGROUND));
decorateBox(box);
Shape textShape = peService.createShape(containerShape, false);
MultiText text = gaService.createDefaultMultiText(getDiagram(), textShape, subprocess.getName());
gaService.setLocationAndSize(text, 10, 10, 80, 80);
text.setStyle(StyleUtil.getStyleForText(getDiagram()));
text.setHorizontalAlignment(Orientation.ALIGNMENT_CENTER);
text.setVerticalAlignment(Orientation.ALIGNMENT_TOP);
text.getFont().setBold(true);