code: public synchronized Value borrow(Key key) throws SQLException {
      Value value = cache.remove(key);
      if (value == null) {
        return createAction.create(key);
      }
      currentSize -= value.getSize();
      return value;
    }
docs: Borrows an entry from the cache.
  
  @param key cache key
  @return entry from cache or newly created entry if cache does not contain given key.
  @throws SQLException if entry creation fails