pub trait StateMachineWrapper: Any {
// Required methods
fn process(
&mut self,
input: DispatchPair,
index: u64,
dpi: RelDim,
area: PxRect,
extent: PxRect,
driver: &Weak<Driver>,
) -> InputResult<SmallVec<[DispatchPair; 1]>>;
fn output_slot(&self, i: usize) -> Result<&Option<Slot>>;
fn input_mask(&self) -> u64;
fn changed(&self) -> bool;
fn set_changed(&mut self, changed: bool);
}