function rerank(op) {
    const queue = [op];
    let cur, list, i;
    while (queue.length) {
      this.rank(cur = queue.pop());
      if (list = cur._targets) {
        for (i = list.length; --i >= 0;) {
          queue.push(cur = list[i]);
          if (cur === op) error('Cycle detected in dataflow graph.');
        }
      }
    }
  }
Re-ranks an operator and all downstream target dependencies. This
is necessary when upstream dependencies of higher rank are added to
a target operator.
@param {Operator} op - The operator to re-rank.