docs: public <S, D> void put(Class<S> sourceType, Class<D> destinationType, TypeMap<S, ? extends D> typeMap) {
      TypePair<S, D> typePair = TypePair.of(sourceType, destinationType,
          typeMap.getName());
      synchronized (lock) {
        if (typeMaps.containsKey(typePair))
          throw new IllegalArgumentException("TypeMap exists in the store: " + typePair.toString());
        typeMaps.put(typePair, typeMap);
      }
    }