code: @SuppressWarnings("unchecked")
    public <T> @Nullable T get(@NotNull String key, @Nullable T defaultValue) {
      if (defaultValue instanceof String || defaultValue == null) {
        return (T)getString(key, (String)defaultValue);
      }
      if (defaultValue instanceof Boolean) {
        return (T)(Boolean)getBoolean(key, (Boolean)defaultValue);
      }
      if (defaultValue instanceof Integer) {
        return (T)(Integer)getInt(key, (Integer)defaultValue);
      }
      if (defaultValue instanceof Long) {
        return (T)(Long)getLong(key, (Long)defaultValue);
      }
      throw new IllegalArgumentException("Unsupported type: " + defaultValue.getClass().getName());
    }
docs: Extract the value of a named suffix part from this request's suffix
  @param key key of the suffix part
  @param defaultValue the default value to return if suffix part not set.
  Only String, Boolean, Integer, Long are supported.
  @param <T> Parameter type.
  @return the value of that named parameter (or the default value if not used)