@Override
    public void caseAProgram(AProgram node)
    {
        inAProgram(node);
        {
            List<PClassdecl> copy = new ArrayList<PClassdecl>(node.getClassdecl());
            Collections.reverse(copy);
            for(PClassdecl e : copy)
            {
                e.apply(this);
            }
        }
        if(node.getMainclass() != null)
        {
            node.getMainclass().apply(this);
        }
        outAProgram(node);
    }