question: public boolean isDirectlyControlDependentOn ( BasicBlock insBlock , Branch b ) { Set < ControlFlowEdge > incomming = incomingEdgesOf ( insBlock ) ; if ( incomming . size ( ) == 1 ) { for ( ControlFlowEdge e : incomming ) { if ( ! e . hasControlDependency ( ) && ! e . isExceptionEdge ( ) ) { return isDirectlyControlDependentOn ( getEdgeSource ( e ) , b ) ; } } } boolean isRootDependent = isRootDependent ( insBlock ) ; if ( b == null ) return isRootDependent ; if ( isRootDependent && b != null ) return false ; for ( ControlFlowEdge e : incomming ) { Branch current = e . getBranchInstruction ( ) ; if ( e . isExceptionEdge ( ) ) { if ( current != null ) throw new IllegalStateException ( "expect exception edges to have no BranchInstruction set" ) ; else continue ; } if ( current == null ) continue ; if ( current . equals ( b ) ) return true ; } return false ; }
target:  Determines whether the given BasicBlock is directly control dependent on the given Branch. Meaning within this CDG there is an incoming ControlFlowEdge to this instructions BasicBlock holding the given Branch as it's branchInstruction. If b is null, it is assumed to be the root branch. If the given instruction is not known to this CDG an IllegalArgumentException is thrown.