Why you need a separate `CppMangleState` class? You can declare non-static `Objects components` field in `CppMangleVisitor` and move `CppMangleState::substitute` into `CppMangleVisitor`.