question: public void move ( Task what , Task where ) { Node subNode = myNodeMap . get ( what ) ; if ( subNode == null ) { return ; } boolean removedAny = removeImplicitDependencies ( subNode ) ; Node superNode = myNodeMap . get ( where ) ; if ( superNode == null ) { if ( removedAny ) { fireGraphChanged ( ) ; } return ; } for ( DependencyEdge incomingEdge : Lists . newArrayList ( superNode . getIncoming ( ) ) ) { if ( incomingEdge instanceof ImplicitSubSuperTaskDependency == false ) { if ( incomingEdge instanceof ImplicitInheritedDependency ) { incomingEdge = ( ( ImplicitInheritedDependency ) incomingEdge ) . myExplicitDep ; } ImplicitInheritedDependency implicitIncoming = new ImplicitInheritedDependency ( incomingEdge , superNode , subNode ) ; addEdge ( implicitIncoming ) ; addInheritedDependencies ( incomingEdge , subNode ) ; } } addEdge ( new ImplicitSubSuperTaskDependency ( subNode , superNode ) ) ; fireGraphChanged ( ) ; }
target:  Reflects moving tasks in the task hierarchy. In graph task move consists of removing implicit inherited dependencies from the whole subtree being moved and adding new dependencies in the destination.