### Question:
DefaultMultiValueCategoryDataset extends AbstractDataset implements MultiValueCategoryDataset, RangeInfo, PublicCloneable { @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof DefaultMultiValueCategoryDataset)) { return false; } DefaultMultiValueCategoryDataset that = (DefaultMultiValueCategoryDataset) obj; return this.data.equals(that.data); } DefaultMultiValueCategoryDataset(); void add(List<Number> values, Comparable rowKey, Comparable columnKey); @Override List<Number> getValues(int row, int column); @Override List<Number> getValues(Comparable rowKey, Comparable columnKey); @Override Number getValue(Comparable row, Comparable column); @Override Number getValue(int row, int column); @Override int getColumnIndex(Comparable key); @Override Comparable getColumnKey(int column); @Override List<Comparable> getColumnKeys(); @Override int getRowIndex(Comparable key); @Override Comparable getRowKey(int row); @Override List<Comparable> getRowKeys(); @Override int getRowCount(); @Override int getColumnCount(); @Override double getRangeLowerBound(boolean includeInterval); @Override double getRangeUpperBound(boolean includeInterval); @Override Range getRangeBounds(boolean includeInterval); @Override boolean equals(Object obj); @Override Object clone();  }### Answer:
@Test public void testEquals() { DefaultMultiValueCategoryDataset d1 = new DefaultMultiValueCategoryDataset(); DefaultMultiValueCategoryDataset d2 = new DefaultMultiValueCategoryDataset(); assertEquals(d1, d2); assertEquals(d2, d1); List<Number> values = new ArrayList<Number>(); d1.add(values, "R1", "C1"); assertFalse(d1.equals(d2)); d2.add(values, "R1", "C1"); assertEquals(d1, d2); values.add(99); d1.add(values, "R1", "C1"); assertFalse(d1.equals(d2)); d2.add(values, "R1", "C1"); assertEquals(d1, d2); values.add(99); d1.add(values, "R1", "C2"); assertFalse(d1.equals(d2)); d2.add(values, "R1", "C2"); assertEquals(d1, d2); }