int leftsize = left.last - left.first; int rightsize = right.last - right.first;
int leftsize = left.lastVar - left.firstVar; int rightsize = right.lastVar - right.firstVar;
    void blockinterleave(BddTree left) {        BddTree right = left.next;        //System.out.println("Interleaving "+left.first+".."+left.last+" and "+right.first+".."+right.last);        int n;        int leftsize = left.last - left.first;        int rightsize = right.last - right.first;        int[] lseq = left.seq;        int[] rseq = right.seq;        int minsize = Math.min(leftsize, rightsize);        for (n = 0; n <= minsize; ++n) {            while (bddvar2level[lseq[n]] + 1 < bddvar2level[rseq[n]]) {                reorder_varup(rseq[n]);            }        }    outer:        for ( ; n <= rightsize; ++n) {            for (;;) {                BddTree t = left.prev;                if (t == null || !t.interleaved) break outer;                int tsize = t.last - t.first;                if (n <= tsize) {                    int[] tseq = t.seq;                    while (bddvar2level[tseq[n]] + 1 < bddvar2level[rseq[n]]) {                        reorder_varup(rseq[n]);                    }                    break;                }            }        }        left.interleaved = true;    }