code: def _convert(self, desired_type: Type[T], obj: S, logger: Logger, options: Dict[str, Dict[str, Any]]) -> T:
          
          for converter in self._converters_list[:-1]:
              # convert into each converters destination type
              obj = converter.convert(converter.to_type, obj, logger, options)
  
          # the last converter in the chain should convert to desired type
          return self._converters_list[-1].convert(desired_type, obj, logger, options)
docs: Apply the converters of the chain in order to produce the desired result. Only the last converter will see the
          'desired type', the others will be asked to produce their declared to_type.
  
          :param desired_type:
          :param obj:
          :param logger:
          :param options:
          :return: