public static SerializableFunction<Row, TableRow> toTableRow() {
    return ROW_TO_TABLE_ROW;
  }
@Test
  public void testToTableRow_flat() {
    TableRow row = toTableRow().apply(FLAT_ROW);

    assertThat(row.size(), equalTo(27));
    assertThat(row, hasEntry("id", "123"));
    assertThat(row, hasEntry("value", "123.456"));
    assertThat(row, hasEntry("timestamp_variant1", "2019-08-16 13:52:07.000 UTC"));
    assertThat(row, hasEntry("timestamp_variant2", "2019-08-17 14:52:07.123 UTC"));
    assertThat(row, hasEntry("timestamp_variant3", "2019-08-18 15:52:07.123 UTC"));
    assertThat(row, hasEntry("timestamp_variant4", "1970-01-01 00:02:03.456 UTC"));
    assertThat(row, hasEntry("timestamp_variant5", "2024-08-10 16:52:07.100 UTC"));
    assertThat(row, hasEntry("timestamp_variant6", "2024-08-10 16:52:07.120 UTC"));
    assertThat(row, hasEntry("timestamp_variant7", "2024-08-10 16:52:07.123 UTC"));
    assertThat(row, hasEntry("timestamp_variant8", "2024-08-10 16:52:07.123 UTC"));
    assertThat(row, hasEntry("datetime", "2020-11-02T12:34:56.789876"));
    assertThat(row, hasEntry("datetime0ms", "2020-11-02T12:34:56"));
    assertThat(row, hasEntry("datetime0s_ns", "2020-11-02T12:34:00.789876"));
    assertThat(row, hasEntry("datetime0s_0ns", "2020-11-02T12:34:00"));
    assertThat(row, hasEntry("date", "2020-11-02"));
    assertThat(row, hasEntry("time", "12:34:56.789876"));
    assertThat(row, hasEntry("time0ms", "12:34:56"));
    assertThat(row, hasEntry("time0s_ns", "12:34:00.789876"));
    assertThat(row, hasEntry("time0s_0ns", "12:34:00"));
    assertThat(row, hasEntry("name", "test"));
    assertThat(row, hasEntry("valid", "false"));
    assertThat(row, hasEntry("binary", "ABCD1234"));
    assertThat(row, hasEntry("raw_bytes", "ABCD1234"));
    assertThat(row, hasEntry("numeric", "123.456"));
    assertThat(row, hasEntry("boolean", "true"));
    assertThat(row, hasEntry("long", "123"));
    assertThat(row, hasEntry("double", "123.456"));
  }