Index: src/GenPoly/Box.cc
===================================================================
--- src/GenPoly/Box.cc	(revision 906e24deeab82aafdd4cbb08fb896c8ffe5b99e0)
+++ src/GenPoly/Box.cc	(revision 8c49c0e874fb58f676d7d0589d6897e2cf4e9581)
@@ -110,5 +110,5 @@
 			void addInferredParams( ApplicationExpr *appExpr, FunctionType *functionType, std::list< Expression *>::iterator &arg, const TyVarMap &tyVars );
 			/// Stores assignment operators from assertion list in local map of assignment operations
-			void findTypeOps( const std::list< TypeDecl *> &forall );
+			void findTypeOps( const Type::ForallList &forall );
 			void passAdapters( ApplicationExpr *appExpr, FunctionType *functionType, const TyVarMap &exprTyVars );
 			FunctionDecl *makeAdapter( FunctionType *adaptee, FunctionType *realType, const std::string &mangleName, const TyVarMap &tyVars );
@@ -612,8 +612,8 @@
 		}
 
-		void Pass1::findTypeOps( const std::list< TypeDecl *> &forall ) {
+		void Pass1::findTypeOps( const Type::ForallList &forall ) {
 			// what if a nested function uses an assignment operator?
 			// assignOps.clear();
-			for ( std::list< TypeDecl *>::const_iterator i = forall.begin(); i != forall.end(); ++i ) {
+			for ( Type::ForallList::const_iterator i = forall.begin(); i != forall.end(); ++i ) {
 				for ( std::list< DeclarationWithType *>::const_iterator assert = (*i)->get_assertions().begin(); assert != (*i)->get_assertions().end(); ++assert ) {
 					std::string typeName;
@@ -680,5 +680,5 @@
 				std::list< DeclarationWithType *> &paramList = functionType->get_parameters();
 				std::list< FunctionType *> functions;
-				for ( std::list< TypeDecl *>::iterator tyVar = functionType->get_forall().begin(); tyVar != functionType->get_forall().end(); ++tyVar ) {
+				for ( Type::ForallList::iterator tyVar = functionType->get_forall().begin(); tyVar != functionType->get_forall().end(); ++tyVar ) {
 					for ( std::list< DeclarationWithType *>::iterator assert = (*tyVar)->get_assertions().begin(); assert != (*tyVar)->get_assertions().end(); ++assert ) {
 						findFunction( (*assert)->get_type(), functions, scopeTyVars, needsAdapter );
@@ -946,5 +946,5 @@
 		void Pass1::addInferredParams( ApplicationExpr *appExpr, FunctionType *functionType, std::list< Expression *>::iterator &arg, const TyVarMap &tyVars ) {
 			std::list< Expression *>::iterator cur = arg;
-			for ( std::list< TypeDecl *>::iterator tyVar = functionType->get_forall().begin(); tyVar != functionType->get_forall().end(); ++tyVar ) {
+			for ( Type::ForallList::iterator tyVar = functionType->get_forall().begin(); tyVar != functionType->get_forall().end(); ++tyVar ) {
 				for ( std::list< DeclarationWithType *>::iterator assert = (*tyVar)->get_assertions().begin(); assert != (*tyVar)->get_assertions().end(); ++assert ) {
 					InferredParams::const_iterator inferParam = appExpr->get_inferParams().find( (*assert)->get_uniqueId() );
@@ -1013,7 +1013,7 @@
 			Statement *bodyStmt;
 
-			std::list< TypeDecl *>::iterator tyArg = realType->get_forall().begin();
-			std::list< TypeDecl *>::iterator tyParam = adapterType->get_forall().begin();
-			std::list< TypeDecl *>::iterator realTyParam = adaptee->get_forall().begin();
+			Type::ForallList::iterator tyArg = realType->get_forall().begin();
+			Type::ForallList::iterator tyParam = adapterType->get_forall().begin();
+			Type::ForallList::iterator realTyParam = adaptee->get_forall().begin();
 			for ( ; tyParam != adapterType->get_forall().end(); ++tyArg, ++tyParam, ++realTyParam ) {
 				assert( tyArg != realType->get_forall().end() );
@@ -1064,5 +1064,5 @@
 			std::list< DeclarationWithType *> &paramList = functionType->get_parameters();
 			std::list< FunctionType *> functions;
-			for ( std::list< TypeDecl *>::iterator tyVar = functionType->get_forall().begin(); tyVar != functionType->get_forall().end(); ++tyVar ) {
+			for ( Type::ForallList::iterator tyVar = functionType->get_forall().begin(); tyVar != functionType->get_forall().end(); ++tyVar ) {
 				for ( std::list< DeclarationWithType *>::iterator assert = (*tyVar)->get_assertions().begin(); assert != (*tyVar)->get_assertions().end(); ++assert ) {
 					findFunction( (*assert)->get_type(), functions, exprTyVars, needsAdapter );
@@ -1416,7 +1416,7 @@
 					// find each of its needed secondary assignment operators
 					std::list< Expression* > &tyParams = refType->get_parameters();
-					std::list< TypeDecl* > &forallParams = functionDecl->get_type()->get_forall();
+					Type::ForallList &forallParams = functionDecl->get_type()->get_forall();
 					std::list< Expression* >::const_iterator tyIt = tyParams.begin();
-					std::list< TypeDecl* >::const_iterator forallIt = forallParams.begin();
+					Type::ForallList::const_iterator forallIt = forallParams.begin();
 					for ( ; tyIt != tyParams.end() && forallIt != forallParams.end(); ++tyIt, ++forallIt ) {
 						// Add appropriate mapping to assignment expression environment
@@ -1592,5 +1592,5 @@
 			ObjectDecl newPtr( "", DeclarationNode::NoStorageClass, LinkageSpec::C, 0,
 			                   new PointerType( Type::Qualifiers(), new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ) ), 0 );
-			for ( std::list< TypeDecl *>::const_iterator tyParm = funcType->get_forall().begin(); tyParm != funcType->get_forall().end(); ++tyParm ) {
+			for ( Type::ForallList::const_iterator tyParm = funcType->get_forall().begin(); tyParm != funcType->get_forall().end(); ++tyParm ) {
 				ObjectDecl *sizeParm, *alignParm;
 				// add all size and alignment parameters to parameter list
Index: src/GenPoly/CopyParams.cc
===================================================================
--- src/GenPoly/CopyParams.cc	(revision 906e24deeab82aafdd4cbb08fb896c8ffe5b99e0)
+++ src/GenPoly/CopyParams.cc	(revision 8c49c0e874fb58f676d7d0589d6897e2cf4e9581)
@@ -54,5 +54,5 @@
 				std::map< std::string, DeclarationWithType* > assignOps;
 				// assume the assignment operator is the first assert param after any "type" parameter
-				for ( std::list< TypeDecl* >::const_iterator tyVar = funcDecl->get_functionType()->get_forall().begin(); tyVar != funcDecl->get_functionType()->get_forall().end(); ++tyVar ) {
+				for ( Type::ForallList::const_iterator tyVar = funcDecl->get_functionType()->get_forall().begin(); tyVar != funcDecl->get_functionType()->get_forall().end(); ++tyVar ) {
 					if ( (*tyVar)->get_kind() == TypeDecl::Any ) {
 						assert( !(*tyVar)->get_assertions().empty() );
Index: src/GenPoly/FindFunction.cc
===================================================================
--- src/GenPoly/FindFunction.cc	(revision 906e24deeab82aafdd4cbb08fb896c8ffe5b99e0)
+++ src/GenPoly/FindFunction.cc	(revision 8c49c0e874fb58f676d7d0589d6897e2cf4e9581)
@@ -29,5 +29,5 @@
 		virtual Type *mutate( PointerType *pointerType );
 	  private:
-		void handleForall( const std::list< TypeDecl* > &forall );
+		void handleForall( const Type::ForallList &forall );
 
 		std::list< FunctionType* > &functions;
@@ -51,6 +51,6 @@
 	}
 
-	void FindFunction::handleForall( const std::list< TypeDecl* > &forall ) {
-		for ( std::list< TypeDecl* >::const_iterator i = forall.begin(); i != forall.end(); ++i ) {
+	void FindFunction::handleForall( const Type::ForallList &forall ) {
+		for ( Type::ForallList::const_iterator i = forall.begin(); i != forall.end(); ++i ) {
 			TyVarMap::iterator var = tyVars.find( (*i)->get_name() );
 			if ( var != tyVars.end() ) {
Index: src/GenPoly/GenPoly.cc
===================================================================
--- src/GenPoly/GenPoly.cc	(revision 906e24deeab82aafdd4cbb08fb896c8ffe5b99e0)
+++ src/GenPoly/GenPoly.cc	(revision 8c49c0e874fb58f676d7d0589d6897e2cf4e9581)
@@ -110,5 +110,5 @@
 	ReferenceToType *isDynRet( FunctionType *function, const TyVarMap &forallTypes ) {
 		if ( function->get_returnVals().empty() ) return 0;
-		
+
 		return (ReferenceToType*)isDynType( function->get_returnVals().front()->get_type(), forallTypes );
 	}
@@ -127,5 +127,5 @@
 // 		} // if
 		if ( isDynRet( adaptee, tyVars ) ) return true;
-		
+
 		for ( std::list< DeclarationWithType* >::const_iterator innerArg = adaptee->get_parameters().begin(); innerArg != adaptee->get_parameters().end(); ++innerArg ) {
 // 			if ( isPolyType( (*innerArg)->get_type(), tyVars ) ) {
@@ -228,5 +228,5 @@
 
 	void makeTyVarMap( Type *type, TyVarMap &tyVarMap ) {
-		for ( std::list< TypeDecl* >::const_iterator tyVar = type->get_forall().begin(); tyVar != type->get_forall().end(); ++tyVar ) {
+		for ( Type::ForallList::const_iterator tyVar = type->get_forall().begin(); tyVar != type->get_forall().end(); ++tyVar ) {
 			assert( *tyVar );
 			tyVarMap[ (*tyVar)->get_name() ] = (*tyVar)->get_kind();
