Index: src/SymTab/Autogen.cc
===================================================================
--- src/SymTab/Autogen.cc	(revision b7260842d3d46862cb3406f96e73c6e605589177)
+++ src/SymTab/Autogen.cc	(revision d9fa60af0bc172d6842f414cb608e0615d3582a5)
@@ -175,8 +175,4 @@
 
 	void makeStructMemberOp( ObjectDecl * dstParam, Expression * src, DeclarationWithType * field, FunctionDecl * func, TypeSubstitution & genericSubs, bool isDynamicLayout, bool forward = true ) {
-// 		if ( isDynamicLayout && src ) {
-// 			genericSubs.apply( src );
-// 		}
-
 		ObjectDecl * returnVal = NULL;
 		if ( ! func->get_functionType()->get_returnVals().empty() ) {
@@ -187,13 +183,11 @@
 
 		// assign to destination (and return value if generic)
-		UntypedExpr *derefExpr = new UntypedExpr( new NameExpr( "*?" ) );
-		derefExpr->get_args().push_back( new VariableExpr( dstParam ) );
+		UntypedExpr *derefExpr = UntypedExpr::createDeref( new VariableExpr( dstParam ) );
 		Expression *dstselect = new MemberExpr( field, derefExpr );
 		genImplicitCall( srcParam, dstselect, func->get_name(), back_inserter( func->get_statements()->get_kids() ), field, forward );
 
 		if ( isDynamicLayout && returnVal ) {
-			UntypedExpr *derefRet = new UntypedExpr( new NameExpr( "*?" ) );
-			derefRet->get_args().push_back( new VariableExpr( returnVal ) );
-			Expression *retselect = new MemberExpr( field, derefRet );
+			// xxx - there used to be a dereference on returnVal, but this seems to have been wrong?
+			Expression *retselect = new MemberExpr( field, new VariableExpr( returnVal ) );
 			genImplicitCall( srcParam, retselect, func->get_name(), back_inserter( func->get_statements()->get_kids() ), field, forward );
 		} // if
