code: public V get(K key) {
          if (null == key)
              return null;
          CacheReference<K> refKey = lookupFactory.createKey(key, queue);
          if (cache.containsKey(refKey)) {
              V value = dereferenceValue(cache.get(refKey));
              if (null != value)
                  return value;
              cache.remove(refKey);
          }
          init(key);
          return dereferenceValue(cache.get(refKey));
      }
docs: Get a value from the cache for associated with the supplied key.
  New entries will be initialized if they don't exist or if they were
  cleared and will block to wait for a value to return.
  For asynchronous non blocking value creation use init.
  @param key associated with cache value
  @return value associated with the key