class WiresConnectorView extends WiresConnector implements
        LienzoShapeView<T>,
        IsConnector<T>,
        HasManageableControlPoints<T> {

    @SuppressWarnings("unchecked")
    public T connect(final ShapeView headShapeView,
                     final Connection headConnection,
                     final ShapeView tailShapeView,
                     final Connection tailConnection) {
        final Optional<WiresShape> headWiresShape = Optional.ofNullable((WiresShape) headShapeView);
        final Optional<WiresShape> tailWiresShape = Optional.ofNullable((WiresShape) tailShapeView);
        return connect(headWiresShape.map(WiresShape::getMagnets).orElse(null),
                       headWiresShape.map(s -> s.getGroup().getComputedLocation()).orElse(null),
                       headConnection,
                       tailWiresShape.map(WiresShape::getMagnets).orElse(null),
                       tailWiresShape.map(s -> s.getGroup().getComputedLocation()).orElse(null),
                       tailConnection);
    }

    public  WiresConnectorView(final AbstractDirectionalMultiPointShape<?> line,
                              final MultiPathDecorator headDecorator,
                              final MultiPathDecorator tailDecorator);
    public  WiresConnectorView(final WiresMagnet headMagnet,
                              final WiresMagnet tailMagnet,
                              final AbstractDirectionalMultiPointShape<?> line,
                              final MultiPathDecorator headDecorator,
                              final MultiPathDecorator tailDecorator);

}