pub trait Subsystem: Any + HasVersion {
// Required methods
fn name(&self) -> &'static str;
fn start(&mut self) -> Result<()>;
fn shutdown(&mut self) -> Result<()>;
fn is_running(&self) -> bool;
fn health_status(&self) -> HealthStatus;
fn as_any(&self) -> &dyn Any;
fn as_any_mut(&mut self) -> &mut dyn Any;
}