Utility method to check if this (self) converter can be appended after the output of the provided converter.
        This method does not check if it makes sense, it just checks if the output type of the left converter is
        compliant with the input type of this converter. Compliant means:
        * strict mode : type equality
        * non-strict mode : output type of left_converter should be a subclass of input type of this converter

        In addition, the custom function provided in constructor may be used to reject conversion (see
        is_able_to_convert for details)

        :param left_converter:
        :param strict: boolean to
        :return:

def can_be_appended_to(self, left_converter, strict: bool) -> bool:
        """
        Utility method to check if this (self) converter can be appended after the output of the provided converter.
        This method does not check if it makes sense, it just checks if the output type of the left converter is
        compliant with the input type of this converter. Compliant means:
        * strict mode : type equality
        * non-strict mode : output type of left_converter should be a subclass of input type of this converter

        In addition, the custom function provided in constructor may be used to reject conversion (see
        is_able_to_convert for details)

        :param left_converter:
        :param strict: boolean to
        :return:
        """
        is_able_to_take_input = self.is_able_to_convert(strict, from_type=left_converter.to_type, to_type=JOKER)
        if left_converter.is_generic():
            return is_able_to_take_input \
                   and left_converter.is_able_to_convert(strict, from_type=JOKER, to_type=self.from_type)
        else:
            return is_able_to_take_input