### Question:
Row { public void findColumnsAndChangeName(Predicate<Column> predicate, Function<Column, String> renamingFunction) { List<Column> collect = this.columnByName.values().stream(). filter(predicate).collect(Collectors.toList()); collect.stream().forEach(c -> this.changeColumnName(c.getName(), renamingFunction.apply(c))); } Row(); void useMemory(Memory globalMemory); Object getColumnValue(String columnName); Column getColumnByName(String column); void findColumnsAndApply(Predicate<Column> predicate, Consumer<Column> modifier); void findColumnsAndChangeName(Predicate<Column> predicate, Function<Column, String> renamingFunction); Column getColumnByIndex(int index); Collection<Column> getColumns(); List<Column> getColumnsSortedByColumnIndex(); void changeColumnName(String oldName, String newName); Row addColumn(int index, String name, Object value); Row addColumn(Column column); Row addNullColumn(int index, String name); void transformColumn(String name, Function<Object, Object> transformer); int getNumberOfColumns(); Map<String, Optional<Object>> getColumnValues(); Set<String> getColumnNames(); Map<String, String> getColumnsAsString(); Row removeColumn(String name); String getDestination(String columnName); boolean isNumber(String column); boolean isString(String column); Row changeDestination(String column, String newDestination); boolean isEmpty(); List<String> getSortedColumnNames(); Map<String, Row> getColumnsGroupedByDestination(); Row convert(List<Map.Entry<String, Column>> content); boolean isColumnEmpty(String name); Row add(Row input); List<Row> getChildren(); boolean hasChildren(); Memory getMemory(); void successfullyProcessed(); void errorOccured(); void errorOccured(Throwable ex); void reindexColumns(); @Override String toString();  }### Answer:
@Test public void findColumnsAndChangeName() { this.cut.addColumn(0, "name", "duke"); this.cut.addColumn(1, "city", "SFO"); Function<Column, String> renamer = col -> { int index = col.getIndex(); String name = col.getName(); return index + "_" + name; }; this.cut.findColumnsAndChangeName(c -> true, renamer); Column first = this.cut.getColumnByIndex(0); assertThat(first.getName(), is("0_name")); Column second = this.cut.getColumnByIndex(1); assertThat(second.getName(), is("1_city")); }