Implementing classes should implement this method to perform the conversion itself

        :param desired_type: the destination type of the conversion
        :param source_obj: the source object that should be converter
        :param logger: a logger to use if any is available, or None
        :param options: additional options map. Implementing classes may use 'self.get_applicable_options()' to get the
        options that are of interest for this converter.
        :return:

def _convert(self, desired_type: Type[T], source_obj: S, logger: Logger, options: Dict[str, Dict[str, Any]]) -> T:
        """
        Implementing classes should implement this method to perform the conversion itself

        :param desired_type: the destination type of the conversion
        :param source_obj: the source object that should be converter
        :param logger: a logger to use if any is available, or None
        :param options: additional options map. Implementing classes may use 'self.get_applicable_options()' to get the
        options that are of interest for this converter.
        :return:
        """
        pass