docs: private void setupTypes() {
      if (!cache2kConfigurationWasProvided) {
        cache2kConfiguration.setKeyType(config.getKeyType());
        cache2kConfiguration.setValueType(config.getValueType());
      } else {
        if (cache2kConfiguration.getKeyType() == null) {
          cache2kConfiguration.setKeyType(config.getKeyType());
        }
        if (cache2kConfiguration.getValueType() == null) {
          cache2kConfiguration.setValueType(config.getValueType());
        }
      }
      keyType = cache2kConfiguration.getKeyType();
      valueType = cache2kConfiguration.getValueType();
      if (!config.getKeyType().equals(Object.class) && !config.getKeyType().equals(keyType.getType())) {
        throw new IllegalArgumentException("Key type mismatch between JCache and cache2k configuration");
      }
      if (!config.getValueType().equals(Object.class) && !config.getValueType().equals(valueType.getType())) {
        throw new IllegalArgumentException("Value type mismatch between JCache and cache2k configuration");
      }
    }