class LRUMap implements Map<K, V> {

	@Override
	public Set<K> keySet() {
		return new AbstractSet<K>() {
			@Override
			public Iterator<K> iterator() {
				return new KeyIterator();
			}

			@Override
			public int size() {
				return map.size();
			}

			@Override
			public boolean contains(Object o) {
				return containsKey(o);
			}

			@Override
			public boolean remove(Object o) {
				return LRUMap.this.remove(o) != null;
			}

			@Override
			public void clear() {
				LRUMap.this.clear();
			}
		};
	}

	public  LRUMap(int cacheSize);

}