pub fn parse_partial_expr<'ast, Id, S>(
    arena: ArenaRef<'_, 'ast, Id>,
    symbols: &mut dyn IdentEnv<Ident = Id>,
    type_cache: &TypeCache<Id, ArcType<Id>>,
    input: &S
) -> Result<SpannedExpr<'ast, Id>, (Option<SpannedExpr<'ast, Id>>, ParseErrors)>
where Id: Clone + AsRef<str> + Debug, S: ?Sized + ParserSource,