code: public T get(Object key) {
          SoftReference<T> ref = cache.get(key);
          T ob;
          
          if( ref == null ) {
              return null;
          }
          ob = ref.get();
          if( ob == null ) {
              release(key);
          }
          if( ob instanceof CachedItem ) {
              if( !((CachedItem)ob).isValidForCache() ) {
                  release(key);
                  return null;
              }
          }
          return ob;
      }
docs: Provides the cached object identified by the specified key. This
  method will return <span class="code">null</span> if the
  specified object is not in the cache.
  @param key the unique identifier of the desired object
  @return the cached object or null