Wait extends Operation { @Override public boolean equals(Object other) { if (this == other) { return true; } if (!(other instanceof Wait)) { return false; } Wait that = (Wait) other; return Objects.equals(timeout, that.getTimeout()) && Objects.equals(table, that.getTable()) && Objects.equals(where, that.getWhere()) && Objects.equals(columns, that.getColumns()) && until == that.getUntil() && Objects.equals(rows, that.getRows()); } Wait(
      String table, List<Condition> where,
      List<String> columns, Until until, List<Row> rows
  );  Wait(
      String table, Integer timeout, List<Condition> where,
      List<String> columns, Until until, List<Row> rows
  ); Integer getTimeout(); String getTable(); List<Condition> getWhere(); List<String> getColumns(); Until getUntil(); List<Row> getRows(); @Override boolean equals(Object other); @Override int hashCode(); @Override String toString();  }
@Test public void testEquals() { List<Condition> conditions = mock(List.class); List<String> columns = mock(List.class); List<Row> rows = mock(List.class); new EqualsTester() .addEqualityGroup( new Wait(tableName, null, conditions, columns, Until.EQUAL, rows), new Wait(tableName, conditions, columns, Until.EQUAL, rows) ).testEquals(); }