@staticmethod<EOL><INDENT>def chain(first_converter, second_converter, strict: bool):<DEDENT>
if isinstance(first_converter, ConversionChain):<EOL><INDENT>if isinstance(second_converter, ConversionChain):<EOL><INDENT>if (first_converter.strict == strict) and (second_converter.strict == strict):<EOL><INDENT>return first_converter.add_conversion_steps(second_converter._converters_list)<EOL><DEDENT>else:<EOL><INDENT>if not strict:<EOL><INDENT>return ConversionChain(initial_converters=first_converter._converters_list,<EOL>strict_chaining=False).add_conversion_steps(second_converter._converters_list)<EOL><DEDENT>else:<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT><DEDENT><DEDENT>else:<EOL><INDENT>if strict == first_converter.strict:<EOL><INDENT>return first_converter.add_conversion_step(second_converter)<EOL><DEDENT>else:<EOL><INDENT>if not strict:<EOL><INDENT>return ConversionChain(initial_converters=[second_converter], strict_chaining=False).insert_conversion_steps_at_beginning(first_converter._converters_list)<EOL><DEDENT>else:<EOL><INDENT>raise ValueError('<STR_LIT>'<EOL>'<STR_LIT>')<EOL><DEDENT><DEDENT><DEDENT><DEDENT>else:<EOL><INDENT>if isinstance(second_converter, ConversionChain):<EOL><INDENT>if strict == second_converter.strict:<EOL><INDENT>return second_converter.insert_conversion_step_at_beginning(first_converter)<EOL><DEDENT>else:<EOL><INDENT>if not strict:<EOL><INDENT>return ConversionChain(initial_converters=[first_converter], strict_chaining=False).add_conversion_steps(second_converter._converters_list)<EOL><DEDENT>else:<EOL><INDENT>raise ValueError(<EOL>'<STR_LIT>'<EOL>'<STR_LIT>')<EOL><DEDENT><DEDENT><DEDENT>else:<EOL><INDENT>return ConversionChain([first_converter, second_converter], strict)<EOL><DEDENT><DEDENT>
Utility method to chain two converters. If any of them is already a ConversionChain, this method "unpacks" it
first. Note: the created conversion chain is created with the provided 'strict' flag, that may be different
from the ones of the converters (if compliant). For example you may chain a 'strict' chain with a 'non-strict'
chain, to produce a 'non-strict' chain.

:param first_converter:
:param second_converter:
:param strict:
:return: