@Override
 protected FieldSortBuilder mutate(FieldSortBuilder original) throws IOException {
   FieldSortBuilder mutated = new FieldSortBuilder(original);
   int parameter = randomIntBetween(0, 5);
   switch (parameter) {
     case 0:
       mutated.setNestedPath(
           randomValueOtherThan(
               original.getNestedPath(), () -> randomAsciiOfLengthBetween(1, 10)));
       break;
     case 1:
       mutated.setNestedFilter(
           randomValueOtherThan(original.getNestedFilter(), () -> randomNestedFilter()));
       break;
     case 2:
       mutated.sortMode(
           randomValueOtherThan(original.sortMode(), () -> randomFrom(SortMode.values())));
       break;
     case 3:
       mutated.unmappedType(
           randomValueOtherThan(original.unmappedType(), () -> randomAsciiOfLengthBetween(1, 10)));
       break;
     case 4:
       mutated.missing(randomValueOtherThan(original.missing(), () -> randomFrom(missingContent)));
       break;
     case 5:
       mutated.order(randomValueOtherThan(original.order(), () -> randomFrom(SortOrder.values())));
       break;
     default:
       throw new IllegalStateException("Unsupported mutation.");
   }
   return mutated;
 }
  public FieldSortBuilder randomFieldSortBuilder() {
    String fieldName =
        rarely() ? FieldSortBuilder.DOC_FIELD_NAME : randomAsciiOfLengthBetween(1, 10);
    FieldSortBuilder builder = new FieldSortBuilder(fieldName);
    if (randomBoolean()) {
      builder.order(randomFrom(SortOrder.values()));
    }

    if (randomBoolean()) {
      builder.missing(randomFrom(missingContent));
    }

    if (randomBoolean()) {
      builder.unmappedType(randomAsciiOfLengthBetween(1, 10));
    }

    if (randomBoolean()) {
      builder.sortMode(randomFrom(SortMode.values()));
    }

    if (randomBoolean()) {
      builder.setNestedFilter(randomNestedFilter());
    }

    if (randomBoolean()) {
      builder.setNestedPath(randomAsciiOfLengthBetween(1, 10));
    }

    return builder;
  }