pub(crate) trait Visitable<'a, V: Visitor<'a>> {
    type Extra: Copy;
    // Required method
    fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result;
}pub(crate) trait Visitable<'a, V: Visitor<'a>> {
    type Extra: Copy;
    // Required method
    fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result;
}