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

    public ExposedThing removeProperty(String name) {
        log.debug("'{}' removing Property '{}'", getId(), name);
        properties.remove(name);
        return this;
    }

    @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);

}