class ConnectionAcceptorControlImpl extends AbstractAcceptorControl implements ConnectionAcceptorControl<AbstractCanvasHandler> {

    @Override
    @SuppressWarnings("unchecked")
    public boolean allowTarget(final Node target,
                               final Edge<ViewConnector<?>, Node> connector,
                               final Connection connection) {

        if (isTargetConnectionChanged(connector, connection)) {
            final CommandResult<CanvasViolation> violations =
                    getCommandManager().allow(getCanvasHandler(),
                                              canvasCommandFactory.setTargetNode(target,
                                                                                 connector,
                                                                                 connection));
            final boolean accepts = isAccept(violations);

            if (isTargetChanged(target, connector)) {
                highlight(target,
                          connector,
                          accepts);
            }

            return accepts;
        }
        return true;
    }

    @Inject public  ConnectionAcceptorControlImpl(final CanvasCommandFactory<AbstractCanvasHandler> canvasCommandFactory,
                                         final CanvasHighlight canvasHighlight);

}