### Question:
GroupRowFilter extends AbstractRecordFilter<GroupRowFilter> { static int extractKey(final TypedStruct record, final List<String> fields) { Object[] keys = new Object[fields.size()]; for (int i = 0; i < fields.size(); i++) { keys[i] = record.get(fields.get(i)); } return Objects.hash(keys); }  @Override void configure(final Map<String, ?> configs); @Override ConfigDef configDef(); @Override RecordsIterable<TypedStruct> apply(final FilterContext context,
                                              final TypedStruct record,
                                              final boolean hasNext); @Override void clear(); @Override RecordsIterable<FileRecord<TypedStruct>> flush();  }### Answer:
@Test public void shouldGenerateDifferentKeysGivenSymmetricFields() { TypedStruct struct1 = TypedStruct.create() .put(KEY_1, KEY_1) .put(KEY_2, KEY_2) .put(VALUE, "value"); TypedStruct struct2 = TypedStruct.create() .put(KEY_1, KEY_2) .put(KEY_2, KEY_1) .put(VALUE, "value"); int hash1 = GroupRowFilter.extractKey(struct1, Arrays.asList(KEY_1, KEY_2)); int hash2 = GroupRowFilter.extractKey(struct2, Arrays.asList(KEY_1, KEY_2)); Assert.assertNotEquals(hash1, hash2); }