void IfStmtNode::accept(Visitor &v)
{
	// In some cases (such as code generation), the visiting order should be changed
	if (v.orderChanged) {
		v.visitIfStmtNode(this);
		return;
	}

	v.enterIfStmtNode(this);

	cond->accept(v);
	then_stmt->accept(v);

	if (hasElse) {
		else_stmt->accept(v);
	}

	v.visitIfStmtNode(this);
}