private void acceptSplit(DockDropEvent event, DockingConstants.Split position) {
		Container container = event.getDragSource().getDockableContainer();
		Dockable dockable = event.getDragSource().getDockable();//2005/12/08
		TabbedDockableContainer tabAncestor = DockingUtilities.findTabbedDockableContainer(dockable);
		Dockable remainingDockable = null;
		if(tabAncestor != null && tabAncestor.getTabCount() == 2 && tabAncestor == delegator) {//2007//11/15
			// drop onto itself : one of the two remanining dockable is dropped
			// find which dockable is dropped, and which remains
			remainingDockable = tabAncestor.getDockableAt(0);
			if(remainingDockable == dockable) {
				//oops !
				remainingDockable = tabAncestor.getDockableAt(1);
			}
		}
		((DockDropEvent) event).acceptDrop();
		if(container instanceof TabbedDockableContainer) {
			split(event, container, position);
		} else {
			//if (tabAncestor != null && tabAncestor.getTabCount() == 1 && tabAncestor == delegator){//2007//11/15
			if(tabAncestor != null && tabAncestor.getTabCount() == 0 && tabAncestor == delegator) {//2007//11/15
				// we have detected a dropping onto itself :
				// the drop gesture comes from the tabAncestor (as it's given by the drag source)
				// and translates into a border split
				// if only one tab remains, that means  the tabAncestor is no longer useful and
				// so we now need to remove that tab and replace it by a standard singledockable
				// which is done by the standard desktop "split" public method.
				//Dockable remainingDockable = tabAncestor.getDockableAt(0);
				event.getDesktop().split(remainingDockable, // the only remaining dockable
				dockable, position);
			} else {
				// standard dropping, just use the internal API to relayout the desktop.
				event.getDesktop().splitComponent(delegator, dockable, position);
			}
		}
	}