### Question:
JsonThingQuery implements ThingQuery { @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } JsonThingQuery that = (JsonThingQuery) o; return Objects.equals(query, that.query); } JsonThingQuery(String query);   JsonThingQuery(); @Override int hashCode(); @Override boolean equals(Object o); @Override String toString(); @Override List<Thing> filter(Collection<Thing> things); String getQuery();  }### Answer:
@Test public void testEquals() { JsonThingQuery queryA = new JsonThingQuery("{\"@type\":\"https: JsonThingQuery queryB = new JsonThingQuery("{\"@type\":\"https: JsonThingQuery queryC = new JsonThingQuery("{\"http: assertEquals(queryA, queryB); assertEquals(queryB, queryA); assertNotEquals(queryA, queryC); assertNotEquals(queryC, queryA); }