static Type inferIcebergType(Object value, IcebergSinkConfig config) {
    return new SchemaGenerator(config).inferIcebergType(value);
  }
@Test
  public void testInferIcebergTypeEmpty() {
    IcebergSinkConfig config = mock(IcebergSinkConfig.class);

    // skip infer for null
    assertThat(SchemaUtils.inferIcebergType(null, config)).isNull();

    // skip infer for empty list
    assertThat(SchemaUtils.inferIcebergType(ImmutableList.of(), config)).isNull();
    // skip infer for list if first element is null
    List<?> list = Lists.newArrayList();
    list.add(null);
    assertThat(SchemaUtils.inferIcebergType(list, config)).isNull();
    // skip infer for list if first element is an empty object
    assertThat(SchemaUtils.inferIcebergType(ImmutableList.of(ImmutableMap.of()), config)).isNull();

    // skip infer for empty object
    assertThat(SchemaUtils.inferIcebergType(ImmutableMap.of(), config)).isNull();
    // skip infer for object if values are null
    Map<String, ?> map = Maps.newHashMap();
    map.put("col", null);
    assertThat(SchemaUtils.inferIcebergType(map, config)).isNull();
    // skip infer for object if values are empty objects
    assertThat(SchemaUtils.inferIcebergType(ImmutableMap.of("nested", ImmutableMap.of()), config))
        .isNull();
  }