@Override
  public void visitForStatement(ForStatementTree tree) {
    newBlockScope(tree);

    skipBlock(tree.statement());
    super.visitForStatement(tree);

    leaveScope();
  }
  @Override
  public void visitForStatement(ForStatementTree tree) {
    scan(tree.init());
    scan(tree.condition());

    currentLoopCounters = new HashSet<>();
    inUpdate = true;
    scan(tree.update());
    inUpdate = false;

    enterLoopBody();
    scan(tree.statement());
    leaveLoopBody();
  }