class CaseManagementContainmentControl implements WiresContainmentControl {

    @Override
    public boolean onMove(double dx,
                          double dy) {
        containmentControl.onMove(dx, dy);

        //Handle moving ghost from one container to another
        final Optional<CaseManagementShapeView> ghost = state.getGhost();
        if (ghost.isPresent() && null != getParent() && null != getParent().getGroup()) {
            if (getWiresManager().getContainmentAcceptor().containmentAllowed(getParent(),
                                                                              new WiresShape[]{getShape()})) {
                final WiresParentPickerControlImpl parentPickerControl = (WiresParentPickerControlImpl) containmentControl.getParentPickerControl();
                final double mouseX = parentPickerControl.getMouseStartX() + dx;
                final double mouseY = parentPickerControl.getMouseStartY() + dy;
                final Point2D parentAbsLoc = getParent().getGroup().getComputedLocation();
                final Point2D mouseRelativeLoc = new Point2D(mouseX - parentAbsLoc.getX(),
                                                             mouseY - parentAbsLoc.getY());

                //Children contains m_ghost and others excluding m_shape. This therefore moves m_ghost within children.
                getParent().getLayoutHandler().add(ghost.get(),
                                                   getParent(),
                                                   mouseRelativeLoc);

                containmentControl.getParentPickerControl().getIndex().build(getWiresManager().getLayer());
            }
        }

        return false;
    }

    public  CaseManagementContainmentControl(final WiresParentPickerControl parentPickerControl,
                                            final CaseManagementContainmentStateHolder state);
      CaseManagementContainmentControl(final WiresContainmentControlImpl containmentControl,
                                     final CaseManagementContainmentStateHolder state);

}