Index: src/GenPoly/Box.cc
===================================================================
--- src/GenPoly/Box.cc	(revision f8b961b2dbd5821dc28db05e5097a385b8179c88)
+++ src/GenPoly/Box.cc	(revision 000b91461ad0e359270c7c905f8ef8e11e4fee0e)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Rob Schluntz
-// Last Modified On : Thu Nov 26 17:01:55 2015
-// Update Count     : 191
+// Last Modified On : Wed Dec 02 11:52:37 2015
+// Update Count     : 201
 //
 
@@ -186,4 +186,5 @@
 		}
 
+		// returns true if the given declaration is: (*?=?)(T *, T) for some T (return not checked, but maybe should be)
 		bool checkAssignment( DeclarationWithType *decl, std::string &name ) {
 			if ( decl->get_name() == "?=?" ) {
@@ -671,7 +672,7 @@
 						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 );
+						assert( ! typeInst1 || ! typeInst2 );  // the arguments cannot both be polymorphic pointers
 						UntypedExpr *ret = 0;
-						if ( typeInst1 || typeInst2 ) {
+						if ( typeInst1 || typeInst2 ) { // one of the arguments is a polymorphic pointer
 							ret = new UntypedExpr( new NameExpr( "?+?" ) );
 						} // if
@@ -869,5 +870,5 @@
 
 		Statement * Pass1::mutate(ReturnStmt *retStmt) {
-			// a cast expr on a polymorphic return value is either redundant or invalid
+			// by this point, a cast expr on a polymorphic return value is redundant
 			while ( CastExpr *castExpr = dynamic_cast< CastExpr *>( retStmt->get_expr() ) ) {
 				retStmt->set_expr( castExpr->get_arg() );
