code: public synchronized void put(T value) {
          cacheMap.put(value.getCacheKey(), new SoftReference<T>(value));
      }
docs: Adds an object to cache. Key for this cache entry is determined by Cacheable.getCacheKey()
  There is no guarantee that this object will be there by the time the next get(key) is called.
  
  @param value