pub fn infer_root( e: ExprNodeId, builtin_types: &[(Symbol, TypeNodeId)], ) -> Result<InferContext, Error>