code: Object put(Class<?> type, Object key, Object value) {
          return map.put(new Key(type, key), value);
      }
docs: Puts the <code>value</code> into the cache and assigns it to
  <code>type</code> and <code>key</code>.
  
  @param type  the query type.
  @param key   the key object.
  @param value the value to cache.
  @return the existing value in the cache assigned to <code>type</code> and
  <code>key</code> or <code>null</code> if there was none.