@JsonCreator
    public static ContentPackInstallationRequest create(
            @JsonProperty("parameters") @Nullable Map<String, ValueReference> parameters,
            @JsonProperty("comment") @Nullable String comment) {
        final Map<String, ValueReference> parameterMap = parameters == null ? Collections.emptyMap() : parameters;
        return new AutoValue_ContentPackInstallationRequest(parameterMap, comment);
    }
@Test
    public void testSerialisation() {
        final ImmutableMap<String, ValueReference> parameters = ImmutableMap.of(
                "param1", ValueReference.of("string"),
                "param2", ValueReference.of(42),
                "param3", ValueReference.of(3.14d),
                "param4", ValueReference.of(true));
        final ContentPackInstallationRequest request = ContentPackInstallationRequest.create(parameters, "comment");
        final JsonNode node = objectMapper.valueToTree(request);
        assertThat(node.path("comment").asText()).isEqualTo("comment");
        assertThat(node.path("parameters").path("param1").path("@type").asText()).isEqualTo("string");
        assertThat(node.path("parameters").path("param1").path("@value").asText()).isEqualTo("string");
        assertThat(node.path("parameters").path("param2").path("@type").asText()).isEqualTo("integer");
        assertThat(node.path("parameters").path("param2").path("@value").asInt()).isEqualTo(42);
        assertThat(node.path("parameters").path("param3").path("@type").asText()).isEqualTo("double");
        assertThat(node.path("parameters").path("param3").path("@value").asDouble()).isEqualTo(3.14d);
        assertThat(node.path("parameters").path("param4").path("@type").asText()).isEqualTo("boolean");
        assertThat(node.path("parameters").path("param4").path("@value").asBoolean()).isEqualTo(true);
    }