### Question:
TimePeriodValues extends Series implements Serializable { @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof TimePeriodValues)) { return false; } if (!super.equals(obj)) { return false; } TimePeriodValues that = (TimePeriodValues) obj; if (!ObjectUtils.equal(this.getDomainDescription(), that.getDomainDescription())) { return false; } if (!ObjectUtils.equal(this.getRangeDescription(), that.getRangeDescription())) { return false; } int count = getItemCount(); if (count != that.getItemCount()) { return false; } for (int i = 0; i < count; i++) { if (!getDataItem(i).equals(that.getDataItem(i))) { return false; } } return true; } TimePeriodValues(String name);  TimePeriodValues(String name, String domain, String range); String getDomainDescription(); void setDomainDescription(String description); String getRangeDescription(); void setRangeDescription(String description); @Override int getItemCount(); TimePeriodValue getDataItem(int index); TimePeriod getTimePeriod(int index); Number getValue(int index); void add(TimePeriodValue item); void add(TimePeriod period, double value); void add(TimePeriod period, Number value); void update(int index, Number value); void delete(int start, int end); @Override boolean equals(Object obj); @Override int hashCode(); @Override Object clone(); TimePeriodValues createCopy(int start, int end); int getMinStartIndex(); int getMaxStartIndex(); int getMinMiddleIndex(); int getMaxMiddleIndex(); int getMinEndIndex(); int getMaxEndIndex();  }### Answer:
@Test public void testEquals() { TimePeriodValues s1 = new TimePeriodValues("Time Series 1"); TimePeriodValues s2 = new TimePeriodValues("Time Series 2"); boolean b1 = s1.equals(s2); assertFalse("b1", b1); s2.setKey("Time Series 1"); boolean b2 = s1.equals(s2); assertTrue("b2", b2); s1.setDomainDescription("XYZ"); assertFalse(s1.equals(s2)); s2.setDomainDescription("XYZ"); assertEquals(s1, s2); s1.setDomainDescription(null); assertFalse(s1.equals(s2)); s2.setDomainDescription(null); assertEquals(s1, s2); s1.setRangeDescription("XYZ"); assertFalse(s1.equals(s2)); s2.setRangeDescription("XYZ"); assertEquals(s1, s2); s1.setRangeDescription(null); assertFalse(s1.equals(s2)); s2.setRangeDescription(null); assertEquals(s1, s2); RegularTimePeriod p1 = new Day(); RegularTimePeriod p2 = p1.next(); s1.add(p1, 100.0); s1.add(p2, 200.0); boolean b3 = s1.equals(s2); assertFalse("b3", b3); s2.add(p1, 100.0); s2.add(p2, 200.0); boolean b4 = s1.equals(s2); assertTrue("b4", b4); }