t.stop(); Thread.yield();
setBDDError(1); try { t.join(); } catch (InterruptedException x) { }
    public long tryOrder(String factory, boolean reverse, String varOrder) {        if (bdd == null) initBDDFactory(factory);        //System.gc();        TryThread t = new TryThread(reverse, varOrder);        t.start();        boolean stopped;        try {            t.join(DELAY_TIME);            if (t.initTime >= 0L) {                t.join(bestCalcTime);            }        } catch (InterruptedException x) {        }        if (t.isAlive()) {            t.stop();            Thread.yield(); // Help ThreadDeath exception to propagate.            System.out.print("Free memory: "+Runtime.getRuntime().freeMemory());            destroyBDDFactory();            System.gc();            System.out.println(" bytes -> "+Runtime.getRuntime().freeMemory()+" bytes");        }        if (t.computeTime < 0) {            if (t.initTime < 0) {                // Couldn't even initialize in time!                System.out.println("BDD factory took too long to initialize, aborted.");            } else {                System.out.println("Took too long to compute, aborted.");            }        } else if (t.computeTime < bestCalcTime) {            bestOrder = varOrder;            bestCalcTime = t.computeTime;        }        return t.computeTime;    }