def register_converter(self, converter: Converter[S, T]):
check_var(converter, var_types=Converter, var_name='<STR_LIT>')<EOL>res = converter.is_able_to_convert_detailed(from_type=JOKER, to_type=JOKER, strict=True)<EOL>if not (res[<NUM_LIT:0>] is True and res[<NUM_LIT:1>] is None and res[<NUM_LIT:2>] is None):<EOL><INDENT>raise ValueError('<STR_LIT>' + str(converter) + '<STR_LIT>'<EOL>'<STR_LIT>')<EOL><DEDENT>generic_chains, generic_nonstrict_chains, specific_chains, specific_nonstrict_chains= self._create_all_new_chains(converter)<EOL>self._generic_nonstrict_conversion_chains += generic_nonstrict_chains<EOL>self._generic_conversion_chains += generic_chains<EOL>self._specific_non_strict_conversion_chains += specific_nonstrict_chains<EOL>self._specific_conversion_chains += specific_chains<EOL>self._generic_nonstrict_conversion_chains = sorted(self._generic_nonstrict_conversion_chains, key=len,<EOL>reverse=True)<EOL>self._generic_conversion_chains = sorted(self._generic_conversion_chains, key=len, reverse=True)<EOL>self._specific_non_strict_conversion_chains = sorted(self._specific_non_strict_conversion_chains, key=len,<EOL>reverse=True)<EOL>self._specific_conversion_chains = sorted(self._specific_conversion_chains, key=len, reverse=True)<EOL>
Utility method to register any converter. Converters that support any type will be stored in the "generic"
lists, and the others will be stored in front of the types they support
:return: