initialised = false;
Iterator<EngineSubsystem> iter = subsystems.descendingIterator();
while (iter.hasNext()) {
EngineSubsystem subsystem = iter.next();
try {
subsystem.dispose();
} catch (Throwable t) {
logger.error("Unable to dispose subsystem {}", subsystem, t);
}
}