pub trait Processor<BASE> {
// Required method
fn exe_ins(&mut self, channels: &Vec<FrontEnd<BASE>>) -> Result<(), BASE>;
// Provided methods
fn metadata(&self) -> Metadata { ... }
fn boot(&mut self, channels: &Vec<FrontEnd<BASE>>) -> Result<(), BASE> { ... }
fn halt(&mut self, channels: &Vec<FrontEnd<BASE>>) -> Result<(), BASE> { ... }
}