class DiscoveryResultImpl implements DiscoveryResult {

    @Override
    public ThingTypeUID getThingTypeUID() {
        ThingTypeUID localThingTypeUID = thingTypeUID;
        if (localThingTypeUID != null) {
            return localThingTypeUID;
        } else {
            // fallback for discovery result which were created before the thingTypeUID field was added
            String[] segments = thingUID.getAsString().split(AbstractUID.SEPARATOR);
            if (!segments[1].isEmpty()) {
                return new ThingTypeUID(thingUID.getBindingId(), segments[1]);
            }
            throw new IllegalArgumentException("ThingTypeUID of thing '" + thingUID.getAsString() + "' is null.");
        }
    }

      DiscoveryResultImpl();
    @Deprecated public  DiscoveryResultImpl(@Nullable ThingTypeUID thingTypeUID, ThingUID thingUID, @Nullable ThingUID bridgeUID,
            @Nullable Map<String, Object> properties, @Nullable String representationProperty, @Nullable String label,
            long timeToLive);

}