final AbstractDataSource<?> source = getSource(key);
if (source != null) {
boolean successfulRemoval = false;
for (final AbstractController<?> controller : controllerSet) {
if (controller != null) {
GenericDescriptor controllerDesc = controller.getSourceType();
if (controllerDesc.isAssignableFrom(source.getDataType())) {
if (((AbstractController<U>) controller).hasLink((AbstractDataSource<U>) source, target)) {
((AbstractController<U>) controller).removeLink((AbstractDataSource<U>) source, target);
successfulRemoval = true;
printLog("disconnect from", target, controller, source);
} else if (((AbstractController<U>) controller).hasLink((AbstractDataSource<U>) source,