def METHOD_NAME(self, sdfg: SDFG, p: ppl.Pass, state: Dict[str, Any]):
    """
    Apply a pass from the pipeline. This method is meant to be overridden by subclasses.
    """
    if type(p) in _nonrecursive_passes:  # If pass needs to run recursively, do so and modify return value
        ret: Dict[int, Any] = {}
        for sd in sdfg.all_sdfgs_recursive():
            subret = p.apply_pass(sd, state)
            if subret is not None:
                ret[sd.sdfg_id] = subret
        ret = ret or None
    else:
        ret = p.apply_pass(sdfg, state)
    if self.verbose:
        if ret is not None:
            if type(p) not in _nonrecursive_passes:
                rep = p.report(ret)
            else:
                # Create report from recursive application
                rep = []
                for sdid, subret in ret.items():
                    if subret is not None:
                        rep.append(f'SDFG {sdid}: ' + p.report(subret))
                rep = '\n'.join(rep)
            if rep:
                print(rep)
    # If validate all is enabled, check after every pass
    if ret is not None and self.validate_all:
        sdfg.validate()
    return ret