Index: src/Tuples/TupleAssignment.cc
===================================================================
--- src/Tuples/TupleAssignment.cc	(revision 77971f6131006ff573ba5422c4d83b41b7c5e612)
+++ src/Tuples/TupleAssignment.cc	(revision 23bb1b935afeee154439a3a5065ccd588e7c946e)
@@ -9,6 +9,6 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 15:02:53 2015
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Nov 9 13:48:42 2016
 // Update Count     : 2
 //
@@ -180,4 +180,5 @@
 		// explode the lhs so that each field of the tuple-valued-expr is assigned.
 		explode( lhsAlt, spotter.currentFinder.get_indexer(), back_inserter(lhs) );
+
 		// and finally, re-add the cast to each lhs expr, so that qualified tuple fields can be constructed
 		if ( isCast ) {
@@ -192,8 +193,7 @@
 			}
 		}
-		// }
-	}
-
-	TupleAssignSpotter::MassAssignMatcher::MassAssignMatcher( TupleAssignSpotter &spotter,const ResolvExpr::AltList & alts ) : Matcher( spotter, alts ) {
+	}
+
+	TupleAssignSpotter::MassAssignMatcher::MassAssignMatcher( TupleAssignSpotter &spotter, const ResolvExpr::AltList & alts ) : Matcher( spotter, alts ) {
 		assert( alts.size() == 1 || alts.size() == 2 );
 		if ( alts.size() == 2 ) {
@@ -210,5 +210,5 @@
 		assert( left );
 		std::list< Expression * > args;
-		args.push_back( new AddressExpr( new UntypedExpr( new NameExpr("*?"), std::list< Expression * >{ new VariableExpr( left ) } ) ) );
+		args.push_back( new AddressExpr( UntypedExpr::createDeref( new VariableExpr( left ) ) ) );
 		// args.push_back( new AddressExpr( new VariableExpr( left ) ) );
 		if ( right ) args.push_back( new VariableExpr( right ) );
@@ -238,4 +238,5 @@
 		static UniqueName lhsNamer( "__multassign_L" );
 		static UniqueName rhsNamer( "__multassign_R" );
+
 		// xxx - need more complicated matching?
 		if ( lhs.size() == rhs.size() ) {
