public static <T> Inner<T> fields(String... fields) {
    return fields(FieldAccessDescriptor.withFieldNames(fields));
  }
@Test
  @Category(NeedsRunner.class)
  public void testDropNestedFieldKeepingOnlyNested() {
    Schema expectedSchema = Schema.builder().addStringField("field2").build();

    PCollection<Row> result =
        pipeline
            .apply(
                Create.of(
                        nestedRow(simpleRow(1, "one")),
                        nestedRow(simpleRow(2, "two")),
                        nestedRow(simpleRow(3, "three")))
                    .withRowSchema(NESTED_SCHEMA))
            .apply(DropFields.fields("string", "nested.field1"));
    assertEquals(expectedSchema, result.getSchema());

    List<Row> expectedRows =
        Lists.newArrayList(
            Row.withSchema(expectedSchema).addValue("one").build(),
            Row.withSchema(expectedSchema).addValue("two").build(),
            Row.withSchema(expectedSchema).addValue("three").build());
    PAssert.that(result).containsInAnyOrder(expectedRows);
    pipeline.run();
  }