Index: src/SymTab/Indexer.cc
===================================================================
--- src/SymTab/Indexer.cc	(revision 78d69da78fada5292d57db01609f0736fd71c895)
+++ src/SymTab/Indexer.cc	(revision 5a806be44b4fa01503e31893d182ea2d9eb394c7)
@@ -603,5 +603,6 @@
 					if ( dynamic_cast< StructInstType * >( t ) || dynamic_cast< UnionInstType * >( t ) ) {
 						Expression * base = expr->clone();
-						ResolvExpr::referenceToRvalueConversion( base );
+						ResolvExpr::Cost cost = ResolvExpr::Cost::zero; // xxx - carry this cost into the indexer as a base cost?
+						ResolvExpr::referenceToRvalueConversion( base, cost );
 						addMembers( t->getAggr(), new MemberExpr( dwt, base ), handleConflicts );
 					}
@@ -705,9 +706,9 @@
 	}
 
-	Expression * Indexer::IdData::combine() const {
+	Expression * Indexer::IdData::combine( ResolvExpr::Cost & cost ) const {
 		Expression * ret = nullptr;
 		if ( baseExpr ) {
 			Expression * base = baseExpr->clone();
-			ResolvExpr::referenceToRvalueConversion( base );
+			ResolvExpr::referenceToRvalueConversion( base, cost );
 			ret = new MemberExpr( id, base );
 			// xxx - this introduces hidden environments, for now remove them.
Index: src/SymTab/Indexer.h
===================================================================
--- src/SymTab/Indexer.h	(revision 78d69da78fada5292d57db01609f0736fd71c895)
+++ src/SymTab/Indexer.h	(revision 5a806be44b4fa01503e31893d182ea2d9eb394c7)
@@ -23,4 +23,8 @@
 #include "SynTree/Visitor.h"  // for Visitor
 #include "SynTree/SynTree.h"  // for AST nodes
+
+namespace ResolvExpr {
+class Cost;
+}
 
 namespace SymTab {
@@ -51,5 +55,5 @@
 			IdData( DeclarationWithType * id, Expression * baseExpr, BaseSyntaxNode * deleteStmt ) : id( id ), baseExpr( baseExpr ), deleteStmt( deleteStmt ) {}
 
-			Expression * combine() const;
+			Expression * combine( ResolvExpr::Cost & cost ) const;
 		};
 
