### Question:
ThingProperty extends ThingInteraction<ThingProperty<T>> implements DataSchema<T> { @Override public boolean equals(Object o) { if (this == o) { return true; } if (!(o instanceof ThingProperty)) { return false; } if (!super.equals(o)) { return false; } ThingProperty<Object> that = (ThingProperty<Object>) o; return observable == that.observable && readOnly == that.readOnly && writeOnly == that.writeOnly && Objects.equals(objectType, that.objectType) && Objects.equals(type, that.type) && Objects.equals(optionalProperties, that.optionalProperties); }  String getObjectType(); @Override String getType(); @Override Class<T> getClassType(); boolean isObservable(); boolean isReadOnly(); boolean isWriteOnly(); @JsonAnyGetter Map<String, Object> getOptionalProperties(); Object getOptional(String name); @Override int hashCode(); @Override boolean equals(Object o); @Override String toString();  }### Answer:
@Test public void testEquals() { ThingProperty<Object> property1 = new ThingProperty<Object>(); ThingProperty<Object> property2 = new ThingProperty<Object>(); assertEquals(property1, property2); }