class ThingId extends NamespacedEntityIdWithType {

    public static ThingId of(final CharSequence thingId) {
        if (thingId instanceof ThingId) {
            return (ThingId) thingId;
        }

        return wrapInThingIdInvalidException(() -> new ThingId(DefaultNamespacedEntityId.of(thingId)));
    }

    private  ThingId(final NamespacedEntityId entityId);

}