code: @SuppressWarnings("unchecked")
      public V get(Object key) {
          synchronized( this ) {
              //WeakReference ref;
              SoftReference ref;
              V item;
              
              if( !containsKey(key) ) {
                  return null;
              }
              ref = cache.get(key);
              item = (V)ref.get();
              if( item == null ) {
                  return null;
              }
              if( item instanceof CachedItem ) {
                  CachedItem ci = (CachedItem)item;
                  
                  if( ci.isValidForCache() ) {
                      return item;
                  }
                  remove(key);
                  return null;
              }
              return item;
          }
      }
docs: Retrieves the item associated with the specified key if it is currently
  valid for the cache.
  @param key the key whose item is being sought
  @return the current value for that key, if any