class ExposedThing extends Thing<ExposedThingProperty<Object>, ExposedThingAction<Object, Object>, ExposedThingEvent<Object>> {

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        if (!super.equals(o)) {
            return false;
        }
        ExposedThing that = (ExposedThing) o;
        return Objects.equals(servient, that.servient);
    }

    @SuppressWarnings("squid:S107")  ExposedThing(Servient servient,
                 Subject subject,
                 String objectType,
                 Context objectContext,
                 String id,
                 String title,
                 Map<String, String> titles,
                 String description,
                 Map<String, String> descriptions,
                 List<Form> forms,
                 List<String> security,
                 Map<String, SecurityScheme> securityDefinitions,
                 String base,
                 Map<String, ExposedThingProperty<Object>> properties,
                 Map<String, ExposedThingAction<Object, Object>> actions,
                 Map<String, ExposedThingEvent<Object>> events);
    public  ExposedThing(Servient servient, Thing thing);
    public  ExposedThing(Servient servient);

}