Move existing C++ mangler into a visitor class