def _create_deserializer(self) -> JsonObjectDeserializer:
        """
        Creates a deserializer that is to be used by this decoder.
        :return: the deserializer
        """
        if self._deserializer_cache is None:
            deserializer_cls = type(
                "%sInternalDeserializer" % type(self),
                (JsonObjectDeserializer,),
                {
                    "_JSON_ENCODER_ARGS": self._args,
                    "_JSON_ENCODER_KWARGS": self._kwargs
                }
            )
            self._deserializer_cache = deserializer_cls(self._get_property_mappings(), self._get_deserializable_cls())
        return self._deserializer_cache