Index: src/GenPoly/Box.cc
===================================================================
--- src/GenPoly/Box.cc	(revision ed1065cf203b07392f55283f52fd47be3012ffcb)
+++ src/GenPoly/Box.cc	(revision f2b20294e89fe2f8c8c9ab798cfbe889cc23fc68)
@@ -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
 //
 
@@ -183,4 +183,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() == "?=?" ) {
@@ -668,7 +669,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
@@ -866,5 +867,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() );
