public static <X> TypeInformation<X> getForObject(X value) {
        return new TypeExtractor().privateGetForObject(value);
    }
@Test
    void testRow() {
        Row row = new Row(2);
        row.setField(0, "string");
        row.setField(1, 15);
        TypeInformation<Row> rowInfo = TypeExtractor.getForObject(row);
        assertThat(rowInfo.getClass()).isEqualTo(RowTypeInfo.class);
        assertThat(rowInfo.getArity()).isEqualTo(2);
        assertThat(rowInfo)
                .isEqualTo(
                        new RowTypeInfo(
                                BasicTypeInfo.STRING_TYPE_INFO, BasicTypeInfo.INT_TYPE_INFO));

        Row nullRow = new Row(2);
        TypeInformation<Row> genericRowInfo = TypeExtractor.getForObject(nullRow);
        assertThat(new GenericTypeInfo<>(Row.class)).isEqualTo(genericRowInfo);
    }