fn gclause<'a>(
bullet: impl Parser<&'a str, &'a str, ErrorTree<&'a str>>,
intro: impl Parser<&'a str, (ClauseIntro, &'a str), ErrorTree<&'a str>>,
remainder: impl Parser<&'a str, ASTNode, ErrorTree<&'a str>>,
) -> impl FnMut(&'a str) -> IResult<&'a str, ASTNode, ErrorTree<&'a str>>