NiceRow extends NewRow { @Override public Object put(int index, Object object) { return fields.put(index, object); } NiceRow(int tableId, RowDef rowDef);  NiceRow(NewRow copyFrom); @Override Object put(int index, Object object); @Override int getTableId(); @Override Object get(int column); @Override boolean hasValue(int columnId); @Override Object remove(int columnId); @Override Map<Integer,Object> getFields(); static NewRow fromRowData(RowData origData, RowDef rowDef); @Override RowData toRowData(); @Override ColumnSelector getActiveColumns(); @Override boolean isColumnNull(int columnId); @Override String toString(); @Override boolean equals(Object o); @Override int hashCode();  }
@Test public void testEquality() { TreeMap<Integer,NiceRow> mapOne = new TreeMap<>(); TreeMap<Integer,NiceRow> mapTwo = new TreeMap<>(); NiceRow rowOne = new NiceRow(1, (RowDef)null); rowOne.put(0, Long.valueOf(0l)); rowOne.put(1, "hello world"); mapOne.put(0, rowOne); NiceRow rowTwo = new NiceRow(1, (RowDef)null); rowTwo.put(0, Long.valueOf(0l)); rowTwo.put(1, "hello world"); mapTwo.put(0, rowTwo); assertEquals("rows", rowOne, rowTwo); assertEquals("maps", mapOne, mapTwo); }