Index: src/GenPoly/Box.cc
===================================================================
--- src/GenPoly/Box.cc	(revision 474a170607306d8a8de9d85a373aa6a5efa1554f)
+++ src/GenPoly/Box.cc	(revision d18540f99534f71024502e28056fde6510532cc6)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Dec 13 23:40:34 2019
-// Update Count     : 347
+// Last Modified By : Andrew Beach
+// Last Modified On : Mon Dec 19 16:36:00 2022
+// Update Count     : 348
 //
 
@@ -214,8 +214,5 @@
 		/// sizeof expressions of polymorphic types with the proper variable,
 		/// and strips fields from generic struct declarations.
-		struct Pass3 final : public BoxPass, public WithGuards {
-			template< typename DeclClass >
-			void handleDecl( DeclClass * decl, Type * type );
-
+		struct Pass3 final {
 			void premutate( ObjectDecl * objectDecl );
 			void premutate( FunctionDecl * functionDecl );
@@ -223,7 +220,4 @@
 			void premutate( StructDecl * structDecl );
 			void premutate( UnionDecl * unionDecl );
-			void premutate( TypeDecl * typeDecl );
-			void premutate( PointerType * pointerType );
-			void premutate( FunctionType * funcType );
 		};
 	} // anonymous namespace
@@ -1886,25 +1880,18 @@
 ////////////////////////////////////////// Pass3 ////////////////////////////////////////////////////
 
-		template< typename DeclClass >
-		void Pass3::handleDecl( DeclClass * decl, Type * type ) {
-			GuardScope( scopeTyVars );
-			makeTyVarMap( type, scopeTyVars );
-			ScrubTyVars::scrubAll( decl );
-		}
-
 		void Pass3::premutate( ObjectDecl * objectDecl ) {
-			handleDecl( objectDecl, objectDecl->type );
+			ScrubTyVars::scrubAll( objectDecl );
 		}
 
 		void Pass3::premutate( FunctionDecl * functionDecl ) {
-			handleDecl( functionDecl, functionDecl->type );
+			ScrubTyVars::scrubAll( functionDecl );
 		}
 
 		void Pass3::premutate( TypedefDecl * typedefDecl ) {
-			handleDecl( typedefDecl, typedefDecl->base );
+			ScrubTyVars::scrubAll( typedefDecl );
 		}
 
 		/// Strips the members from a generic aggregate
-		void stripGenericMembers(AggregateDecl * decl) {
+		static void stripGenericMembers( AggregateDecl * decl ) {
 			if ( ! decl->parameters.empty() ) decl->members.clear();
 		}
@@ -1916,18 +1903,4 @@
 		void Pass3::premutate( UnionDecl * unionDecl ) {
 			stripGenericMembers( unionDecl );
-		}
-
-		void Pass3::premutate( TypeDecl * typeDecl ) {
-			addToTyVarMap( typeDecl, scopeTyVars );
-		}
-
-		void Pass3::premutate( PointerType * pointerType ) {
-			GuardScope( scopeTyVars );
-			makeTyVarMap( pointerType, scopeTyVars );
-		}
-
-		void Pass3::premutate( FunctionType * functionType ) {
-			GuardScope( scopeTyVars );
-			makeTyVarMap( functionType, scopeTyVars );
 		}
 	} // anonymous namespace
@@ -1939,3 +1912,2 @@
 // compile-command: "make install" //
 // End: //
-
