public static Builder builder() {
    return new Builder();
  }
@Test
  // Test cases that cannot be built with our builder, but that are accepted when parsed
  public void testCanDeserializeWithoutDefaultValues() throws JsonProcessingException {
    ConfigResponse noOverrides = ConfigResponse.builder().withDefaults(DEFAULTS).build();
    String jsonMissingOverrides = "{\"defaults\":{\"warehouse\":\"s3://bucket/warehouse\"}}";
    assertEquals(deserialize(jsonMissingOverrides), noOverrides);
    String jsonNullOverrides =
        "{\"defaults\":{\"warehouse\":\"s3://bucket/warehouse\"},\"overrides\":null}";
    assertEquals(deserialize(jsonNullOverrides), noOverrides);

    ConfigResponse noDefaults = ConfigResponse.builder().withOverrides(OVERRIDES).build();
    String jsonMissingDefaults = "{\"overrides\":{\"clients\":\"5\"}}";
    assertEquals(deserialize(jsonMissingDefaults), noDefaults);
    String jsonNullDefaults = "{\"defaults\":null,\"overrides\":{\"clients\":\"5\"}}";
    assertEquals(deserialize(jsonNullDefaults), noDefaults);

    ConfigResponse noValues = ConfigResponse.builder().build();
    String jsonEmptyObject = "{}";
    assertEquals(deserialize(jsonEmptyObject), noValues);
    String jsonNullForAllFields = "{\"defaults\":null,\"overrides\":null}";
    assertEquals(deserialize(jsonNullForAllFields), noValues);
  }