@Nullable
    public static <T> List<T> readPropertyAsList(
            Map<String, Object> properties,
            String key,
            boolean required) {
        List<T> value;
        try {
            value = (List<T>) properties.get(key);
        } catch (Exception e) {
            throw new IllegalArgumentException(
                    "The value of the field \""
                            + key
                            + "\" must be key-value pairs",
                    e);
        }
        if (value == null && required) {
            throw new IllegalArgumentException(
                    "The value of the field \""
                            + key
                            + "\" must be key-value pairs");
        }
        return value;
    }
@implNote If the plugin does not specify the compatible servers, we consider it supports all
          server types by default
turms-server-common/src/main/java/im/turms/server/common/infra/plugin/PluginDescriptorFactory.java