class ExperimentManager {

    void runExperimentSteps (Experiment experiment) {
        try (AutoCloseableMDCCollection ignored = getExperimentAutoCloseableMDCCollection(experiment)) {
            if (experiment.getExperimentState().equals(CREATED)) experiment.startExperiment();
            if (experiment.getExperimentState().equals(STARTING)) experiment.confirmStartupComplete();
            if (experiment.getExperimentState().equals(STARTED)) experiment.evaluateRunningExperiment();
            if (experiment.getExperimentState().equals(SELF_HEALING)) experiment.callSelfHealing();
            if (experiment.getExperimentState().equals(FINALIZING)) experiment.callFinalize();
            if (experiment.getExperimentState().equals(FINISHED)) experiment.closeFinishedExperiment();
            if (experiment.getExperimentState().equals(FAILED)) experiment.closeFailedExperiment();
            log.info("Evaluated experiment: {}", v("experiment", experiment));
        }
    }

}