Index: src/InitTweak/FixInit.cc
===================================================================
--- src/InitTweak/FixInit.cc	(revision 10dc6908986ce4acc35ec27134258bfcfe4d5322)
+++ src/InitTweak/FixInit.cc	(revision 9d061427effff83e0da6217d40987ce0ea673835)
@@ -655,4 +655,9 @@
 		DeclarationWithType * getDtorFunc( ObjectDecl * objDecl, Statement * input, std::list< Statement * > & stmtsToAdd ) {
 			// unwrap implicit statement wrapper
+			Statement * dtor = input;
+			if ( ImplicitCtorDtorStmt * implicit = dynamic_cast< ImplicitCtorDtorStmt * >( input ) ) {
+				// dtor = implicit->callStmt;
+				// implicit->callStmt = nullptr;
+			}
 			assert( dtor );
 			std::list< Expression * > matches;
@@ -689,5 +694,6 @@
 			Type * base = replacement->result->stripReferences();
 			if ( dynamic_cast< ArrayType * >( base ) || dynamic_cast< TupleType * > ( base ) ) {
-				// need to cast away reference for array types, since the destructor is generated without the reference type
+				// need to cast away reference for array types, since the destructor is generated without the reference type,
+				// and for tuple types since tuple indexing does not work directly on a reference
 				replacement = new CastExpr( replacement, base->clone() );
 			}
