def METHOD_NAME(self, engine: Engine, usage: MetricUsage) -> None:
    self.engine = engine
    for index, metric in enumerate(itertools.chain(self.args, self.kwargs.values())):
        if isinstance(metric, MetricsLambda):
            metric.METHOD_NAME(engine, usage)
        elif isinstance(metric, Metric):
            # NB : metrics is attached partially
            # We must not use is_attached() but rather if these events exist
            if not engine.has_event_handler(metric.started, usage.STARTED):
                engine.add_event_handler(usage.STARTED, metric.started)
            if not engine.has_event_handler(metric.iteration_completed, usage.ITERATION_COMPLETED):
                engine.add_event_handler(usage.ITERATION_COMPLETED, metric.iteration_completed)