@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 testDeserialisation() throws IOException {
        final String json = "{"
                + "\"parameters\":{"
                + "  \"param1\":{\"@type\":\"string\",\"@value\":\"string\"},"
                + "  \"param2\":{\"@type\":\"integer\",\"@value\":42},"
                + "  \"param3\":{\"@type\":\"double\",\"@value\":3.14},"
                + "  \"param4\":{\"@type\":\"boolean\",\"@value\":true}"
                + "},"
                + "\"comment\":\"comment\"" +
                "}";
        final ContentPackInstallationRequest actual = objectMapper.readValue(json, ContentPackInstallationRequest.class);

        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 expected = ContentPackInstallationRequest.create(parameters, "comment");
        assertThat(actual).isEqualTo(expected);
    }