Index: src/SymTab/Mangler.cc
===================================================================
--- src/SymTab/Mangler.cc	(revision 58c6432355a66c9e3871781c75e925d1d710b5e4)
+++ src/SymTab/Mangler.cc	(revision a137d5a9a7962d989b77380d498b3c68d47b1339)
@@ -22,4 +22,5 @@
 #include <string>                        // for string, char_traits, operator<<
 
+#include "AST/Pass.hpp"
 #include "CodeGen/OperatorTable.h"       // for OperatorInfo, operatorLookup
 #include "Common/PassVisitor.h"
@@ -31,6 +32,4 @@
 #include "SynTree/Expression.h"          // for TypeExpr, Expression, operator<<
 #include "SynTree/Type.h"                // for Type, ReferenceToType, Type::Fora...
-
-#include "AST/Pass.hpp"
 
 namespace SymTab {
@@ -476,5 +475,5 @@
 				mangleName += std::to_string( decl->name.size() ) + decl->name;
 			} // if
-			maybeAccept( decl->get_type(), *visitor );
+			decl->get_type()->accept( *visitor );
 			if ( mangleOverridable && decl->linkage.is_overrideable ) {
 				// want to be able to override autogenerated and intrinsic routines,
@@ -522,5 +521,5 @@
 			printQualifiers( arrayType );
 			mangleName += Encoding::array + "0";
-			maybeAccept( arrayType->base.get(), *visitor );
+			arrayType->base->accept( *visitor );
 		}
 
@@ -532,5 +531,5 @@
 			inFunctionType = true;
 			printQualifiers( refType );
-			maybeAccept( refType->base.get(), *visitor );
+			refType->base->accept( *visitor );
 		}
 
@@ -561,5 +560,5 @@
 					auto paramType = dynamic_cast< const ast::TypeExpr * >( param );
 					assertf(paramType, "Aggregate parameters should be type expressions: %s", toCString(param));
-					maybeAccept( paramType->type.get(), *visitor );
+					paramType->type->accept( *visitor );
 				}
 				mangleName += "_";
@@ -590,5 +589,5 @@
 				// are equivalent and should mangle the same way. This is accomplished by numbering the type variables when they
 				// are first found and prefixing with the appropriate encoding for the type class.
-				assertf( varNum->second.second < TypeDecl::NUMBER_OF_KINDS, "Unhandled type variable kind: %d", varNum->second.second );
+				assertf( varNum->second.second < ast::TypeDecl::NUMBER_OF_KINDS, "Unhandled type variable kind: %d", varNum->second.second );
 				mangleName += Encoding::typeVariables[varNum->second.second] + std::to_string( varNum->second.first );
 			} // if
@@ -622,12 +621,12 @@
 		void Mangler_new::postvisit( const ast::QualifiedType * qualType ) {
 			bool inqual = inQualifiedType;
-			if (! inqual ) {
+			if ( !inqual ) {
 				// N marks the start of a qualified type
 				inQualifiedType = true;
 				mangleName += Encoding::qualifiedTypeStart;
 			}
-			maybeAccept( qualType->parent.get(), *visitor );
-			maybeAccept( qualType->child.get(), *visitor );
-			if ( ! inqual ) {
+			qualType->parent->accept( *visitor );
+			qualType->child->accept( *visitor );
+			if ( !inqual ) {
 				// E marks the end of a qualified type
 				inQualifiedType = false;
@@ -691,8 +690,8 @@
 				// these qualifiers do not distinguish the outermost type of a function parameter
 				if ( type->is_const() ) {
-					mangleName += Encoding::qualifiers.at(Type::Const);
+					mangleName += Encoding::qualifiers.at( ast::CV::Const );
 				} // if
 				if ( type->is_volatile() ) {
-					mangleName += Encoding::qualifiers.at(Type::Volatile);
+					mangleName += Encoding::qualifiers.at( ast::CV::Volatile );
 				} // if
 				// Removed due to restrict not affecting function compatibility in GCC
@@ -701,9 +700,9 @@
 				// } // if
 				if ( type->is_atomic() ) {
-					mangleName += Encoding::qualifiers.at(Type::Atomic);
+					mangleName += Encoding::qualifiers.at( ast::CV::Atomic );
 				} // if
 			}
 			if ( type->is_mutex() ) {
-				mangleName += Encoding::qualifiers.at(Type::Mutex);
+				mangleName += Encoding::qualifiers.at( ast::CV::Mutex );
 			} // if
 			if ( inFunctionType ) {
