pub fn walk_pattern<'a, 'b, V>(
    visitor: &mut V,
    pattern: &'b Pattern
) -> Option<Pattern>
where V: ?Sized + Visitor<'a, 'b>,