int getMessageCountAndThenIncrement(String msg) {
        // don't insert null elements
        if (msg == null) {
            return 0;
        }

        Integer i;
        // LinkedHashMap is not LinkedHashMap. See also LBCLASSIC-255
        synchronized (this) {
            i = super.get(msg);
            if (i == null) {
                i = 0;
            } else {
                i = i + 1;
            }
            super.put(msg, i);
        }
        return i;
    }
@Test
    public void testEldestEntriesRemoval() {
        final LRUMessageCache cache = new LRUMessageCache(2);
        assertEquals(0, cache.getMessageCountAndThenIncrement("0"));
        assertEquals(1, cache.getMessageCountAndThenIncrement("0"));
        assertEquals(0, cache.getMessageCountAndThenIncrement("1"));
        assertEquals(1, cache.getMessageCountAndThenIncrement("1"));
        // 0 entry should have been removed.
        assertEquals(0, cache.getMessageCountAndThenIncrement("2"));
        // So it is expected a returned value of 0 instead of 2.
        // 1 entry should have been removed.
        assertEquals(0, cache.getMessageCountAndThenIncrement("0"));
        // So it is expected a returned value of 0 instead of 2.
        // 2 entry should have been removed.
        assertEquals(0, cache.getMessageCountAndThenIncrement("1"));
        // So it is expected a returned value of 0 instead of 2.
        assertEquals(0, cache.getMessageCountAndThenIncrement("2"));
    }