Index: src/GenPoly/ScrubTyVars.cc
===================================================================
--- src/GenPoly/ScrubTyVars.cc	(revision 32805dbb99ed120ef9921a7fe6fa64ce4be94a49)
+++ src/GenPoly/ScrubTyVars.cc	(revision 6d160d71b3de65956bb910618eeea262ad595278)
@@ -82,13 +82,11 @@
 
 	Type * ScrubTyVars::mutate( PointerType *pointer ) {
-		if ( TypeInstType *typeInst = dynamic_cast< TypeInstType * >( pointer->get_base() ) ) {
-			if ( tyVars.find( typeInst->get_name() ) != tyVars.end() ) {
-				Type *ret = mutate( typeInst );
-				ret->get_qualifiers() += pointer->get_qualifiers();
-				pointer->set_base( 0 );
-				delete pointer;
-				return ret;
-			} // if
-		} // if
+		if ( Type *polyType = isPolyType( pointer->get_base(), tyVars ) ) {
+			Type *ret = polyType->acceptMutator( *this );
+			ret->get_qualifiers() += pointer->get_qualifiers();
+			pointer->set_base( 0 );
+			delete pointer;
+			return ret;
+		}
 		return Mutator::mutate( pointer );
 	}
