class Experiment {

    void evaluateRunningExperiment () {
        log.debug("Checking status of running experiment");
        switch (checkContainerHealth()) {
            case NORMAL:
                log.info("Container restored to healthy state, going to finalizing");
                setExperimentState(ExperimentState.FINALIZING);
                break;
            case RUNNING_EXPERIMENT:
                if (isOverDuration()) {
                    log.warn("Container is not in a healthy state within experiment duration. Progressing to self-healing");
                    setExperimentState(ExperimentState.SELF_HEALING);
                } else {
                    log.debug("Container is not in a healthy state, but experiment is still within time limits");
                }
                break;
            case DOES_NOT_EXIST:
                log.warn("Container cannot be found, and this was not expected from the experiment. Experiment failed");
                setExperimentState(ExperimentState.FAILED);
                break;
        }
    }

    public  Experiment(Container container);

}