    void test1(Object input, boolean b) {
        Object o = null;
        int i = 0;
        do {
            if (o == null)
                o = input;
            if (b)
                o.toString();
            o.toString();
        } while (i++ < 4);
    }
    void test2(boolean b1) {
        Object o1 = null;
        Object o2 = null;
        int i = 0;
        do {
            if (b1)
                o1 = null;
            o2 = o1;
            if (o2 == null)
                System.out.println("null");
            o1 = new Object();
        } while (i++ < 4);
    }
    void test3(boolean b) {
        Object o = null;
        while (true) {
            if (b)
                o = new Object();
            o.toString();
            o = null;
        }
    }