Index: src/InitTweak/FixInit.cc
===================================================================
--- src/InitTweak/FixInit.cc	(revision 7641b6c36b40524a09d0d16b7c7db8adccd57ced)
+++ src/InitTweak/FixInit.cc	(revision 9fe3394725b957bb0ebfe000e5530679a22ff59d)
@@ -5,5 +5,5 @@
 // file "LICENCE" distributed with Cforall.
 //
-// FixInit.h --
+// FixInit.cc --
 //
 // Author           : Rob Schluntz
@@ -365,5 +365,6 @@
 			// arrays are not copy constructed, so this should always be an ExprStmt
 			ImplicitCtorDtorStmt * stmt = genCtorDtor( fname, var, cpArg );
-			ExprStmt * exprStmt = strict_dynamic_cast< ExprStmt * >( stmt->get_callStmt() );
+			assertf( stmt, "ResolveCopyCtors: genCtorDtor returned nullptr: %s / %s / %s", fname.c_str(), toString( var ).c_str(), toString( cpArg ).c_str() );
+			ExprStmt * exprStmt = strict_dynamic_cast< ExprStmt * >( stmt->callStmt );
 			Expression * resolved = exprStmt->expr;
 			exprStmt->expr = nullptr; // take ownership of expr
@@ -594,16 +595,16 @@
 			// to the outer context, rather than inside of the statement expression.
 			visit_children = false;
-			std::list< Statement * > & stmts = stmtExpr->get_statements()->get_kids();
+			std::list< Statement * > & stmts = stmtExpr->statements->get_kids();
 			for ( Statement *& stmt : stmts ) {
 				stmt = stmt->acceptMutator( *visitor );
 			} // for
-			assert( stmtExpr->get_result() );
-			Type * result = stmtExpr->get_result();
+			assert( stmtExpr->result );
+			Type * result = stmtExpr->result;
 			if ( ! result->isVoid() ) {
-				for ( ObjectDecl * obj : stmtExpr->get_returnDecls() ) {
+				for ( ObjectDecl * obj : stmtExpr->returnDecls ) {
 					stmtsToAddBefore.push_back( new DeclStmt( obj ) );
 				} // for
 				// add destructors after current statement
-				for ( Expression * dtor : stmtExpr->get_dtors() ) {
+				for ( Expression * dtor : stmtExpr->dtors ) {
 					stmtsToAddAfter.push_back( new ExprStmt( dtor ) );
 				} // for
@@ -611,10 +612,10 @@
 				assert( ! stmts.empty() );
 				assertf( ! stmtExpr->get_returnDecls().empty(), "StmtExpr returns non-void, but no return decls: %s", toString( stmtExpr ).c_str() );
-				stmts.push_back( new ExprStmt( new VariableExpr( stmtExpr->get_returnDecls().front() ) ) );
-				stmtExpr->get_returnDecls().clear();
-				stmtExpr->get_dtors().clear();
-			}
-			assert( stmtExpr->get_returnDecls().empty() );
-			assert( stmtExpr->get_dtors().empty() );
+				stmts.push_back( new ExprStmt( new VariableExpr( stmtExpr->returnDecls.front() ) ) );
+				stmtExpr->returnDecls.clear();
+				stmtExpr->dtors.clear();
+			}
+			assert( stmtExpr->returnDecls.empty() );
+			assert( stmtExpr->dtors.empty() );
 		}
 
Index: src/InitTweak/GenInit.cc
===================================================================
--- src/InitTweak/GenInit.cc	(revision 7641b6c36b40524a09d0d16b7c7db8adccd57ced)
+++ src/InitTweak/GenInit.cc	(revision 9fe3394725b957bb0ebfe000e5530679a22ff59d)
@@ -135,5 +135,7 @@
 				if ( varExpr->var == retVal ) return;
 			}
-			stmtsToAddBefore.push_back( genCtorDtor( "?{}", retVal, returnStmt->get_expr() ) );
+			Statement * stmt = genCtorDtor( "?{}", retVal, returnStmt->expr );
+			assertf( stmt, "ReturnFixer: genCtorDtor returned nullptr: %s / %s", toString( retVal ).c_str(), toString( returnStmt->expr ).c_str() );
+			stmtsToAddBefore.push_back( stmt );
 
 			// return the retVal object
