Index: src/SynTree/TypeSubstitution.cc
===================================================================
--- src/SynTree/TypeSubstitution.cc	(revision 51b858208ac4ba1dd63af02aa6f808536839b22a)
+++ src/SynTree/TypeSubstitution.cc	(revision a55649200b5601ebf0ca0b430984b9546e7bed94)
@@ -146,12 +146,4 @@
 }
 
-static bool are_same( TypeInstType * left, TypeInstType * right ) {
-	if ( left->baseType && right->baseType ) {
-		return left->baseType == right->baseType;
-	} else {
-		return left->name == right->name;
-	}
-}
-
 Type * TypeSubstitution::Substituter::postmutate( TypeInstType *inst ) {
 	BoundVarsType::const_iterator bound = boundVars.find( inst->name );
@@ -166,5 +158,5 @@
 		// TODO: investigate preventing type variables from being bound to themselves in the first place.
 		if ( TypeInstType * replacement = dynamic_cast< TypeInstType * >( i->second ) ) {
-			if ( are_same( inst, replacement ) ) {
+			if ( inst->name == replacement->name ) {
 				return inst;
 			}
