trait driver_context_t<T: FromData> {
    // Required methods
    fn in_place(&self) -> bool;
    fn can_advance(&self, entry: &GenericStateEntry<T>) -> bool;
    fn is_actionable(
        &self,
        entry: &GenericStateEntry<T>,
        buffer: &hb_buffer_t,
    ) -> bool;
    fn transition(
        &mut self,
        entry: &GenericStateEntry<T>,
        buffer: &mut hb_buffer_t,
    ) -> Option<()>;
}