Index: src/Tuples/TupleAssignment.cc
===================================================================
--- src/Tuples/TupleAssignment.cc	(revision aee472e006d2234bbe00d4ed41506f8d49ab1e0f)
+++ src/Tuples/TupleAssignment.cc	(revision c0a33d2718e90087f8e19043f7cdfa88d48808f8)
@@ -231,5 +231,6 @@
 
 			ResolvExpr::AlternativeFinder finder{ currentFinder.get_indexer(),
-				currentFinder.get_environ() };
+				matcher->compositeEnv };
+
 			try {
 				finder.findWithAdjustment(*i);
@@ -349,4 +350,10 @@
 				ltmp.push_back( lobj );
 				rtmp.push_back( robj );
+
+				// resolve the cast expression so that rhsAlt return type is bound by the cast type as needed, and transfer the resulting environment
+				ResolvExpr::AlternativeFinder finder{ spotter.currentFinder.get_indexer(), compositeEnv };
+				finder.findWithAdjustment( rhsAlt.expr );
+				assert( finder.get_alternatives().size() == 1 );
+				compositeEnv = std::move( finder.get_alternatives().front().env );
 			}
 			tmpDecls.splice( tmpDecls.end(), ltmp );
