def METHOD_NAME(self, df, column_types, statistics, rule_configs={}):
    if not statistics or len(statistics) == 0:
        calculator = StatisticsCalculator(column_types, self.verbose)
        statistics = calculator.calculate_statistics_overview(df, False)
    self.column_types = column_types
    all_suggestions = []
    for rule in self.rules:
        with timer('pipeline.evaluate_cleaning_rule', dict(rule=rule.__name__), verbose=False):
            with VerboseFunctionExec(
                f'Evaluating cleaning rule: {rule.__name__}', verbose=self.verbose
            ):
                rule_config = rule_configs.get(rule.__name__, {})
                suggestions = \
                    rule(df, column_types, statistics, custom_config=rule_config).evaluate()
        if suggestions:
            all_suggestions += suggestions
    self.actions = all_suggestions
    return all_suggestions