@Override
 public boolean enterForNode(final ForNode forNode) {
   if (forNode.isForIn()) {
     // for..in has the iterable in its "modify"
     tagNeverOptimistic(forNode.getModify());
   } else {
     // Test is never optimistic (always coerced to boolean).
     tagNeverOptimisticLoopTest(forNode);
   }
   return true;
 }
  @Override
  public boolean enterForNode(final ForNode forNode) {
    if (forNode.isForIn()) {
      curStat =
          new ForInLoopTreeImpl(
              forNode,
              translateExpr(forNode.getInit()),
              translateExpr(forNode.getModify()),
              translateBlock(forNode.getBody()));
    } else {
      curStat =
          new ForLoopTreeImpl(
              forNode,
              translateExpr(forNode.getInit()),
              translateExpr(forNode.getTest()),
              translateExpr(forNode.getModify()),
              translateBlock(forNode.getBody()));
    }

    return false;
  }