Index: src/AST/Pass.hpp
===================================================================
--- src/AST/Pass.hpp	(revision d1ee9ec12dacaf319a5010a5446241854fcc1353)
+++ src/AST/Pass.hpp	(revision c408483dfd8a99c444ef5b7c839275eb9206a18d)
@@ -343,6 +343,6 @@
 extern struct PassVisitorStats {
 	size_t depth = 0;
-	Stats::Counters::MaxCounter<double> * max = nullptr;
-	Stats::Counters::AverageCounter<double> * avg = nullptr;
+	Stats::Counters::MaxCounter<double> * max;
+	Stats::Counters::AverageCounter<double> * avg;
 } pass_visitor_stats;
 }
Index: src/AST/Pass.proto.hpp
===================================================================
--- src/AST/Pass.proto.hpp	(revision d1ee9ec12dacaf319a5010a5446241854fcc1353)
+++ src/AST/Pass.proto.hpp	(revision c408483dfd8a99c444ef5b7c839275eb9206a18d)
@@ -84,5 +84,5 @@
 		};
 
-		std::stack< cleanup_t > cleanups;
+		std::stack< cleanup_t, std::vector<cleanup_t> > cleanups;
 	};
 
Index: src/Common/PassVisitor.proto.h
===================================================================
--- src/Common/PassVisitor.proto.h	(revision d1ee9ec12dacaf319a5010a5446241854fcc1353)
+++ src/Common/PassVisitor.proto.h	(revision c408483dfd8a99c444ef5b7c839275eb9206a18d)
@@ -38,5 +38,5 @@
 	};
 
-	std::stack< cleanup_t > cleanups;
+	std::stack< cleanup_t, std::vector<cleanup_t> > cleanups;
 };
 
Index: src/ResolvExpr/Resolver.cc
===================================================================
--- src/ResolvExpr/Resolver.cc	(revision d1ee9ec12dacaf319a5010a5446241854fcc1353)
+++ src/ResolvExpr/Resolver.cc	(revision c408483dfd8a99c444ef5b7c839275eb9206a18d)
@@ -1072,5 +1072,5 @@
 		/// Strips extraneous casts out of an expression
 		struct StripCasts_new final {
-			const ast::Expr * postmutate( const ast::CastExpr * castExpr ) {
+			const ast::Expr * postvisit( const ast::CastExpr * castExpr ) {
 				if (
 					castExpr->isGenerated == ast::GeneratedCast
Index: src/SymTab/FixFunction.cc
===================================================================
--- src/SymTab/FixFunction.cc	(revision d1ee9ec12dacaf319a5010a5446241854fcc1353)
+++ src/SymTab/FixFunction.cc	(revision c408483dfd8a99c444ef5b7c839275eb9206a18d)
@@ -106,7 +106,7 @@
 		bool isVoid = false;
 
-		void premutate( const ast::FunctionDecl * ) { visit_children = false; }
+		void previsit( const ast::FunctionDecl * ) { visit_children = false; }
 
-		const ast::DeclWithType * postmutate( const ast::FunctionDecl * func ) {
+		const ast::DeclWithType * postvisit( const ast::FunctionDecl * func ) {
 			return new ast::ObjectDecl{ 
 				func->location, func->name, new ast::PointerType{ func->type }, nullptr, 
@@ -114,7 +114,7 @@
 		}
 
-		void premutate( const ast::ArrayType * ) { visit_children = false; }
+		void previsit( const ast::ArrayType * ) { visit_children = false; }
 
-		const ast::Type * postmutate( const ast::ArrayType * array ) {
+		const ast::Type * postvisit( const ast::ArrayType * array ) {
 			return new ast::PointerType{ 
 				array->base, array->dimension, array->isVarLen, array->isStatic, 
@@ -122,17 +122,17 @@
 		}
 
-		void premutate( const ast::VoidType * ) { isVoid = true; }
+		void previsit( const ast::VoidType * ) { isVoid = true; }
 
-		void premutate( const ast::BasicType * ) { visit_children = false; }
-		void premutate( const ast::PointerType * ) { visit_children = false; }
-		void premutate( const ast::StructInstType * ) { visit_children = false; }
-		void premutate( const ast::UnionInstType * ) { visit_children = false; }
-		void premutate( const ast::EnumInstType * ) { visit_children = false; }
-		void premutate( const ast::TraitInstType * ) { visit_children = false; }
-		void premutate( const ast::TypeInstType * ) { visit_children = false; }
-		void premutate( const ast::TupleType * ) { visit_children = false; }
-		void premutate( const ast::VarArgsType * ) { visit_children = false; }
-		void premutate( const ast::ZeroType * ) { visit_children = false; }
-		void premutate( const ast::OneType * ) { visit_children = false; }
+		void previsit( const ast::BasicType * ) { visit_children = false; }
+		void previsit( const ast::PointerType * ) { visit_children = false; }
+		void previsit( const ast::StructInstType * ) { visit_children = false; }
+		void previsit( const ast::UnionInstType * ) { visit_children = false; }
+		void previsit( const ast::EnumInstType * ) { visit_children = false; }
+		void previsit( const ast::TraitInstType * ) { visit_children = false; }
+		void previsit( const ast::TypeInstType * ) { visit_children = false; }
+		void previsit( const ast::TupleType * ) { visit_children = false; }
+		void previsit( const ast::VarArgsType * ) { visit_children = false; }
+		void previsit( const ast::ZeroType * ) { visit_children = false; }
+		void previsit( const ast::OneType * ) { visit_children = false; }
 	};
 } // anonymous namespace
Index: src/Tuples/Explode.cc
===================================================================
--- src/Tuples/Explode.cc	(revision d1ee9ec12dacaf319a5010a5446241854fcc1353)
+++ src/Tuples/Explode.cc	(revision c408483dfd8a99c444ef5b7c839275eb9206a18d)
@@ -147,5 +147,5 @@
 	}
 
-	const ast::Expr * postmutate( const ast::UniqueExpr * node ) {
+	const ast::Expr * postvisit( const ast::UniqueExpr * node ) {
 		// move cast into unique expr so that the unique expr has type T& rather than
 		// type T. In particular, this transformation helps with generating the
@@ -166,5 +166,5 @@
 	}
 
-	const ast::Expr * postmutate( const ast::TupleIndexExpr * tupleExpr ) {
+	const ast::Expr * postvisit( const ast::TupleIndexExpr * tupleExpr ) {
 		// tuple index expr needs to be rebuilt to ensure that the type of the
 		// field is consistent with the type of the tuple expr, since the field
