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