Update extends Operation { @Override public boolean equals(Object other) { if (this == other) { return true; } if (!(other instanceof Update)) { return false; } Update that = (Update) other; return Objects.equals(table, that.getTable()) && Objects.equals(conditions, that.getWhere()) && Objects.equals(row, that.getRow()); } Update(String table, List<Condition> conditions, Row row);  Update(String table, Row row); Update where(String column, Function function, Value value); Update where(String column, Function function, String string); Update where(String column, Function function, long integer); Update where(String column, Function function, boolean bool); Update where(String column, Function function, Uuid uuid); Update where(String column, Function function, NamedUuid namedUuid); Update where(
      String column, Function function, java.util.Map<K, V> map
  ); Update where(
      String column, Function function, java.util.Set<T> set
  ); String getTable(); List<Condition> getWhere(); Row getRow(); @Override boolean equals(Object other); @Override int hashCode(); @Override String toString();  }
@Test public void testEquals() { List<Condition> conditions = Stream.of( new Condition("string_column", Function.INCLUDES, Atom.string("A string")), new Condition("integer_column", Function.LESS_THAN, Atom.integer(42)), new Condition("bool_column", Function.EQUALS, Atom.bool(true)), new Condition("uuid_column", Function.NOT_EQUALS, Atom.uuid(uuid)), new Condition("named-uuid_column", Function.EXCLUDES, Atom.namedUuid("uuid-name")), new Condition("map_column", Function.GREATER_THAN_OR_EQUALS, new Map<>(ImmutableList.of(new Pair<>(Atom.string("key"), Atom.string("value")))) ), new Condition("set_column", Function.LESS_THAN_OR_EQUALS, new Set(ImmutableSet.of(Atom.string("value1"), Atom.string("value2"))) ) ).collect(Collectors.toList()); new EqualsTester() .addEqualityGroup(update, new Update(tableName, conditions, row)) .testEquals(); }