#ifndef __INSTANTIATE_@EXPERIMENT_TYPE@_AH__
  #define __INSTANTIATE_@EXPERIMENT_TYPE@_AH__

// Make sure your experiment declaration is in experiment.hpp:
#include "../experiments/@EXPERIMENT_NAME@/experiment.hpp"
#include "sal/SALInst.hpp"

// The experiment needs to be instantiated dynamically (on the stack, or the
// heap), as the ExperimentFlow destructor deregisters from the
// CoroutineManager which may not exist anymore if the global
// construction/destruction order is inappropriate.

aspect @EXPERIMENT_TYPE@ExperimentHook {
	advice execution ("void fail::SimulatorController::initExperiments()") : after () {
		fail::simulator.addFlow(new @EXPERIMENT_TYPE@);
	}
};

#endif // __INSTANTIATE_@EXPERIMENT_TYPE@_AH__
