Index: src/GenPoly/Box.cc
===================================================================
--- src/GenPoly/Box.cc	(revision 78dd0da46b655b629d14117130a2cf1ecf113a4c)
+++ src/GenPoly/Box.cc	(revision ffad73aefa957693bcf94ebf6ac5c171bb476ce3)
@@ -155,5 +155,5 @@
 			// with the same mangled name, so we need to further mangle the names.
 			for ( std::list< DeclarationWithType *>::iterator retval = function->get_returnVals().begin(); retval != function->get_returnVals().end(); ++retval ) {
-				if ( isPolyVal( (*retval)->get_type(), tyVars ) ) {
+				if ( isPolyType( (*retval)->get_type(), tyVars ) ) {
 					name << "P";
 				} else {
@@ -164,5 +164,5 @@
 			std::list< DeclarationWithType *> &paramList = function->get_parameters();
 			for ( std::list< DeclarationWithType *>::iterator arg = paramList.begin(); arg != paramList.end(); ++arg ) {
-				if ( isPolyVal( (*arg)->get_type(), tyVars ) ) {
+				if ( isPolyType( (*arg)->get_type(), tyVars ) ) {
 					name << "P";
 				} else {
@@ -326,21 +326,4 @@
 		}
 
-		TypeInstType *isPolyType( Type *type, const TypeSubstitution *env, const TyVarMap &tyVars ) {
-			if ( TypeInstType *typeInst = dynamic_cast< TypeInstType *>( type ) ) {
-				if ( env ) {
-					if ( Type *newType = env->lookup( typeInst->get_name() ) ) {
-						return isPolyType( newType, env, tyVars );
-					} // if
-				} // if
-				if ( tyVars.find( typeInst->get_name() ) != tyVars.end() ) {
-					return typeInst;
-				} else {
-					return 0;
-				} // if
-			} else {
-				return 0;
-			} // if
-		}
-
 		Expression *Pass1::addRetParam( ApplicationExpr *appExpr, FunctionType *function, Type *retType, std::list< Expression *>::iterator &arg ) {
 			if ( useRetval ) {
@@ -351,5 +334,5 @@
 				ObjectDecl *newObj = makeTemporary( retType->clone() );
 				Expression *paramExpr = new VariableExpr( newObj );
-				if ( ! isPolyType( newObj->get_type(), env, scopeTyVars ) ) {
+				if ( ! isPolyType( newObj->get_type(), scopeTyVars, env ) ) {
 					paramExpr = new AddressExpr( paramExpr );
 				} // if
@@ -377,5 +360,5 @@
 		Expression *Pass1::applyAdapter( ApplicationExpr *appExpr, FunctionType *function, std::list< Expression *>::iterator &arg, const TyVarMap &tyVars ) {
 			Expression *ret = appExpr;
-			if ( ! function->get_returnVals().empty() && isPolyVal( function->get_returnVals().front()->get_type(), tyVars ) ) {
+			if ( ! function->get_returnVals().empty() && isPolyType( function->get_returnVals().front()->get_type(), tyVars ) ) {
 				ret = addRetParam( appExpr, function, function->get_returnVals().front()->get_type(), arg );
 			} // if
@@ -391,5 +374,5 @@
 		void Pass1::boxParam( Type *param, Expression *&arg, const TyVarMap &exprTyVars ) {
 			assert( ! arg->get_results().empty() );
-///   if ( ! dynamic_cast< PointerType *>( arg->get_results().front() ) ) {
+//   if ( ! dynamic_cast< PointerType *>( arg->get_results().front() ) ) {
 			TypeInstType *typeInst = dynamic_cast< TypeInstType *>( param );
 			if ( typeInst && exprTyVars.find( typeInst->get_name() ) != exprTyVars.end() ) {
@@ -411,5 +394,5 @@
 				} // if
 			} // if
-///   }
+//   }
 		}
 
@@ -469,5 +452,5 @@
 			// actually make the adapter type
 			FunctionType *adapter = adaptee->clone();
-			if ( ! adapter->get_returnVals().empty() && isPolyVal( adapter->get_returnVals().front()->get_type(), tyVars ) ) {
+			if ( ! adapter->get_returnVals().empty() && isPolyType( adapter->get_returnVals().front()->get_type(), tyVars ) ) {
 				makeRetParm( adapter );
 			} // if
@@ -479,14 +462,8 @@
 			assert( param );
 			assert( arg );
-///   std::cout << "arg type is ";
-///   arg->get_type()->print( std::cout );
-///   std::cout << "param type is ";
-///   param->get_type()->print( std::cout );
-///   std::cout << " tyVars are: ";
-///   printTyVarMap( std::cout, tyVars );
-			if ( isPolyVal( realParam->get_type(), tyVars ) ) {
-///     if ( dynamic_cast< PointerType *>( arg->get_type() ) ) {
-///       return new CastExpr( new VariableExpr( param ), arg->get_type()->clone() );
-///     } else {
+			if ( isPolyType( realParam->get_type(), tyVars ) ) {
+//     if ( dynamic_cast< PointerType *>( arg->get_type() ) ) {
+//       return new CastExpr( new VariableExpr( param ), arg->get_type()->clone() );
+//     } else {
 				if ( dynamic_cast<TypeInstType *>(arg->get_type()) == NULL ) {
 					UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
@@ -495,5 +472,5 @@
 					return deref;
 				} // if
-///     }
+//     }
 			} // if
 			return new VariableExpr( param );
@@ -542,5 +519,5 @@
 				addAdapterParams( adapteeApp, arg, param, adapterType->get_parameters().end(), realParam, tyVars );
 				bodyStmt = new ExprStmt( noLabels, adapteeApp );
-			} else if ( isPolyVal( adaptee->get_returnVals().front()->get_type(), tyVars ) ) {
+			} else if ( isPolyType( adaptee->get_returnVals().front()->get_type(), tyVars ) ) {
 				if ( (*param)->get_name() == "" ) {
 					(*param)->set_name( "_ret" );
@@ -614,30 +591,4 @@
 		} // passAdapters
 
-		TypeInstType *isPolyPtr( Type *type, const TypeSubstitution *env, const TyVarMap &tyVars ) {
-			if ( PointerType *ptr = dynamic_cast< PointerType *>( type ) ) {
-				return isPolyType( ptr->get_base(), env, tyVars );
-			} else if ( env ) {
-				if ( TypeInstType *typeInst = dynamic_cast< TypeInstType *>( type ) ) {
-					if ( Type *newType = env->lookup( typeInst->get_name() ) ) {
-						return isPolyPtr( newType, env, tyVars );
-					} // if
-				} // if
-			} // if
-			return 0;
-		}
-
-		TypeInstType *isPolyPtrPtr( Type *type, const TypeSubstitution *env, const TyVarMap &tyVars ) {
-			if ( PointerType *ptr = dynamic_cast< PointerType *>( type ) ) {
-				return isPolyPtr( ptr->get_base(), env, tyVars );
-			} else if ( env ) {
-				if ( TypeInstType *typeInst = dynamic_cast< TypeInstType *>( type ) ) {
-					if ( Type *newType = env->lookup( typeInst->get_name() ) ) {
-						return isPolyPtrPtr( newType, env, tyVars );
-					} // if
-				} // if
-			} // if
-			return 0;
-		}
-
 		Expression *makeIncrDecrExpr( ApplicationExpr *appExpr, Type *polyType, bool isIncr ) {
 			NameExpr *opExpr;
@@ -670,25 +621,25 @@
 						assert( ! appExpr->get_results().empty() );
 						assert( appExpr->get_args().size() == 2 );
-						TypeInstType *typeInst1 = isPolyPtr( appExpr->get_args().front()->get_results().front(), env, scopeTyVars );
-						TypeInstType *typeInst2 = isPolyPtr( appExpr->get_args().back()->get_results().front(), env, scopeTyVars );
-						assert( ! typeInst1 || ! typeInst2 );
+						Type *baseType1 = isPolyPtr( appExpr->get_args().front()->get_results().front(), scopeTyVars, env );
+						Type *baseType2 = isPolyPtr( appExpr->get_args().back()->get_results().front(), scopeTyVars, env );
+						assert( ! baseType1 || ! baseType2 );
 						UntypedExpr *ret = 0;
-						if ( typeInst1 || typeInst2 ) {
+						if ( baseType1 || baseType2 ) {
 							ret = new UntypedExpr( new NameExpr( "?+?" ) );
 						} // if
-						if ( typeInst1 ) {
+						if ( baseType1 ) {
 							UntypedExpr *multiply = new UntypedExpr( new NameExpr( "?*?" ) );
 							multiply->get_args().push_back( appExpr->get_args().back() );
-							multiply->get_args().push_back( new NameExpr( sizeofName( typeInst1 ) ) );
+							multiply->get_args().push_back( new NameExpr( sizeofName( baseType1 ) ) );
 							ret->get_args().push_back( appExpr->get_args().front() );
 							ret->get_args().push_back( multiply );
-						} else if ( typeInst2 ) {
+						} else if ( baseType2 ) {
 							UntypedExpr *multiply = new UntypedExpr( new NameExpr( "?*?" ) );
 							multiply->get_args().push_back( appExpr->get_args().front() );
-							multiply->get_args().push_back( new NameExpr( sizeofName( typeInst2 ) ) );
+							multiply->get_args().push_back( new NameExpr( sizeofName( baseType2 ) ) );
 							ret->get_args().push_back( multiply );
 							ret->get_args().push_back( appExpr->get_args().back() );
 						} // if
-						if ( typeInst1 || typeInst2 ) {
+						if ( baseType1 || baseType2 ) {
 							ret->get_results().push_front( appExpr->get_results().front()->clone() );
 							if ( appExpr->get_env() ) {
@@ -703,5 +654,5 @@
 						assert( ! appExpr->get_results().empty() );
 						assert( ! appExpr->get_args().empty() );
-						if ( isPolyType( appExpr->get_results().front(), env, scopeTyVars ) ) {
+						if ( isPolyType( appExpr->get_results().front(), scopeTyVars, env ) ) {
 							Expression *ret = appExpr->get_args().front();
 							delete ret->get_results().front();
@@ -718,5 +669,5 @@
 						assert( ! appExpr->get_results().empty() );
 						assert( appExpr->get_args().size() == 1 );
-						if ( TypeInstType *typeInst = isPolyPtr( appExpr->get_results().front(), env, scopeTyVars ) ) {
+						if ( Type *baseType = isPolyPtr( appExpr->get_results().front(), scopeTyVars, env ) ) {
 							Type *tempType = appExpr->get_results().front()->clone();
 							if ( env ) {
@@ -732,5 +683,5 @@
 								assignExpr->get_args().push_back( appExpr->get_args().front()->clone() );
 							} // if
-							CommaExpr *firstComma = new CommaExpr( assignExpr, makeIncrDecrExpr( appExpr, typeInst, varExpr->get_var()->get_name() == "?++" ) );
+							CommaExpr *firstComma = new CommaExpr( assignExpr, makeIncrDecrExpr( appExpr, baseType, varExpr->get_var()->get_name() == "?++" ) );
 							return new CommaExpr( firstComma, tempExpr );
 						} // if
@@ -738,16 +689,16 @@
 						assert( ! appExpr->get_results().empty() );
 						assert( appExpr->get_args().size() == 1 );
-						if ( TypeInstType *typeInst = isPolyPtr( appExpr->get_results().front(), env, scopeTyVars ) ) {
-							return makeIncrDecrExpr( appExpr, typeInst, varExpr->get_var()->get_name() == "++?" );
+						if ( Type *baseType = isPolyPtr( appExpr->get_results().front(), scopeTyVars, env ) ) {
+							return makeIncrDecrExpr( appExpr, baseType, varExpr->get_var()->get_name() == "++?" );
 						} // if
 					} else if ( varExpr->get_var()->get_name() == "?+?" || varExpr->get_var()->get_name() == "?-?" ) {
 						assert( ! appExpr->get_results().empty() );
 						assert( appExpr->get_args().size() == 2 );
-						TypeInstType *typeInst1 = isPolyPtr( appExpr->get_args().front()->get_results().front(), env, scopeTyVars );
-						TypeInstType *typeInst2 = isPolyPtr( appExpr->get_args().back()->get_results().front(), env, scopeTyVars );
-						if ( typeInst1 && typeInst2 ) {
+						Type *baseType1 = isPolyPtr( appExpr->get_args().front()->get_results().front(), scopeTyVars, env );
+						Type *baseType2 = isPolyPtr( appExpr->get_args().back()->get_results().front(), scopeTyVars, env );
+						if ( baseType1 && baseType2 ) {
 							UntypedExpr *divide = new UntypedExpr( new NameExpr( "?/?" ) );
 							divide->get_args().push_back( appExpr );
-							divide->get_args().push_back( new NameExpr( sizeofName( typeInst1 ) ) );
+							divide->get_args().push_back( new NameExpr( sizeofName( baseType1 ) ) );
 							divide->get_results().push_front( appExpr->get_results().front()->clone() );
 							if ( appExpr->get_env() ) {
@@ -756,13 +707,13 @@
 							} // if
 							return divide;
-						} else if ( typeInst1 ) {
+						} else if ( baseType1 ) {
 							UntypedExpr *multiply = new UntypedExpr( new NameExpr( "?*?" ) );
 							multiply->get_args().push_back( appExpr->get_args().back() );
-							multiply->get_args().push_back( new NameExpr( sizeofName( typeInst1 ) ) );
+							multiply->get_args().push_back( new NameExpr( sizeofName( baseType1 ) ) );
 							appExpr->get_args().back() = multiply;
-						} else if ( typeInst2 ) {
+						} else if ( baseType2 ) {
 							UntypedExpr *multiply = new UntypedExpr( new NameExpr( "?*?" ) );
 							multiply->get_args().push_back( appExpr->get_args().front() );
-							multiply->get_args().push_back( new NameExpr( sizeofName( typeInst2 ) ) );
+							multiply->get_args().push_back( new NameExpr( sizeofName( baseType2 ) ) );
 							appExpr->get_args().front() = multiply;
 						} // if
@@ -770,9 +721,9 @@
 						assert( ! appExpr->get_results().empty() );
 						assert( appExpr->get_args().size() == 2 );
-						TypeInstType *typeInst = isPolyPtr( appExpr->get_results().front(), env, scopeTyVars );
-						if ( typeInst ) {
+						Type *baseType = isPolyPtr( appExpr->get_results().front(), scopeTyVars, env );
+						if ( baseType ) {
 							UntypedExpr *multiply = new UntypedExpr( new NameExpr( "?*?" ) );
 							multiply->get_args().push_back( appExpr->get_args().back() );
-							multiply->get_args().push_back( new NameExpr( sizeofName( typeInst ) ) );
+							multiply->get_args().push_back( new NameExpr( sizeofName( baseType ) ) );
 							appExpr->get_args().back() = multiply;
 						} // if
@@ -841,5 +792,5 @@
 
 		Expression *Pass1::mutate( UntypedExpr *expr ) {
-			if ( ! expr->get_results().empty() && isPolyType( expr->get_results().front(), env, scopeTyVars ) ) {
+			if ( ! expr->get_results().empty() && isPolyType( expr->get_results().front(), scopeTyVars, env ) ) {
 				if ( NameExpr *name = dynamic_cast< NameExpr *>( expr->get_function() ) ) {
 					if ( name->get_name() == "*?" ) {
@@ -857,5 +808,5 @@
 			assert( ! addrExpr->get_arg()->get_results().empty() );
 			addrExpr->set_arg( mutateExpression( addrExpr->get_arg() ) );
-			if ( isPolyType( addrExpr->get_arg()->get_results().front(), env, scopeTyVars ) ) {
+			if ( isPolyType( addrExpr->get_arg()->get_results().front(), scopeTyVars, env ) ) {
 				Expression *ret = addrExpr->get_arg();
 				delete ret->get_results().front();
@@ -1104,11 +1055,10 @@
 		Statement *Pass3::mutate( DeclStmt *declStmt ) {
 			if ( ObjectDecl *objectDecl = dynamic_cast< ObjectDecl *>( declStmt->get_decl() ) ) {
-				if ( isPolyVal( objectDecl->get_type(), scopeTyVars ) ) {
+				if ( isPolyType( objectDecl->get_type(), scopeTyVars ) ) {
 					// change initialization of a polymorphic value object
 					// to allocate storage with alloca
-					TypeInstType *typeInst = dynamic_cast< TypeInstType *>( objectDecl->get_type() );
-					assert( typeInst );
+					Type *declType = objectDecl->get_type();
 					UntypedExpr *alloc = new UntypedExpr( new NameExpr( "__builtin_alloca" ) );
-					alloc->get_args().push_back( new NameExpr( sizeofName( typeInst ) ) );
+					alloc->get_args().push_back( new NameExpr( sizeofName( declType ) ) );
 
 					delete objectDecl->get_init();
Index: src/GenPoly/GenPoly.cc
===================================================================
--- src/GenPoly/GenPoly.cc	(revision 78dd0da46b655b629d14117130a2cf1ecf113a4c)
+++ src/GenPoly/GenPoly.cc	(revision ffad73aefa957693bcf94ebf6ac5c171bb476ce3)
@@ -15,4 +15,7 @@
 
 #include "GenPoly.h"
+
+#include "SymTab/Mangler.h"
+#include "SynTree/Expression.h"
 #include "SynTree/Type.h"
 
@@ -21,12 +24,10 @@
 
 namespace GenPoly {
-	/// A function needs an adapter if it returns a polymorphic value or if any of its
-	/// parameters have polymorphic type
 	bool needsAdapter( FunctionType *adaptee, const TyVarMap &tyVars ) {
-		if ( ! adaptee->get_returnVals().empty() && isPolyVal( adaptee->get_returnVals().front()->get_type(), tyVars ) ) {
+		if ( ! adaptee->get_returnVals().empty() && isPolyType( adaptee->get_returnVals().front()->get_type(), tyVars ) ) {
 			return true;
 		} // if
 		for ( std::list< DeclarationWithType* >::const_iterator innerArg = adaptee->get_parameters().begin(); innerArg != adaptee->get_parameters().end(); ++innerArg ) {
-			if ( isPolyVal( (*innerArg)->get_type(), tyVars ) ) {
+			if ( isPolyType( (*innerArg)->get_type(), tyVars ) ) {
 				return true;
 			} // if
@@ -66,21 +67,45 @@
 	}
 
-	bool isPolyVal( Type *type, const TyVarMap &tyVars ) {
-		if ( TypeInstType *typeInst = dynamic_cast< TypeInstType * >( type ) ) {
+	namespace {
+		/// Checks a parameter list for polymorphic parameters
+		bool hasPolyParams( std::list< Expression* >& params, const TyVarMap &tyVars, const TypeSubstitution *env ) {
+			for ( std::list< Expression* >::iterator param = params.begin(); param != params.end(); ++param ) {
+				TypeExpr *paramType = dynamic_cast< TypeExpr* >( *param );
+				assert(paramType && "Aggregate parameters should be type expressions");
+				if ( isPolyType( paramType->get_type(), tyVars, env ) ) return true;
+			}
+			return false;
+		}
+	}
+	
+	Type *isPolyType( Type *type, const TyVarMap &tyVars, const TypeSubstitution *env ) {
+		if ( TypeInstType *typeInst = dynamic_cast< TypeInstType* >( type ) ) {
+			if ( env ) {
+				if ( Type *newType = env->lookup( typeInst->get_name() ) ) {
+					return isPolyType( newType, tyVars, env );
+				} // if
+			} // if
 			if ( tyVars.find( typeInst->get_name() ) != tyVars.end() ) {
-				return true;
+				return type;
+			}
+		} else if ( StructInstType *structType = dynamic_cast< StructInstType* >( type ) ) {
+			if ( hasPolyParams( structType->get_parameters(), tyVars, env ) ) return type;
+		} else if ( UnionInstType *unionType = dynamic_cast< UnionInstType* >( type ) ) {
+			if ( hasPolyParams( unionType->get_parameters(), tyVars, env ) ) return type;
+		}
+		return 0;
+	}
+
+	Type *isPolyPtr( Type *type, const TyVarMap &tyVars, const TypeSubstitution *env ) {
+		if ( PointerType *ptr = dynamic_cast< PointerType *>( type ) ) {
+			return isPolyType( ptr->get_base(), tyVars, env );
+		} else if ( env ) {
+			if ( TypeInstType *typeInst = dynamic_cast< TypeInstType *>( type ) ) {
+				if ( Type *newType = env->lookup( typeInst->get_name() ) ) {
+					return isPolyPtr( newType, tyVars, env );
+				} // if
 			} // if
 		} // if
-		return false;
-	}
-
-	bool isPolyObj( Type *type, const TyVarMap &tyVars ) {
-		if ( isPolyVal( type, tyVars ) ) {
-			return true;
-		} else if ( PointerType *pt = dynamic_cast<PointerType*>( type ) ) {
-			return isPolyObj( pt->get_base(), tyVars );
-		} else {
-			return false;
-		}
+		return 0;
 	}
 
@@ -91,4 +116,12 @@
 		os << std::endl;
 	}
+
+	std::string sizeofName( Type *ty ) {
+		return std::string( "_sizeof_" ) + SymTab::Mangler::mangle( ty, false, false );
+	}
+
+	std::string alignofName( Type *ty ) {
+		return std::string( "_alignof_" ) + SymTab::Mangler::mangle( ty, false, false );
+	}
 } // namespace GenPoly
 
Index: src/GenPoly/GenPoly.h
===================================================================
--- src/GenPoly/GenPoly.h	(revision 78dd0da46b655b629d14117130a2cf1ecf113a4c)
+++ src/GenPoly/GenPoly.h	(revision ffad73aefa957693bcf94ebf6ac5c171bb476ce3)
@@ -20,19 +20,34 @@
 #include <string>
 #include <iostream>
+
 #include "SynTree/Declaration.h"
+#include "SynTree/TypeSubstitution.h"
 
 namespace GenPoly {
 	typedef std::map< std::string, TypeDecl::Kind > TyVarMap;
 
+	/// A function needs an adapter if it returns a polymorphic value or if any of its
+	/// parameters have polymorphic type
 	bool needsAdapter( FunctionType *adaptee, const TyVarMap &tyVarr );
+
+	/// true iff function has polymorphic return type
 	bool isPolyRet( FunctionType *function, std::string &name, const TyVarMap &otherTyVars );
 	bool isPolyRet( FunctionType *function, std::string &name );
 	bool isPolyRet( FunctionType *function, const TyVarMap &otherTyVars );
-//	bool isPolyFun( FunctionType *fun, const TyVarMap &tyVars );
-	bool isPolyVal( Type *type, const TyVarMap &tyVars );
 
-  // true if type variable or any number of pointers to type variable 
-  bool isPolyObj( Type *type, const TyVarMap &tyVars );
+	/// returns polymorphic type if is polymorphic type, NULL otherwise; will look up substitution in env if provided
+	Type *isPolyType( Type *type, const TyVarMap &tyVars, const TypeSubstitution *env = 0 );
+
+	/// returns polymorphic type if is pointer to polymorphic type, NULL otherwise; will look up substitution in env if provided
+	Type *isPolyPtr( Type *type, const TyVarMap &tyVars, const TypeSubstitution *env = 0 );
+
+	/// Prints type variable map
 	void printTyVarMap( std::ostream &os, const TyVarMap &tyVarMap );
+
+	/// Gets the name of the sizeof parameter for the type
+	std::string sizeofName( Type *ty );
+
+	/// Gets the name of the alignof parameter for the type
+	std::string alignofName( Type *ty );
 } // namespace GenPoly
 
Index: src/GenPoly/ScrubTyVars.cc
===================================================================
--- src/GenPoly/ScrubTyVars.cc	(revision 78dd0da46b655b629d14117130a2cf1ecf113a4c)
+++ src/GenPoly/ScrubTyVars.cc	(revision ffad73aefa957693bcf94ebf6ac5c171bb476ce3)
@@ -19,6 +19,4 @@
 #include "GenPoly.h"
 #include "ScrubTyVars.h"
-
-#include "SymTab/Mangler.h"
 
 #include "SynTree/Mutator.h"
@@ -78,12 +76,4 @@
 		return Mutator::mutate( pointer );
 	}
-	
-	std::string sizeofName( Type *ty ) {
-		return std::string( "_sizeof_" ) + SymTab::Mangler::mangle( ty, false, false );
-	}
-
-	std::string alignofName( Type *ty ) {
-		return std::string( "_alignof_" ) + SymTab::Mangler::mangle( ty, false, false );
-	}
 } // namespace GenPoly
 
Index: src/GenPoly/ScrubTyVars.h
===================================================================
--- src/GenPoly/ScrubTyVars.h	(revision 78dd0da46b655b629d14117130a2cf1ecf113a4c)
+++ src/GenPoly/ScrubTyVars.h	(revision ffad73aefa957693bcf94ebf6ac5c171bb476ce3)
@@ -59,10 +59,4 @@
 		return static_cast< SynTreeClass* >( target->acceptMutator( scrubber ) );
 	}
-
-	/// Gets the name of the sizeof parameter for the type
-	std::string sizeofName( Type *ty );
-
-	/// Gets the name of the alignof parameter for the type
-	std::string alignofName( Type *ty );
 } // namespace GenPoly
 
