<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def __deserialize_model(self, payload, obj_type):
 # type: (str, Union[T, str]) -> Any """Deserialize instance to model object. :param payload: data to be deserialized :type payload: str :param obj_type: sdk model class :type obj_type: Union[object, str] :return: deserialized sdk model object :rtype: object :raises: :py:class:`ask_sdk_core.exceptions.SerializationException` """

        try:
            obj_cast = cast(Any, obj_type)
            if issubclass(obj_cast, Enum):
                return obj_cast(payload)

            if hasattr(obj_cast, 'deserialized_types'):
                if hasattr(obj_cast, 'get_real_child_model'):
                    obj_cast = self.__get_obj_by_discriminator(
                        payload, obj_cast)

                class_deserialized_types = obj_cast.deserialized_types
                class_attribute_map = getattr(obj_cast, 'attribute_map', {})
                class_attribute_map.update(
                    {
                        k: k for k in obj_cast.deserialized_types.keys()
                        if k not in class_attribute_map
                    }
                )

                deserialized_model = obj_cast()
                for class_param_name, payload_param_name in iteritems(
                        class_attribute_map):
                    if payload_param_name in payload:
                        setattr(
                            deserialized_model,
                            class_param_name,
                            self.__deserialize(
                                payload[payload_param_name],
                                class_deserialized_types[class_param_name]))

                additional_params = [
                    param for param in payload
                    if param not in class_attribute_map.values()]

                for add_param in additional_params:
                    setattr(deserialized_model, add_param, payload[cast(Any,add_param)])
                return deserialized_model
            else:
                return payload
        except Exception as e:
            raise SerializationException(str(e))