public static BPMNShape createDIShape(Shape shape, BaseElement elem, int x, int y, int w, int h,
IFeatureProvider fp, Diagram diagram) {
EList<EObject> businessObjects = Graphiti.getLinkService().getLinkForPictogramElement(diagram)
.getBusinessObjects();
BPMNShape bpmnShape = null;
for (EObject eObject : businessObjects) {
if (eObject instanceof BPMNDiagram) {
BPMNDiagram bpmnDiagram = (BPMNDiagram) eObject;
bpmnShape = BpmnDiFactory.eINSTANCE.createBPMNShape();
// bpmnShape.setId(EcoreUtil.generateUUID());
bpmnShape.setBpmnElement(elem);
Bounds bounds = DcFactory.eINSTANCE.createBounds();
bounds.setX(x);
bounds.setY(y);
bounds.setWidth(w);
bounds.setHeight(h);
bpmnShape.setBounds(bounds);
List<DiagramElement> elements = bpmnDiagram.getPlane().getPlaneElement();
elements.add(bpmnShape);
ModelUtil.setID(shape);