public static Builder builder() {
    return new Builder();
  }
@Test
  // Test cases that are JSON that can be created via the Builder
  public void testRoundTripSerDe() throws JsonProcessingException {
    // Both fields have values without nulls
    String fullJson =
        "{\"defaults\":{\"warehouse\":\"s3://bucket/warehouse\"},\"overrides\":{\"clients\":\"5\"}}";
    assertRoundTripSerializesEquallyFrom(
        fullJson, ConfigResponse.builder().withOverrides(OVERRIDES).withDefaults(DEFAULTS).build());
    assertRoundTripSerializesEquallyFrom(
        fullJson,
        ConfigResponse.builder()
            .withOverride("clients", "5")
            .withDefault("warehouse", "s3://bucket/warehouse")
            .build());

    // `defaults` is empty
    String jsonEmptyDefaults = "{\"defaults\":{},\"overrides\":{\"clients\":\"5\"}}";
    assertRoundTripSerializesEquallyFrom(
        jsonEmptyDefaults, ConfigResponse.builder().withOverrides(OVERRIDES).build());
    assertRoundTripSerializesEquallyFrom(
        jsonEmptyDefaults,
        ConfigResponse.builder().withOverrides(OVERRIDES).withDefaults(ImmutableMap.of()).build());
    assertRoundTripSerializesEquallyFrom(
        jsonEmptyDefaults, ConfigResponse.builder().withOverride("clients", "5").build());

    // `overrides` is empty
    String jsonEmptyOverrides =
        "{\"defaults\":{\"warehouse\":\"s3://bucket/warehouse\"},\"overrides\":{}}";
    assertRoundTripSerializesEquallyFrom(
        jsonEmptyOverrides, ConfigResponse.builder().withDefaults(DEFAULTS).build());
    assertRoundTripSerializesEquallyFrom(
        jsonEmptyOverrides,
        ConfigResponse.builder().withDefault("warehouse", "s3://bucket/warehouse").build());
    assertRoundTripSerializesEquallyFrom(
        jsonEmptyOverrides,
        ConfigResponse.builder().withDefaults(DEFAULTS).withOverrides(ImmutableMap.of()).build());

    // Both are empty
    String emptyJson = "{\"defaults\":{},\"overrides\":{}}";
    assertRoundTripSerializesEquallyFrom(emptyJson, ConfigResponse.builder().build());
    assertRoundTripSerializesEquallyFrom(
        emptyJson,
        ConfigResponse.builder()
            .withOverrides(ImmutableMap.of())
            .withDefaults(ImmutableMap.of())
            .build());
  }