// as long as there are successors, detach the first successor of current operator
while (currentOp.getSucceedingOperators().size() > 0) {
final BasicOperator nextOp = currentOp.getSucceedingOperators().get(0).getOperator();
currentOp.removeSucceedingOperator(nextOp);
nextOp.removePrecedingOperator(currentOp);
if (nextOp.getPrecedingOperators().size() == 0) {
// walk the graph recursively if no predecessors are left
deleteSubGraph(nextOp, deleted);