code: public synchronized final V put(K key, V value) {
          if (key == null) {
              throw new NullPointerException("key == null");
          } else if (value == null) {
              throw new NullPointerException("value == null");
          }
  
          V previous = map.put(key, value);
          trimToSize(maxSize);
          return previous;
      }
docs: Caches {@code value} for {@code key}. The value is moved to the head of
  the queue.
  
  @return the previous value mapped by {@code key}. Although that entry is
  no longer cached, it has not been passed to {@link #entryEvicted}.