@staticmethod<EOL><INDENT>def are_worth_chaining(left_converter, right_converter) -> bool:<DEDENT>
if not left_converter.can_chain:<EOL><INDENT>return False<EOL><DEDENT>elif not is_any_type(left_converter.to_type) and is_any_type(right_converter.to_type):<EOL><INDENT>return True<EOL><DEDENT>elif issubclass(left_converter.from_type, right_converter.to_type)or issubclass(left_converter.to_type, right_converter.to_type)or issubclass(left_converter.from_type, right_converter.from_type):<EOL><INDENT>return False<EOL><DEDENT>else:<EOL><INDENT>return True<EOL><DEDENT>
Utility method to check if it makes sense to chain these two converters. Returns True if it brings value to
chain the first converter with the second converter. To bring value,
* the second converter's input should not be a parent class of the first converter's input (in that case, it is
  always more interesting to use the second converter directly for any potential input)
* the second converter's output should not be a parent class of the first converter's input or output. Otherwise
the chain does not even make any progress :)
* The first converter has to allow chaining (with converter.can_chain=True)

:param left_converter:
:param right_converter:
:return: