### Question:
Row { public static <Cs extends Columns> Row<Cs> of(Cs columns) { return new Row<Cs>(columns); } protected  Row(Cs columns); static Row<Cs> of(Cs columns); Row<Cs> with(Column column, Object value); Object get(Column column); boolean contains(Columns columns); boolean matches(Row<Cs> row, Columns keys); boolean matches(Map<Column, Object> match); void setAll(Map<Column, Object> newValues); Map<Column, Object> getAll(Columns columns); Columns columns(); @Override int hashCode(); @SuppressWarnings("unchecked") @Override boolean equals(Object obj); @Override String toString();  }### Answer:
@Test public void with_throwAndErrorWhenValueDoesNotMatchColumnType() { Row<EmployeeColumns> row = Row.of(EmployeeColumns.DEFINITION); assertFailsAdding(row, SERIAL_NUMBER, BigDecimal.ONE); assertFailsAdding(row, DATE_OF_EMPLOYMENT, "Hello"); assertFailsAdding(row, LEVEL, "Hello"); assertFailsAdding(row, PROJECT_MANAGER, "Hello"); }