def METHOD_NAME(self) -> List[Output]:
    """Detect shadowing local variables
    Recursively visit the calls
    Returns:
        list: {'vuln', 'filename,'contract','func', 'shadow'}
    """
    results = []
    for contract in self.contracts:
        shadows = self.detect_shadowing_definitions(contract)
        if shadows:
            for shadow in shadows:
                local_variable = shadow[0]
                overshadowed = shadow[1]
                info: DETECTOR_INFO = [local_variable, " shadows:\n"]
                for overshadowed_entry in overshadowed:
                    info += [
                        "\t- ",
                        overshadowed_entry[1],
                        f" ({overshadowed_entry[0]})\n",
                    ]
                # Generate relevant JSON data for this shadowing definition.
                res = self.generate_result(info)
                results.append(res)
    return results