class 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);
    }

}