pub fn process_cb(
        &mut self,
        bytes: &[u8],
        callbacks: &mut impl crate::callbacks::Callbacks,
    ) {
        let mut screen = crate::perform::WrappedScreenWithCallbacks::new(
            &mut self.screen,
            callbacks,
        );
        for byte in bytes {
            self.parser.advance(&mut screen, *byte);
        }
    }
Processes the contents of the given byte string, and updates the
in-memory terminal state. Calls methods on the given `Callbacks`
object when relevant escape sequences are seen.
crates/turborepo-vt100/src/parser.rs