pub fn parse<T: Extract<T>>( input: &str, language: impl Fn() -> Language, ) -> Result<T, Vec<ParseError>>