Index: doc/LaTeXmacros/common.sty
===================================================================
--- doc/LaTeXmacros/common.sty	(revision 85034edc709b6220ea9dabc9a07efab793e34dab)
+++ doc/LaTeXmacros/common.sty	(revision 8cbe732066c1d0d00e6d6622a2e8b5a6b1f72c45)
@@ -11,6 +11,6 @@
 %% Created On       : Sat Apr  9 10:06:17 2016
 %% Last Modified By : Peter A. Buhr
-%% Last Modified On : Sun Jul 16 08:28:52 2023
-%% Update Count     : 586
+%% Last Modified On : Fri Sep 29 16:48:59 2023
+%% Update Count     : 587
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -272,4 +272,5 @@
 \setlength{\gcolumnposn}{2.75in}
 \setlength{\columnposn}{\gcolumnposn}
+\newcommand{\setgcolumn}[1]{\global\gcolumnposn=#1\global\columnposn=\gcolumnposn}
 \newcommand{\C}[2][\@empty]{\ifx#1\@empty\else\global\setlength{\columnposn}{#1}\global\columnposn=\columnposn\fi\hfill\makebox[\textwidth-\columnposn][l]{\lst@basicstyle{\LstCommentStyle{#2}}}}
 \newcommand{\CRT}{\global\columnposn=\gcolumnposn}
@@ -302,5 +303,5 @@
 literate=
   {-}{\makebox[1ex][c]{\raisebox{0.4ex}{\rule{0.75ex}{0.1ex}}}}1
-  {^}{\raisebox{0.6ex}{$\scriptscriptstyle\land\,$}}1
+  {^}{\raisebox{0.6ex}{$\scriptstyle\land\,$}}1
   {~}{\raisebox{0.3ex}{$\scriptstyle\sim\,$}}1
   {`}{\ttfamily\upshape\hspace*{-0.3ex}`}1
Index: doc/LaTeXmacros/common.tex
===================================================================
--- doc/LaTeXmacros/common.tex	(revision 85034edc709b6220ea9dabc9a07efab793e34dab)
+++ doc/LaTeXmacros/common.tex	(revision 8cbe732066c1d0d00e6d6622a2e8b5a6b1f72c45)
@@ -11,6 +11,6 @@
 %% Created On       : Sat Apr  9 10:06:17 2016
 %% Last Modified By : Peter A. Buhr
-%% Last Modified On : Fri Jul 21 09:02:00 2023
-%% Update Count     : 576
+%% Last Modified On : Fri Sep 29 16:49:02 2023
+%% Update Count     : 590
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -275,4 +275,5 @@
 \setlength{\gcolumnposn}{2.75in}
 \setlength{\columnposn}{\gcolumnposn}
+\newcommand{\setgcolumn}[1]{\global\gcolumnposn=#1\global\columnposn=\gcolumnposn}
 \newcommand{\C}[2][\@empty]{\ifx#1\@empty\else\global\setlength{\columnposn}{#1}\global\columnposn=\columnposn\fi\hfill\makebox[\textwidth-\columnposn][l]{\lst@basicstyle{\LstCommentStyle{#2}}}}
 \newcommand{\CRT}{\global\columnposn=\gcolumnposn}
@@ -301,10 +302,10 @@
 showlines=true,							% show blank lines at end of code
 aboveskip=4pt,							% spacing above/below code block
-belowskip=0pt,
+belowskip=2pt,
 numberstyle=\footnotesize\sf,			% numbering style
 % replace/adjust listing characters that look bad in sanserif
 literate=
   {-}{\makebox[1ex][c]{\raisebox{0.4ex}{\rule{0.75ex}{0.1ex}}}}1
-  {^}{\raisebox{0.6ex}{$\scriptscriptstyle\land\,$}}1
+  {^}{\raisebox{0.6ex}{$\scriptstyle\land\,$}}1
   {~}{\raisebox{0.3ex}{$\scriptstyle\sim\,$}}1
   {`}{\ttfamily\upshape\hspace*{-0.3ex}`}1
Index: doc/LaTeXmacros/lstlang.sty
===================================================================
--- doc/LaTeXmacros/lstlang.sty	(revision 85034edc709b6220ea9dabc9a07efab793e34dab)
+++ doc/LaTeXmacros/lstlang.sty	(revision 8cbe732066c1d0d00e6d6622a2e8b5a6b1f72c45)
@@ -8,6 +8,6 @@
 %% Created On       : Sat May 13 16:34:42 2017
 %% Last Modified By : Peter A. Buhr
-%% Last Modified On : Tue May  2 08:52:35 2023
-%% Update Count     : 30
+%% Last Modified On : Thu Sep 21 08:40:05 2023
+%% Update Count     : 31
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -134,5 +134,5 @@
 	morekeywords={
 		_Accept, _AcceptReturn, _AcceptWait, _Actor, _At, _Catch, _CatchResume, _CorActor, _Cormonitor, _Coroutine,
-		_Disable, _Else, _Enable, _Event, _Finally, _Monitor, _Mutex, _Nomutex, _PeriodicTask, _RealTimeTask,
+		_Disable, _Else, _Enable, _Event, _Exception, _Finally, _Monitor, _Mutex, _Nomutex, _PeriodicTask, _RealTimeTask,
 		_Resume, _ResumeTop, _Select, _SporadicTask, _Task, _Timeout, _When, _With, _Throw},
 }
Index: doc/bibliography/pl.bib
===================================================================
--- doc/bibliography/pl.bib	(revision 85034edc709b6220ea9dabc9a07efab793e34dab)
+++ doc/bibliography/pl.bib	(revision 8cbe732066c1d0d00e6d6622a2e8b5a6b1f72c45)
@@ -4113,6 +4113,7 @@
     title	= {High-Performance Extended Actors},
     journal	= spe,
-    year	= 2022,
-    note	= {submitted July 2022},
+    year	= 2023,
+    month	= sep,
+    note	= {\url{https://onlinelibrary.wiley.com/doi/pdf/10.1002/spe.3262}}
 }
 
Index: doc/user/user.tex
===================================================================
--- doc/user/user.tex	(revision 85034edc709b6220ea9dabc9a07efab793e34dab)
+++ doc/user/user.tex	(revision 8cbe732066c1d0d00e6d6622a2e8b5a6b1f72c45)
@@ -11,6 +11,6 @@
 %% Created On       : Wed Apr  6 14:53:29 2016
 %% Last Modified By : Peter A. Buhr
-%% Last Modified On : Thu Aug 10 21:24:07 2023
-%% Update Count     : 5570
+%% Last Modified On : Sat Sep 30 22:46:19 2023
+%% Update Count     : 5658
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -65,6 +65,6 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-\setlength{\gcolumnposn}{3in}
 \CFAStyle												% use default CFA format-style
+\setgcolumn{2.25in}
 %\lstset{language=CFA}									% CFA default lnaguage
 \lstnewenvironment{C++}[1][]                            % use C++ style
@@ -224,9 +224,9 @@
 \setlength{\tabcolsep}{10pt}
 \begin{tabular}{@{}rcccccccc@{}}
-		& 2021	& 2016	& 2011	& 2006	& 2001	& 1996	& 1991	& 1986	\\ \hline
-\RB{C}	& \RB{1}& \RB{2}& \RB{2}& \RB{1}& \RB{1}& \RB{1}& \RB{1}& \RB{1}\\
-Java	& 2		& 1		& 1		& 2		& 3		& 28	& -		& -		\\
-Python	& 3		& 5		& 6		& 7		& 23	& 13	& -		& -		\\
-\CC		& 4		& 3		& 3		& 3		& 2		& 2		& 2		& 8		\\
+		& 2023	& 2018	& 2013	& 2008	& 2003	& 1998	& 1993	& 1988	\\ \hline
+Python	& 1		& 4		& 8		& 7		& 12	& 25	& 18	& -		\\
+\RB{C}	& \RB{2}& \RB{2}& \RB{1}& \RB{2}& \RB{2}& \RB{1}& \RB{1}& \RB{1}\\
+C++		& 3		& 3		& 4		& 4		& 3		& 2		& 2		& 4		\\
+Java	& 4		& 1		& 2		& 1		& 1		& 18	& -		& -		\\
 \end{tabular}
 \end{center}
@@ -465,4 +465,6 @@
 \Indexc{-h}\index{translator option!-h@{©-h©}}, \Indexc{--help}\index{translator option!--help@{©--help©}} \, print translator help message
 \item
+\Indexc{-i}\index{translator option!-i@{©-i©}}, \Indexc{--invariant}\index{translator option!--invariant@{©--invariant©}} \, invariant checking during AST passes
+\item
 \Indexc{-l}\index{translator option!-l@{©-l©}}, \Indexc{--libcfa}\index{translator option!--libcfa@{©--libcfa©}} \, generate ©libcfa.c©
 \item
@@ -482,11 +484,11 @@
 \begin{description}[topsep=0pt,itemsep=0pt,parsep=0pt]
 \item
-\Indexc{ascodegen}\index{translator option!-P@{©-P©}!©ascodegen©}\index{translator option!--print@{©-print©}!©ascodegen©} \, as codegen rather than AST
-\item
-\Indexc{asterr}\index{translator option!-P@{©-P©}!©asterr©}\index{translator option!--print@{©-print©}!©asterr©} \, AST on error
-\item
-\Indexc{declstats}\index{translator option!-P@{©-P©}!©declstats©}\index{translator option!--print@{©-print©}!©declstats©} \, code property statistics
-\item
-\Indexc{parse}\index{translator option!-P@{©-P©}!©parse©}\index{translator option!--print@{©-print©}!©parse©} \, yacc (parsing) debug information
+\Indexc{ascodegen}\index{translator option!-P@{©-P©}!©ascodegen©}\index{translator option!--print@{©-print©}!©ascodegen©} \, print AST as codegen rather than AST
+\item
+\Indexc{asterr}\index{translator option!-P@{©-P©}!©asterr©}\index{translator option!--print@{©-print©}!©asterr©} \, print AST on error
+\item
+\Indexc{declstats}\index{translator option!-P@{©-P©}!©declstats©}\index{translator option!--print@{©-print©}!©declstats©} \, print code property statistics
+\item
+\Indexc{parse}\index{translator option!-P@{©-P©}!©parse©}\index{translator option!--print@{©-print©}!©parse©} \, print yacc (parsing) debug information
 \item
 \Indexc{pretty}\index{translator option!-P@{©-P©}!©pretty©}\index{translator option!--print@{©-print©}!©pretty©} \, prettyprint for ©ascodegen© flag
@@ -494,29 +496,29 @@
 \Indexc{rproto}\index{translator option!-P@{©-P©}!©rproto©}\index{translator option!--print@{©-print©}!©rproto©} \, resolver-proto instance
 \item
-\Indexc{rsteps}\index{translator option!-P@{©-P©}!©rsteps©}\index{translator option!--print@{©-print©}!©rsteps©} \, resolver steps
-\item
-\Indexc{tree}\index{translator option!-P@{©-P©}!©tree©}\index{translator option!--print@{©-print©}!©tree©} \, parse tree
-\item
-\Indexc{ast}\index{translator option!-P@{©-P©}!©ast©}\index{translator option!--print@{©-print©}!©ast©} \, AST after parsing
-\item
-\Indexc{symevt}\index{translator option!-P@{©-P©}!©symevt©}\index{translator option!--print@{©-print©}!©symevt©} \, symbol table events
-\item
-\Indexc{altexpr}\index{translator option!-P@{©-P©}!©altexpr©}\index{translator option!--print@{©-print©}!©altexpr©} \, alternatives for expressions
-\item
-\Indexc{astdecl}\index{translator option!-P@{©-P©}!©astdecl©}\index{translator option!--print@{©-print©}!©astdecl©} \, AST after declaration validation pass
-\item
-\Indexc{resolver}\index{translator option!-P@{©-P©}!©resolver©}\index{translator option!--print@{©-print©}!©resolver©} \, before resolver step
-\item
-\Indexc{astexpr}\index{translator option!-P@{©-P©}!©astexpr©}\index{translator option!--print@{©-print©}!©altexpr©} \, AST after expression analysis
-\item
-\Indexc{ctordtor}\index{translator option!-P@{©-P©}!©ctordtor©}\index{translator option!--print@{©-print©}!©ctordtor©} \, after ctor/dtor are replaced
-\item
-\Indexc{tuple}\index{translator option!-P@{©-P©}!©tuple©}\index{translator option!--print@{©-print©}!©tuple©} \, after tuple expansion
-\item
-\Indexc{astgen}\index{translator option!-P@{©-P©}!©astgen©}\index{translator option!--print@{©-print©}!©astgen©} \, AST after instantiate generics
-\item
-\Indexc{box}\index{translator option!-P@{©-P©}!©box©}\index{translator option!--print@{©-print©}!©box©} \, before box step
-\item
-\Indexc{codegen}\index{translator option!-P@{©-P©}!©codegen©}\index{translator option!--print@{©-print©}!©codegen©} \, before code generation
+\Indexc{rsteps}\index{translator option!-P@{©-P©}!©rsteps©}\index{translator option!--print@{©-print©}!©rsteps©} \, print resolver steps
+\item
+\Indexc{ast}\index{translator option!-P@{©-P©}!©ast©}\index{translator option!--print@{©-print©}!©ast©} \, print AST after parsing
+\item
+\Indexc{excpdecl}\index{translator option!-P@{©-P©}!©excpdecl©}\index{translator option!--print@{©-print©}!©excpdecl©} \, print AST after translating exception decls
+\item
+\Indexc{symevt}\index{translator option!-P@{©-P©}!©symevt©}\index{translator option!--print@{©-print©}!©symevt©} \, print AST after symbol table events
+\item
+\Indexc{expralt}\index{translator option!-P@{©-P©}!©expralt©}\index{translator option!--print@{©-print©}!©expralt©} \, print AST after expressions alternatives
+\item
+\Indexc{valdecl}\index{translator option!-P@{©-P©}!©valdecl©}\index{translator option!--print@{©-print©}!©valdecl©} \, print AST after declaration validation pass
+\item
+\Indexc{bresolver}\index{translator option!-P@{©-P©}!©bresolver©}\index{translator option!--print@{©-print©}!©bresolver©} \, print AST before resolver step
+\item
+\Indexc{expranly}\index{translator option!-P@{©-P©}!©expranly©}\index{translator option!--print@{©-print©}!©expranly©} \, print AST after expression analysis
+\item
+\Indexc{ctordtor}\index{translator option!-P@{©-P©}!©ctordtor©}\index{translator option!--print@{©-print©}!©ctordtor©} \, print AST after ctor/dtor are replaced
+\item
+\Indexc{tuple}\index{translator option!-P@{©-P©}!©tuple©}\index{translator option!--print@{©-print©}!©tuple©} \, print AST after tuple expansion
+\item
+\Indexc{instgen}\index{translator option!-P@{©-P©}!©instgen©}\index{translator option!--print@{©-print©}!©instgen©} \, print AST after instantiate generics
+\item
+\Indexc{bbox}\index{translator option!-P@{©-P©}!©bbox©}\index{translator option!--print@{©-print©}!©bbox©} \, print AST before box pass
+\item
+\Indexc{bcodegen}\index{translator option!-P@{©-P©}!©bcodegen©}\index{translator option!--print@{©-print©}!©bcodegen©} \, print AST before code generation
 \end{description}
 \item
@@ -535,5 +537,5 @@
 Keyword clashes are accommodated by syntactic transformations using the \CFA backquote escape-mechanism:
 \begin{cfa}
-int ®``®coroutine = 3; $\C{// make keyword an identifier}$
+int ®``®coroutine = 3;					$\C{// make keyword an identifier}$
 double ®``®forall = 3.5;
 \end{cfa}
@@ -545,9 +547,9 @@
 \begin{cfa}
 // include file uses the CFA keyword "with".
-#if ! defined( with )							$\C{// nesting ?}$
-#define with ®``®with							$\C{// make keyword an identifier}$
+#if ! defined( with )					$\C{// nesting ?}$
+#define with ®``®with					$\C{// make keyword an identifier}$
 #define __CFA_BFD_H__
 #endif
-$\R{\#include\_next} <bfdlink.h>$				$\C{// must have internal check for multiple expansion}$
+$\R{\#include\_next} <bfdlink.h>$		$\C{// must have internal check for multiple expansion}$
 #if defined( with ) && defined( __CFA_BFD_H__ )	$\C{// reset only if set}$
 #undef with
@@ -564,13 +566,13 @@
 Numeric constants are extended to allow \Index{underscore}s\index{constant!underscore} as a separator, \eg:
 \begin{cfa}
-2®_®147®_®483®_®648; $\C{// decimal constant}$
-56®_®ul; $\C{// decimal unsigned long constant}$
-0®_®377; $\C{// octal constant}$
-0x®_®ff®_®ff; $\C{// hexadecimal constant}$
-0x®_®ef3d®_®aa5c; $\C{// hexadecimal constant}$
-3.141®_®592®_®654; $\C{// floating constant}$
-10®_®e®_®+1®_®00; $\C{// floating constant}$
-0x®_®ff®_®ff®_®p®_®3; $\C{// hexadecimal floating}$
-0x®_®1.ffff®_®ffff®_®p®_®128®_®l; $\C{// hexadecimal floating long constant}$
+2®_®147®_®483®_®648;					$\C{// decimal constant}$
+56®_®ul;								$\C{// decimal unsigned long constant}$
+0®_®377;								$\C{// octal constant}$
+0x®_®ff®_®ff;							$\C{// hexadecimal constant}$
+0x®_®ef3d®_®aa5c;						$\C{// hexadecimal constant}$
+3.141®_®592®_®654;						$\C{// floating constant}$
+10®_®e®_®+1®_®00;					 	$\C{// floating constant}$
+0x®_®ff®_®ff®_®p®_®3;					$\C{// hexadecimal floating}$
+0x®_®1.ffff®_®ffff®_®p®_®128®_®l;		$\C{// hexadecimal floating long constant}$
 L®_®$"\texttt{\textbackslash{x}}$®_®$\texttt{ff}$®_®$\texttt{ee}"$; $\C{// wide character constant}$
 \end{cfa}
@@ -602,10 +604,9 @@
 
 There are exponentiation operators for integral and floating types, including the builtin \Index{complex} types.
-Integral exponentiation\index{exponentiation!unsigned integral} is performed with repeated multiplication\footnote{The multiplication computation is $O(\log y)$.} (or shifting if the exponent is 2).
+Integral exponentiation\index{exponentiation!unsigned integral} is performed with repeated multiplication ($O(\log y)$ multiplies or shifting if the exponent is 2).
 Overflow for a large exponent or negative exponent returns zero.
 Floating exponentiation\index{exponentiation!floating} is performed using \Index{logarithm}s\index{exponentiation!logarithm}, so the exponent cannot be negative.
 \begin{cfa}
-sout | 1 ®\® 0 | 1 ®\® 1 | 2 ®\® 8 | -4 ®\® 3 | 5 ®\® 3 | 5 ®\® 32 | 5L ®\® 32 | 5L ®\® 64 | -4 ®\® -3 | -4.0 ®\® -3 | 4.0 ®\® 2.1
-	   | (1.0f+2.0fi) ®\® (3.0f+2.0fi);
+sout | 1 ®\® 0 | 1 ®\® 1 | 2 ®\® 8 | -4 ®\® 3 | 5 ®\® 3 | 5 ®\® 32 | 5L ®\® 32 | 5L ®\® 64 | -4 ®\® -3 | -4.0 ®\® -3 | 4.0 ®\® 2.1 | (1.0f+2.0fi) ®\® (3.0f+2.0fi);
 1 1 256 -64 125 ®0® 3273344365508751233 ®0® ®0® -0.015625 18.3791736799526 0.264715-1.1922i
 \end{cfa}
@@ -620,5 +621,5 @@
 T ?®\®?( T ep, unsigned long int y );
 \end{cfa}
-The user type ©T© must define multiplication, one (©1©), and ©*©.
+A user type ©T© must define multiplication, one (©1©), and ©*©.
 
 
@@ -634,10 +635,10 @@
 Declarations in the \Indexc{do}-©while© condition are not useful because they appear after the loop body.}
 \begin{cfa}
-if ( ®int x = f()® ) ... $\C{// x != 0}$
-if ( ®int x = f(), y = g()® ) ... $\C{// x != 0 \&\& y != 0}$
+if ( ®int x = f()® ) ...			$\C{// x != 0}$
+if ( ®int x = f(), y = g()® ) ...	$\C{// x != 0 \&\& y != 0}$
 if ( ®int x = f(), y = g(); x < y® ) ... $\C{// relational expression}$
 if ( ®struct S { int i; } x = { f() }; x.i < 4® ) $\C{// relational expression}$
 
-while ( ®int x = f()® ) ... $\C{// x != 0}$
+while ( ®int x = f()® ) ...			$\C{// x != 0}$
 while ( ®int x = f(), y = g()® ) ... $\C{// x != 0 \&\& y != 0}$
 while ( ®int x = f(), y = g(); x < y® ) ... $\C{// relational expression}$
@@ -653,11 +654,20 @@
 \label{s:caseClause}
 
-C restricts the \Indexc{case} clause of a \Indexc{switch} statement to a single value.
-For multiple ©case© clauses associated with the same statement, it is necessary to have multiple ©case© clauses rather than multiple values.
+C restricts a \Indexc{case} clause in \Indexc{switch} statement to a single value.
+For multiple ©case© clauses prefixing a statement within the ©switch© statement, it is necessary to have multiple ©case© clauses rather than multiple values.
 Requiring a ©case© clause for each value is not in the spirit of brevity normally associated with C.
 Therefore, the ©case© clause is extended with a list of values.
 \begin{cquote}
 \begin{tabular}{@{}l@{\hspace{3em}}l@{\hspace{2em}}l@{}}
-\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}	& \multicolumn{1}{c@{\hspace{2em}}}{\textbf{C}}	\\
+\multicolumn{1}{c@{\hspace{3em}}}{\textbf{C}}	& \multicolumn{1}{c@{\hspace{2em}}}{\textbf{\CFA}}	\\
+\begin{cfa}
+switch ( i ) {
+  case 1: case 3 : case 5:
+	...
+  case 2: case 4 : case 6:
+	...
+}
+\end{cfa}
+&
 \begin{cfa}
 switch ( i ) {
@@ -670,13 +680,4 @@
 &
 \begin{cfa}
-switch ( i ) {
-  case 1: case 3 : case 5:
-	...
-  case 2: case 4 : case 6:
-	...
-}
-\end{cfa}
-&
-\begin{cfa}
 
 // odd values
@@ -688,15 +689,48 @@
 \end{tabular}
 \end{cquote}
-In addition, subranges are allowed to specify case values.\footnote{
-gcc has the same mechanism but awkward syntax, \lstinline{2 ...42}, because a space is required after a number, otherwise the period is a decimal point.}
+In addition, subranges are allowed to specify case values.
+\begin{cquote}
+\begin{tabular}{@{}l@{\hspace{3em}}l@{\hspace{2em}}l@{\hspace{2em}}l@{}}
+\multicolumn{1}{c@{\hspace{3em}}}{\textbf{C}}	& \multicolumn{1}{c@{\hspace{2em}}}{\textbf{\CFA}}	& \multicolumn{1}{c@{\hspace{2em}}}{\textbf{©gcc©}}	\\
 \begin{cfa}
 switch ( i ) {
-  case ®1~5:® $\C{// 1, 2, 3, 4, 5}$
+  case 1: case 2: case 3: case 4:
 	...
-  case ®10~15:® $\C{// 10, 11, 12, 13, 14, 15}$
+  case 10: case 11: case 12: case 13:
 	...
 }
 \end{cfa}
-Lists of subranges are also allowed.
+&
+\begin{cfa}
+switch ( i ) {
+  case ®1~4:®
+	...
+  case ®10~13:®
+	...
+}
+\end{cfa}
+&
+\begin{cfa}
+switch ( i ) {
+  case 1$\R{\textvisiblespace}$®...®4:
+	...
+  case 10$\R{\textvisiblespace}$®...®13:
+	...
+}
+\end{cfa}
+&
+\begin{cfa}
+
+// 1, 2, 3, 4
+
+// 10, 11, 12, 13
+
+
+\end{cfa}
+\end{tabular}
+\end{cquote}
+While ©gcc© has the same range mechanism, it has an awkward syntax, ©2©\R{\textvisiblespace}©...42©, because a space is required after a number, otherwise the period is a decimal point.
+
+\CFA also allows lists of subranges.
 \begin{cfa}
 case ®1~5, 12~21, 35~42®:
@@ -769,5 +803,5 @@
 This situation is better handled by a list of case values \see{\VRef{s:caseClause}}.
 While fall-through itself is not a problem, the problem occurs when fall-through is the default, as this semantics is unintuitive to many programmers and is different from most programming languages with a ©switch© statement.
-Hence, default fall-through semantics results in a large number of programming errors as programmers often \emph{forget} the ©break© statement at the end of a ©case© clause, resulting in inadvertent fall-through.
+Hence, default fall-through semantics results in a many programming errors as programmers often \emph{forget} the ©break© statement at the end of a ©case© clause, resulting in inadvertent fall-through.
 
 \item
@@ -846,5 +880,5 @@
 and there is only a medium amount of fall-through from one ©case© clause to the next, and most of these result from a list of case values executing common code, rather than a sequence of case actions that compound.
 \end{itemize}
-These observations put into perspective the \CFA changes to the ©switch©.
+These observations put into perspective the \CFA changes to the ©switch© statement.
 \begin{enumerate}
 \item
@@ -888,13 +922,13 @@
 \begin{cfa}
 switch ( x ) {
-	®int i = 0;® $\C{// allowed only at start}$
+	®int i = 0;®						$\C{// allowed only at start}$
   case 0:
 	...
-	®int j = 0;® $\C{// disallowed}$
+	®int j = 0;®						$\C{// disallowed}$
   case 1:
 	{
-		®int k = 0;® $\C{// allowed at different nesting levels}$
+		®int k = 0;®					$\C{// allowed at different nesting levels}$
 		...
-	  ®case 2:® $\C{// disallow case in nested statements}$
+	  ®case 2:®							$\C{// disallow case in nested statements}$
 	}
   ...
@@ -907,5 +941,5 @@
 
 The \Indexc{fallthrough} clause may be non-terminating within a \Indexc{case} clause or have a target label to common code from multiple case clauses.
-\begin{center}
+\begin{cquote}
 \begin{tabular}{@{}lll@{}}
 \begin{cfa}
@@ -957,5 +991,5 @@
 \end{cfa}
 \end{tabular}
-\end{center}
+\end{cquote}
 The target label must be below the \Indexc{fallthrough} and may not be nested in a control structure, and
 the target label must be at the same or higher level as the containing \Indexc{case} clause and located at
@@ -964,6 +998,6 @@
 
 \begin{figure}
-\begin{tabular}{@{}l@{\hspace{40pt}}|l@{}}
-\multicolumn{1}{@{}c@{\hspace{40pt}}|}{loop control} & \multicolumn{1}{c@{}}{output} \\
+\begin{tabular}{@{}l@{\hspace{50pt}}|l@{}}
+\multicolumn{1}{@{}c@{\hspace{50pt}}|}{loop control} & \multicolumn{1}{c@{}}{output} \\
 \hline
 \begin{cfa}
@@ -1083,7 +1117,7 @@
 The \Indexc{for}, \Indexc{while}, and \Indexc{do} loop-control allow an empty conditional, which implies a comparison value of ©1© (true).
 \begin{cfa}
-while ( ®/*empty*/®  )			$\C{// while ( true )}$
-for ( ®/*empty*/®  )			$\C{// for ( ; true; )}$
-do ... while ( ®/*empty*/®  )	 $\C{// do ... while ( true )}$
+while ( ®/* empty */®  )				$\C{// while ( true )}$
+for ( ®/* empty */®  )					$\C{// for ( ; true; )}$
+do ... while ( ®/* empty */®  )			$\C{// do ... while ( true )}$
 \end{cfa}
 
@@ -1115,7 +1149,7 @@
 If no type is specified for the loop index, it is the type of the high value H (when the low value is implicit) or the low value L.
 \begin{cfa}
-for ( ®5® )						$\C{// typeof(5) anonymous-index; 5 is high value}$
-for ( i; ®1.5® ~ 5.5 )			$\C{// typeof(1.5) i; 1.5 is low value}$
-for ( ®int i®; 0 ~ 10 ~ 2 )		$\C{// int i; type is explicit}$
+for ( ®5® )								$\C{// typeof(5) anonymous-index; 5 is high value}$
+for ( i; ®1.5® ~ 5.5 )					$\C{// typeof(1.5) i; 1.5 is low value}$
+for ( ®int i®; 0 ~ 10 ~ 2 )				$\C{// int i; type is explicit}$
 \end{cfa}
 
@@ -1125,37 +1159,37 @@
 H is implicit up-to exclusive range [0,H\R{)}.
 \begin{cfa}
-for ( ®5® )						$\C{// for ( typeof(5) i; i < 5; i += 1 )}$
+for ( ®5® )								$\C{// for ( typeof(5) i; i < 5; i += 1 )}$
 \end{cfa}
 \item
 ©~=© H is implicit up-to inclusive range [0,H\R{]}.
 \begin{cfa}
-for ( ®~=® 5 )					$\C{// for ( typeof(5) i; i <= 5; i += 1 )}$
+for ( ®~=® 5 )							$\C{// for ( typeof(5) i; i <= 5; i += 1 )}$
 \end{cfa}
 \item
 L ©~©\index{~@©~©} H is explicit up-to exclusive range [L,H\R{)}.
 \begin{cfa}
-for ( 1 ®~® 5 )					$\C{// for ( typeof(1) i = 1; i < 5; i += 1 )}$
+for ( 1 ®~® 5 )							$\C{// for ( typeof(1) i = 1; i < 5; i += 1 )}$
 \end{cfa}
 \item
 L ©~=©\index{~=@©~=©} H is explicit up-to inclusive range [L,H\R{]}.
 \begin{cfa}
-for ( 1 ®~=® 5 )					$\C{// for ( typeof(1) i = 1; i <= 5; i += 1 )}$
+for ( 1 ®~=® 5 )						$\C{// for ( typeof(1) i = 1; i <= 5; i += 1 )}$
 \end{cfa}
 \item
 L ©-~©\index{-~@©-~©} H is explicit down-to exclusive range [H,L\R{)}, where L and H are implicitly interchanged to make the range down-to.
 \begin{cfa}
-for ( 1 ®-~® 5 )					$\C{// for ( typeof(1) i = 5; i > 0; i -= 1 )}$
+for ( 1 ®-~® 5 )						$\C{// for ( typeof(1) i = 5; i > 0; i -= 1 )}$
 \end{cfa}
 \item
 L ©-~=©\index{-~=@©-~=©} H is explicit down-to inclusive range [H,L\R{]}, where L and H are implicitly interchanged to make the range down-to.
 \begin{cfa}
-for ( 1 ®-~=® 5 )					$\C{// for ( typeof(1) i = 5; i >= 0; i -= 1 )}$
+for ( 1 ®-~=® 5 )						$\C{// for ( typeof(1) i = 5; i >= 0; i -= 1 )}$
 \end{cfa}
 \item
 ©@© means put nothing in this field.
 \begin{cfa}
-for ( i; 1 ~ ®@® ~ 2 )			$\C{// for ( typeof(1) i = 1; \R{/* empty */}; i += 2 )}$
-for ( i; 1 ~ 10 ~ ®@® )			$\C{// for ( typeof(1) i = 1; i < 10; \R{/* empty */} )}$
-for ( i; 1 ~ ®@® ~ ®@® )		$\C{// for ( typeof(1) i = 1; /*empty*/; \R{/* empty */} )}$
+for ( i; 1 ~ ®@® ~ 2 )					$\C{// for ( typeof(1) i = 1; \R{/* empty */}; i += 2 )}$
+for ( i; 1 ~ 10 ~ ®@® )					$\C{// for ( typeof(1) i = 1; i < 10; \R{/* empty */} )}$
+for ( i; 1 ~ ®@® ~ ®@® )				$\C{// for ( typeof(1) i = 1; /*empty*/; \R{/* empty */} )}$
 \end{cfa}
 L cannot be elided for the up-to range, \lstinline{@ ~ 5}, and H for the down-to range, \lstinline{1 -~ @}, because then the loop index is uninitialized.
@@ -1164,12 +1198,12 @@
 ©:© means low another index.
 \begin{cfa}
-for ( i; 5 ®:® j; 2 ~ 12 ~ 3 )		$\C{// for ( typeof(i) i = 1, j = 2; i < 5 \&\& j < 12; i += 1, j += 3 )}$
+for ( i; 5 ®:® j; 2 ~ 12 ~ 3 )			$\C{// for ( typeof(i) i = 1, j = 2; i < 5 \&\& j < 12; i += 1, j += 3 )}$
 \end{cfa}
 \end{itemize}
 \R{Warning}: specifying the down-to range maybe unexpected because the loop control \emph{implicitly} switches the L and H values (and toggles the increment/decrement for I):
 \begin{cfa}
-for ( i; 1 ~ 10 )	${\C[1.5in]{// up range}$
-for ( i; 1 -~ 10 )	${\C{// down range}$
-for ( i; ®10 -~ 1® )	${\C{// \R{WRONG down range!}}\CRT}$
+for ( i; 1 ~ 10 )						${\C{// up range}$
+for ( i; 1 -~ 10 )						${\C{// down range}$
+for ( i; ®10 -~ 1® )					${\C{// \R{WRONG down range!}}}$
 \end{cfa}
 The reason for this semantics is that the range direction can be toggled by adding/removing the minus, ©'-'©, versus interchanging the L and H expressions, which has a greater chance of introducing errors.
@@ -1188,7 +1222,6 @@
 
 \begin{figure}
-\centering
 \begin{lrbox}{\myboxA}
-\begin{cfa}[tabsize=3]
+\begin{cfa}[tabsize=4]
 ®Compound:® {
 	®Try:® try {
@@ -1220,5 +1253,5 @@
 
 \begin{lrbox}{\myboxB}
-\begin{cfa}[tabsize=3]
+\begin{cfa}[tabsize=4]
 {
 
@@ -1249,9 +1282,9 @@
 \end{lrbox}
 
-\subfloat[\CFA]{\label{f:CFibonacci}\usebox\myboxA}
+\subfloat[C]{\label{f:CFAFibonacciGen}\usebox\myboxB}
 \hspace{3pt}
 \vrule
 \hspace{3pt}
-\subfloat[C]{\label{f:CFAFibonacciGen}\usebox\myboxB}
+\subfloat[\CFA]{\label{f:CFibonacci}\usebox\myboxA}
 \caption{Multi-level Exit}
 \label{f:MultiLevelExit}
@@ -1287,5 +1320,5 @@
 int a[10];
 \end{cfa}
-\begin{tabular}{@{}lll@{}}
+\begin{tabular}{@{}l@{\hspace{3em}}l@{\hspace{3em}}l@{}}
 \begin{cfa}
 
@@ -1328,7 +1361,11 @@
 Grouping heterogeneous data into an \newterm{aggregate} (structure/union) is a common programming practice, and aggregates may be nested:
 \begin{cfa}
-struct Person {								$\C{// aggregate}$
-	struct Name { char first[20], last[20]; } name $\C{// nesting}$
-	struct Address { ... } address			$\C{// nesting}$
+struct Person {							$\C{// aggregate}$
+	struct Name {						$\C{// nesting}$
+		char first[20], last[20];
+	} name;
+	struct Address {					$\C{// nesting}$
+		...
+	} address;
 	int sex;
 };
@@ -1337,5 +1374,5 @@
 \begin{cfa}
 Person p
-®p.®name; ®p.®address; ®p.®sex; $\C{// access containing fields}$
+®p.®name; ®p.®address; ®p.®sex;			$\C{// access containing fields}$
 \end{cfa}
 which extends to multiple levels of qualification for nested aggregates and multiple aggregates.
@@ -1352,7 +1389,7 @@
 \begin{cfa}
 struct S {
-	struct $\R{\LstCommentStyle{/* unnamed */}}$ { int g,  h; } __attribute__(( aligned(64) ));
+	struct $\R{\LstCommentStyle{/* unnamed */}}$  { int g,  h; } __attribute__(( aligned(64) ));
 	int tag;
-	union $\R{\LstCommentStyle{/* unnamed */}}$ {
+	union $\R{\LstCommentStyle{/* unnamed */}}$  {
 		struct { char c1,  c2; } __attribute__(( aligned(128) ));
 		struct { int i1,  i2; };
@@ -1368,6 +1405,6 @@
 struct S {
 	char ®c®;   int ®i®;   double ®d®;
-	void f( /* S * this */ ) {				$\C{// implicit ``this'' parameter}$
-		®c®;   ®i®;   ®d®;					$\C{// this->c; this->i; this->d;}$
+	void f( /* S * this */ ) {			$\C{// implicit ``this'' parameter}$
+		®c®;   ®i®;   ®d®;				$\C{// this->c; this->i; this->d;}$
 	}
 }
@@ -1377,12 +1414,12 @@
 \begin{cfa}
 struct T {
-	char ®m®;   int ®i®;   double ®n®;		$\C{// derived class variables}$
+	char ®m®;   int ®i®;   double ®n®;	$\C{// derived class variables}$
 };
 struct S : public T {
-	char ®c®;   int ®i®;   double ®d®;		$\C{// class variables}$
+	char ®c®;   int ®i®;   double ®d®;	$\C{// class variables}$
 	void g( double ®d®, T & t ) {
-		d;   ®t®.m;   ®t®.i;   ®t®.n;		$\C{// function parameter}$
-		c;   i;   ®this->®d;   ®S::®d;		$\C{// class S variables}$
-		m;   ®T::®i;   n;					$\C{// class T variables}$
+		d;   ®t®.m;   ®t®.i;   ®t®.n;	$\C{// function parameter}$
+		c;   i;   ®this->®d;   ®S::®d;	$\C{// class S variables}$
+		m;   ®T::®i;   n;				$\C{// class T variables}$
 	}
 };
@@ -1394,13 +1431,13 @@
 Hence, the qualified fields become variables with the side-effect that it is simpler to write, easier to read, and optimize field references in a block.
 \begin{cfa}
-void f( S & this ) ®with ( this )® {		$\C{// with statement}$
-	®c®;   ®i®;   ®d®;						$\C{// this.c, this.i, this.d}$
+void f( S & this ) ®with ( this )® {	$\C{// with statement}$
+	®c®;   ®i®;   ®d®;					$\C{// this.c, this.i, this.d}$
 }
 \end{cfa}
 with the generality of opening multiple aggregate-parameters:
 \begin{cfa}
-void g( S & s, T & t ) ®with ( s, t )® {	$\C{// multiple aggregate parameters}$
-	c;   ®s.®i;   d;						$\C{// s.c, s.i, s.d}$
-	m;   ®t.®i;   n;						$\C{// t.m, t.i, t.n}$
+void g( S & s, T & t ) ®with ( s, t )® {$\C{// multiple aggregate parameters}$
+	c;   ®s.®i;   d;					$\C{// s.c, s.i, s.d}$
+	m;   ®t.®i;   n;					$\C{// t.m, t.i, t.n}$
 }
 \end{cfa}
@@ -1425,11 +1462,11 @@
 struct R { int ®i®; int j; double ®m®; } r, w;
 with ( r, q ) {
-	j + k;									$\C{// unambiguous, r.j + q.k}$
-	m = 5.0;								$\C{// unambiguous, q.m = 5.0}$
-	m = 1;									$\C{// unambiguous, r.m = 1}$
-	int a = m;								$\C{// unambiguous, a = r.i }$
-	double b = m;							$\C{// unambiguous, b = q.m}$
-	int c = r.i + q.i;						$\C{// disambiguate with qualification}$
-	(double)m;								$\C{// disambiguate with cast}$
+	j + k;								$\C{// unambiguous, r.j + q.k}$
+	m = 5.0;							$\C{// unambiguous, q.m = 5.0}$
+	m = 1;								$\C{// unambiguous, r.m = 1}$
+	int a = m;							$\C{// unambiguous, a = r.i }$
+	double b = m;						$\C{// unambiguous, b = q.m}$
+	int c = r.i + q.i;					$\C{// disambiguate with qualification}$
+	(double)m;							$\C{// disambiguate with cast}$
 }
 \end{cfa}
@@ -1439,7 +1476,7 @@
 \begin{cfa}
 with ( r ) {
-	i;										$\C{// unambiguous, r.i}$
+	i;									$\C{// unambiguous, r.i}$
 	with ( q ) {
-		i;									$\C{// unambiguous, q.i}$
+		i;								$\C{// unambiguous, q.i}$
 	}
 }
@@ -1448,6 +1485,6 @@
 A cast can also be used to disambiguate among overload variables in a ©with© \emph{expression}:
 \begin{cfa}
-with ( w ) { ... }							$\C{// ambiguous, same name and no context}$
-with ( (Q)w ) { ... }						$\C{// unambiguous, cast}$
+with ( w ) { ... }						$\C{// ambiguous, same name and no context}$
+with ( (Q)w ) { ... }					$\C{// unambiguous, cast}$
 \end{cfa}
 Because there is no left-side in the ©with© expression to implicitly disambiguate between the ©w© variables, it is necessary to explicitly disambiguate by casting ©w© to type ©Q© or ©R©.
@@ -1456,5 +1493,5 @@
 \begin{cfa}
 void f( S & s, char c ) with ( s ) {
-	®s.c = c;®  i = 3;  d = 5.5;			$\C{// initialize fields}$
+	®s.c = c;®  i = 3;  d = 5.5;		$\C{// initialize fields}$
 }
 \end{cfa}
@@ -1462,5 +1499,5 @@
 To solve this problem, parameters \emph{not} explicitly opened are treated like an initialized aggregate:
 \begin{cfa}
-struct Params {								$\C{// s explicitly opened so S \& s elided}$
+struct Params {							$\C{// s explicitly opened so S \& s elided}$
 	char c;
 } params;
@@ -1481,4 +1518,23 @@
 Transfer of control can be local, within a routine, or non-local, among routines.
 Non-local transfer can cause stack unwinding, \ie non-local routine termination, depending on the kind of raise.
+
+Currently, \CFA uses macros ©ExceptionDecl© and ©ExceptionInst© to declare and instantiate an exception.
+\begin{cfa}
+#include <Exception.hfa>
+®ExceptionDecl®( E,		// must be global scope
+	... // exception fields
+);
+try {
+	...
+	if ( ... ) ®throwResume® ®ExceptionInst®( E, /* intialization */ );
+	if ( ... ) ®throw® ®ExceptionInst®( E, /* intialization */ );
+	...
+} ®catchResume®( E * ) { // must be pointer
+	...
+} catch( E * ) {
+	...
+}
+\end{cfa}
+
 \begin{cfa}
 exception_t E {}; $\C{// exception type}$
@@ -1489,5 +1545,5 @@
 try {
 	f(...);
-} catch( E e ; $boolean-predicate$ ) {		$\C{// termination handler}$
+} catch( E e ; $boolean-predicate$ ) {	$\C{// termination handler}$
 	// recover and continue
 } catchResume( E e ; $boolean-predicate$ ) { $\C{// resumption handler}$
@@ -1501,4 +1557,21 @@
 The ©catch© and ©catchResume© handlers may appear in any oder.
 However, the ©finally© clause must appear at the end of the ©try© statement.
+
+
+\section{Non-local Exception}
+
+\begin{cfa}
+void main() {
+	try {
+		_Enable {
+			... resume(); ...
+		}
+	} ®catchResume®( E & ) { // should be reference
+		...
+	} catch( E & ) {
+		...
+	}
+}
+\end{cfa}
 
 
@@ -1566,15 +1639,15 @@
 \begin{cquote}
 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}
-\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
+\multicolumn{1}{c@{\hspace{3em}}}{\textbf{C}}	& \multicolumn{1}{c}{\textbf{\CFA}}	\\
+\begin{cfa}[moredelim={**[is][\color{blue}]{\#}{\#}}]
+®int® #*# x1 #[5]#;
+®int® #(*#x2#)[5]#;
+#int (*#f®( int p )®#)[5]#;
+\end{cfa}
+&
 \begin{cfa}[moredelim={**[is][\color{blue}]{\#}{\#}}]
 #[5] *# ®int® x1;
 #* [5]# ®int® x2;
 #[* [5] int]# f®( int p )®;
-\end{cfa}
-&
-\begin{cfa}[moredelim={**[is][\color{blue}]{\#}{\#}}]
-®int® #*# x1 #[5]#;
-®int® #(*#x2#)[5]#;
-#int (*#f®( int p )®#)[5]#;
 \end{cfa}
 \end{tabular}
@@ -1586,11 +1659,11 @@
 \begin{cquote}
 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}
-\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
+\multicolumn{1}{c@{\hspace{3em}}}{\textbf{C}}	& \multicolumn{1}{c}{\textbf{\CFA}}	\\
+\begin{cfa}
+int ®*®x, ®*®y;
+\end{cfa}
+&
 \begin{cfa}
 ®*® int x, y;
-\end{cfa}
-&
-\begin{cfa}
-int ®*®x, ®*®y;
 \end{cfa}
 \end{tabular}
@@ -1599,13 +1672,13 @@
 \begin{cquote}
 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}
-\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
+\multicolumn{1}{c@{\hspace{3em}}}{\textbf{C}}	& \multicolumn{1}{c}{\textbf{\CFA}}	\\
+\begin{cfa}
+int ®*®x, y;
+
+\end{cfa}
+&
 \begin{cfa}
 ®*® int x;
 int y;
-\end{cfa}
-&
-\begin{cfa}
-int ®*®x, y;
-
 \end{cfa}
 \end{tabular}
@@ -1615,5 +1688,16 @@
 \begin{cquote}
 \begin{tabular}{@{}l@{\hspace{3em}}l@{\hspace{2em}}l@{}}
-\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}	& \multicolumn{1}{c@{\hspace{2em}}}{\textbf{C}}	\\
+\multicolumn{1}{c@{\hspace{3em}}}{\textbf{C}}	& \multicolumn{1}{c@{\hspace{2em}}}{\textbf{\CFA}}	\\
+\begin{cfa}
+int z[ 5 ];
+char * w[ 5 ];
+double (* v)[ 5 ];
+struct s {
+	int f0:3;
+	int * f1;
+	int * f2[ 5 ]
+};
+\end{cfa}
+&
 \begin{cfa}
 [ 5 ] int z;
@@ -1628,15 +1712,4 @@
 &
 \begin{cfa}
-int z[ 5 ];
-char * w[ 5 ];
-double (* v)[ 5 ];
-struct s {
-	int f0:3;
-	int * f1;
-	int * f2[ 5 ]
-};
-\end{cfa}
-&
-\begin{cfa}
 // array of 5 integers
 // array of 5 pointers to char
@@ -1654,13 +1727,13 @@
 \begin{cquote}
 \begin{tabular}{@{}l@{\hspace{1em}}l@{\hspace{1em}}l@{}}
-\multicolumn{1}{c@{\hspace{1em}}}{\textbf{\CFA}}	& \multicolumn{1}{c@{\hspace{1em}}}{\textbf{C}}	\\
+\multicolumn{1}{c@{\hspace{1em}}}{\textbf{C}}	& \multicolumn{1}{c@{\hspace{1em}}}{\textbf{\CFA}}	\\
+\begin{cfa}
+int const * const x;
+const int (* const y)[ 5 ]
+\end{cfa}
+&
 \begin{cfa}
 const * const int x;
 const * [ 5 ] const int y;
-\end{cfa}
-&
-\begin{cfa}
-int const * const x;
-const int (* const y)[ 5 ]
 \end{cfa}
 &
@@ -1675,13 +1748,13 @@
 \begin{cquote}
 \begin{tabular}{@{}l@{\hspace{3em}}l@{\hspace{2em}}l@{}}
-\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}	& \multicolumn{1}{c@{\hspace{2em}}}{\textbf{C}}	\\
+\multicolumn{1}{c@{\hspace{3em}}}{\textbf{C}}	& \multicolumn{1}{c@{\hspace{2em}}}{\textbf{\CFA}}	\\
+\begin{cfa}
+int extern x[ 5 ];
+const int static * y;
+\end{cfa}
+&
 \begin{cfa}
 extern [ 5 ] int x;
 static * const int y;
-\end{cfa}
-&
-\begin{cfa}
-int extern x[ 5 ];
-const int static * y;
 \end{cfa}
 &
@@ -1696,13 +1769,13 @@
 \begin{cquote}
 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}
-\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
+\multicolumn{1}{c@{\hspace{3em}}}{\textbf{C}}	& \multicolumn{1}{c}{\textbf{\CFA}}	\\
+\begin{cfa}
+y = (int *)x;
+i = sizeof(int * [ 5 ]);
+\end{cfa}
+&
 \begin{cfa}
 y = (* int)x;
 i = sizeof([ 5 ] * int);
-\end{cfa}
-&
-\begin{cfa}
-y = (int *)x;
-i = sizeof(int * [ 5 ]);
 \end{cfa}
 \end{tabular}
@@ -1899,13 +1972,13 @@
 \begin{cquote}
 \begin{tabular}{@{}l@{\hspace{3em}}l@{}}
-\multicolumn{1}{c@{\hspace{3em}}}{\textbf{\CFA}}	& \multicolumn{1}{c}{\textbf{C}}	\\
+\multicolumn{1}{c@{\hspace{3em}}}{\textbf{Cy}}	& \multicolumn{1}{c}{\textbf{\CFA}}	\\
+\begin{cfa}
+const int * ®const® * ®const® ccp;
+
+\end{cfa}
+&
 \begin{cfa}
 ®const® * ®const® * const int ccp;
 ®const® & ®const® & const int ccr;
-\end{cfa}
-&
-\begin{cfa}
-const int * ®const® * ®const® ccp;
-
 \end{cfa}
 \end{tabular}
@@ -2068,5 +2141,5 @@
 \begin{cfa}
 int x, &r = ®x®, f( int & p ); $\C{// lvalue variable (int) convert to reference (int \&)}$
-f( ®x® ); $\C{// lvalue variable (int) convert to reference (int \&)}$
+f( ®x® ); $\C{// lvalue variable (int) convert to reference (int \&)}\CRT$
 \end{cfa}
 Conversion can restrict a type, where ©cv1© $\le$ ©cv2©, \eg passing an ©int© to a ©const volatile int &©, which has low cost.
@@ -4430,5 +4503,5 @@
 \end{cfa}
 To match a minus, put it as the first character, ©"-0-9"©.
-Note, other complex forms of regular-expression matching is not supported.
+Other complex forms of regular-expression matching are not supported.
 
 The following \Index{manipulator}s control scanning of input values (reading), and only affect the format of the argument.
@@ -8628,20 +8701,6 @@
 \begin{cquote}
 \begin{tabular}{@{}l@{\hspace{\parindentlnth}}|@{\hspace{\parindentlnth}}l@{}}
-\multicolumn{1}{@{}c|@{\hspace{\parindentlnth}}}{\textbf{\CFA}}	& \multicolumn{1}{@{\hspace{\parindentlnth}}c@{}}{\textbf{C}}	\\
+\multicolumn{1}{@{}c|@{\hspace{\parindentlnth}}}{\textbf{C}}	& \multicolumn{1}{@{\hspace{\parindentlnth}}c@{}}{\textbf{\CFA}}	\\
 \hline
-\begin{cfa}
-#include <gmp.hfa>$\indexc{gmp}$
-int main( void ) {
-	sout | "Factorial Numbers";
-	Int fact = 1;
-
-	sout | 0 | fact;
-	for ( i; 40 ) {
-		fact *= i;
-		sout | i | fact;
-	}
-}
-\end{cfa}
-&
 \begin{cfa}
 #include <gmp.h>$\indexc{gmp.h}$
@@ -8654,4 +8713,18 @@
 		®mpz_mul_ui®( fact, fact, i );
 		®gmp_printf®( "%d %Zd\n", i, fact );
+	}
+}
+\end{cfa}
+&
+\begin{cfa}
+#include <gmp.hfa>$\indexc{gmp}$
+int main( void ) {
+	sout | "Factorial Numbers";
+	Int fact = 1;
+
+	sout | 0 | fact;
+	for ( i; 40 ) {
+		fact *= i;
+		sout | i | fact;
 	}
 }
