public Iterator<V> values() {
        return new ObjectCacheValuesIterator<>(this);
    }
@Test
    public void cacheIterator() {
        final ObjectCache<String, String> cache = new ObjectCache<>(4);
        cache.put("Eclipse", "An IDE");
        cache.put("IDEA", "good IDEA");
        cache.put("IDEA 4.5", "better IDEA");
        cache.put("IDEA 5.0", "perfect IDEA");
        cache.put("IDEA 6.0", "IDEAL");
        HashSet<String> values = new HashSet<>();
        final Iterator<String> it = cache.values();
        while (it.hasNext()) {
            values.add(it.next());
        }
        Assert.assertNull(cache.get("Eclipse"));
        Assert.assertFalse(values.contains("An IDE"));
        Assert.assertTrue(values.contains("good IDEA"));
        Assert.assertTrue(values.contains("better IDEA"));
        Assert.assertTrue(values.contains("perfect IDEA"));
        Assert.assertTrue(values.contains("IDEAL"));
    }