private final void wipeTargetsAndLink() {
		synchronized (this.state) {
			if (this.state.upToDate) {
				this.state.upToDate = false;
				this.state.io.endProgress("");
			}
		}
		this.object.getTargetContainer().removeAllLinks(this.object);
		final Iterator<DropTarget<C, D, T>> tIter = this.object.clearTargets();
		while (tIter.hasNext()) {
			final DropTarget<C, D, T> target = tIter.next();
			if (target == this.state.emptyTarget) {
				continue;
			}
			if (this.caller.unlink(this.object, target)) {
				if (target != this.state.target) {
					final Container panel = target.getDisplayableComponent();
					final Container parent = panel.getParent();
					parent.remove(panel);
					if (parent.getComponentCount() == 0) {
						this.state.plugin.emptyCenter();
					} else {
						parent.validate();
					}
				}
			}
		}
		this.object.addTarget(this.state.target);
		this.state.target.link(this.object);
		if (this.state.target != this.state.emptyTarget) {
			this.caller.link(this.object, this.state.target);
		}

	}