public Row toCamelCase() {
    return getSchema().getFields().stream()
        .map(
            field -> {
              if (field.getType().getRowSchema() != null) {
                Row innerRow = getValue(field.getName());
                if (innerRow != null) {
                  return innerRow.toCamelCase();
                }
              }
              return (Object) getValue(field.getName());
            })
        .collect(toRow(getSchema().toCamelCase()));
  }
@Test
  public void testToCamelCase() {
    Schema innerSchema =
        Schema.builder()
            .addStringField("my_first_nested_string_field")
            .addStringField("my_second_nested_string_field")
            .build();
    Schema schema =
        Schema.builder()
            .addStringField("my_first_string_field")
            .addStringField("my_second_string_field")
            .addRowField("my_row_field", innerSchema)
            .build();

    Row innerRow = Row.withSchema(innerSchema).addValues("nested1", "nested2").build();
    Row row = Row.withSchema(schema).addValues("str1", "str2", innerRow).build();

    Row expectedCamelCaseInnerRow =
        Row.withSchema(innerSchema.toCamelCase()).addValues("nested1", "nested2").build();
    Row expectedCamelCaseRow =
        Row.withSchema(schema.toCamelCase())
            .addValues("str1", "str2", expectedCamelCaseInnerRow)
            .build();

    assertEquals(expectedCamelCaseInnerRow, row.toCamelCase().getRow("myRowField"));
    assertEquals(expectedCamelCaseRow, row.toCamelCase());
  }