public JsonGetterContext getContext(String queryPath) {
        JsonGetterContext context = internalCache.get(queryPath);
        if (context != null) {
            return context;
        }
        context = new JsonGetterContext(queryPath);
        JsonGetterContext previousContextValue = internalCache.putIfAbsent(queryPath, context);
        if (previousContextValue == null) {
            cleanupIfNecessary(context);
            return context;
        } else {
            return previousContextValue;
        }
    }
@Test
    public void testGetReturnsTheSameObject() {
        JsonGetterContextCache cache = new JsonGetterContextCache(4, 2);
        JsonGetterContext contextA = cache.getContext("a");
        JsonGetterContext contextB = cache.getContext("b");
        JsonGetterContext contextC = cache.getContext("c");
        JsonGetterContext contextD = cache.getContext("d");

        assertSame(contextA, cache.getContext("a"));
        assertSame(contextB, cache.getContext("b"));
        assertSame(contextC, cache.getContext("c"));
        assertSame(contextD, cache.getContext("d"));
    }