// use std::time::Duration;
// use regex_automata::{hybrid::regex::Regex};
// use regex_automata::hybrid::{CacheError, LazyStateID};
// use crate::experiments::regex_search::RegexSearchError::PatternBuild;
// use crate::text::buffer::Buffer;
// use unicode_segmentation::UnicodeSegmentation;
// use unicode_width::UnicodeWidthStr;
//
// enum RegexSearchError {
// PatternBuild,
// BeginIdxTooFar,
// CacheError,
// }
//
// fn stuff(pattern: &str,
// deadline: Duration,
// buffer: &dyn Buffer,
// begin_idx_char: usize) -> Result<usize, RegexSearchError> {
// let regex = Regex::new(pattern).map_err(|_| RegexSearchError::PatternBuild)?;
// let fa = regex.forward();
// let mut cache = fa.create_cache();
//
// let mut chunk_it = buffer.chunks().peekable();
// let mut prefix_len_chars = 0 as usize;
// let mut found = false;
// let mut skip_bytes: usize = 0;
//
// while let Some(s) = chunk_it.peek() {
// if s.len() + prefix_len_chars > begin_idx_char {
// found = true;
// debug_assert!(begin_idx_char > prefix_len_chars);
// skip_bytes = begin_idx_char - prefix_len_chars;
// break;
// }
// prefix_len_chars += s.len();
// chunk_it.next();
// }
//
// if !found {
// return Err(RegexSearchError::BeginIdxTooFar);
// }
//
// let mut state = {
// let bytes = chunk_it.peek().unwrap();
//
// fa.start_state_forward(
// &mut cache,
// None,
// bytes.as_bytes(),
// begin_idx_char - prefix_len_chars,
// bytes.len(),
// ).map_err(|_| RegexSearchError::CacheError)?
// };
//
//
// while let Some(s) = chunk_it.next() {
// for byte in s.bytes().skip(skip_bytes) {
// state = fa.next_state(
// &mut cache,
// state,
// byte,
// ).map_err(|_| RegexSearchError::CacheError)?;
//
// if fa.match_count(&cache, state) != 0 {}
// }
// skip_bytes = 0;
// }
//
//
// Ok(0)
// }