### Question:
ValueStep implements ImmutableBean, Serializable { @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (obj != null && obj.getClass() == this.getClass()) { ValueStep other = (ValueStep) obj; return JodaBeanUtils.equal(periodIndex, other.periodIndex) && JodaBeanUtils.equal(date, other.date) && JodaBeanUtils.equal(value, other.value); } return false; } private  ValueStep(
      Integer periodIndex,
      LocalDate date,
      ValueAdjustment value); static ValueStep of(int periodIndex, ValueAdjustment value); static ValueStep of(LocalDate date, ValueAdjustment value); static ValueStep.Meta meta(); static ValueStep.Builder builder(); @Override ValueStep.Meta metaBean(); OptionalInt getPeriodIndex(); Optional<LocalDate> getDate(); ValueAdjustment getValue(); Builder toBuilder(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void equals() { ValueStep a1 = ValueStep.of(2, DELTA_MINUS_2000); ValueStep a2 = ValueStep.of(2, DELTA_MINUS_2000); ValueStep b = ValueStep.of(1, DELTA_MINUS_2000); ValueStep c = ValueStep.of(2, ABSOLUTE_100); assertThat(a1.equals(a1)).isEqualTo(true); assertThat(a1.equals(a2)).isEqualTo(true); assertThat(a1.equals(b)).isEqualTo(false); assertThat(a1.equals(c)).isEqualTo(false); ValueStep d1 = ValueStep.of(date(2014, 6, 30), DELTA_MINUS_2000); ValueStep d2 = ValueStep.of(date(2014, 6, 30), DELTA_MINUS_2000); ValueStep e = ValueStep.of(date(2014, 7, 30), DELTA_MINUS_2000); ValueStep f = ValueStep.of(date(2014, 7, 30), ABSOLUTE_100); assertThat(d1.equals(d1)).isEqualTo(true); assertThat(d1.equals(d2)).isEqualTo(true); assertThat(d1.equals(e)).isEqualTo(false); assertThat(d1.equals(f)).isEqualTo(false); }