Index: doc/papers/general/Paper.tex
===================================================================
--- doc/papers/general/Paper.tex	(revision 6c7c63cec71bc05334536c6b43fd8ddca9d0a39c)
+++ doc/papers/general/Paper.tex	(revision 1ccc5996eb8495773a8f32b98b18249eec46323b)
@@ -1916,5 +1916,5 @@
 Alternative call syntax (literal argument before routine name) to convert basic literals into user literals.
 
-{\lstset{language=CFA,deletedelim=**[is][]{`}{`},moredelim=**[is][\color{red}]{@}{@}}
+{\lstset{language=CFA,moredelim=**[is][\color{red}]{|}{|},deletedelim=**[is][]{`}{`}}
 \begin{cfa}
 struct Weight { double stones; };
@@ -1924,16 +1924,16 @@
 Weight ?+?( Weight l, Weight r ) { return (Weight){ l.stones + r.stones }; }
 
-Weight @?`st@( double w ) { return (Weight){ w }; } $\C{// backquote for units}$
-Weight @?`lb@( double w ) { return (Weight){ w / 14.0 }; }
-Weight @?`kg@( double w ) { return (Weight) { w * 0.1575}; }
+Weight |?`st|( double w ) { return (Weight){ w }; } $\C{// backquote for units}$
+Weight |?`lb|( double w ) { return (Weight){ w / 14.0 }; }
+Weight |?`kg|( double w ) { return (Weight) { w * 0.1575}; }
 
 int main() {
 	Weight w, hw = { 14 };					$\C{// 14 stone}$
-	w = 11@`st@ + 1@`lb@;
-	w = 70.3@`kg@;
-	w = 155@`lb@;
-	w = 0x_9b_u@`lb@;						$\C{// hexadecimal unsigned weight (155)}$
-	w = 0_233@`lb@;							$\C{// octal weight (155)}$
-	w = 5@`st@ + 8@`kg@ + 25@`lb@ + hw;
+	w = 11|`st| + 1|`lb|;
+	w = 70.3|`kg|;
+	w = 155|`lb|;
+	w = 0x_9b_u|`lb|;						$\C{// hexadecimal unsigned weight (155)}$
+	w = 0_233|`lb|;							$\C{// octal weight (155)}$
+	w = 5|`st| + 8|`kg| + 25|`lb| + hw;
 }
 \end{cfa}
Index: src/Common/PassVisitor.impl.h
===================================================================
--- src/Common/PassVisitor.impl.h	(revision 6c7c63cec71bc05334536c6b43fd8ddca9d0a39c)
+++ src/Common/PassVisitor.impl.h	(revision 1ccc5996eb8495773a8f32b98b18249eec46323b)
@@ -1121,10 +1121,18 @@
 template< typename pass_type >
 void PassVisitor< pass_type >::visit( ImplicitCtorDtorStmt * node ) {
-	VISIT_BODY( node );
+	VISIT_START( node );
+
+	maybeAccept_impl( node->callStmt, *this );
+
+	VISIT_END( node );
 }
 
 template< typename pass_type >
 Statement * PassVisitor< pass_type >::mutate( ImplicitCtorDtorStmt * node ) {
-	MUTATE_BODY( Statement, node );
+	MUTATE_START( node );
+
+	maybeMutate_impl( node->callStmt, *this );
+
+	MUTATE_END( Statement, node );
 }
 
@@ -2008,5 +2016,18 @@
 template< typename pass_type >
 void PassVisitor< pass_type >::visit( VoidType * node ) {
-	VISIT_BODY( node );
+	VISIT_START( node );
+
+	maybeAccept_impl( node->forall, *this );
+
+	VISIT_END( node );
+}
+
+template< typename pass_type >
+Type * PassVisitor< pass_type >::mutate( VoidType * node ) {
+	MUTATE_START( node );
+
+	maybeMutate_impl( node->forall, *this );
+
+	MUTATE_END( Type, node );
 }
 
@@ -2235,8 +2256,4 @@
 
 //---------------------------------------------------------------------------------------------------------------
-template< typename pass_type >
-Type * PassVisitor< pass_type >::mutate( VoidType * node ) {
-	MUTATE_BODY( Type, node );
-}
 
 template< typename pass_type >
Index: src/SymTab/Indexer.cc
===================================================================
--- src/SymTab/Indexer.cc	(revision 6c7c63cec71bc05334536c6b43fd8ddca9d0a39c)
+++ src/SymTab/Indexer.cc	(revision 1ccc5996eb8495773a8f32b98b18249eec46323b)
@@ -457,5 +457,5 @@
 
 		// add to indexer
-		tables->idTable[ name ][ mangleName ] = { decl, baseExpr, deleteStmt };
+		tables->idTable[ name ][ mangleName ] = IdData{ decl, baseExpr, deleteStmt };
 		++tables->size;
 	}
Index: src/SymTab/Indexer.h
===================================================================
--- src/SymTab/Indexer.h	(revision 6c7c63cec71bc05334536c6b43fd8ddca9d0a39c)
+++ src/SymTab/Indexer.h	(revision 1ccc5996eb8495773a8f32b98b18249eec46323b)
@@ -46,4 +46,8 @@
 			/// non-null if this declaration is deleted
 			BaseSyntaxNode * deleteStmt = nullptr;
+
+			// NOTE: shouldn't need either of these constructors, but gcc-4 does not properly support initializer lists with default members.
+			IdData() = default;
+			IdData( DeclarationWithType * id, Expression * baseExpr, BaseSyntaxNode * deleteStmt ) : id( id ), baseExpr( baseExpr ), deleteStmt( deleteStmt ) {}
 
 			Expression * combine() const;
