pub fn fold_calc_product<V: ?Sized + Fold>(
    _visitor: &mut V,
    n: CalcProduct
) -> CalcProduct