Overrides the parent method to delegate left check to the first (left) converter of the chain and right check
        to the last (right) converter of the chain. This includes custom checking if they have any...
        see Converter.is_able_to_convert for details

        :param strict:
        :param from_type:
        :param to_type:
        :return:

def is_able_to_convert_detailed(self, strict: bool, from_type: Type[Any], to_type: Type[Any]):
        """
        Overrides the parent method to delegate left check to the first (left) converter of the chain and right check
        to the last (right) converter of the chain. This includes custom checking if they have any...
        see Converter.is_able_to_convert for details

        :param strict:
        :param from_type:
        :param to_type:
        :return:
        """
        # check if first and last converters are happy
        if not self._converters_list[0].is_able_to_convert(strict, from_type=from_type, to_type=JOKER):
            return False, None, None
        elif not self._converters_list[-1].is_able_to_convert(strict, from_type=JOKER, to_type=to_type):
            return False, None, None
        else:
            # behave as usual. This is probably useless but lets be sure.
            return super(ConversionChain, self).is_able_to_convert_detailed(strict, from_type, to_type)