pub fn fold_pattern<U, F: Fold<U> + ?Sized>( folder: &mut F, node: Pattern<U>, ) -> Result<Pattern<F::TargetU>, F::Error>