### Question:
SetAssetCustomField extends SetCustomFieldBase<Product> { public static SetAssetCustomField ofVariantIdUsingJsonAndAssetKey(final Integer variantId, final String assetKey, final String name, final JsonNode value) { return ofVariantIdUsingJsonAndAssetKey(variantId, assetKey, name, value, null); } private  SetAssetCustomField(final String assetId,final String assetKey, @Nullable final Integer variantId, @Nullable final String sku, final String name, final JsonNode value, @Nullable final Boolean staged); String getAssetId(); String getAssetKey(); @Nullable Integer getVariantId(); @Nullable String getSku(); static SetAssetCustomField ofVariantIdUsingJson(final Integer variantId, final String assetId, final String name, final JsonNode value); static SetAssetCustomField ofVariantIdUsingJson(final Integer variantId, final String assetId, final String name, final JsonNode value, @Nullable final Boolean staged); static SetAssetCustomField ofSkuUsingJson(final String sku, final String assetId, final String name, final JsonNode value); static SetAssetCustomField ofSkuUsingJson(final String sku, final String assetId, final String name, final JsonNode value, @Nullable final Boolean staged); static SetAssetCustomField ofVariantId(final Integer variantId, final String assetId, final String name, final Object value); static SetAssetCustomField ofVariantId(final Integer variantId, final String assetId, final String name, final Object value, @Nullable final Boolean staged); static SetAssetCustomField ofSku(final String sku, final String assetId, final String name, final Object value); static SetAssetCustomField ofSku(final String sku, final String assetId, final String name, final Object value, @Nullable final Boolean staged); static SetAssetCustomField ofVariantIdUsingJsonAndAssetKey(final Integer variantId, final String assetKey, final String name, final JsonNode value); static SetAssetCustomField ofVariantIdUsingJsonAndAssetKey(final Integer variantId, final String assetKey, final String name, final JsonNode value, @Nullable final Boolean staged); static SetAssetCustomField ofSkuUsingJsonAndAssetKey(final String sku, final String assetKey, final String name, final JsonNode value); static SetAssetCustomField ofSkuUsingJsonAndAssetKey(final String sku, final String assetKey, final String name, final JsonNode value, @Nullable final Boolean staged); static SetAssetCustomField ofVariantIdAndAssetKey(final Integer variantId, final String assetKey, final String name, final Object value); static SetAssetCustomField ofVariantIdAndAssetKey(final Integer variantId, final String assetKey, final String name, final Object value, @Nullable final Boolean staged); static SetAssetCustomField ofSkuAndAssetKey(final String sku, final String assetKey, final String name, final Object value); static SetAssetCustomField ofSkuAndAssetKey(final String sku, final String assetKey, final String name, final Object value, @Nullable final Boolean staged); @Nullable Boolean getStaged();  }### Answer:
@Test public void setAssetCustomField_ByAssetKeyToJsonString_ShouldSerialiseAssetKeyField() { final UpdateAction<Product> action = SetAssetCustomField.ofVariantIdUsingJsonAndAssetKey(1, "foo", "bar", JsonNodeFactory.instance.numberNode(1), true); final String actionAsJson = SphereJsonUtils.toJsonString(action); assertThat(actionAsJson).contains("\"assetKey\":\"foo\""); }