} catch (BDDException x) {
} catch (ReorderException x) {
    int bdd_apply(int l, int r, int op) {        int res;        int numReorder = 1;        CHECKa(l, bddfalse);        CHECKa(r, bddfalse);        if (op < 0 || op > bddop_invimp) {            bdd_error(BDD_OP);            return bddfalse;        }        switch (op) {            case bddop_and:                if (andcache == null) andcache = new OpCache2(cachesize);                break;            case bddop_or:                if (orcache == null) orcache = new OpCache2(cachesize);                break;            default:                if (applycache == null) applycache = new OpCache2(cachesize);                break;        }                again : for (;;) {            try {                INITREF();                applyop = op;                if (numReorder == 0) bdd_disable_reorder();                switch (op) {                    case bddop_and: res = and_rec(l, r); break;                    case bddop_or: res = or_rec(l, r); break;                    default: res = apply_rec(l, r); break;                }                if (numReorder == 0) bdd_enable_reorder();            } catch (BDDException x) {                bdd_checkreorder();                numReorder--;                continue again;            }            break;        }        checkresize();        return res;    }