def METHOD_NAME(self) -> List[Output]:
    """
    Detect reused base constructors.
    :return: Returns a list of JSON results.
    """
    results = []
    # Loop for each contract
    for contract in self.contracts:
        # Detect all locations which all underlying base constructors with arguments were called from.
        called_base_constructors = self._detect_explicitly_called_base_constructors(contract)
        for base_constructor, call_list in called_base_constructors.items():
            # Only report if there are multiple calls to the same base constructor.
            if len(call_list) <= 1:
                continue
            # Generate data to output.
            info: DETECTOR_INFO = [
                contract,
                " gives base constructor ",
                base_constructor,
                " arguments more than once in inheritance hierarchy:\n",
            ]
            for (calling_contract, called_by_constructor) in call_list:
                info += [
                    "\t- From ",
                    calling_contract,
                    f" {'constructor' if called_by_constructor else 'contract'} definition\n",
                ]
            res = self.generate_result(info)
            results.append(res)
    return results