Index: src/AST/Pass.hpp
===================================================================
--- src/AST/Pass.hpp	(revision a36eb2d10201f894f8166679438df8ea6a4bf5a3)
+++ src/AST/Pass.hpp	(revision 148ba7db13b460887b44c7b4d5650468809e8218)
@@ -348,9 +348,11 @@
 
 	/// When this node is finished being visited, restore the value of a variable
+	/// You may assign to the return value to set the new value in the same statement.
 	template< typename T >
-	void GuardValue( T& val ) {
+	T& GuardValue( T& val ) {
 		at_cleanup( [ val ]( void * newVal ) {
 			* static_cast< T * >( newVal ) = val;
 		}, static_cast< void * >( & val ) );
+		return val;
 	}
 
Index: src/InitTweak/GenInit.cc
===================================================================
--- src/InitTweak/GenInit.cc	(revision a36eb2d10201f894f8166679438df8ea6a4bf5a3)
+++ src/InitTweak/GenInit.cc	(revision 148ba7db13b460887b44c7b4d5650468809e8218)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Andrew Beach
-// Last Modified On : Mon Oct 25 11:10:00 2021
-// Update Count     : 185
+// Last Modified On : Mon Oct 25 13:53:00 2021
+// Update Count     : 186
 //
 #include "GenInit.h"
@@ -316,6 +316,5 @@
 	void HoistArrayDimension_NoResolve_New::previsit(
 			const ast::ObjectDecl * decl ) {
-		GuardValue( storageClasses );
-		storageClasses = decl->storage;
+		GuardValue( storageClasses ) = decl->storage;
 	}
 
@@ -377,6 +376,5 @@
 
 	void ReturnFixer_New::previsit( const ast::FunctionDecl * decl ) {
-		GuardValue( funcDecl );
-		funcDecl = decl;
+		GuardValue( funcDecl ) = decl;
 	}
 
