<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_capabilities_for_ext(self, ext, strict_type_matching: bool = False) -> Dict[Type, Dict[str, Parser]]: """ Utility method to return, for a given file extension, all known ways to parse a file with this extension, organized by target object type. :param ext: :param strict_type_matching: :return: """

        r = dict()
        # List all types that can be parsed from this extension.
        for typ in self.get_all_supported_types_for_ext(ext):
            # Use the query to fill
            matching = self.find_all_matching_parsers(strict_type_matching, desired_type=typ, required_ext=ext)[0]
            # matching_list = matching[0] + matching[1] + matching[2]
            # insert_element_to_dict_of_dicts_of_list(res, ext, typ, list(reversed(matching_list)))
            r[typ] = dict()
            exact = list(reversed(matching[2]))
            if len(exact) > 0:
                r[typ]['1_exact_match'] = exact

            approx = list(reversed(matching[1]))
            if len(approx) > 0:
                r[typ]['2_approx_match'] = approx

            generic = list(reversed(matching[0]))
            if len(generic) > 0:
                r[typ]['3_generic'] = generic

            # insert_element_to_dict_of_dicts(res, ext, typ, matching_dict)
        return r