pub fn fold_variant<F>(f: &mut F, node: Variant) -> Variant where
    F: Fold + ?Sized