code: private Iterator<Edge> logicalPredecessorEdgeIterator(BasicBlock block) {
          return isForwards ? cfg.incomingEdgeIterator(block) : cfg.outgoingEdgeIterator(block);
      }
docs: Return an Iterator over edges that connect given block to its logical
  predecessors. For forward analyses, this is the incoming edges. For
  backward analyses, this is the outgoing edges.