class Experiment {

    boolean canRunSelfHealing () {
        if (!adminManager.canRunSelfHealing()) {
            sendNotification(NotificationLevel.WARN, "Self healing disabled due admin state");
            log.debug("Self healing disallowed by Admin State {}", v("AdminState", adminManager.getAdminState()));
            return false;
        } else if (Optional.ofNullable(lastSelfHealingTime)
                           .map(i -> i.plus(getMinimumTimeBetweenSelfHealing()))
                           .map(i -> i.isAfter(Instant.now()))
                           .orElse(false)) {
            log.debug("Self healing last occurred too recently. Skipping re-execution.");
            return false;
        }
        return true;
    }

    public  Experiment(Container container);

}