def METHOD_NAME(self):
    if not self.exclude_default_stages:
        self.load_plugins(DEFAULT_STAGES_PLUGINS)
    stages = itertools.chain.from_iterable(self.plugin_manager.hook.nebari_stage())
    # order stages by priority
    sorted_stages = sorted(stages, key=lambda s: s.priority)
    # filter out duplicate stages with same name (keep highest priority)
    visited_stage_names = set()
    filtered_stages = []
    for stage in reversed(sorted_stages):
        if stage.name in visited_stage_names:
            continue
        filtered_stages.insert(0, stage)
        visited_stage_names.add(stage.name)
    # filter out stages which match excluded stages
    included_stages = []
    for stage in filtered_stages:
        for exclude_stage in self.exclude_stages:
            if re.fullmatch(exclude_stage, stage.name) is not None:
                break
        else:
            included_stages.append(stage)
    return included_stages