def __init__(self, supported_types: Set[Type], supported_exts: Set[str], can_chain: bool = True,<EOL>is_able_to_parse_func: Callable[[bool, Type[Any]], bool] = None):
<EOL>self.supported_types = get_validated_types(supported_types, '<STR_LIT>')<EOL>check_extensions(supported_exts, allow_multifile=True)<EOL>self.supported_exts = supported_exts<EOL>check_var(can_chain, var_types=bool, var_name='<STR_LIT>')<EOL>self.can_chain = can_chain<EOL>check_var(is_able_to_parse_func, var_types=Callable, var_name='<STR_LIT>', enforce_not_none=False)<EOL>self.is_able_to_parse_func = is_able_to_parse_func<EOL>
Constructor for a parser declaring support for possibly both singlefile and multifile, with a mandatory list of
supported object types.

It is possible to declare that a parser is able to parse any type (typically, a pickle parser), by using
supported_types={Any} or {object} or {AnyObject}. It is also possible to declare a custom function
'is_able_to_parse_func' telling if a specific object type is supported, in order to accept most types but not
all.

Note: users wishing to only implement singlefile OR multifile should rather use or extend SingleFileParser or
MultiFileParser classes.

:param supported_types: a set of supported object types that may be parsed. To declare that a parser is able to
parse any type this should be {AnyObject} ({object} ans {Any} is allowed but will be automatically replaced
with {AnyObject}).
:param supported_exts: a set of supported file extensions that may be parsed
:param can_chain: a boolean (default True) indicating if converters can be appended at the end of this
parser to create a chain. Dont change this except if it really can never make sense.
:param is_able_to_parse_func: an optional custom function to allow parsers to reject some types. This function
signature should be my_func(strict_mode, desired_type) -> bool