@Override
  public boolean enterVarNode(final VarNode varNode) {
    final Expression initNode = varNode.getInit();
    if (initNode instanceof FunctionNode && ((FunctionNode) initNode).isDeclared()) {
      final FunctionNode funcNode = (FunctionNode) initNode;

      final List<? extends ExpressionTree> paramTrees = translateExprs(funcNode.getParameters());
      final BlockTree blockTree = (BlockTree) translateBlock(funcNode.getBody(), true);
      curStat = new FunctionDeclarationTreeImpl(varNode, paramTrees, blockTree);
    } else {
      curStat = new VariableTreeImpl(varNode, translateExpr(initNode));
    }

    return false;
  }
 @Override
 public boolean enterVarNode(final VarNode varNode) {
   tagNeverOptimistic(varNode.getName());
   return true;
 }