Index: src/ResolvExpr/CurrentObject.cc
===================================================================
--- src/ResolvExpr/CurrentObject.cc	(revision 4e13e2a4b77e6e3f69e8afbd343b850876c48b21)
+++ src/ResolvExpr/CurrentObject.cc	(revision 8e1467d58383365a88db3972b56426e08cb57818)
@@ -21,4 +21,5 @@
 #include <string>                      // for string, operator<<, allocator
 
+#include "AST/Copy.hpp"                // for shallowCopy
 #include "AST/Expr.hpp"                // for InitAlternative
 #include "AST/GenericSubstitution.hpp" // for genericSubstitution
@@ -804,4 +805,5 @@
 						new VariableExpr{ location, curMember->strict_as< ObjectDecl >() } );
 					// need to substitute for generic types so that casts are to concrete types
+					alt.type = shallowCopy(alt.type.get());
 					PRINT( std::cerr << "  type is: " << alt.type; )
 					sub.apply( alt.type ); // also apply to designation??
