class WiresShapeView extends WiresShape implements LienzoShapeView<T>,
                   HasDragBounds<T> {

    void consumeChildrenAndConnectors(final Consumer<IDrawable> primConsumer) {
        // Move this shape.
        primConsumer.accept(getContainer());
        // Move child shapes.
        final NFastArrayList<WiresShape> childShapes = getChildShapes();
        if (null != childShapes) {
            for (int i = 0; i < childShapes.size(); i++) {
                final WiresShape shape = childShapes.get(i);
                if (shape instanceof WiresShapeView) {
                    ((WiresShapeView) shape).consumeChildrenAndConnectors(primConsumer);
                } else {
                    primConsumer.accept(shape.getContainer());
                }
            }
        }
        // Move connectors.
        if (null != getMagnets()) {
            for (int i = 0; i < getMagnets().size(); i++) {
                final WiresMagnet magnet = getMagnets().getMagnet(i);
                final NFastArrayList<WiresConnection> connections = magnet.getConnections();
                if (null != connections) {
                    for (int j = 0; j < connections.size(); j++) {
                        final WiresConnection connection = connections.get(j);
                        if (null != connection.getConnector()) {
                            primConsumer.accept(connection.getConnector().getGroup());
                        }
                    }
                }
            }
        }
    }

    public  WiresShapeView(final MultiPath path);
    public  WiresShapeView(final MultiPath path,
                          final LayoutContainer layoutContainer);

}