@Override
    public void caseALoopStmt(ALoopStmt node)
    {
        inALoopStmt(node);
        if(node.getN2() != null)
        {
            node.getN2().apply(this);
        }
        if(node.getL2() != null)
        {
            node.getL2().apply(this);
        }
        if(node.getEnd() != null)
        {
            node.getEnd().apply(this);
        }
        {
            List<PStmt> copy = new ArrayList<PStmt>(node.getStmt());
            Collections.reverse(copy);
            for(PStmt e : copy)
            {
                e.apply(this);
            }
        }
        if(node.getN1() != null)
        {
            node.getN1().apply(this);
        }
        if(node.getExpr() != null)
        {
            node.getExpr().apply(this);
        }
        if(node.getWhile() != null)
        {
            node.getWhile().apply(this);
        }
        if(node.getL1() != null)
        {
            node.getL1().apply(this);
        }
        outALoopStmt(node);
    }