public static Builder builder() {
    return new Builder();
  }
@Test
  public void testBuilderDoesNotBuildInvalidRequests() {
    assertThatThrownBy(() -> CreateTableRequest.builder().withName(null))
        .isInstanceOf(NullPointerException.class)
        .hasMessage("Invalid name: null");

    assertThatThrownBy(() -> CreateTableRequest.builder().withSchema(null))
        .isInstanceOf(NullPointerException.class)
        .hasMessage("Invalid schema: null");

    assertThatThrownBy(() -> CreateTableRequest.builder().setProperties(null))
        .isInstanceOf(NullPointerException.class)
        .hasMessage("Invalid collection of properties: null");

    Map<String, String> mapWithNullKey = Maps.newHashMap();
    mapWithNullKey.put(null, "hello");

    assertThatThrownBy(() -> CreateTableRequest.builder().setProperties(mapWithNullKey))
        .isInstanceOf(IllegalArgumentException.class)
        .hasMessage("Invalid property: null");

    Map<String, String> mapWithNullValue = Maps.newHashMap();
    mapWithNullValue.put("a", null);
    mapWithNullValue.put("b", "b");
    assertThatThrownBy(() -> CreateTableRequest.builder().setProperties(mapWithNullValue).build())
        .isInstanceOf(IllegalArgumentException.class)
        .hasMessage("Invalid value for properties [a]: null");

    assertThatThrownBy(() -> CreateTableRequest.builder().setProperty("foo", null))
        .isInstanceOf(IllegalArgumentException.class)
        .hasMessage("Invalid value for property foo: null");

    assertThatThrownBy(() -> CreateTableRequest.builder().setProperty(null, "foo"))
        .isInstanceOf(IllegalArgumentException.class)
        .hasMessage("Invalid property: null");
  }