Index: src/Concurrency/Waitfor.cc
===================================================================
--- src/Concurrency/Waitfor.cc	(revision 1f7dc61b5b760185c1c66c9315fb7f309173dba5)
+++ src/Concurrency/Waitfor.cc	(revision 6668a3ed6616003d19792926e5fac85310231168)
@@ -373,21 +373,5 @@
 			new ListInit(
 				map_range < std::list<Initializer*> > ( clause.target.arguments, [this](Expression * expr ){
-					Expression * init = new CastExpr(
-						new UntypedExpr(
-							new NameExpr( "get_monitor" ),
-							{ expr }
-						),
-						new PointerType(
-							noQualifiers,
-							new StructInstType(
-								noQualifiers,
-								decl_monitor
-							)
-						),
-						false
-					);
-
-					ResolvExpr::findSingleExpression( init, indexer );
-					return new SingleInit( init );
+					return new SingleInit( expr );
 				})
 			)
Index: src/ResolvExpr/Resolver.cc
===================================================================
--- src/ResolvExpr/Resolver.cc	(revision 1f7dc61b5b760185c1c66c9315fb7f309173dba5)
+++ src/ResolvExpr/Resolver.cc	(revision 6668a3ed6616003d19792926e5fac85310231168)
@@ -1112,5 +1112,5 @@
 		}
 
-		
+
 	} // anonymous namespace
 /// Establish post-resolver invariants for expressions
@@ -1158,5 +1158,5 @@
 
 	namespace {
-		
+
 
 		/// resolve `untyped` to the expression whose candidate satisfies `pred` with the
@@ -1905,6 +1905,21 @@
 
 			clause2.target.args.reserve( clause.target.args.size() );
+			const ast::StructDecl * decl_monitor = symtab.lookupStruct( "monitor$" );
 			for ( auto arg : argsCandidates.front() ) {
-				clause2.target.args.emplace_back( std::move( arg->expr ) );
+				const auto & loc = stmt->location;
+
+				ast::Expr * init = new ast::CastExpr( loc,
+					new ast::UntypedExpr( loc,
+						new ast::NameExpr( loc, "get_monitor" ),
+						{ arg->expr }
+					),
+					new ast::PointerType(
+						new ast::StructInstType(
+							decl_monitor
+						)
+					)
+				);
+
+				clause2.target.args.emplace_back( findSingleExpression( init, symtab ) );
 			}
 
@@ -2077,5 +2092,5 @@
 		if (auto functionDecl = decl.as<ast::FunctionDecl>()) {
 			// xxx - can intrinsic gen ever fail?
-			if (functionDecl->linkage == ast::Linkage::AutoGen) { 
+			if (functionDecl->linkage == ast::Linkage::AutoGen) {
 				auto mutDecl = mutate(functionDecl);
 				mutDecl->isDeleted = true;
