code: Node tryFoldDoAway(Node n) {
      checkArgument(n.isDo());
  
      Node cond = NodeUtil.getConditionExpression(n);
      if (NodeUtil.getImpureBooleanValue(cond) != TernaryValue.FALSE) {
        return n;
      }
  
      Node block = NodeUtil.getLoopCodeBlock(n);
      if (n.getParent().isLabel() || hasUnnamedBreakOrContinue(block)) {
        return n;
      }
  
      Node parent = n.getParent();
      n.replaceWith(block.detach());
      if (mayHaveSideEffects(cond)) {
        Node condStatement = IR.exprResult(cond.detach()).srcref(cond);
        parent.addChildAfter(condStatement, block);
      }
      reportChangeToEnclosingScope(parent);
  
      return block;
    }
docs: Removes DOs that always evaluate to false. This leaves the
  statements that were in the loop in a BLOCK node.
  The block will be removed in a later pass, if possible.