@Test
  @DiagramResource(
      "org/camunda/bpm/modeler/test/feature/move/MoveSubProcessFeatureTest.testBase.bpmn")
  public void testMoveSubProcessMovesContainedEventLabel() {

    // given
    Shape elementShape = Util.findShapeByBusinessObjectId(diagram, "StartEvent_1");
    Shape elementLabelShape = LabelUtil.getLabelShape(elementShape, getDiagram());

    IRectangle preMoveLabelBounds = LayoutUtil.getAbsoluteBounds(elementLabelShape);

    Shape subProcessShape = Util.findShapeByBusinessObjectId(diagram, "SubProcess_1");

    Point subProcessMovement = point(10, 20);

    // assume
    // label is on diagram
    assertThat(elementLabelShape).isContainedIn(diagram);

    // when moving label in container
    move(subProcessShape, diagramTypeProvider).by(subProcessMovement).execute();

    // then
    // label should not have changed container
    assertThat(elementLabelShape)
        .isContainedIn(diagram)
        .movedBy(subProcessMovement, preMoveLabelBounds);
  }
  @Test
  @DiagramResource(
      "org/camunda/bpm/modeler/test/importer/dataitems/ImportDataItems.testBaseParticipant.bpmn")
  public void testImportOnParticipant() {

    // when
    importDiagram();

    ContainerShape laneShape =
        (ContainerShape) Util.findShapeByBusinessObjectId(getDiagram(), "Lane_1");
    Shape dataItemShape = Util.findShapeByBusinessObjectId(getDiagram(), "DataObjectReference_1");

    // then
    assertThat(dataItemShape).isNotNull().isInFrontOf(laneShape);
  }
  @Test
  @DiagramResource
  public void testGetExtensionAttributeValues() {
    CallActivity callActivity1 =
        (CallActivity) Util.findBusinessObjectById(diagram, "CallActivity_1");

    assertThat(callActivity1).isNotNull();

    List<ExtensionAttributeValue> callActivity1ExtensionValues =
        ExtensionUtil.getExtensionAttributeValues(callActivity1);

    assertThat(callActivity1ExtensionValues).hasSize(1);

    Task task1 = (Task) Util.findBusinessObjectById(diagram, "Task_1");

    List<ExtensionAttributeValue> task1ExtensionValues =
        ExtensionUtil.getExtensionAttributeValues(task1);

    assertThat(task1ExtensionValues).hasSize(0);
  }
  @Test
  @DiagramResource(
      "org/camunda/bpm/modeler/test/feature/move/MoveFlowNodeFeature.testMoveBetweenLanes.bpmn")
  public void testMoveLabelToOtherContainerWorks() {

    // given
    Shape gatewayShape = Util.findShapeByBusinessObjectId(diagram, "ExclusiveGateway_1");

    ContainerShape targetLaneShape =
        (ContainerShape) Util.findShapeByBusinessObjectId(diagram, "Lane_3");
    Shape labelShape = LabelUtil.getLabelShape(gatewayShape, getDiagram());

    // assume
    // label is on diagram
    assertThat(labelShape).isContainedIn(diagram);

    // when
    // moving label to target container
    move(labelShape, diagramTypeProvider).toContainer(targetLaneShape).by(30, 30).execute();

    // then
    // label should have been moved
    assertThat(labelShape).isContainedIn(diagram);
  }
  @Test
  @DiagramResource(
      "org/camunda/bpm/modeler/test/importer/dataitems/ImportDataObjectReferenceTest.testImport.bpmn")
  public void testImportBoundsFromDi() {

    // given
    IRectangle expectedBounds = rectangle(490, 66, 36, 65);

    // when
    importDiagram();

    Shape dataObjectShape = Util.findShapeByBusinessObjectId(diagram, "_DataObjectReference_2");

    assertThat(dataObjectShape).isNotNull();

    IRectangle dataStoreBounds = LayoutUtil.getAbsoluteBounds(dataObjectShape);

    assertThat(dataStoreBounds).isEqualTo(expectedBounds);
  }
  @Test
  @DiagramResource(
      "org/camunda/bpm/modeler/test/feature/move/MoveFlowNodeFeature.testMoveBetweenLanes.bpmn")
  public void testMoveLabelAndElement() {

    // given
    Shape gatewayShape = Util.findShapeByBusinessObjectId(diagram, "ExclusiveGateway_1");

    Shape labelShape = LabelUtil.getLabelShape(gatewayShape, getDiagram());

    IRectangle preMoveLabelBounds = LayoutUtil.getAbsoluteBounds(labelShape);

    // assume
    // label is on diagram
    assertThat(labelShape).isContainedIn(diagram);

    // when moving label in container
    move(labelShape, diagramTypeProvider).by(10, 20).execute();

    // then
    // label should not have changed container
    assertThat(labelShape).isContainedIn(diagram).movedBy(point(10, 20), preMoveLabelBounds);
  }