public class RedundantNullCheck {
    private interface I
    {
        long value();

        long value2();
    }

    private static final class C implements I
    {

        @Override
        public long value() {
            return 1;
        }

        @Override
        public long value2() {
            return 1;
        }
    }

    private static final class Wrapper
    {
        private I _i;

        public long value() {
            return _i != null ? _i.value() : -1;
        }

        public long value2() {
            return _i != null ? _i.value2() : -1;
        }
    }

    private final Wrapper _w = new Wrapper();

    private long doIt() {
        return _w.value() + _w.value2();
    }

    public void foo() {
        int s = 0;
        for (int i = 0; i < 15_000; ++i) {
            if (i % 1000 == 0) {
                _w._i = null;
            } else {
                _w._i = new C();
            }
            s += doIt();
        }
        System.out.println(s);
    }

    public static void main(String[] args) {
        new RedundantNullCheck().foo();
    }
}
