public static Builder builder() {
    return new Builder();
  }
@Test
  // Test cases that can't be constructed with our Builder class e2e but that will parse correctly
  public void testCanDeserializeWithoutDefaultValues() throws JsonProcessingException {
    // only updated
    UpdateNamespacePropertiesResponse onlyUpdated =
        UpdateNamespacePropertiesResponse.builder().addUpdated(UPDATED).build();
    String jsonOnlyUpdatedOthersNull =
        "{\"removed\":null,\"updated\":[\"owner\"],\"missing\":null}";
    assertEquals(deserialize(jsonOnlyUpdatedOthersNull), onlyUpdated);

    String jsonOnlyUpdatedOthersMissing = "{\"updated\":[\"owner\"]}";
    assertEquals(deserialize(jsonOnlyUpdatedOthersMissing), onlyUpdated);

    // Only removed
    UpdateNamespacePropertiesResponse onlyRemoved =
        UpdateNamespacePropertiesResponse.builder().addRemoved(REMOVED).build();
    String jsonOnlyRemovedOthersNull = "{\"removed\":[\"foo\"],\"updated\":null,\"missing\":null}";
    assertEquals(deserialize(jsonOnlyRemovedOthersNull), onlyRemoved);

    String jsonOnlyRemovedOthersMissing = "{\"removed\":[\"foo\"]}";
    assertEquals(deserialize(jsonOnlyRemovedOthersMissing), onlyRemoved);

    // Only missing
    UpdateNamespacePropertiesResponse onlyMissing =
        UpdateNamespacePropertiesResponse.builder().addMissing(MISSING).build();
    String jsonOnlyMissingFieldOthersNull =
        "{\"removed\":null,\"updated\":null,\"missing\":[\"bar\"]}";
    assertEquals(deserialize(jsonOnlyMissingFieldOthersNull), onlyMissing);

    String jsonOnlyMissingFieldIsPresent = "{\"missing\":[\"bar\"]}";
    assertEquals(deserialize(jsonOnlyMissingFieldIsPresent), onlyMissing);

    // all fields are missing
    UpdateNamespacePropertiesResponse noValues =
        UpdateNamespacePropertiesResponse.builder().build();
    String emptyJson = "{}";
    assertEquals(deserialize(emptyJson), noValues);
  }