Index: .gitignore
===================================================================
--- .gitignore	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ .gitignore	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,8 +1,6 @@
 # build files
-*.[ado]
+*.[ao]
 
 # generated by configure
-Makefile
-aclocal.m4
 autom4te.cache
 config.h
@@ -10,4 +8,5 @@
 config.log
 stamp-h1
+Makefile
 driver/Makefile
 libcfa/Makefile
@@ -15,16 +14,15 @@
 
 # build directories
+.deps
+.dirstamp
 bin
 lib
 
 # src executables, for lib and bin
-driver/cc1
-driver/cfa
+src/driver/cc1
+src/driver/cfa
 src/cfa-cpp
-libcfa/libcfa-prelude.c
+src/libcfa/libcfa-prelude.c
 
-# generated by bison and lex from cfa.y and lex.l, respectively
-src/Parser/cfa.output
-src/Parser/cfa.tab.cc
-src/Parser/cfa.tab.h
-src/Parser/lex.yy.cc
+# generated by bison and lex from cfa.yy and lex.ll, respectively
+src/Parser/parser.output
Index: INSTALL
===================================================================
--- INSTALL	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ INSTALL	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -3,5 +3,5 @@
 
 Cforall is built using GNU Make and the GNU Autoconf system.  It also requires
-g++ version 3, bison and flex.  On systems where GNU Make is the default make
+g++ version 4, bison and flex.  On systems where GNU Make is the default make
 it may suffice to build the system by entering the commands
 
@@ -17,9 +17,9 @@
 
 --prefix=/some/directory controls the path prefix common to all installed
-cfa-cc components.  Some components will be installed in /some/directory/bin,
-others in /some/directory/lib.  If unspecified, this defaults to /usr/local.
+  cfa-cc components.  Some components will be installed in /some/directory/bin,
+  others in /some/directory/lib.  If unspecified, this defaults to /usr/local.
 
---with-backend-compiler=PROGRAM specifies the installed path of gcc 3.2.  It
-defaults to the first command named 'gcc' in the current PATH.
+--with-backend-compiler=PROGRAM specifies the installed path of gcc.  It
+  defaults to the first command named 'gcc' in the current PATH.
 
 cfa-cc itself is built with the version of g++ specified by the environment
Index: Makefile.am
===================================================================
--- Makefile.am	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ Makefile.am	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,6 +1,20 @@
-SUBDIRS = driver libcfa src
+######################## -*- Mode: Makefile-Automake -*- ######################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## Makefile.am -- 
+##
+## Author           : Peter A. Buhr
+## Created On       : Sun May 31 22:14:18 2015
+## Last Modified By : Peter A. Buhr
+## Last Modified On : Mon Jun  1 20:20:40 2015
+## Update Count     : 5
+###############################################################################
 
-# non-source files
-EXTRA_DIST = Docs
-
-BACKEND_CC = @BACKEND_CC@
+AUTOMAKE_OPTIONS = foreign		# do not require all the GNU file names
+SUBDIRS = src/driver src src/libcfa	# order important, src before libcfa because cfa-cpp used to build prelude
+EXTRA_DIST = Docs			# non-source files
+BACKEND_CC = @BACKEND_CC@		# C compiler used to compile Cforall programs, versus C++ compiler used to build cfa command
Index: Makefile.in
===================================================================
--- Makefile.in	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ Makefile.in	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -15,4 +15,7 @@
 
 @SET_MAKE@
+
+######################## -*- Mode: Makefile-Automake -*- ######################
+###############################################################################
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
@@ -35,18 +38,16 @@
 DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in $(srcdir)/config.h.in \
-	$(top_srcdir)/configure $(top_srcdir)/driver/Makefile.in \
-	$(top_srcdir)/libcfa/Makefile.in $(top_srcdir)/src/Makefile.in \
-	$(top_srcdir)/src/examples/Makefile.in AUTHORS INSTALL TODO \
-	install-sh missing mkinstalldirs
+	$(top_srcdir)/configure INSTALL automake/compile \
+	automake/depcomp automake/install-sh automake/missing \
+	automake/ylwrap
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
  configure.lineno config.status.lineno
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES = src/Makefile driver/Makefile libcfa/Makefile \
-	src/examples/Makefile
+CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
@@ -108,4 +109,5 @@
 distcleancheck_listfiles = find . -type f -print
 ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
 AMTAR = @AMTAR@
 AUTOCONF = @AUTOCONF@
@@ -113,5 +115,5 @@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
-BACKEND_CC = @BACKEND_CC@
+BACKEND_CC = @BACKEND_CC@		# C compiler used to compile Cforall programs, versus C++ compiler used to build cfa command
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
@@ -123,5 +125,4 @@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CPP_PATH = @CPP_PATH@
 CXX = @CXX@
 CXXDEPMODE = @CXXDEPMODE@
@@ -149,4 +150,5 @@
 LIBS = @LIBS@
 LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
@@ -160,4 +162,5 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -199,5 +202,4 @@
 pdfdir = @pdfdir@
 prefix = @prefix@
-preludedir = @preludedir@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
@@ -210,8 +212,7 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-SUBDIRS = driver libcfa src
-
-# non-source files
-EXTRA_DIST = Docs
+AUTOMAKE_OPTIONS = foreign		# do not require all the GNU file names
+SUBDIRS = src/driver src src/libcfa	# order important, src before libcfa because cfa-cpp used to build prelude
+EXTRA_DIST = Docs			# non-source files
 all: config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
@@ -220,5 +221,5 @@
 am--refresh: Makefile
 	@:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -247,7 +248,7 @@
 	$(SHELL) ./config.status --recheck
 
-$(top_srcdir)/configure:  $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 	$(am__cd) $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
 $(am__aclocal_m4_deps):
@@ -260,5 +261,5 @@
 	@rm -f stamp-h1
 	cd $(top_builddir) && $(SHELL) ./config.status config.h
-$(srcdir)/config.h.in:  $(am__configure_deps) 
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 
 	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
 	rm -f stamp-h1
@@ -267,12 +268,4 @@
 distclean-hdr:
 	-rm -f config.h stamp-h1
-src/Makefile: $(top_builddir)/config.status $(top_srcdir)/src/Makefile.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-driver/Makefile: $(top_builddir)/config.status $(top_srcdir)/driver/Makefile.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-libcfa/Makefile: $(top_builddir)/config.status $(top_srcdir)/libcfa/Makefile.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-src/examples/Makefile: $(top_builddir)/config.status $(top_srcdir)/src/examples/Makefile.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
 
 # This directory's subdirectories are mostly independent; you can cd
Index: README
===================================================================
--- README	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ README	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -2,81 +2,73 @@
 ======================================
 
-This is a PRE-RELEASE version of cfa-cc.  It exists solely for the
-purpose of private experimentation and scholarly research.  The authors
-disclaim all responsibility for the consequences of any malfunction of
-the software, including the malfunction of any programs compiled using
-the software.
+This is a PRE-RELEASE version of cfa-cc.  It exists solely for the purpose of
+private experimentation and scholarly research.  The authors disclaim all
+responsibility for the consequences of any malfunction of the software,
+including the malfunction of any programs compiled using the software.
 
 What is Cforall?
 ----------------
-Cforall is a language design extending ISO C. The purpose of the
-project is to engineer modern language features into C in an
-evolutionary rather than revolutionary way. Java is an example of the
-revolutionary approach of modernizing C/C++, resulting in a new
-language rather than an extension of its descendents. C++, Fortran 95
-and Cobol 9X are examples of the evolutionary approach where modern
-language features are added and problems fixed within the framework of
-an existing language.
+Cforall is a language design extending ISO C. The purpose of the project is to
+engineer modern language features into C in an evolutionary rather than
+revolutionary way. Java is an example of the revolutionary approach of
+modernizing C/C++, resulting in a new language rather than an extension of its
+descendents. C++, Fortran 95 and Cobol 9X are examples of the evolutionary
+approach where modern language features are added and problems fixed within the
+framework of an existing language.
 
-The goal of this project is to produce a largely backwards compatible
-version of C containing many modern language features and fixing some
-of the well known C problems. Without continued development of the
-language, C will be unable to cope with the needs of modern programming
-problems and programmers; as a result, it will fade into disuse.
-Considering the large body of existing C code and programmers, there is
-a significant impetus to ensure C is transformed into a modern
-programming language.
+The goal of this project is to produce a largely backwards compatible version
+of C containing many modern language features and fixing some of the well known
+C problems. Without continued development of the language, C will be unable to
+cope with the needs of modern programming problems and programmers; as a
+result, it will fade into disuse.  Considering the large body of existing C
+code and programmers, there is a significant impetus to ensure C is transformed
+into a modern programming language.
 
 What is cfa-cc?
 ---------------
-cfa-cc is a collection of programs centred around a translator that
-takes Cforall code as input and outputs corresponding C code.  This
-is complemented by a compiler driver in the style of "gcc", which
-handles preprocessing, compiling, assembling, and linking and invokes
-the translator at appropriate moments.
+cfa-cc is a collection of programs centred around a translator that takes
+Cforall code as input and outputs corresponding C code.  This is complemented
+by a compiler driver in the style of "gcc", which handles preprocessing,
+compiling, assembling, and linking and invokes the translator at appropriate
+moments.
 
 What is required in order to use cfa-cc?
 ----------------------------------------
-Building cfa-cc requires GNU Make and gcc/g++ 3.  cfa-cc is written in
-C++.
+Building cfa-cc requires GNU Make and gcc/g++ 4.  cfa-cc is written in C++.
 
-The compiler driver uses an installed version of gcc to handle all
-aspects of the compilation process except for the Cforall->C translation.
-Currently, only gcc 3.2 is supported.
+The compiler driver uses an installed version of gcc to handle all aspects of
+the compilation process except for the Cforall->C translation.  Currently, only
+gcc 4.x is supported.
 
 How is cfa-cc used?
 -------------------
-The compiler driver "cfa" accepts all of the arguments of gcc, and is
-used in the same way.  For example:
+The compiler driver "cfa" accepts all of the arguments of gcc, and is used in
+the same way.  For example:
 
 	cfa -c test.c
 	cfa test.o
 
-Cforall source files must end with '.c' in order to be compiled by the
-compiler driver.  In addition, the flag "-CFA" causes cfa to invoke the
-preprocessor and translator and send the translator output to standard
-output.
+Cforall source files must end with '.c' in order to be compiled by the compiler
+driver.  In addition, the flag "-CFA" causes cfa to invoke the preprocessor and
+translator and send the translator output to standard output.
 
-In cases where the compiler driver is not useful (i.e., where gcc 3.2
-is not available), it is still possible to invoke the translator
-directly.  The translator is installed by default as
-/usr/local/lib/cfa-cpp.  A typical invocation is:
+It is possible to invoke the translator directly.  The translator is installed
+by default as /usr/local/lib/cfa-cpp.  A typical invocation is:
 
 	/usr/local/lib/cfa-cpp -cp infile outfile
 
-If outfile is omitted, output goes to standard output; if infile is
-also omitted, input comes from standard input.  Options to the
-translator other than "-cp" will not produce valid C code and are only
-useful for debugging the translator.
+If outfile is omitted, output goes to standard output; if infile is also
+omitted, input comes from standard input.  Options to the translator other than
+"-cp" will not produce valid C code and are only useful for debugging the
+translator.
 
 How can C code be used with cfa-cc?
 -----------------------------------
-cfa-cc should be able to compile most ANSI C programs.  It is also
-possible to link against C libraries in most cases.  Since Cforall
-supports overloading, however, names used in Cforall code are
-mangled in the output C code.  This will cause linker failures when
-the names refer to functions and objects in code compiled with
-a standard C compiler.  For this reason, it is necessary to enclose
-the declarations of these functions and objects in extern "C" {}
+cfa-cc should be able to compile most ANSI C programs.  It is also possible to
+link against C libraries in most cases.  Since Cforall supports overloading,
+however, names used in Cforall code are mangled in the output C code.  This
+caused linker failures when the names refer to functions and objects in code
+compiled with a standard C compiler.  For this reason, it is necessary to
+enclose the declarations of these functions and objects in extern "C" {}
 blocks.  For example:
 
@@ -87,38 +79,32 @@
 
 The extern "C" turns off name mangling for functions and objects declared
-within the block.  As a result, it is not possible to overload their
-names.
-
-It is our intention to have a transparent solution to this problem
-in place for our first official release.
+within the block.  As a result, it is not possible to overload their names.
 
 What's wrong with cfa-cc?
 -------------------------
-The authors consider this software to be in an unstable state.  It is
-quite likely that there are many reasonable programs that will fail
-to compile.  We encourage users to report their experiences to
-cforall@plg.uwaterloo.ca, but we make no promises regarding support.
 
-We have fixed most of the problems that we are aware of.  There are
-some exceptions:
+The authors consider this software to be in an unstable state.  It is quite
+likely that there are many reasonable programs that will fail to compile.  We
+encourage users to report their experiences to cforall@plg.uwaterloo.ca, but we
+make no promises regarding support.
 
-	- initializers are poorly implemented; in particular,
-	file-scope initializers may result in the generation of invalid
-	C code
+We have fixed most of the problems that we are aware of.  There are some
+exceptions:
 
-	- the ISO C99 designated initialization syntax '[n] = m' or
-	'.n = m' is not supported; use a colon in place of the equal sign
-	
-	- some legitimate programs will produce warnings from the C
-	compiler; these are harmless (in particular, the creation of
-	libcfa.a in the build process should cause four warnings from
-	gcc)
+- initializers are poorly implemented; in particular, file-scope initializers
+  may result in the generation of invalid C code
 
-	- abstract types introduced using the keyword 'type' are not
-	implemented (although 'type' can be used to introduce type
-	parameters)
+- the ISO C99 designated initialization syntax '[n] = m' or '.n = m' is not
+  supported; use a colon in place of the equal sign
 
-	- the implicit coercion of structure types to the type of their
-	first member is not implemented
+- some legitimate programs will produce warnings from the C compiler; these are
+  harmless (in particular, the creation of libcfa.a in the build process should
+  cause four warnings from gcc)
+
+- abstract types introduced using the keyword 'type' are not implemented
+  (although 'type' can be used to introduce type parameters)
+
+- the implicit coercion of structure types to the type of their first member is
+  not implemented
 	
 Who is responsible for cfa-cc?
Index: aclocal.m4
===================================================================
--- aclocal.m4	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ aclocal.m4	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -417,16 +417,4 @@
 ])
 
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 8
-
-# AM_CONFIG_HEADER is obsolete.  It has been replaced by AC_CONFIG_HEADERS.
-AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
-
 # Do all the work for Automake.                             -*- Autoconf -*-
 
@@ -613,6 +601,9 @@
 AC_SUBST([am__leading_dot])])
 
-# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005
-# Free Software Foundation, Inc.
+# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008,
+# 2011 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
@@ -622,15 +613,31 @@
 # serial 5
 
-# AM_PROG_LEX
-# -----------
-# Autoconf leaves LEX=: if lex or flex can't be found.  Change that to a
-# "missing" invocation, for better error output.
-AC_DEFUN([AM_PROG_LEX],
-[AC_PREREQ(2.50)dnl
-AC_REQUIRE([AM_MISSING_HAS_RUN])dnl
-AC_REQUIRE([AC_PROG_LEX])dnl
-if test "$LEX" = :; then
-  LEX=${am_missing_run}flex
-fi])
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless `enable' is passed literally.
+# For symmetry, `disable' may be passed as well.  Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+[  --][am_maintainer_other][-maintainer-mode  am_maintainer_other make rules and dependencies not useful
+			  (and sometimes confusing) to the casual installer],
+      [USE_MAINTAINER_MODE=$enableval],
+      [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST([MAINT])dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
 
 # Check to see how 'make' treats includes.	            -*- Autoconf -*-
@@ -684,4 +691,39 @@
 AC_MSG_RESULT([$_am_result])
 rm -f confinc confmf
+])
+
+# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_PROG_CC_C_O
+# --------------
+# Like AC_PROG_CC_C_O, but changed for automake.
+AC_DEFUN([AM_PROG_CC_C_O],
+[AC_REQUIRE([AC_PROG_CC_C_O])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+dnl Make sure AC_PROG_CC is never called again, or it will override our
+dnl setting of CC.
+m4_define([AC_PROG_CC],
+          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
 ])
 
Index: automake/compile
===================================================================
--- automake/compile	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ automake/compile	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,310 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-01-04.17; # UTC
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free
+# Software Foundation, Inc.
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" ""	$nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+  file=$1
+  case $file in
+    / | /[!/]*) # absolute file, and not a UNC file
+      if test -z "$file_conv"; then
+	# lazily determine how to convert abs files
+	case `uname -s` in
+	  MINGW*)
+	    file_conv=mingw
+	    ;;
+	  CYGWIN*)
+	    file_conv=cygwin
+	    ;;
+	  *)
+	    file_conv=wine
+	    ;;
+	esac
+      fi
+      case $file_conv/,$2, in
+	*,$file_conv,*)
+	  ;;
+	mingw/*)
+	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+	  ;;
+	cygwin/*)
+	  file=`cygpath -m "$file" || echo "$file"`
+	  ;;
+	wine/*)
+	  file=`winepath -w "$file" || echo "$file"`
+	  ;;
+      esac
+      ;;
+  esac
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+  # Assume a capable shell
+  lib_path=
+  shared=:
+  linker_opts=
+  for arg
+  do
+    if test -n "$eat"; then
+      eat=
+    else
+      case $1 in
+	-o)
+	  # configure might choose to run compile as 'compile cc -o foo foo.c'.
+	  eat=1
+	  case $2 in
+	    *.o | *.[oO][bB][jJ])
+	      func_file_conv "$2"
+	      set x "$@" -Fo"$file"
+	      shift
+	      ;;
+	    *)
+	      func_file_conv "$2"
+	      set x "$@" -Fe"$file"
+	      shift
+	      ;;
+	  esac
+	  ;;
+	-I*)
+	  func_file_conv "${1#-I}" mingw
+	  set x "$@" -I"$file"
+	  shift
+	  ;;
+	-l*)
+	  lib=${1#-l}
+	  found=no
+	  save_IFS=$IFS
+	  IFS=';'
+	  for dir in $lib_path $LIB
+	  do
+	    IFS=$save_IFS
+	    if $shared && test -f "$dir/$lib.dll.lib"; then
+	      found=yes
+	      set x "$@" "$dir/$lib.dll.lib"
+	      break
+	    fi
+	    if test -f "$dir/$lib.lib"; then
+	      found=yes
+	      set x "$@" "$dir/$lib.lib"
+	      break
+	    fi
+	  done
+	  IFS=$save_IFS
+
+	  test "$found" != yes && set x "$@" "$lib.lib"
+	  shift
+	  ;;
+	-L*)
+	  func_file_conv "${1#-L}"
+	  if test -z "$lib_path"; then
+	    lib_path=$file
+	  else
+	    lib_path="$lib_path;$file"
+	  fi
+	  linker_opts="$linker_opts -LIBPATH:$file"
+	  ;;
+	-static)
+	  shared=false
+	  ;;
+	-Wl,*)
+	  arg=${1#-Wl,}
+	  save_ifs="$IFS"; IFS=','
+	  for flag in $arg; do
+	    IFS="$save_ifs"
+	    linker_opts="$linker_opts $flag"
+	  done
+	  IFS="$save_ifs"
+	  ;;
+	-Xlinker)
+	  eat=1
+	  linker_opts="$linker_opts $2"
+	  ;;
+	-*)
+	  set x "$@" "$1"
+	  shift
+	  ;;
+	*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+	  func_file_conv "$1"
+	  set x "$@" -Tp"$file"
+	  shift
+	  ;;
+	*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+	  func_file_conv "$1" mingw
+	  set x "$@" "$file"
+	  shift
+	  ;;
+	*)
+	  set x "$@" "$1"
+	  shift
+	  ;;
+      esac
+    fi
+    shift
+  done
+  if test -n "$linker_opts"; then
+    linker_opts="-link$linker_opts"
+  fi
+  exec "$@" $linker_opts
+  exit 1
+}
+
+eat=
+
+case $1 in
+  '')
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "compile $scriptversion"
+    exit $?
+    ;;
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+    func_cl_wrapper "$@"      # Doesn't return...
+    ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+	# configure might choose to run compile as 'compile cc -o foo foo.c'.
+	# So we strip '-o arg' only if arg is an object.
+	eat=1
+	case $2 in
+	  *.o | *.obj)
+	    ofile=$2
+	    ;;
+	  *)
+	    set x "$@" -o "$2"
+	    shift
+	    ;;
+	esac
+	;;
+      *.c)
+	cfile=$1
+	set x "$@" "$1"
+	shift
+	;;
+      *)
+	set x "$@" "$1"
+	shift
+	;;
+    esac
+  fi
+  shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+  # If no '-o' option was seen then we might have been invoked from a
+  # pattern rule where we don't need one.  That is ok -- this is a
+  # normal compilation that the losing compiler can handle.  If no
+  # '.c' file was seen then we are probably linking.  That is also
+  # ok.
+  exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file.  Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+  if mkdir "$lockdir" >/dev/null 2>&1; then
+    break
+  fi
+  sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
Index: automake/depcomp
===================================================================
--- automake/depcomp	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ automake/depcomp	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,688 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2011-12-04.11; # UTC
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
+# 2011 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+case $1 in
+  '')
+     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+  depmode     Dependency tracking mode.
+  source      Source file read by `PROGRAMS ARGS'.
+  object      Object file output by `PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
+  depfile     Dependency file to output.
+  tmpdepfile  Temporary file to use when outputting dependencies.
+  libtool     Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "depcomp $scriptversion"
+    exit $?
+    ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
+fi
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+   # This is just like msvisualcpp but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u='sed s,\\\\,/,g'
+   depmode=msvisualcpp
+fi
+
+if test "$depmode" = msvc7msys; then
+   # This is just like msvc7 but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u='sed s,\\\\,/,g'
+   depmode=msvc7
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am.  Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+  for arg
+  do
+    case $arg in
+    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+    *)  set fnord "$@" "$arg" ;;
+    esac
+    shift # fnord
+    shift # $arg
+  done
+  "$@"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+  tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'.  On the theory
+## that the space means something, we add a space to the output as
+## well.  hp depmode also adds that space, but also prefixes the VPATH
+## to the object.  Take care to not repeat it in the output.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+      | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like `#:fec' to the end of the
+    # dependency line.
+    tr ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> "$depfile"
+    echo >> "$depfile"
+
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$base.u
+    tmpdepfile3=$dir.libs/$base.u
+    "$@" -Wc,-M
+  else
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$dir$base.u
+    tmpdepfile3=$dir$base.u
+    "$@" -M
+  fi
+  stat=$?
+
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+    # That's a tab and a space in the [].
+    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+icc)
+  # Intel's C compiler understands `-MD -MF file'.  However on
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # ICC 7.0 will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+  # ICC 7.1 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using \ :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+    sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp2)
+  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+  # compilers, which have integrated preprocessors.  The correct option
+  # to use with these is +Maked; it writes dependencies to a file named
+  # 'foo.d', which lands next to the object file, wherever that
+  # happens to be.
+  # Much of this is similar to the tru64 case; see comments there.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir.libs/$base.d
+    "$@" -Wc,+Maked
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    "$@" +Maked
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+     rm -f "$tmpdepfile1" "$tmpdepfile2"
+     exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add `dependent.h:' lines.
+    sed -ne '2,${
+	       s/^ *//
+	       s/ \\*$//
+	       s/$/:/
+	       p
+	     }' "$tmpdepfile" >> "$depfile"
+  else
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile" "$tmpdepfile2"
+  ;;
+
+tru64)
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in `foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      # With Tru64 cc, shared objects can also be used to make a
+      # static library.  This mechanism is used in libtool 1.4 series to
+      # handle both shared and static libraries in a single compilation.
+      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+      #
+      # With libtool 1.5 this exception was removed, and libtool now
+      # generates 2 separate objects for the 2 libraries.  These two
+      # compilations output dependencies in $dir.libs/$base.o.d and
+      # in $dir$base.o.d.  We have to check for both files, because
+      # one of the two compilations can be disabled.  We should prefer
+      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+      # automatically cleaned when .libs/ is deleted, while ignoring
+      # the former would cause a distcleancheck panic.
+      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
+      tmpdepfile2=$dir$base.o.d          # libtool 1.5
+      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
+      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1=$dir$base.o.d
+      tmpdepfile2=$dir$base.d
+      tmpdepfile3=$dir$base.d
+      tmpdepfile4=$dir$base.d
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+      exit $stat
+   fi
+
+   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+   do
+     test -f "$tmpdepfile" && break
+   done
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a tab and a space in the [].
+      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
+
+msvc7)
+  if test "$libtool" = yes; then
+    showIncludes=-Wc,-showIncludes
+  else
+    showIncludes=-showIncludes
+  fi
+  "$@" $showIncludes > "$tmpdepfile"
+  stat=$?
+  grep -v '^Note: including file: ' "$tmpdepfile"
+  if test "$stat" = 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The first sed program below extracts the file names and escapes
+  # backslashes for cygpath.  The second sed program outputs the file
+  # name when reading, but also accumulates all include files in the
+  # hold buffer in order to output them again at the end.  This only
+  # works with sed implementations that can handle large buffers.
+  sed < "$tmpdepfile" -n '
+/^Note: including file:  *\(.*\)/ {
+  s//\1/
+  s/\\/\\\\/g
+  p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/	\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+  s/.*/	/
+  G
+  p
+}' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvc7msys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for `:'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  "$@" $dashmflag |
+    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no eat=no
+  for arg
+  do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    if test $eat = yes; then
+      eat=no
+      continue
+    fi
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -arch)
+      eat=yes ;;
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix=`echo "$object" | sed 's/^.*\././'`
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  # makedepend may prepend the VPATH from the source file name to the object.
+  # No need to regex-escape $object, excess matching of '.' is harmless.
+  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E |
+    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+	set fnord "$@"
+	shift
+	shift
+	;;
+    *)
+	set fnord "$@" "$arg"
+	shift
+	shift
+	;;
+    esac
+  done
+  "$@" -E 2>/dev/null |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
+  echo "	" >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvcmsys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
Index: automake/install-sh
===================================================================
--- automake/install-sh	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ automake/install-sh	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,527 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2011-01-19.21; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+nl='
+'
+IFS=" ""	$nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+  doit_exec=exec
+else
+  doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+  test "$posix_glob" != "?" || {
+    if (set -f) 2>/dev/null; then
+      posix_glob=
+    else
+      posix_glob=:
+    fi
+  }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+     --help     display this help and exit.
+     --version  display version info and exit.
+
+  -c            (ignored)
+  -C            install only if different (preserve the last data modification time)
+  -d            create directories instead of installing files.
+  -g GROUP      $chgrpprog installed files to GROUP.
+  -m MODE       $chmodprog installed files to MODE.
+  -o USER       $chownprog installed files to USER.
+  -s            $stripprog installed files.
+  -t DIRECTORY  install into DIRECTORY.
+  -T            report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+  RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+  case $1 in
+    -c) ;;
+
+    -C) copy_on_change=true;;
+
+    -d) dir_arg=true;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+	shift;;
+
+    --help) echo "$usage"; exit $?;;
+
+    -m) mode=$2
+	case $mode in
+	  *' '* | *'	'* | *'
+'*	  | *'*'* | *'?'* | *'['*)
+	    echo "$0: invalid mode: $mode" >&2
+	    exit 1;;
+	esac
+	shift;;
+
+    -o) chowncmd="$chownprog $2"
+	shift;;
+
+    -s) stripcmd=$stripprog;;
+
+    -t) dst_arg=$2
+	# Protect names problematic for `test' and other utilities.
+	case $dst_arg in
+	  -* | [=\(\)!]) dst_arg=./$dst_arg;;
+	esac
+	shift;;
+
+    -T) no_target_directory=true;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
+
+    --)	shift
+	break;;
+
+    -*)	echo "$0: invalid option: $1" >&2
+	exit 1;;
+
+    *)  break;;
+  esac
+  shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+  # When -d is used, all remaining arguments are directories to create.
+  # When -t is used, the destination is already specified.
+  # Otherwise, the last argument is the destination.  Remove it from $@.
+  for arg
+  do
+    if test -n "$dst_arg"; then
+      # $@ is not empty: it contains at least $arg.
+      set fnord "$@" "$dst_arg"
+      shift # fnord
+    fi
+    shift # arg
+    dst_arg=$arg
+    # Protect names problematic for `test' and other utilities.
+    case $dst_arg in
+      -* | [=\(\)!]) dst_arg=./$dst_arg;;
+    esac
+  done
+fi
+
+if test $# -eq 0; then
+  if test -z "$dir_arg"; then
+    echo "$0: no input file specified." >&2
+    exit 1
+  fi
+  # It's OK to call `install-sh -d' without argument.
+  # This can happen when creating conditional directories.
+  exit 0
+fi
+
+if test -z "$dir_arg"; then
+  do_exit='(exit $ret); exit $ret'
+  trap "ret=129; $do_exit" 1
+  trap "ret=130; $do_exit" 2
+  trap "ret=141; $do_exit" 13
+  trap "ret=143; $do_exit" 15
+
+  # Set umask so as not to create temps with too-generous modes.
+  # However, 'strip' requires both read and write access to temps.
+  case $mode in
+    # Optimize common cases.
+    *644) cp_umask=133;;
+    *755) cp_umask=22;;
+
+    *[0-7])
+      if test -z "$stripcmd"; then
+	u_plus_rw=
+      else
+	u_plus_rw='% 200'
+      fi
+      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+    *)
+      if test -z "$stripcmd"; then
+	u_plus_rw=
+      else
+	u_plus_rw=,u+rw
+      fi
+      cp_umask=$mode$u_plus_rw;;
+  esac
+fi
+
+for src
+do
+  # Protect names problematic for `test' and other utilities.
+  case $src in
+    -* | [=\(\)!]) src=./$src;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    dstdir=$dst
+    test -d "$dstdir"
+    dstdir_status=$?
+  else
+
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+    # might cause directories to be created, which would be especially bad
+    # if $src (and thus $dsttmp) contains '*'.
+    if test ! -f "$src" && test ! -d "$src"; then
+      echo "$0: $src does not exist." >&2
+      exit 1
+    fi
+
+    if test -z "$dst_arg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+    dst=$dst_arg
+
+    # If destination is a directory, append the input filename; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+	echo "$0: $dst_arg: Is a directory" >&2
+	exit 1
+      fi
+      dstdir=$dst
+      dst=$dstdir/`basename "$src"`
+      dstdir_status=0
+    else
+      # Prefer dirname, but fall back on a substitute if dirname fails.
+      dstdir=`
+	(dirname "$dst") 2>/dev/null ||
+	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	     X"$dst" : 'X\(//\)[^/]' \| \
+	     X"$dst" : 'X\(//\)$' \| \
+	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+	echo X"$dst" |
+	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\/\)[^/].*/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\/\)$/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\).*/{
+		   s//\1/
+		   q
+		 }
+		 s/.*/./; q'
+      `
+
+      test -d "$dstdir"
+      dstdir_status=$?
+    fi
+  fi
+
+  obsolete_mkdir_used=false
+
+  if test $dstdir_status != 0; then
+    case $posix_mkdir in
+      '')
+	# Create intermediate dirs using mode 755 as modified by the umask.
+	# This is like FreeBSD 'install' as of 1997-10-28.
+	umask=`umask`
+	case $stripcmd.$umask in
+	  # Optimize common cases.
+	  *[2367][2367]) mkdir_umask=$umask;;
+	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+	  *[0-7])
+	    mkdir_umask=`expr $umask + 22 \
+	      - $umask % 100 % 40 + $umask % 20 \
+	      - $umask % 10 % 4 + $umask % 2
+	    `;;
+	  *) mkdir_umask=$umask,go-w;;
+	esac
+
+	# With -d, create the new directory with the user-specified mode.
+	# Otherwise, rely on $mkdir_umask.
+	if test -n "$dir_arg"; then
+	  mkdir_mode=-m$mode
+	else
+	  mkdir_mode=
+	fi
+
+	posix_mkdir=false
+	case $umask in
+	  *[123567][0-7][0-7])
+	    # POSIX mkdir -p sets u+wx bits regardless of umask, which
+	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+	    ;;
+	  *)
+	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+	    if (umask $mkdir_umask &&
+		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+	    then
+	      if test -z "$dir_arg" || {
+		   # Check for POSIX incompatibilities with -m.
+		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+		   # other-writeable bit of parent directory when it shouldn't.
+		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
+		   case $ls_ld_tmpdir in
+		     d????-?r-*) different_mode=700;;
+		     d????-?--*) different_mode=755;;
+		     *) false;;
+		   esac &&
+		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+		   }
+		 }
+	      then posix_mkdir=:
+	      fi
+	      rmdir "$tmpdir/d" "$tmpdir"
+	    else
+	      # Remove any dirs left behind by ancient mkdir implementations.
+	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+	    fi
+	    trap '' 0;;
+	esac;;
+    esac
+
+    if
+      $posix_mkdir && (
+	umask $mkdir_umask &&
+	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+      )
+    then :
+    else
+
+      # The umask is ridiculous, or mkdir does not conform to POSIX,
+      # or it failed possibly due to a race condition.  Create the
+      # directory the slow way, step by step, checking for races as we go.
+
+      case $dstdir in
+	/*) prefix='/';;
+	[-=\(\)!]*) prefix='./';;
+	*)  prefix='';;
+      esac
+
+      eval "$initialize_posix_glob"
+
+      oIFS=$IFS
+      IFS=/
+      $posix_glob set -f
+      set fnord $dstdir
+      shift
+      $posix_glob set +f
+      IFS=$oIFS
+
+      prefixes=
+
+      for d
+      do
+	test X"$d" = X && continue
+
+	prefix=$prefix$d
+	if test -d "$prefix"; then
+	  prefixes=
+	else
+	  if $posix_mkdir; then
+	    (umask=$mkdir_umask &&
+	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+	    # Don't fail if two instances are running concurrently.
+	    test -d "$prefix" || exit 1
+	  else
+	    case $prefix in
+	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+	      *) qprefix=$prefix;;
+	    esac
+	    prefixes="$prefixes '$qprefix'"
+	  fi
+	fi
+	prefix=$prefix/
+      done
+
+      if test -n "$prefixes"; then
+	# Don't fail if two instances are running concurrently.
+	(umask $mkdir_umask &&
+	 eval "\$doit_exec \$mkdirprog $prefixes") ||
+	  test -d "$dstdir" || exit 1
+	obsolete_mkdir_used=true
+      fi
+    fi
+  fi
+
+  if test -n "$dir_arg"; then
+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+  else
+
+    # Make a couple of temp file names in the proper directory.
+    dsttmp=$dstdir/_inst.$$_
+    rmtmp=$dstdir/_rm.$$_
+
+    # Trap to clean up those temp files at exit.
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+    # Copy the file name to the temp name.
+    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+    # and set any options; do chmod last to preserve setuid bits.
+    #
+    # If any of these fail, we abort the whole thing.  If we want to
+    # ignore errors from any of these, just make sure not to ignore
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
+    #
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+    # If -C, don't bother to copy if it wouldn't change the file.
+    if $copy_on_change &&
+       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` &&
+
+       eval "$initialize_posix_glob" &&
+       $posix_glob set -f &&
+       set X $old && old=:$2:$4:$5:$6 &&
+       set X $new && new=:$2:$4:$5:$6 &&
+       $posix_glob set +f &&
+
+       test "$old" = "$new" &&
+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+    then
+      rm -f "$dsttmp"
+    else
+      # Rename the file to the real destination.
+      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+      # The rename failed, perhaps because mv can't rename something else
+      # to itself, or perhaps because mv is so ancient that it does not
+      # support -f.
+      {
+	# Now remove or move aside any old file at destination location.
+	# We try this two ways since rm can't unlink itself on some
+	# systems and the destination file might be busy for other
+	# reasons.  In this case, the final cleanup might fail but the new
+	# file should still install successfully.
+	{
+	  test ! -f "$dst" ||
+	  $doit $rmcmd -f "$dst" 2>/dev/null ||
+	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+	  } ||
+	  { echo "$0: cannot unlink or rename $dst" >&2
+	    (exit 1); exit 1
+	  }
+	} &&
+
+	# Now rename the file to the real destination.
+	$doit $mvcmd "$dsttmp" "$dst"
+      }
+    fi || exit 1
+
+    trap '' 0
+  fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
Index: automake/missing
===================================================================
--- automake/missing	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ automake/missing	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,331 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2012-01-06.13; # UTC
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
+# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try \`$0 --help' for more information"
+  exit 1
+fi
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+  # Try to run requested program, and just exit if it succeeds.
+  run=
+  shift
+  "$@" && exit 0
+  # Exit code 63 means version mismatch.  This often happens
+  # when the user try to use an ancient version of a tool on
+  # a file that requires a minimum version.  In this case we
+  # we should proceed has if the program had been absent, or
+  # if --run hadn't been passed.
+  if test $? = 63; then
+    run=:
+    msg="probably too old"
+  fi
+  ;;
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+  --run           try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
+  autom4te     touch the output file, or create a stub one
+  automake     touch all \`Makefile.in' files
+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
+  flex         create \`lex.yy.c', if possible, from existing .c
+  help2man     touch the output file
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
+\`g' are ignored when checking the name.
+
+Send bug reports to <bug-automake@gnu.org>."
+    exit $?
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing $scriptversion (GNU Automake)"
+    exit $?
+    ;;
+
+  -*)
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
+    exit 1
+    ;;
+
+esac
+
+# normalize program name to check for.
+program=`echo "$1" | sed '
+  s/^gnu-//; t
+  s/^gnu//; t
+  s/^g//; t'`
+
+# Now exit if we have it, but it failed.  Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).  This is about non-GNU programs, so use $1 not
+# $program.
+case $1 in
+  lex*|yacc*)
+    # Not GNU programs, they don't have --version.
+    ;;
+
+  *)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       # Could not run --version or --help.  This is probably someone
+       # running `$TOOL --version' or `$TOOL --help' to check whether
+       # $TOOL exists and not knowing $TOOL uses missing.
+       exit 1
+    fi
+    ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $program in
+  aclocal*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
+
+  autoheader*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+         from any GNU archive site."
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+    test -z "$files" && files="config.h"
+    touch_files=
+    for f in $files; do
+      case $f in
+      *:*) touch_files="$touch_files "`echo "$f" |
+				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+      *) touch_files="$touch_files $f.in";;
+      esac
+    done
+    touch $touch_files
+    ;;
+
+  automake*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+         You might want to install the \`Automake' and \`Perl' packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print |
+	   sed 's/\.am$/.in/' |
+	   while read f; do touch "$f"; done
+    ;;
+
+  autom4te*)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.
+         You can get \`$1' as part of \`Autoconf' from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo "#! /bin/sh"
+	echo "# Created by GNU Automake missing as a replacement of"
+	echo "#  $ $@"
+	echo "exit 0"
+	chmod +x $file
+	exit 1
+    fi
+    ;;
+
+  bison*|yacc*)
+    echo 1>&2 "\
+WARNING: \`$1' $msg.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
+         in order for those modifications to take effect.  You can get
+         \`Bison' from any GNU archive site."
+    rm -f y.tab.c y.tab.h
+    if test $# -ne 1; then
+        eval LASTARG=\${$#}
+	case $LASTARG in
+	*.y)
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+	    if test -f "$SRCFILE"; then
+	         cp "$SRCFILE" y.tab.c
+	    fi
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+	    if test -f "$SRCFILE"; then
+	         cp "$SRCFILE" y.tab.h
+	    fi
+	  ;;
+	esac
+    fi
+    if test ! -f y.tab.h; then
+	echo >y.tab.h
+    fi
+    if test ! -f y.tab.c; then
+	echo 'main() { return 0; }' >y.tab.c
+    fi
+    ;;
+
+  lex*|flex*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.l' file.  You may need the \`Flex' package
+         in order for those modifications to take effect.  You can get
+         \`Flex' from any GNU archive site."
+    rm -f lex.yy.c
+    if test $# -ne 1; then
+        eval LASTARG=\${$#}
+	case $LASTARG in
+	*.l)
+	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+	    if test -f "$SRCFILE"; then
+	         cp "$SRCFILE" lex.yy.c
+	    fi
+	  ;;
+	esac
+    fi
+    if test ! -f lex.yy.c; then
+	echo 'main() { return 0; }' >lex.yy.c
+    fi
+    ;;
+
+  help2man*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+	 you modified a dependency of a manual page.  You may need the
+	 \`Help2man' package in order for those modifications to take
+	 effect.  You can get \`Help2man' from any GNU archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo ".ab help2man is required to generate this page"
+	exit $?
+    fi
+    ;;
+
+  makeinfo*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
+    # The file to touch is that specified with -o ...
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -z "$file"; then
+      # ... or it is the one specified with @setfilename ...
+      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '
+	/^@setfilename/{
+	  s/.* \([^ ]*\) *$/\1/
+	  p
+	  q
+	}' $infile`
+      # ... or it is derived from the source name (dir/f.texi becomes f.info)
+      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+    fi
+    # If the file does not exist, the user really needs makeinfo;
+    # let's fail without touching anything.
+    test -f $file || exit 1
+    touch $file
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequisites for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
Index: automake/ylwrap
===================================================================
--- automake/ylwrap	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ automake/ylwrap	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,226 @@
+#! /bin/sh
+# ylwrap - wrapper for lex/yacc invocations.
+
+scriptversion=2011-08-25.18; # UTC
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005,
+# 2007, 2009, 2010, 2011 Free Software Foundation, Inc.
+#
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+case "$1" in
+  '')
+    echo "$0: No files given.  Try \`$0 --help' for more information." 1>&2
+    exit 1
+    ;;
+  --basedir)
+    basedir=$2
+    shift 2
+    ;;
+  -h|--h*)
+    cat <<\EOF
+Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]...
+
+Wrapper for lex/yacc invocations, renaming files as desired.
+
+  INPUT is the input file
+  OUTPUT is one file PROG generates
+  DESIRED is the file we actually want instead of OUTPUT
+  PROGRAM is program to run
+  ARGS are passed to PROG
+
+Any number of OUTPUT,DESIRED pairs may be used.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v|--v*)
+    echo "ylwrap $scriptversion"
+    exit $?
+    ;;
+esac
+
+
+# The input.
+input="$1"
+shift
+case "$input" in
+  [\\/]* | ?:[\\/]*)
+    # Absolute path; do nothing.
+    ;;
+  *)
+    # Relative path.  Make it absolute.
+    input="`pwd`/$input"
+    ;;
+esac
+
+pairlist=
+while test "$#" -ne 0; do
+  if test "$1" = "--"; then
+    shift
+    break
+  fi
+  pairlist="$pairlist $1"
+  shift
+done
+
+# The program to run.
+prog="$1"
+shift
+# Make any relative path in $prog absolute.
+case "$prog" in
+  [\\/]* | ?:[\\/]*) ;;
+  *[\\/]*) prog="`pwd`/$prog" ;;
+esac
+
+# FIXME: add hostname here for parallel makes that run commands on
+# other machines.  But that might take us over the 14-char limit.
+dirname=ylwrap$$
+do_exit="cd '`pwd`' && rm -rf $dirname > /dev/null 2>&1;"' (exit $ret); exit $ret'
+trap "ret=129; $do_exit" 1
+trap "ret=130; $do_exit" 2
+trap "ret=141; $do_exit" 13
+trap "ret=143; $do_exit" 15
+mkdir $dirname || exit 1
+
+cd $dirname
+
+case $# in
+  0) "$prog" "$input" ;;
+  *) "$prog" "$@" "$input" ;;
+esac
+ret=$?
+
+if test $ret -eq 0; then
+  set X $pairlist
+  shift
+  first=yes
+  # Since DOS filename conventions don't allow two dots,
+  # the DOS version of Bison writes out y_tab.c instead of y.tab.c
+  # and y_tab.h instead of y.tab.h. Test to see if this is the case.
+  y_tab_nodot="no"
+  if test -f y_tab.c || test -f y_tab.h; then
+    y_tab_nodot="yes"
+  fi
+
+  # The directory holding the input.
+  input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'`
+  # Quote $INPUT_DIR so we can use it in a regexp.
+  # FIXME: really we should care about more than `.' and `\'.
+  input_rx=`echo "$input_dir" | sed 's,\\\\,\\\\\\\\,g;s,\\.,\\\\.,g'`
+
+  while test "$#" -ne 0; do
+    from="$1"
+    # Handle y_tab.c and y_tab.h output by DOS
+    if test $y_tab_nodot = "yes"; then
+      if test $from = "y.tab.c"; then
+        from="y_tab.c"
+      else
+        if test $from = "y.tab.h"; then
+          from="y_tab.h"
+        fi
+      fi
+    fi
+    if test -f "$from"; then
+      # If $2 is an absolute path name, then just use that,
+      # otherwise prepend `../'.
+      case "$2" in
+        [\\/]* | ?:[\\/]*) target="$2";;
+        *) target="../$2";;
+      esac
+
+      # We do not want to overwrite a header file if it hasn't
+      # changed.  This avoid useless recompilations.  However the
+      # parser itself (the first file) should always be updated,
+      # because it is the destination of the .y.c rule in the
+      # Makefile.  Divert the output of all other files to a temporary
+      # file so we can compare them to existing versions.
+      if test $first = no; then
+        realtarget="$target"
+        target="tmp-`echo $target | sed s/.*[\\/]//g`"
+      fi
+      # Edit out `#line' or `#' directives.
+      #
+      # We don't want the resulting debug information to point at
+      # an absolute srcdir; it is better for it to just mention the
+      # .y file with no path.
+      #
+      # We want to use the real output file name, not yy.lex.c for
+      # instance.
+      #
+      # We want the include guards to be adjusted too.
+      FROM=`echo "$from" | sed \
+            -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
+            -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
+      TARGET=`echo "$2" | sed \
+            -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
+            -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
+
+      sed -e "/^#/!b" -e "s,$input_rx,," -e "s,$from,$2," \
+          -e "s,$FROM,$TARGET," "$from" >"$target" || ret=$?
+
+      # Check whether header files must be updated.
+      if test $first = no; then
+        if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then
+          echo "$2" is unchanged
+          rm -f "$target"
+        else
+          echo updating "$2"
+          mv -f "$target" "$realtarget"
+        fi
+      fi
+    else
+      # A missing file is only an error for the first file.  This
+      # is a blatant hack to let us support using "yacc -d".  If -d
+      # is not specified, we don't want an error when the header
+      # file is "missing".
+      if test $first = yes; then
+        ret=1
+      fi
+    fi
+    shift
+    shift
+    first=no
+  done
+else
+  ret=$?
+fi
+
+# Remove the directory.
+cd ..
+rm -rf $dirname
+
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
Index: config.h.in
===================================================================
--- config.h.in	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ config.h.in	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,3 +1,3 @@
-/* config.h.in.  Generated from configure.in by autoheader.  */
+/* config.h.in.  Generated from configure.ac by autoheader.  */
 
 /* Location of cfa command. */
@@ -13,12 +13,36 @@
 #undef CFA_PREFIX
 
-/* Path/name of cpp preprocessor. */
-#undef CPP_PATH
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+   systems. This function is required for `alloca.c' support on those systems.
+   */
+#undef CRAY_STACKSEG_END
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
 
 /* Path/name of C compiler. */
 #undef GCC_PATH
 
+/* Define to 1 if you have `alloca', as a function or macro. */
+#undef HAVE_ALLOCA
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+   */
+#undef HAVE_ALLOCA_H
+
+/* Define to 1 if you have the <fenv.h> header file. */
+#undef HAVE_FENV_H
+
+/* Define to 1 if you have the <float.h> header file. */
+#undef HAVE_FLOAT_H
+
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <libintl.h> header file. */
+#undef HAVE_LIBINTL_H
+
+/* Define to 1 if you have the <limits.h> header file. */
+#undef HAVE_LIMITS_H
 
 /* Define to 1 if you have the <malloc.h> header file. */
@@ -28,4 +52,16 @@
 #undef HAVE_MEMORY_H
 
+/* Define to 1 if you have the `memset' function. */
+#undef HAVE_MEMSET
+
+/* Define to 1 if you have the `putenv' function. */
+#undef HAVE_PUTENV
+
+/* Define to 1 if stdbool.h conforms to C99. */
+#undef HAVE_STDBOOL_H
+
+/* Define to 1 if you have the <stddef.h> header file. */
+#undef HAVE_STDDEF_H
+
 /* Define to 1 if you have the <stdint.h> header file. */
 #undef HAVE_STDINT_H
@@ -34,4 +70,7 @@
 #undef HAVE_STDLIB_H
 
+/* Define to 1 if you have the `strchr' function. */
+#undef HAVE_STRCHR
+
 /* Define to 1 if you have the <strings.h> header file. */
 #undef HAVE_STRINGS_H
@@ -39,4 +78,7 @@
 /* Define to 1 if you have the <string.h> header file. */
 #undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strtol' function. */
+#undef HAVE_STRTOL
 
 /* Define to 1 if you have the <sys/stat.h> header file. */
@@ -48,4 +90,10 @@
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
+
+/* Define to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
 
 /* Name of package */
@@ -70,9 +118,14 @@
 #undef PACKAGE_VERSION
 
+/* If using the C implementation of alloca, define if you know the
+   direction of stack growth for your system; otherwise it will be
+   automatically deduced at runtime.
+	STACK_DIRECTION > 0 => grows toward higher addresses
+	STACK_DIRECTION < 0 => grows toward lower addresses
+	STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
 /* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS
-
-/* Define to 1 if your <sys/time.h> declares `struct tm'. */
-#undef TM_IN_SYS_TIME
 
 /* Version number of package */
@@ -83,6 +136,13 @@
 #undef YYTEXT_POINTER
 
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
+/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
+   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+   #define below would cause a syntax error. */
+#undef _UINT32_T
+
+/* Define for Solaris 2.5.1 so the uint8_t typedef from <sys/synch.h>,
+   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+   #define below would cause a syntax error. */
+#undef _UINT8_T
 
 /* Define to `__inline__' or `__inline' if that's what the C compiler
@@ -91,2 +151,43 @@
 #undef inline
 #endif
+
+/* Define to the type of a signed integer type of width exactly 16 bits if
+   such a type exists and the standard includes do not define it. */
+#undef int16_t
+
+/* Define to the type of a signed integer type of width exactly 32 bits if
+   such a type exists and the standard includes do not define it. */
+#undef int32_t
+
+/* Define to the type of a signed integer type of width exactly 8 bits if such
+   a type exists and the standard includes do not define it. */
+#undef int8_t
+
+/* Define to the equivalent of the C99 'restrict' keyword, or to
+   nothing if this is not supported.  Do not define if restrict is
+   supported directly.  */
+#undef restrict
+/* Work around a bug in Sun C++: it does not support _Restrict or
+   __restrict__, even though the corresponding Sun C compiler ends up with
+   "#define restrict _Restrict" or "#define restrict __restrict__" in the
+   previous line.  Perhaps some future version of Sun C++ will work with
+   restrict; if so, hopefully it defines __RESTRICT like Sun C does.  */
+#if defined __SUNPRO_CC && !defined __RESTRICT
+# define _Restrict
+# define __restrict__
+#endif
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
+
+/* Define to the type of an unsigned integer type of width exactly 16 bits if
+   such a type exists and the standard includes do not define it. */
+#undef uint16_t
+
+/* Define to the type of an unsigned integer type of width exactly 32 bits if
+   such a type exists and the standard includes do not define it. */
+#undef uint32_t
+
+/* Define to the type of an unsigned integer type of width exactly 8 bits if
+   such a type exists and the standard includes do not define it. */
+#undef uint8_t
Index: configure
===================================================================
--- configure	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ configure	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,5 +1,5 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for cfa-cc 1.0.
+# Generated by GNU Autoconf 2.68 for cfa-cc 1.0.0.
 #
 # Report bugs to <cforall@plg.uwaterloo.ca>.
@@ -561,6 +561,6 @@
 PACKAGE_NAME='cfa-cc'
 PACKAGE_TARNAME='cfa-cc'
-PACKAGE_VERSION='1.0'
-PACKAGE_STRING='cfa-cc 1.0'
+PACKAGE_VERSION='1.0.0'
+PACKAGE_STRING='cfa-cc 1.0.0'
 PACKAGE_BUGREPORT='cforall@plg.uwaterloo.ca'
 PACKAGE_URL=''
@@ -607,18 +607,14 @@
 LTLIBOBJS
 LIBOBJS
-CFA_LIBDIR
-CFA_BINDIR
-CFA_INCDIR
-CFA_PREFIX
-CPP_PATH
-BACKEND_CC
-GCC_PATH
-preludedir
+ALLOCA
 EGREP
 GREP
 CPP
+RANLIB
 LEXLIB
 LEX_OUTPUT_ROOT
 LEX
+YFLAGS
+YACC
 am__fastdepCC_FALSE
 am__fastdepCC_TRUE
@@ -644,6 +640,13 @@
 CXXFLAGS
 CXX
-YFLAGS
-YACC
+CFA_LIBDIR
+CFA_BINDIR
+CFA_INCDIR
+CFA_PREFIX
+BACKEND_CC
+GCC_PATH
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
 am__untar
 am__tar
@@ -710,13 +713,11 @@
 ac_user_opts='
 enable_option_checking
+enable_maintainer_mode
+with_backend_compiler
 enable_dependency_tracking
-with_preludedir
-with_backend_compiler
 '
       ac_precious_vars='build_alias
 host_alias
 target_alias
-YACC
-YFLAGS
 CXX
 CXXFLAGS
@@ -727,4 +728,6 @@
 CC
 CFLAGS
+YACC
+YFLAGS
 CPP'
 
@@ -1270,5 +1273,5 @@
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures cfa-cc 1.0 to adapt to many kinds of systems.
+\`configure' configures cfa-cc 1.0.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1336,5 +1339,5 @@
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of cfa-cc 1.0:";;
+     short | recursive ) echo "Configuration of cfa-cc 1.0.0:";;
    esac
   cat <<\_ACEOF
@@ -1344,4 +1347,6 @@
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --disable-maintainer-mode  disable make rules and dependencies not useful
+			  (and sometimes confusing) to the casual installer
   --disable-dependency-tracking  speeds up one-time build
   --enable-dependency-tracking   do not reject slow dependency extractors
@@ -1350,14 +1355,7 @@
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-preludedir=DIR      DIR that contains prelude.cf and other necessary files
   --with-backend-compiler=PROGRAM     PROGRAM that performs the final code compilation (must be gcc-compatible)
 
 Some influential environment variables:
-  YACC        The `Yet Another Compiler Compiler' implementation to use.
-              Defaults to the first program found out of: `bison -y', `byacc',
-              `yacc'.
-  YFLAGS      The list of arguments that will be passed by default to $YACC.
-              This script will default YFLAGS to the empty string to avoid a
-              default value of `-d' given by some make applications.
   CXX         C++ compiler command
   CXXFLAGS    C++ compiler flags
@@ -1369,4 +1367,10 @@
   CC          C compiler command
   CFLAGS      C compiler flags
+  YACC        The `Yet Another Compiler Compiler' implementation to use.
+              Defaults to the first program found out of: `bison -y', `byacc',
+              `yacc'.
+  YFLAGS      The list of arguments that will be passed by default to $YACC.
+              This script will default YFLAGS to the empty string to avoid a
+              default value of `-d' given by some make applications.
   CPP         C preprocessor
 
@@ -1437,5 +1441,5 @@
 if $ac_init_version; then
   cat <<\_ACEOF
-cfa-cc configure 1.0
+cfa-cc configure 1.0.0
 generated by GNU Autoconf 2.68
 
@@ -1573,4 +1577,58 @@
 } # ac_fn_c_try_link
 
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+	 return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+	    return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_type
+
 # ac_fn_c_try_cpp LINENO
 # ----------------------
@@ -1609,4 +1667,144 @@
 
 } # ac_fn_c_try_cpp
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
 
 # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
@@ -1701,69 +1899,70 @@
 } # ac_fn_c_check_header_mongrel
 
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
+# ac_fn_c_find_intX_t LINENO BITS VAR
+# -----------------------------------
+# Finds a signed integer type with width BITS, setting cache variable VAR
+# accordingly.
+ac_fn_c_find_intX_t ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=$ac_status
-fi
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for int$2_t" >&5
+$as_echo_n "checking for int$2_t... " >&6; }
 if eval \${$3+:} false; then :
   $as_echo_n "(cached) " >&6
 else
+  eval "$3=no"
+     # Order is important - never check a type that is potentially smaller
+     # than half of the expected target width.
+     for ac_type in int$2_t 'int' 'long int' \
+	 'long long int' 'short int' 'signed char'; do
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+	     enum { N = $2 / 2 - 1 };
+int
+main ()
+{
+static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-$4
-#include <$2>
+$ac_includes_default
+	        enum { N = $2 / 2 - 1 };
+int
+main ()
+{
+static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1)
+		 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
+
+else
+  case $ac_type in #(
+  int$2_t) :
+    eval "$3=yes" ;; #(
+  *) :
+    eval "$3=\$ac_type" ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+       if eval test \"x\$"$3"\" = x"no"; then :
+
+else
+  break
+fi
+     done
 fi
 eval ac_res=\$$3
@@ -1772,10 +1971,63 @@
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_header_compile
+} # ac_fn_c_find_intX_t
+
+# ac_fn_c_find_uintX_t LINENO BITS VAR
+# ------------------------------------
+# Finds an unsigned integer type with width BITS, setting cache variable VAR
+# accordingly.
+ac_fn_c_find_uintX_t ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5
+$as_echo_n "checking for uint$2_t... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+     # Order is important - never check a type that is potentially smaller
+     # than half of the expected target width.
+     for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \
+	 'unsigned long long int' 'unsigned short int' 'unsigned char'; do
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  case $ac_type in #(
+  uint$2_t) :
+    eval "$3=yes" ;; #(
+  *) :
+    eval "$3=\$ac_type" ;;
+esac
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+       if eval test \"x\$"$3"\" = x"no"; then :
+
+else
+  break
+fi
+     done
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_find_uintX_t
 cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by cfa-cc $as_me 1.0, which was
+It was created by cfa-cc $as_me 1.0.0, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
@@ -2125,10 +2377,6 @@
 
 
-
-
-am__api_version='1.11'
-
 ac_aux_dir=
-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+for ac_dir in automake "$srcdir"/automake; do
   if test -f "$ac_dir/install-sh"; then
     ac_aux_dir=$ac_dir
@@ -2146,5 +2394,5 @@
 done
 if test -z "$ac_aux_dir"; then
-  as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in automake \"$srcdir\"/automake" "$LINENO" 5
 fi
 
@@ -2157,4 +2405,10 @@
 ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
 
+
+
+ac_config_headers="$ac_config_headers config.h"
+
+
+am__api_version='1.11'
 
 # Find a good install program.  We prefer a C program (faster),
@@ -2594,5 +2848,5 @@
 # Define the identity of the package.
  PACKAGE='cfa-cc'
- VERSION='1.0'
+ VERSION='1.0.0'
 
 
@@ -2633,21 +2887,59 @@
 
 
-		# do not follow GNU standard
-ac_config_headers="$ac_config_headers config.h"
-
-
-for ac_prog in 'bison -y' byacc
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+    # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+  enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+  USE_MAINTAINER_MODE=yes
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+   if test $USE_MAINTAINER_MODE = yes; then
+  MAINTAINER_MODE_TRUE=
+  MAINTAINER_MODE_FALSE='#'
+else
+  MAINTAINER_MODE_TRUE='#'
+  MAINTAINER_MODE_FALSE=
+fi
+
+  MAINT=$MAINTAINER_MODE_TRUE
+
+	# may require auto* software to be installed
+
+# Installation paths
+
+
+# Check whether --with-backend-compiler was given.
+if test "${with_backend_compiler+set}" = set; then :
+  withval=$with_backend_compiler; backcompiler=$withval
+else
+  backcompiler=""
+fi
+
+  if test x$backcompiler != x; then
+	cat >>confdefs.h <<_ACEOF
+#define GCC_PATH "${backcompiler}"
+_ACEOF
+
+	BACKEND_CC=${backcompiler}
+  else
+	# Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_YACC+:} false; then :
+if ${ac_cv_path_GCC_PATH+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$YACC"; then
-  ac_cv_prog_YACC="$YACC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+  case $GCC_PATH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_GCC_PATH="$GCC_PATH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
@@ -2656,5 +2948,5 @@
     for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_YACC="$ac_prog"
+    ac_cv_path_GCC_PATH="$as_dir/$ac_word$ac_exec_ext"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2664,10 +2956,12 @@
 IFS=$as_save_IFS
 
-fi
-fi
-YACC=$ac_cv_prog_YACC
-if test -n "$YACC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5
-$as_echo "$YACC" >&6; }
+  test -z "$ac_cv_path_GCC_PATH" && ac_cv_path_GCC_PATH="N/A"
+  ;;
+esac
+fi
+GCC_PATH=$ac_cv_path_GCC_PATH
+if test -n "$GCC_PATH"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCC_PATH" >&5
+$as_echo "$GCC_PATH" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
@@ -2676,8 +2970,70 @@
 
 
-  test -n "$YACC" && break
-done
-test -n "$YACC" || YACC="yacc"
-
+	if test "$GCC_PATH" = "N/A"; then
+		as_fn_error $? "some version of gcc is needed. Get it at ftp://ftp.gnu.org" "$LINENO" 5
+		exit 1
+	fi
+
+cat >>confdefs.h <<_ACEOF
+#define GCC_PATH "${GCC_PATH}"
+_ACEOF
+
+	BACKEND_CC=${GCC_PATH}
+  fi
+
+
+if test "x$prefix" = "xNONE"; then
+	cfa_prefix=${ac_default_prefix}
+else
+	cfa_prefix=${prefix}
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define CFA_PREFIX "${cfa_prefix}"
+_ACEOF
+
+CFA_PREFIX=${cfa_prefix}
+
+
+if test "$includedir" = '${prefix}/include'; then
+ 	cfa_incdir="${cfa_prefix}/include"
+else
+ 	cfa_incdir=${$includedir}
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define CFA_INCDIR "${cfa_incdir}"
+_ACEOF
+
+CFA_INCDIR=${cfa_incdir}
+
+
+if test "$bindir" = '${exec_prefix}/bin'; then
+ 	cfa_bindir="${cfa_prefix}/bin"
+else
+ 	cfa_bindir=${bindir}
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define CFA_BINDIR "${cfa_bindir}"
+_ACEOF
+
+CFA_BINDIR=${cfa_bindir}
+
+
+if test "$libdir" = '${exec_prefix}/lib'; then
+ 	cfa_libdir=${cfa_prefix}/lib
+else
+ 	cfa_libdir=${libdir}
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define CFA_LIBDIR "${cfa_libdir}"
+_ACEOF
+
+CFA_LIBDIR=${cfa_libdir}
+
+
+# Checks for programs.
 ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
@@ -4045,5 +4401,176 @@
 fi
 
- # ???
+
+if test "x$CC" != xcc; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
+$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
+$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
+fi
+set dummy $CC; ac_cc=`$as_echo "$2" |
+		      sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+# Make sure it works both with $CC and with simple cc.
+# We do the test twice because some compilers refuse to overwrite an
+# existing .o file with -o, though they will create one.
+ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+rm -f conftest2.*
+if { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } &&
+   test -f conftest2.$ac_objext && { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; };
+then
+  eval ac_cv_prog_cc_${ac_cc}_c_o=yes
+  if test "x$CC" != xcc; then
+    # Test first that cc exists at all.
+    if { ac_try='cc -c conftest.$ac_ext >&5'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+      ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+      rm -f conftest2.*
+      if { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } &&
+	 test -f conftest2.$ac_objext && { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; };
+      then
+	# cc works too.
+	:
+      else
+	# cc exists but doesn't like -o.
+	eval ac_cv_prog_cc_${ac_cc}_c_o=no
+      fi
+    fi
+  fi
+else
+  eval ac_cv_prog_cc_${ac_cc}_c_o=no
+fi
+rm -f core conftest*
+
+fi
+if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
+
+fi
+
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+
+	# deprecated
+# These are often not installed and people miss seeing the "no", so stop the configure.
+for ac_prog in 'bison -y' byacc
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_YACC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$YACC"; then
+  ac_cv_prog_YACC="$YACC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_YACC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+YACC=$ac_cv_prog_YACC
+if test -n "$YACC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5
+$as_echo "$YACC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$YACC" && break
+done
+test -n "$YACC" || YACC="yacc"
+
+if test "${YACC}" = "yacc" ; then echo "Error: bison required." ; exit 1 ; fi
 
 for ac_prog in flex lex
@@ -4205,7 +4732,6 @@
 
 fi
-if test "$LEX" = :; then
-  LEX=${am_missing_run}flex
-fi
+if test "${LEX}" = "lex" ; then echo "Error: flex required." ; exit 1 ; fi
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
@@ -4239,7 +4765,100 @@
 fi
 
-
-
-
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+
+# Checks for libraries.
+
+# Checks for header files.
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -4639,5 +5258,205 @@
 
 
-for ac_header in malloc.h unistd.h
+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
+if test "x$ac_cv_type_size_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
+
+fi
+
+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+# for constant arguments.  Useless!
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
+$as_echo_n "checking for working alloca.h... " >&6; }
+if ${ac_cv_working_alloca_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <alloca.h>
+int
+main ()
+{
+char *p = (char *) alloca (2 * sizeof (int));
+			  if (p) return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_working_alloca_h=yes
+else
+  ac_cv_working_alloca_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
+$as_echo "$ac_cv_working_alloca_h" >&6; }
+if test $ac_cv_working_alloca_h = yes; then
+
+$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
+$as_echo_n "checking for alloca... " >&6; }
+if ${ac_cv_func_alloca_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# ifdef _MSC_VER
+#  include <malloc.h>
+#  define alloca _alloca
+# else
+#  ifdef HAVE_ALLOCA_H
+#   include <alloca.h>
+#  else
+#   ifdef _AIX
+ #pragma alloca
+#   else
+#    ifndef alloca /* predefined by HP cc +Olibcalls */
+void *alloca (size_t);
+#    endif
+#   endif
+#  endif
+# endif
+#endif
+
+int
+main ()
+{
+char *p = (char *) alloca (1);
+				    if (p) return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_func_alloca_works=yes
+else
+  ac_cv_func_alloca_works=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5
+$as_echo "$ac_cv_func_alloca_works" >&6; }
+
+if test $ac_cv_func_alloca_works = yes; then
+
+$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
+
+else
+  # The SVR3 libPW and SVR4 libucb both contain incompatible functions
+# that cause trouble.  Some versions do not even contain alloca or
+# contain a buggy version.  If you still want to use their alloca,
+# use ar to extract alloca.o from them instead of compiling alloca.c.
+
+ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
+
+$as_echo "#define C_ALLOCA 1" >>confdefs.h
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
+$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
+if ${ac_cv_os_cray+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined CRAY && ! defined CRAY2
+webecray
+#else
+wenotbecray
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "webecray" >/dev/null 2>&1; then :
+  ac_cv_os_cray=yes
+else
+  ac_cv_os_cray=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5
+$as_echo "$ac_cv_os_cray" >&6; }
+if test $ac_cv_os_cray = yes; then
+  for ac_func in _getb67 GETB67 getb67; do
+    as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define CRAY_STACKSEG_END $ac_func
+_ACEOF
+
+    break
+fi
+
+  done
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
+$as_echo_n "checking stack direction for C alloca... " >&6; }
+if ${ac_cv_c_stack_direction+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  ac_cv_c_stack_direction=0
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+find_stack_direction ()
+{
+  static char *addr = 0;
+  auto char dummy;
+  if (addr == 0)
+    {
+      addr = &dummy;
+      return find_stack_direction ();
+    }
+  else
+    return (&dummy > addr) ? 1 : -1;
+}
+
+int
+main ()
+{
+  return find_stack_direction () < 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_c_stack_direction=1
+else
+  ac_cv_c_stack_direction=-1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
+$as_echo "$ac_cv_c_stack_direction" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define STACK_DIRECTION $ac_cv_c_stack_direction
+_ACEOF
+
+
+fi
+
+for ac_header in fenv.h float.h inttypes.h libintl.h limits.h malloc.h stddef.h stdlib.h string.h unistd.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -4653,64 +5472,67 @@
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
-$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if ${ac_cv_c_const+:} false; then :
+# Checks for typedefs, structures, and compiler characteristics.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
+$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
+if ${ac_cv_header_stdbool_h+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
+
+#include <stdbool.h>
+#ifndef bool
+ "error: bool is not defined"
+#endif
+#ifndef false
+ "error: false is not defined"
+#endif
+#if false
+ "error: false is not 0"
+#endif
+#ifndef true
+ "error: true is not defined"
+#endif
+#if true != 1
+ "error: true is not 1"
+#endif
+#ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+#endif
+
+	struct s { _Bool s: 1; _Bool t; } s;
+
+	char a[true == 1 ? 1 : -1];
+	char b[false == 0 ? 1 : -1];
+	char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+	char d[(bool) 0.5 == true ? 1 : -1];
+	/* See body of main program for 'e'.  */
+	char f[(_Bool) 0.0 == false ? 1 : -1];
+	char g[true];
+	char h[sizeof (_Bool)];
+	char i[sizeof s.t];
+	enum { j = false, k = true, l = false * true, m = true * 256 };
+	/* The following fails for
+	   HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+	_Bool n[m];
+	char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+	char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+	/* Catch a bug in an HP-UX C compiler.  See
+	   http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+	   http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+	 */
+	_Bool q = true;
+	_Bool *pq = &q;
 
 int
 main ()
 {
-/* FIXME: Include the comments suggested by Paul. */
-#ifndef __cplusplus
-  /* Ultrix mips cc rejects this.  */
-  typedef int charset[2];
-  const charset cs;
-  /* SunOS 4.1.1 cc rejects this.  */
-  char const *const *pcpcc;
-  char **ppc;
-  /* NEC SVR4.0.2 mips cc rejects this.  */
-  struct point {int x, y;};
-  static struct point const zero = {0,0};
-  /* AIX XL C 1.02.0.0 rejects this.
-     It does not let you subtract one const X* pointer from another in
-     an arm of an if-expression whose if-part is not a constant
-     expression */
-  const char *g = "string";
-  pcpcc = &g + (g ? g-g : 0);
-  /* HPUX 7.0 cc rejects these. */
-  ++pcpcc;
-  ppc = (char**) pcpcc;
-  pcpcc = (char const *const *) ppc;
-  { /* SCO 3.2v4 cc rejects this.  */
-    char *t;
-    char const *s = 0 ? (char *) 0 : (char const *) 0;
-
-    *t++ = 0;
-    if (s) return 0;
-  }
-  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
-    int x[] = {25, 17};
-    const int *foo = &x[0];
-    ++foo;
-  }
-  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
-    typedef const int *iptr;
-    iptr p = 0;
-    ++p;
-  }
-  { /* AIX XL C 1.02.0.0 rejects this saying
-       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-    struct s { int j; const int *ap[3]; };
-    struct s *b; b->j = 5;
-  }
-  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
-    const int foo = 10;
-    if (!foo) return 0;
-  }
-  return !cs[0] && !zero.x;
-#endif
+
+	bool e = &s;
+	*pq |= q;
+	*pq |= ! q;
+	/* Refer to every declared value, to avoid compiler optimizations.  */
+	return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+		+ !m + !n + !o + !p + !q + !pq);
 
   ;
@@ -4719,15 +5541,25 @@
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_c_const=yes
-else
-  ac_cv_c_const=no
+  ac_cv_header_stdbool_h=yes
+else
+  ac_cv_header_stdbool_h=no
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
-$as_echo "$ac_cv_c_const" >&6; }
-if test $ac_cv_c_const = no; then
-
-$as_echo "#define const /**/" >>confdefs.h
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
+$as_echo "$ac_cv_header_stdbool_h" >&6; }
+ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
+if test "x$ac_cv_type__Bool" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+if test $ac_cv_header_stdbool_h = yes; then
+
+$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h
 
 fi
@@ -4775,20 +5607,58 @@
 esac
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5
-$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; }
-if ${ac_cv_struct_tm+:} false; then :
+ac_fn_c_find_intX_t "$LINENO" "16" "ac_cv_c_int16_t"
+case $ac_cv_c_int16_t in #(
+  no|yes) ;; #(
+  *)
+
+cat >>confdefs.h <<_ACEOF
+#define int16_t $ac_cv_c_int16_t
+_ACEOF
+;;
+esac
+
+ac_fn_c_find_intX_t "$LINENO" "32" "ac_cv_c_int32_t"
+case $ac_cv_c_int32_t in #(
+  no|yes) ;; #(
+  *)
+
+cat >>confdefs.h <<_ACEOF
+#define int32_t $ac_cv_c_int32_t
+_ACEOF
+;;
+esac
+
+ac_fn_c_find_intX_t "$LINENO" "8" "ac_cv_c_int8_t"
+case $ac_cv_c_int8_t in #(
+  no|yes) ;; #(
+  *)
+
+cat >>confdefs.h <<_ACEOF
+#define int8_t $ac_cv_c_int8_t
+_ACEOF
+;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5
+$as_echo_n "checking for C/C++ restrict keyword... " >&6; }
+if ${ac_cv_c_restrict+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  ac_cv_c_restrict=no
+   # The order here caters to the fact that C++ does not require restrict.
+   for ac_kw in __restrict __restrict__ _Restrict restrict; do
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
-#include <time.h>
-
+typedef int * int_ptr;
+	int foo (int_ptr $ac_kw ip) {
+	return ip[0];
+       }
 int
 main ()
 {
-struct tm tm;
-				     int *p = &tm.tm_sec;
-				     return !p;
+int s[1];
+	int * $ac_kw t = s;
+	t[0] = 0;
+	return foo(t)
   ;
   return 0;
@@ -4796,209 +5666,92 @@
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_struct_tm=time.h
-else
-  ac_cv_struct_tm=sys/time.h
+  ac_cv_c_restrict=$ac_kw
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5
-$as_echo "$ac_cv_struct_tm" >&6; }
-if test $ac_cv_struct_tm = sys/time.h; then
-
-$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h
-
-fi
-
-
-test "${prefix}" != "NONE" || prefix=$ac_default_prefix
-
-preludedir=${prefix}/share/cfa
-
-# Check whether --with-preludedir was given.
-if test "${with_preludedir+set}" = set; then :
-  withval=$with_preludedir; preludedir=$withval
-fi
-
-
-
-
-# Check whether --with-backend-compiler was given.
-if test "${with_backend_compiler+set}" = set; then :
-  withval=$with_backend_compiler; backcompiler=$withval
-else
-  backcompiler=""
-fi
-
-  if test x$backcompiler != x; then
-     cat >>confdefs.h <<_ACEOF
-#define GCC_PATH "${backcompiler}"
-_ACEOF
-
-     BACKEND_CC=${backcompiler}
-  else
-     # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_GCC_PATH+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $GCC_PATH in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_GCC_PATH="$GCC_PATH" # Let the user override the test with a path.
-  ;;
+     test "$ac_cv_c_restrict" != no && break
+   done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5
+$as_echo "$ac_cv_c_restrict" >&6; }
+
+ case $ac_cv_c_restrict in
+   restrict) ;;
+   no) $as_echo "#define restrict /**/" >>confdefs.h
+ ;;
+   *)  cat >>confdefs.h <<_ACEOF
+#define restrict $ac_cv_c_restrict
+_ACEOF
+ ;;
+ esac
+
+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
+if test "x$ac_cv_type_size_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
+
+fi
+
+ac_fn_c_find_uintX_t "$LINENO" "16" "ac_cv_c_uint16_t"
+case $ac_cv_c_uint16_t in #(
+  no|yes) ;; #(
   *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_GCC_PATH="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
+
+
+cat >>confdefs.h <<_ACEOF
+#define uint16_t $ac_cv_c_uint16_t
+_ACEOF
+;;
+  esac
+
+ac_fn_c_find_uintX_t "$LINENO" "32" "ac_cv_c_uint32_t"
+case $ac_cv_c_uint32_t in #(
+  no|yes) ;; #(
+  *)
+
+$as_echo "#define _UINT32_T 1" >>confdefs.h
+
+
+cat >>confdefs.h <<_ACEOF
+#define uint32_t $ac_cv_c_uint32_t
+_ACEOF
+;;
+  esac
+
+ac_fn_c_find_uintX_t "$LINENO" "8" "ac_cv_c_uint8_t"
+case $ac_cv_c_uint8_t in #(
+  no|yes) ;; #(
+  *)
+
+$as_echo "#define _UINT8_T 1" >>confdefs.h
+
+
+cat >>confdefs.h <<_ACEOF
+#define uint8_t $ac_cv_c_uint8_t
+_ACEOF
+;;
+  esac
+
+
+# Checks for library functions.
+for ac_func in memset putenv strchr strtol
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
 done
-  done
-IFS=$as_save_IFS
-
-  test -z "$ac_cv_path_GCC_PATH" && ac_cv_path_GCC_PATH="N/A"
-  ;;
-esac
-fi
-GCC_PATH=$ac_cv_path_GCC_PATH
-if test -n "$GCC_PATH"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCC_PATH" >&5
-$as_echo "$GCC_PATH" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-     if test "$GCC_PATH" = "N/A"; then
-        as_fn_error $? "some version of gcc is needed. Get it at ftp://ftp.gnu.org" "$LINENO" 5
-        exit 1
-     fi
-
-cat >>confdefs.h <<_ACEOF
-#define GCC_PATH "${GCC_PATH}"
-_ACEOF
-
-     BACKEND_CC=${GCC_PATH}
-  fi
-
-
-# Extract the first word of "cpp", so it can be a program name with args.
-set dummy cpp; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_CPP_PATH+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $CPP_PATH in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_CPP_PATH="$CPP_PATH" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_CPP_PATH="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  test -z "$ac_cv_path_CPP_PATH" && ac_cv_path_CPP_PATH="N/A"
-  ;;
-esac
-fi
-CPP_PATH=$ac_cv_path_CPP_PATH
-if test -n "$CPP_PATH"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP_PATH" >&5
-$as_echo "$CPP_PATH" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-if test "$CPP_PATH" = "N/A"; then
-   as_fn_error $? "cpp not found" "$LINENO" 5
-   exit 1
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define CPP_PATH "${CPP_PATH}"
-_ACEOF
-
-
-# Purify instrumenting
-
-CFA_PREFIX=
-if test "x$prefix" = "xNONE"; then
- 	cfa_prefix=${ac_default_prefix}
-else
- 	cfa_prefix=${prefix}
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define CFA_PREFIX "${cfa_prefix}"
-_ACEOF
-
-CFA_PREFIX=${cfa_prefix}
-
-
-CFA_INCDIR=
-if test "$includedir" = '${prefix}/include'; then
- 	cfa_incdir="${cfa_prefix}/include"
-else
- 	cfa_incdir=${$includedir}
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define CFA_INCDIR "${cfa_incdir}"
-_ACEOF
-
-CFA_INCDIR=${cfa_incdir}
-
-
-CFA_BINDIR=
-if test "$bindir" = '${exec_prefix}/bin'; then
- 	cfa_bindir="${cfa_prefix}/bin"
-else
- 	cfa_bindir=${bindir}
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define CFA_BINDIR "${cfa_bindir}"
-_ACEOF
-
-CFA_BINDIR=${cfa_bindir}
-
-
-CFA_LIBDIR=
-if test "$libdir" = '${exec_prefix}/lib'; then
- 	cfa_libdir=${cfa_prefix}/lib
-else
- 	cfa_libdir=${libdir}
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define CFA_LIBDIR "${cfa_libdir}"
-_ACEOF
-
-CFA_LIBDIR=${cfa_libdir}
-
-
-ac_config_files="$ac_config_files Makefile src/Makefile driver/Makefile libcfa/Makefile src/examples/Makefile"
+
+
+ac_config_files="$ac_config_files Makefile src/driver/Makefile src/Makefile src/examples/Makefile src/libcfa/Makefile"
+
 
 cat >confcache <<\_ACEOF
@@ -5119,4 +5872,8 @@
 fi
 
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+  as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
   as_fn_error $? "conditional \"AMDEP\" was never defined.
@@ -5540,5 +6297,5 @@
 # values after options handling.
 ac_log="
-This file was extended by cfa-cc $as_me 1.0, which was
+This file was extended by cfa-cc $as_me 1.0.0, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
@@ -5606,5 +6363,5 @@
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-cfa-cc config.status 1.0
+cfa-cc config.status 1.0.0
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
@@ -5738,8 +6495,8 @@
     "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "src/driver/Makefile") CONFIG_FILES="$CONFIG_FILES src/driver/Makefile" ;;
     "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
-    "driver/Makefile") CONFIG_FILES="$CONFIG_FILES driver/Makefile" ;;
-    "libcfa/Makefile") CONFIG_FILES="$CONFIG_FILES libcfa/Makefile" ;;
     "src/examples/Makefile") CONFIG_FILES="$CONFIG_FILES src/examples/Makefile" ;;
+    "src/libcfa/Makefile") CONFIG_FILES="$CONFIG_FILES src/libcfa/Makefile" ;;
 
   *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
@@ -6471,5 +7228,5 @@
 
 
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Cforall configuraton completed. Type \"make install\"." >&5
-$as_echo "Cforall configuraton completed. Type \"make install\"." >&6; }
+# Final text
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Cforall configuraton completed. Type \"make -j 8 install\"." >&5
+$as_echo "Cforall configuraton completed. Type \"make -j 8 install\"." >&6; }
Index: configure.ac
===================================================================
--- configure.ac	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ configure.ac	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,109 @@
+#                                               -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+AC_PREREQ([2.68])
+AC_INIT([cfa-cc],[1.0.0],[cforall@plg.uwaterloo.ca])
+AC_CONFIG_AUX_DIR([automake])
+AC_CONFIG_SRCDIR([src/main.cc])
+AC_CONFIG_HEADERS([config.h])
+
+AM_INIT_AUTOMAKE
+AM_MAINTAINER_MODE(enable)	# may require auto* software to be installed
+
+# Installation paths
+
+AC_ARG_WITH(backend-compiler, 
+            [  --with-backend-compiler=PROGRAM     PROGRAM that performs the final code compilation (must be gcc-compatible) ], 
+            backcompiler=$withval, backcompiler="")
+  if test x$backcompiler != x; then
+	AC_DEFINE_UNQUOTED(GCC_PATH, "${backcompiler}")
+	BACKEND_CC=${backcompiler}
+  else
+	AC_PATH_PROG(GCC_PATH, gcc, N/A)
+	if test "$GCC_PATH" = "N/A"; then
+		AC_MSG_ERROR(some version of gcc is needed. Get it at ftp://ftp.gnu.org)
+		exit 1
+	fi
+	AC_DEFINE_UNQUOTED(GCC_PATH, "${GCC_PATH}", [Path/name of C compiler.])
+	BACKEND_CC=${GCC_PATH}
+  fi
+AC_SUBST(BACKEND_CC)
+
+if test "x$prefix" = "xNONE"; then
+	cfa_prefix=${ac_default_prefix}
+else
+	cfa_prefix=${prefix}
+fi 
+AC_DEFINE_UNQUOTED(CFA_PREFIX, "${cfa_prefix}", [Location of cfa files.])
+AC_SUBST(CFA_PREFIX, ${cfa_prefix})
+
+if test "$includedir" = '${prefix}/include'; then
+ 	cfa_incdir="${cfa_prefix}/include"
+else
+ 	cfa_incdir=${$includedir}
+fi 
+AC_DEFINE_UNQUOTED(CFA_INCDIR, "${cfa_incdir}", [Location of include files.])
+AC_SUBST(CFA_INCDIR, ${cfa_incdir})
+
+if test "$bindir" = '${exec_prefix}/bin'; then
+ 	cfa_bindir="${cfa_prefix}/bin"
+else
+ 	cfa_bindir=${bindir}
+fi 
+AC_DEFINE_UNQUOTED(CFA_BINDIR, "${cfa_bindir}", [Location of cfa command.])
+AC_SUBST(CFA_BINDIR, ${cfa_bindir})
+
+if test "$libdir" = '${exec_prefix}/lib'; then
+ 	cfa_libdir=${cfa_prefix}/lib
+else
+ 	cfa_libdir=${libdir}
+fi 
+AC_DEFINE_UNQUOTED(CFA_LIBDIR, "${cfa_libdir}", [Location of cc1 and cfa-cpp commands.])
+AC_SUBST(CFA_LIBDIR, ${cfa_libdir})
+
+# Checks for programs.
+AC_PROG_CXX
+AC_PROG_CC
+AM_PROG_CC_C_O	# deprecated
+# These are often not installed and people miss seeing the "no", so stop the configure.
+AC_PROG_YACC
+if test "${YACC}" = "yacc" ; then echo "Error: bison required." ; exit 1 ; fi
+AC_PROG_LEX
+if test "${LEX}" = "lex" ; then echo "Error: flex required." ; exit 1 ; fi
+AC_PROG_INSTALL
+AC_PROG_MAKE_SET
+AC_PROG_RANLIB
+
+# Checks for libraries.
+
+# Checks for header files.
+AC_FUNC_ALLOCA
+AC_CHECK_HEADERS([fenv.h float.h inttypes.h libintl.h limits.h malloc.h stddef.h stdlib.h string.h unistd.h])
+
+# Checks for typedefs, structures, and compiler characteristics.
+AC_HEADER_STDBOOL
+AC_C_INLINE
+AC_TYPE_INT16_T
+AC_TYPE_INT32_T
+AC_TYPE_INT8_T
+AC_C_RESTRICT
+AC_TYPE_SIZE_T
+AC_TYPE_UINT16_T
+AC_TYPE_UINT32_T
+AC_TYPE_UINT8_T
+
+# Checks for library functions.
+AC_CHECK_FUNCS([memset putenv strchr strtol])
+
+AC_CONFIG_FILES([
+	Makefile
+	src/driver/Makefile
+	src/Makefile
+	src/examples/Makefile
+	src/libcfa/Makefile
+	])
+
+AC_OUTPUT
+
+# Final text
+AC_MSG_RESULT(Cforall configuraton completed. Type "make -j 8 install".)
Index: nfigure.in
===================================================================
--- configure.in	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,107 +1,0 @@
-AC_INIT(cfa-cc, 1.0, cforall@plg.uwaterloo.ca)
-AC_CONFIG_SRCDIR([src/main.cc])
-
-AM_INIT_AUTOMAKE([foreign])		# do not follow GNU standard
-AM_CONFIG_HEADER(config.h)
-
-dnl This comes from `autoscan'
-dnl Checks for programs.
-AC_PROG_YACC
-AC_PROG_CXX
-AC_PROG_CC # ???
-AM_PROG_LEX
-AC_PROG_MAKE_SET
-AC_PROG_INSTALL
-
-dnl Checks for header libraries.
-
-dnl Checks for header files.
-AC_CHECK_HEADERS([malloc.h unistd.h])
-
-dnl Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-AC_C_INLINE
-AC_STRUCT_TM
-
-test "${prefix}" != "NONE" || prefix=$ac_default_prefix
-
-preludedir=${prefix}/share/cfa
-AC_ARG_WITH(preludedir, 
-            [  --with-preludedir=DIR      DIR that contains prelude.cf and other necessary files ], 
-            preludedir=$withval )
-AC_SUBST(preludedir)
-
-AC_ARG_WITH(backend-compiler, 
-            [  --with-backend-compiler=PROGRAM     PROGRAM that performs the final code compilation (must be gcc-compatible) ], 
-            backcompiler=$withval, backcompiler="")
-  if test x$backcompiler != x; then
-     AC_DEFINE_UNQUOTED(GCC_PATH, "${backcompiler}")
-     BACKEND_CC=${backcompiler}
-  else
-     AC_PATH_PROG(GCC_PATH, gcc, N/A)
-     if test "$GCC_PATH" = "N/A"; then
-        AC_MSG_ERROR(some version of gcc is needed. Get it at ftp://ftp.gnu.org)
-        exit 1
-     fi
-     AC_DEFINE_UNQUOTED(GCC_PATH, "${GCC_PATH}", [Path/name of C compiler.])
-     BACKEND_CC=${GCC_PATH}
-  fi
-AC_SUBST(BACKEND_CC)
-
-AC_PATH_PROG(CPP_PATH, cpp, N/A)
-if test "$CPP_PATH" = "N/A"; then
-   AC_MSG_ERROR(cpp not found)
-   exit 1
-fi
-AC_DEFINE_UNQUOTED(CPP_PATH, "${CPP_PATH}", [Path/name of cpp preprocessor.])
-
-# Purify instrumenting
-dnl AC_ARG_WITH(enablepurify, 
-dnl             [  --with-purify     Enable Purify ], 
-
-dnl Installation paths
-CFA_PREFIX=
-if test "x$prefix" = "xNONE"; then
- 	cfa_prefix=${ac_default_prefix}
-else
- 	cfa_prefix=${prefix}
-fi 
-AC_DEFINE_UNQUOTED(CFA_PREFIX, "${cfa_prefix}", [Location of cfa files.])
-CFA_PREFIX=${cfa_prefix}
-AC_SUBST(CFA_PREFIX)
-
-CFA_INCDIR=
-if test "$includedir" = '${prefix}/include'; then
- 	cfa_incdir="${cfa_prefix}/include"
-else
- 	cfa_incdir=${$includedir}
-fi 
-AC_DEFINE_UNQUOTED(CFA_INCDIR, "${cfa_incdir}", [Location of include files.])
-CFA_INCDIR=${cfa_incdir}
-AC_SUBST(CFA_INCDIR)
-
-CFA_BINDIR=
-if test "$bindir" = '${exec_prefix}/bin'; then
- 	cfa_bindir="${cfa_prefix}/bin"
-else
- 	cfa_bindir=${bindir}
-fi 
-AC_DEFINE_UNQUOTED(CFA_BINDIR, "${cfa_bindir}", [Location of cfa command.])
-CFA_BINDIR=${cfa_bindir}
-AC_SUBST(CFA_BINDIR)
-
-CFA_LIBDIR=
-if test "$libdir" = '${exec_prefix}/lib'; then
- 	cfa_libdir=${cfa_prefix}/lib
-else
- 	cfa_libdir=${libdir}
-fi 
-AC_DEFINE_UNQUOTED(CFA_LIBDIR, "${cfa_libdir}", [Location of cc1 and cfa-cpp commands.])
-CFA_LIBDIR=${cfa_libdir}
-AC_SUBST(CFA_LIBDIR)
-
-AC_OUTPUT([ Makefile src/Makefile driver/Makefile libcfa/Makefile src/examples/Makefile ])
-
-dnl Final text
-
-AC_MSG_RESULT(Cforall configuraton completed. Type "make install".)
Index: iver/Makefile.in
===================================================================
--- driver/Makefile.in	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,41 +1,0 @@
-######################### -*- Mode: Makefile-Gmake -*- ########################$
-##
-## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-##
-## The contents of this file are covered under the licence agreement in the
-## file "LICENCE" distributed with Cforall.
-##
-## Makefile.in -- 
-##
-## Author           : Peter A. Buhr
-## Created On       : Sat May 16 07:50:15 2015
-## Last Modified By : Peter A. Buhr
-## Last Modified On : Sat May 16 08:34:55 2015
-## Update Count     : 4
-###############################################################################
-
-CXX=@CXX@
-CXXFLAGS=-g -Wall -I.. #-Wno-unused
-CP=@CPP@
-INSTALL=@INSTALL@
-
-SRCS:=cfa.cc cc1.cc
-OBJECTS:=${SRCS:.cc=.o}
-DEPS:=${SRCS:.cc=.d}
-
-all: cfa cc1
-
-cfa: cfa.o
-	${CXX} $< -o $@
-
-cc1 : cc1.o
-	${CXX} $< -o $@
-
-install: cfa cc1
-	${INSTALL} -d @CFA_BINDIR@
-	${INSTALL} -d @CFA_LIBDIR@
-	${INSTALL} cc1 @CFA_LIBDIR@
-	${INSTALL} cfa @CFA_BINDIR@
-
-clean:
-	rm -f cfa cc1 ${OBJECTS} ${DEPS} core
Index: iver/cc1.cc
===================================================================
--- driver/cc1.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,491 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// cc1.cc -- 
-//
-// Author           : Peter A. Buhr
-// Created On       : Fri Aug 26 14:23:51 2005
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May 16 07:42:14 2015
-// Update Count     : 49
-//
-
-#include <iostream>
-using std::cerr;
-using std::endl;
-#include <string>
-using std::string;
-#include <cstdio>										// stderr, stdout, perror, fprintf
-#include <cstdlib>										// getenv, exit, mkstemp
-#include <unistd.h>										// execvp, fork, unlink
-#include <sys/wait.h>									// wait
-
-#include "config.h"										// configure info
-
-
-//#define __DEBUG_H__
-
-
-string compiler_name( GCC_PATH );						// path/name of C compiler
-
-string D__GCC_BPREFIX__( "-D__GCC_BPREFIX__=" );
-string D__CFA_FLAGPREFIX__( "-D__CFA_FLAG__=" );
-
-char tmpname[] = P_tmpdir "/CFAXXXXXX";
-int tmpfilefd = -1;
-
-
-bool prefix( string arg, string pre ) {
-	return arg.substr( 0, pre.size() ) == pre;
-} // prefix
-
-
-void checkEnv( const char *args[], int &nargs ) {
-	char *value;
-
-	value = getenv( "__COMPILER__" );
-	if ( value != NULL ) {
-		compiler_name = value;
-#ifdef __DEBUG_H__
-		cerr << "env arg:\"" << compiler_name << "\"" << endl;
-#endif // __DEBUG_H__
-	} // if
-
-	value = getenv( "__GCC_MACHINE__" );
-	if ( value != NULL ) {
-		args[nargs] = ( *new string( value ) ).c_str(); // pass the argument along
-#ifdef __DEBUG_H__
-		cerr << "env arg:\"" << args[nargs] << "\"" << endl;
-#endif // __DEBUG_H__
-		nargs += 1;
-	} // if
-
-	value = getenv( "__GCC_VERSION__" );
-	if ( value != NULL ) {
-		args[nargs] = ( *new string( value ) ).c_str(); // pass the argument along
-#ifdef __DEBUG_H__
-		cerr << "env arg:\"" << args[nargs] << "\"" << endl;
-#endif // __DEBUG_H__
-		nargs += 1;
-	} // if
-} // checkEnv
-
-
-void rmtmpfile() {
-	if ( unlink( tmpname ) == -1 ) {					// remove tmpname
-		perror ( "CFA Translator error: cpp failed" );
-		exit( EXIT_FAILURE );
-	} // if
-	tmpfilefd = -1;										// mark closed
-} // rmtmpfile
-
-
-void sigTermHandler( int signal ) {
-	if ( tmpfilefd != -1 ) {							// RACE, file created ?
-		rmtmpfile();									// remove
-		exit( EXIT_FAILURE );							// terminate 
-	} // if
-} // sigTermHandler
-
-
-void Stage1( const int argc, const char * const argv[] ) {
-	int code;
-	int i;
-
-	string arg;
-	string bprefix;
-
-	const char *cpp_in = NULL;
-	const char *cpp_out = NULL;
-
-	bool CFA_flag = false;
-	bool cpp_flag = false;
-	const char *o_name = NULL;
-
-	const char *args[argc + 100];						// leave space for 100 additional cpp command line values
-	int nargs = 1;										// number of arguments in args list; 0 => command name
-	const char *uargs[20];								// leave space for 20 additional cfa-cpp command line values
-	int nuargs = 1;										// 0 => command name
-
-	signal( SIGINT,  sigTermHandler );
-	signal( SIGTERM, sigTermHandler );
-
-	// process all the arguments
-
-	checkEnv( args, nargs );							// arguments passed via environment variables
-
-	for ( i = 1; i < argc; i += 1 ) {
-#ifdef __DEBUG_H__
-		cerr << "argv[" << i << "]:\"" << argv[i] << "\"" << endl;
-#endif // __DEBUG_H__
-		arg = argv[i];
-#ifdef __DEBUG_H__
-		cerr << "arg:\"" << arg << "\"" << endl;
-#endif // __DEBUG_H__
-		if ( prefix( arg, "-" ) ) {
-			// strip g++ flags that are inappropriate or cause duplicates in subsequent passes
-
-			if ( arg == "-quiet" ) {
-			} else if ( arg == "-imultilib" || arg == "-imultiarch" ) {
-				i += 1;									// and the argument
-			} else if ( prefix( arg, "-A" ) ) {
-			} else if ( prefix( arg, "-D__GNU" ) ) {
-				//********
-				// GCC 5.6.0 SEPARATED THE -D FROM THE ARGUMENT!
-				//********
-			} else if ( arg == "-D" && prefix( argv[i + 1], "__GNU" ) ) {
-				i += 1;									// and the argument
-
-				// strip flags controlling cpp step
-
-			} else if ( arg == "-D__CPP__" ) {
-				cpp_flag = true;
-			} else if ( arg == "-D" && string( argv[i + 1] ) == "__CPP__" ) {
-				i += 1;									// and the argument
-				cpp_flag = true;
-			} else if ( arg == "-D__CFA__" ) {
-				CFA_flag = true;
-			} else if ( arg == "-D" && string( argv[i + 1] ) == "__CFA__" ) {
-				i += 1;									// and the argument
-				CFA_flag = true;
-			} else if ( prefix( arg, D__CFA_FLAGPREFIX__ ) ) {
-				uargs[nuargs] = ( *new string( arg.substr( D__CFA_FLAGPREFIX__.size() ) ) ).c_str();
-				nuargs += 1;
-			} else if ( arg == "-D" && prefix( argv[i + 1], D__CFA_FLAGPREFIX__.substr(2) ) ) {
-				uargs[nuargs] = ( *new string( string( argv[i + 1] ).substr( D__CFA_FLAGPREFIX__.size() - 2 ) ) ).c_str();
-				nuargs += 1;
-				i += 1;									// and the argument
-			} else if ( prefix( arg, D__GCC_BPREFIX__ ) ) {
-				bprefix = arg.substr( D__GCC_BPREFIX__.size() );
-			} else if ( arg == "-D" && prefix( argv[i + 1], D__GCC_BPREFIX__.substr(2) ) ) {
-				bprefix = string( argv[i + 1] ).substr( D__GCC_BPREFIX__.size() - 2 );
-				i += 1;									// and the argument
-
-				// all other flags
-
-			} else if ( arg == "-o" ) {
-				i += 1;
-				o_name = argv[i];
-			} else {
-				args[nargs] = argv[i];					// pass the flag along
-				nargs += 1;
-				// CPP flags with an argument
-				if ( arg == "-D" || arg == "-I" || arg == "-MF" || arg == "-MT" || arg == "-MQ" ||
-					 arg == "-include" || arg == "-imacros" || arg == "-idirafter" || arg == "-iprefix" ||
-					 arg == "-iwithprefix" || arg == "-iwithprefixbefore" || arg == "-isystem" || arg == "-isysroot" ) {
-					i += 1;
-					args[nargs] = argv[i];				// pass the argument along
-					nargs += 1;
-#ifdef __DEBUG_H__
-					cerr << "argv[" << i << "]:\"" << argv[i] << "\"" << endl;
-#endif // __DEBUG_H__
-				} else if ( arg == "-MD" || arg == "-MMD" ) {
-					args[nargs] = "-MF";				// insert before file
-					nargs += 1;
-					i += 1;
-					args[nargs] = argv[i];				// pass the argument along
-					nargs += 1;
-#ifdef __DEBUG_H__
-					cerr << "argv[" << i << "]:\"" << argv[i] << "\"" << endl;
-#endif // __DEBUG_H__
-				} // if
-			} // if
-		} else {										// obtain input and possibly output files
-			if ( cpp_in == NULL ) {
-				cpp_in = argv[i];
-#ifdef __DEBUG_H__
-				cerr << "cpp_in:\"" << cpp_in << "\"" << endl;
-#endif // __DEBUG_H__
-			} else if ( cpp_out == NULL ) {
-				cpp_out = argv[i];
-#ifdef __DEBUG_H__
-				cerr << "cpp_out:\"" << cpp_out << "\""<< endl;
-#endif // __DEBUG_H__
-			} else {
-				cerr << "Usage: " << argv[0] << " input-file [output-file] [options]" << endl;
-				exit( EXIT_FAILURE );
-			} // if
-		} // if
-	} // for
-
-#ifdef __DEBUG_H__
-	cerr << "args:";
-	for ( i = 1; i < nargs; i += 1 ) {
-		cerr << " " << args[i];
-	} // for
-	if ( cpp_in != NULL ) cerr << " " << cpp_in;
-	if ( cpp_out != NULL ) cerr << " " << cpp_out;
-	cerr << endl;
-#endif // __DEBUG_H__
-
-	if ( cpp_in == NULL ) {
-		cerr << "Usage: " << argv[0] << " input-file [output-file] [options]" << endl;
-		exit( EXIT_FAILURE );
-	} // if
-
-	if ( cpp_flag ) {
-		// The -E flag is specified on the cfa command so only run the preprocessor and output is written to standard
-		// output or -o. The call to cfa has a -E so it does not have to be added to the argument list.
-
-		args[0] = compiler_name.c_str();
-		args[nargs] = cpp_in;
-		nargs += 1;
-		if ( o_name != NULL ) {							// location for output
-			args[nargs] = "-o";
-			nargs += 1;
-			args[nargs] = o_name;
-			nargs += 1;
-		} // if
-		args[nargs] = NULL;								// terminate argument list
-
-#ifdef __DEBUG_H__
-		cerr << "nargs: " << nargs << endl;
-		for ( i = 0; args[i] != NULL; i += 1 ) {
-			cerr << args[i] << " ";
-		} // for
-		cerr << endl;
-#endif // __DEBUG_H__
-
-		execvp( args[0], (char *const *)args );			// should not return
-		perror( "CFA Translator error: cpp level, execvp" );
-		exit( EXIT_FAILURE );
-	} // if
-
-	// Create a temporary file to store output of the C preprocessor.
-
-	tmpfilefd = mkstemp( tmpname );
-	if ( tmpfilefd == -1 ) {
-		perror( "CFA Translator error: cpp level, mkstemp" );
-		exit( EXIT_FAILURE );
-	} // if
-
-#ifdef __DEBUG_H__
-	cerr << "tmpname:" << tmpname << " tmpfilefd:" << tmpfilefd << endl;
-#endif // __DEBUG_H__
-
-	// Run the C preprocessor and save the output in tmpfile.
-
-	if ( fork() == 0 ) {								 // child process ?
-		// -o xxx.ii cannot be used to write the output file from cpp because no output file is created if cpp detects
-		// an error (e.g., cannot find include file). Whereas, output is always generated, even when there is an error,
-		// when cpp writes to stdout. Hence, stdout is redirected into the temporary file.
-		if ( freopen( tmpname, "w", stdout ) == NULL ) { // redirect stdout to tmpname
-			perror( "CFA Translator error: cpp level, freopen" );
-			exit( EXIT_FAILURE );
-		} // if
-
-		args[0] = compiler_name.c_str();
-		args[nargs] = cpp_in;							// input to cpp
-		nargs += 1;
-		args[nargs] = NULL;								// terminate argument list
-
-#ifdef __DEBUG_H__
-		cerr << "cpp nargs: " << nargs << endl;
-		for ( i = 0; args[i] != NULL; i += 1 ) {
-			cerr << args[i] << " ";
-		} // for
-		cerr << endl;
-#endif // __DEBUG_H__
-
-		execvp( args[0], (char *const *)args );			// should not return
-		perror( "CFA Translator error: cpp level, execvp" );
-		exit( EXIT_FAILURE );
-	} // if
-
-	wait( &code );										// wait for child to finish
-
-#ifdef __DEBUG_H__
-	cerr << "return code from cpp:" << WEXITSTATUS(code) << endl;
-#endif // __DEBUG_H__
-
-	if ( WIFSIGNALED(code) != 0 ) {						// child failed ?
-		rmtmpfile();									// remove tmpname
-		cerr << "CFA Translator error: cpp failed with signal " << WTERMSIG(code) << endl;
-		exit( EXIT_FAILURE );
-	} // if
-
-	if ( WEXITSTATUS(code) != 0 ) {						// child error ?
-		rmtmpfile();									// remove tmpname
-		exit( WEXITSTATUS( code ) );					// do not continue
-	} // if
-
-	// If -CFA flag specified, run the cfa-cpp preprocessor on the temporary file, and output is written to standard
-	// output.  Otherwise, run the cfa-cpp preprocessor on the temporary file and save the result into the output file.
-
-	if ( fork() == 0 ) {								// child runs CFA
-		uargs[0] = ( *new string( bprefix + "/cfa-cpp" ) ).c_str();
-
-		uargs[nuargs] = "-p";
-		nuargs += 1;
-
-		uargs[nuargs] = tmpname;
-		nuargs += 1;
-		if ( o_name != NULL ) {
-			uargs[nuargs] = o_name;
-			nuargs += 1;
-		} else if ( ! CFA_flag ) {						// run cfa-cpp ?
-			uargs[nuargs] = cpp_out;
-			nuargs += 1;
-		} // if
-		uargs[nuargs] = NULL;							// terminate argument list
-
-#ifdef __DEBUG_H__
-		cerr << "cfa-cpp nuargs: " << o_name << " " << CFA_flag << " " << nuargs << endl;
-		for ( i = 0; uargs[i] != NULL; i += 1 ) {
-			cerr << uargs[i] << " ";
-		} // for
-		cerr << endl;
-#endif // __DEBUG_H__
-
-		execvp( uargs[0], (char * const *)uargs );		// should not return
-		perror( "CFA Translator error: cpp level, execvp" );
-		exit( EXIT_FAILURE );
-	} // if
-
-	wait( &code );										// wait for child to finish
-
-#ifdef __DEBUG_H__
-	cerr << "return code from cfa-cpp:" << WEXITSTATUS(code) << endl;
-#endif // __DEBUG_H__
-
-	// Must unlink here because file must exist across execvp.
-	rmtmpfile();										// remove tmpname
-
-	if ( WIFSIGNALED(code) ) {							// child failed ?
-		cerr << "CFA Translator error: cfa-cpp failed with signal " << WTERMSIG(code) << endl;
-		exit( EXIT_FAILURE );
-	} // if
-
-	exit( WEXITSTATUS(code) );
-} // Stage1
-
-
-void Stage2( const int argc, const char * const * argv ) {
-	int i;
-
-	string arg;
-
-	const char *cpp_in = NULL;
-
-	const char *args[argc + 100];						// leave space for 100 additional cfa command line values
-	int nargs = 1;										// number of arguments in args list; 0 => command name
-
-	// process all the arguments
-
-	checkEnv( args, nargs );							// arguments passed via environment variables
-
-	for ( i = 1; i < argc; i += 1 ) {
-#ifdef __DEBUG_H__
-		cerr << "argv[" << i << "]:\"" << argv[i] << "\"" << endl;
-#endif // __DEBUG_H__
-		arg = argv[i];
-#ifdef __DEBUG_H__
-		cerr << "arg:\"" << arg << "\"" << endl;
-#endif // __DEBUG_H__
-		if ( prefix( arg, "-" ) ) {
-			// strip inappropriate flags
-
-			if ( arg == "-quiet" || arg == "-version" || arg == "-fpreprocessed" ||
-				 // Currently CFA does not suppose precompiled .h files.
-				 prefix( arg, "--output-pch" ) ) {
-
-				// strip inappropriate flags with an argument
-
-			} else if ( arg == "-auxbase" || arg == "-auxbase-strip" || arg == "-dumpbase" ) {
-				i += 1;
-#ifdef __DEBUG_H__
-				cerr << "arg:\"" << argv[i] << "\"" << endl;
-#endif // __DEBUG_H__
-
-				// all other flags
-
-			} else {
-				args[nargs] = argv[i];					// pass the flag along
-				nargs += 1;
-				if ( arg == "-o" ) {
-					i += 1;
-					args[nargs] = argv[i];				// pass the argument along
-					nargs += 1;
-#ifdef __DEBUG_H__
-					cerr << "arg:\"" << argv[i] << "\"" << endl;
-#endif // __DEBUG_H__
-				} // if
-			} // if
-		} else {										// obtain input and possibly output files
-			if ( cpp_in == NULL ) {
-				cpp_in = argv[i];
-#ifdef __DEBUG_H__
-				cerr << "cpp_in:\"" << cpp_in << "\"" << endl;
-#endif // __DEBUG_H__
-			} else {
-				cerr << "Usage: " << argv[0] << " input-file [output-file] [options]" << endl;
-				exit( EXIT_FAILURE );
-			} // if
-		} // if
-	} // for
-
-#ifdef __DEBUG_H__
-	cerr << "args:";
-	for ( i = 1; i < nargs; i += 1 ) {
-		cerr << " " << args[i];
-	} // for
-	cerr << endl;
-	if ( cpp_in != NULL ) cerr << " " << cpp_in;
-#endif // __DEBUG_H__
-
-	args[0] = compiler_name.c_str();
-	args[nargs] = "-S";									// only compile and put assembler output in specified file
-	nargs += 1;
-	args[nargs] = cpp_in;
-	nargs += 1;
-	args[nargs] = NULL;									// terminate argument list
-
-#ifdef __DEBUG_H__
-	cerr << "stage2 nargs: " << nargs << endl;
-	for ( i = 0; args[i] != NULL; i += 1 ) {
-		cerr << args[i] << " ";
-	} // for
-	cerr << endl;
-#endif // __DEBUG_H__
-
-	execvp( args[0], (char * const *)args );			// should not return
-	perror( "CFA Translator error: cpp level, execvp" );
-	exit( EXIT_FAILURE );								// tell gcc not to go any further
-} // Stage2
-
-
-int main( const int argc, const char * const argv[], const char * const env[] ) {
-#ifdef __DEBUG_H__
-	for ( int i = 0; env[i] != NULL; i += 1 ) {
-		cerr << env[i] << endl;
-	} // for
-#endif // __DEBUG_H__
-
-	string arg = argv[1];
-
-	// Currently, stage 1 starts with flag -E and stage 2 with flag -fpreprocessed.
-
-	if ( arg == "-E" ) {
-#ifdef __DEBUG_H__
-		cerr << "Stage1" << endl;
-#endif // __DEBUG_H__
-		Stage1( argc, argv );
-	} else if ( arg == "-fpreprocessed" ) {
-#ifdef __DEBUG_H__
-		cerr << "Stage2" << endl;
-#endif // __DEBUG_H__
-		Stage2( argc, argv );
-	} else {
-		cerr << "Usage: " << argv[0] << " input-file [output-file] [options]" << endl;
-		exit( EXIT_FAILURE );
-	} // if
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: iver/cfa.cc
===================================================================
--- driver/cfa.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,361 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// cfa.cc -- 
-//
-// Author           : Peter A. Buhr
-// Created On       : Tue Aug 20 13:44:49 2002
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May 16 07:47:05 2015
-// Update Count     : 111
-//
-
-#include <iostream>
-#include <cstdio>										// perror
-#include <cstdlib>										// putenv, exit
-#include <unistd.h>										// execvp
-#include <string>										// STL version
-
-#include "config.h"										// configure info
-
-using std::cerr;
-using std::endl;
-using std::string;
-
-
-//#define __DEBUG_H__
-
-
-bool prefix( string arg, string pre ) {
-	return arg.substr( 0, pre.size() ) == pre;
-} // prefix
-
-
-void shuffle( const char *args[], int S, int E, int N ) {
-	// S & E index 1 passed the end so adjust with -1
-#ifdef __DEBUG_H__
-	cerr << "shuffle:" << S << " " << E << " " << N << endl;
-#endif // __DEBUG_H__
-	for ( int j = E-1 + N; j > S-1 + N; j -=1 ) {
-#ifdef __DEBUG_H__
-		cerr << "\t" << j << " " << j-N << endl;
-#endif // __DEBUG_H__
-		args[j] = args[j-N];
-	} // for
-} // shuffle
-
-
-int main( int argc, char *argv[] ) {
-	string Version( VERSION );							// current version number from CONFIG
-	string Major( "0" ), Minor( "0" ), Patch( "0" );	// default version numbers
-	int posn1 = Version.find( "." );					// find the divider between major and minor version numbers
-	if ( posn1 == -1 ) {								// not there ?
-		Major = Version;
-	} else {
-		Major = Version.substr( 0, posn1 );
-		int posn2 = Version.find( ".", posn1 + 1 );		// find the divider between minor and patch numbers
-		if ( posn2 == -1 ) {							// not there ?
-			Minor = Version.substr( posn1 );
-		} else {
-			Minor = Version.substr( posn1 + 1, posn2 - posn1 - 1 );
-			Patch = Version.substr( posn2 + 1 );
-		} // if
-	} // if
-
-	string installincdir( CFA_INCDIR );					// fixed location of cc1 and cfa-cpp commands
-	string installlibdir( CFA_LIBDIR );					// fixed location of include files
-
-	string heading;										// banner printed at start of cfa compilation
-	string arg;											// current command-line argument during command-line parsing
-	string Bprefix;										// path where gcc looks for compiler command steps
-	string langstd;										// language standard
-
-	string compiler_path( GCC_PATH );					// path/name of C compiler
-	string compiler_name;								// name of C compiler
-
-	bool nonoptarg = false;								// indicates non-option argument specified
-	bool link = true;									// linking as well as compiling
-	bool verbose = false;								// -v flag
-	bool quiet = false;									// -quiet flag
-	bool debug = true;									// -debug flag
-	bool help = false;									// -help flag
-	bool CFA_flag = false;								// -CFA flag
-	bool cpp_flag = false;								// -E or -M flag, preprocessor only
-	bool debugging = false;								// -g flag
-
-	const char *args[argc + 100];						// cfa command line values, plus some space for additional flags
-	int sargs = 1;										// starting location for arguments in args list
-	int nargs = sargs;									// number of arguments in args list; 0 => command name
-
-	const char *libs[argc + 20];						// non-user libraries must come separately, plus some added libraries and flags
-	int nlibs = 0;
-
-#ifdef __DEBUG_H__
-	cerr << "CFA:" << endl;
-#endif // __DEBUG_H__
-
-	// process command-line arguments
-
-	for ( int i = 1; i < argc; i += 1 ) {
-#ifdef __DEBUG_H__
-		cerr << "argv[" << i << "]:\"" << argv[i] << "\"" << endl;
-#endif // __DEBUG_H__
-		arg = argv[i];									// convert to string value
-#ifdef __DEBUG_H__
-		cerr << "arg:\"" << arg << "\"" << endl;
-#endif // __DEBUG_H__
-		if ( prefix( arg, "-" ) ) {
-			// pass through arguments
-
-			if ( arg == "-Xlinker" || arg == "-o" ) {
-				args[nargs] = argv[i];					// pass the argument along
-				nargs += 1;
-				i += 1;
-				if ( i == argc ) continue;				// next argument available ?
-				args[nargs] = argv[i];					// pass the argument along
-				nargs += 1;
-			} else if ( arg == "-XCFA" ) {				// CFA pass through
-				i += 1;
-				args[nargs] = ( *new string( string("-D__CFA_FLAG__=") + argv[i] ) ).c_str();
-				nargs += 1;
-
-				// CFA specific arguments
-
-			} else if ( arg == "-CFA" ) {
-				CFA_flag = true;						// strip the -CFA flag
-				link = false;
-				args[nargs] = "-E";						// replace the argument with -E
-				nargs += 1;
-			} else if ( arg == "-debug" ) {
-				debug = true;							// strip the debug flag
-			} else if ( arg == "-nodebug" ) {
-				debug = false;							// strip the nodebug flag
-			} else if ( arg == "-quiet" ) {
-				quiet = true;							// strip the quiet flag
-			} else if ( arg == "-noquiet" ) {
-				quiet = false;							// strip the noquiet flag
-			} else if ( arg == "-help" ) {
-				help = true;							// strip the help flag
-			} else if ( arg == "-nohelp" ) {
-				help = false;							// strip the nohelp flag
-			} else if ( arg == "-compiler" ) {
-				// use the user specified compiler
-				i += 1;
-				if ( i == argc ) continue;				// next argument available ?
-				compiler_path = argv[i];
-				if ( putenv( (char *)( *new string( string( "__U_COMPILER__=" ) + argv[i]) ).c_str() ) != 0 ) {
-					cerr << argv[0] << " error, cannot set environment variable." << endl;
-					exit( EXIT_FAILURE );
-				} // if
-
-				// C++ specific arguments
-
-			} else if ( arg == "-v" ) {
-				verbose = true;							// verbosity required
-				args[nargs] = argv[i];					// pass the argument along
-				nargs += 1;
-			} else if ( arg == "-g" ) {
-				debugging = true;						// symbolic debugging required
-				args[nargs] = argv[i];					// pass the argument along
-				nargs += 1;
-			} else if ( prefix( arg, "-B" ) ) {
-				Bprefix = arg.substr(2);				// strip the -B flag
-				args[nargs] = ( *new string( string("-D__GCC_BPREFIX__=") + Bprefix ) ).c_str();
-				nargs += 1;
-			} else if ( prefix( arg, "-b" ) ) {
-				if ( arg.length() == 2 ) {				// separate argument ?
-					i += 1;
-					if ( i == argc ) continue;			// next argument available ?
-					arg += argv[i];						// concatenate argument
-				} // if
-				// later versions of gcc require the -b option to appear at the start of the command line
-				shuffle( args, sargs, nargs, 1 );		// make room at front of argument list
-				args[sargs] = ( *new string( arg ) ).c_str(); // pass the argument along
-				if ( putenv( (char *)( *new string( string( "__GCC_MACHINE__=" ) + arg ) ).c_str() ) != 0 ) {
-					cerr << argv[0] << " error, cannot set environment variable." << endl;
-					exit( EXIT_FAILURE );
-				} // if
-				sargs += 1;
-				nargs += 1;
-			} else if ( prefix( arg, "-V" ) ) {
-				if ( arg.length() == 2 ) {				// separate argument ?
-					i += 1;
-					if ( i == argc ) continue;			// next argument available ?
-					arg += argv[i];						// concatenate argument
-				} // if
-				// later versions of gcc require the -V option to appear at the start of the command line
-				shuffle( args, sargs, nargs, 1 );		// make room at front of argument list
-				args[sargs] = ( *new string( arg ) ).c_str(); // pass the argument along
-				if ( putenv( (char *)( *new string( string( "__GCC_VERSION__=" ) + arg ) ).c_str() ) != 0 ) {
-					cerr << argv[0] << " error, cannot set environment variable." << endl;
-					exit( EXIT_FAILURE );
-				} // if
-				sargs += 1;
-				nargs += 1;
-			} else if ( arg == "-c" || arg == "-S" || arg == "-E" || arg == "-M" || arg == "-MM" ) {
-				args[nargs] = argv[i];					// pass the argument along
-				nargs += 1;
-				if ( arg == "-E" || arg == "-M" || arg == "-MM" ) {
-					cpp_flag = true;					// cpp only
-				} // if
-				link = false;                           // no linkage required
-			} else if ( arg[1] == 'l' ) {
-				// if the user specifies a library, load it after user code
-				libs[nlibs] = argv[i];
-				nlibs += 1;
-			} else {
-				// concatenate any other arguments
-				args[nargs] = argv[i];
-				nargs += 1;
-			} // if
-		} else {
-			// concatenate other arguments
-			args[nargs] = argv[i];
-			nargs += 1;
-			nonoptarg = true;
-		} // if
-	} // for
-
-#ifdef __DEBUG_H__
-	cerr << "args:";
-	for ( int i = 1; i < nargs; i += 1 ) {
-		cerr << " " << args[i];
-	} // for
-	cerr << endl;
-#endif // __DEBUG_H__
-
-	if ( cpp_flag && CFA_flag ) {
-		cerr << argv[0] << " error, cannot use -E and -CFA flags together." << endl;
-		exit( EXIT_FAILURE );
-	} // if
-
-	string d;
-	if ( debug ) {
-		d = "-d";
-	} // if
-
-	args[nargs] = "-I" CFA_INCDIR;
-	nargs += 1;
-
-	if ( link ) {
-		// include the cfa library in case it's needed
-		args[nargs] = "-L" CFA_LIBDIR;
-		nargs += 1;
-		args[nargs] = "-lcfa";
-		nargs += 1;
-	} // if
-
-	// add the correct set of flags based on the type of compile this is
-
-	args[nargs] = ( *new string( string("-D__CFA_MAJOR__=") + Major ) ).c_str();
-	nargs += 1;
-	args[nargs] = ( *new string( string("-D__CFA_MINOR__=") + Minor ) ).c_str();
-	nargs += 1;
-
-	if ( cpp_flag ) {
-		args[nargs] = "-D__CPP__";
-		nargs += 1;
-	} // if
-
-	if ( CFA_flag ) {
-		args[nargs] = "-D__CFA__";
-		nargs += 1;
-	} // if
-
-	if ( debug ) {
-		heading += " (debug)";
-		args[nargs] = "-D__CFA_DEBUG__";
-		nargs += 1;
-	} else {
-		heading += " (no debug)";
-	} // if
-
-	if ( Bprefix.length() == 0 ) {
-		Bprefix = installlibdir;
-		args[nargs] = ( *new string( string("-D__GCC_BPREFIX__=") + Bprefix ) ).c_str();
-		nargs += 1;
-	} // if
-
-	// execute the compilation command
-
-	args[0] = compiler_path.c_str();					// set compiler command for exec
-	// find actual name of the compiler independent of the path to it
-	int p = compiler_path.find_last_of( '/' );			// scan r -> l for first '/'
-	if ( p == -1 ) {
-		compiler_name = compiler_path;
-	} else {
-		compiler_name = *new string( compiler_path.substr( p + 1 ) );
-	} // if
-
-	if ( prefix( compiler_name, "gcc" ) ) {				// allow suffix on gcc name
-		args[nargs] = "-no-integrated-cpp";
-		nargs += 1;
-		args[nargs] = "-Wno-deprecated"; 
-		nargs += 1;
-		args[nargs] = "-std=c99";
-		nargs += 1;
-		args[nargs] = ( *new string( string("-B") + Bprefix + "/" ) ).c_str();
-		nargs += 1;
-	} else {
-		cerr << argv[0] << " error, compiler " << compiler_name << " not supported." << endl;
-		exit( EXIT_FAILURE );
-	} // if
-
-	for ( int i = 0; i < nlibs; i += 1 ) {				// copy non-user libraries after all user libraries
-		args[nargs] = libs[i];
-		nargs += 1;
-	} // for
-
-	args[nargs] = NULL;									// terminate with NULL
-
-#ifdef __DEBUG_H__
-	cerr << "nargs: " << nargs << endl;
-	cerr << "args:" << endl;
-	for ( int i = 0; args[i] != NULL; i += 1 ) {
-		cerr << " \"" << args[i] << "\"" << endl;
-	} // for
-#endif // __DEBUG_H__
-
-	if ( ! quiet ) {
-		cerr << "CFA " << "Version " << Version << heading << endl;
-
-		if ( help ) {
-			cerr <<
-				"-debug\t\t\t: use cfa runtime with debug checking" << endl <<
-				"-help\t\t\t: print this help message" << endl <<
-				"-quiet\t\t\t: print no messages from the cfa command" << endl <<
-				"-CFA\t\t\t: run the cpp preprocessor and the cfa-cpp translator" << endl <<
-				"-XCFA -cfa-cpp-flag\t: pass next flag as-is to the cfa-cpp translator" << endl <<
-				"...\t\t\t: any other " << compiler_name << " flags" << endl;
-		} // if
-	} // if
-
-	if ( verbose ) {
-		if ( argc == 2 ) exit( EXIT_SUCCESS );			// if only the -v flag is specified, do not invoke gcc
-
-		for ( int i = 0; args[i] != NULL; i += 1 ) {
-			cerr << args[i] << " ";
-		} // for
-		cerr << endl;
-	} // if
-
-	if ( ! nonoptarg ) {
-		cerr << argv[0] << " error, no input files" << endl;
-		exit( EXIT_FAILURE );
-	} // if
-
-	// execute the command and return the result
-
-	execvp( args[0], (char *const *)args );				// should not return
-	perror( "CFA Translator error: cfa level, execvp" );
-	exit( EXIT_FAILURE );
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: stall-sh
===================================================================
--- install-sh	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,527 +1,0 @@
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2011-01-19.21; # UTC
-
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-
-nl='
-'
-IFS=" ""	$nl"
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit=${DOITPROG-}
-if test -z "$doit"; then
-  doit_exec=exec
-else
-  doit_exec=$doit
-fi
-
-# Put in absolute file names if you don't have them in your path;
-# or use environment vars.
-
-chgrpprog=${CHGRPPROG-chgrp}
-chmodprog=${CHMODPROG-chmod}
-chownprog=${CHOWNPROG-chown}
-cmpprog=${CMPPROG-cmp}
-cpprog=${CPPROG-cp}
-mkdirprog=${MKDIRPROG-mkdir}
-mvprog=${MVPROG-mv}
-rmprog=${RMPROG-rm}
-stripprog=${STRIPPROG-strip}
-
-posix_glob='?'
-initialize_posix_glob='
-  test "$posix_glob" != "?" || {
-    if (set -f) 2>/dev/null; then
-      posix_glob=
-    else
-      posix_glob=:
-    fi
-  }
-'
-
-posix_mkdir=
-
-# Desired mode of installed file.
-mode=0755
-
-chgrpcmd=
-chmodcmd=$chmodprog
-chowncmd=
-mvcmd=$mvprog
-rmcmd="$rmprog -f"
-stripcmd=
-
-src=
-dst=
-dir_arg=
-dst_arg=
-
-copy_on_change=false
-no_target_directory=
-
-usage="\
-Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
-   or: $0 [OPTION]... SRCFILES... DIRECTORY
-   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
-   or: $0 [OPTION]... -d DIRECTORIES...
-
-In the 1st form, copy SRCFILE to DSTFILE.
-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
-In the 4th, create DIRECTORIES.
-
-Options:
-     --help     display this help and exit.
-     --version  display version info and exit.
-
-  -c            (ignored)
-  -C            install only if different (preserve the last data modification time)
-  -d            create directories instead of installing files.
-  -g GROUP      $chgrpprog installed files to GROUP.
-  -m MODE       $chmodprog installed files to MODE.
-  -o USER       $chownprog installed files to USER.
-  -s            $stripprog installed files.
-  -t DIRECTORY  install into DIRECTORY.
-  -T            report an error if DSTFILE is a directory.
-
-Environment variables override the default commands:
-  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
-  RMPROG STRIPPROG
-"
-
-while test $# -ne 0; do
-  case $1 in
-    -c) ;;
-
-    -C) copy_on_change=true;;
-
-    -d) dir_arg=true;;
-
-    -g) chgrpcmd="$chgrpprog $2"
-	shift;;
-
-    --help) echo "$usage"; exit $?;;
-
-    -m) mode=$2
-	case $mode in
-	  *' '* | *'	'* | *'
-'*	  | *'*'* | *'?'* | *'['*)
-	    echo "$0: invalid mode: $mode" >&2
-	    exit 1;;
-	esac
-	shift;;
-
-    -o) chowncmd="$chownprog $2"
-	shift;;
-
-    -s) stripcmd=$stripprog;;
-
-    -t) dst_arg=$2
-	# Protect names problematic for `test' and other utilities.
-	case $dst_arg in
-	  -* | [=\(\)!]) dst_arg=./$dst_arg;;
-	esac
-	shift;;
-
-    -T) no_target_directory=true;;
-
-    --version) echo "$0 $scriptversion"; exit $?;;
-
-    --)	shift
-	break;;
-
-    -*)	echo "$0: invalid option: $1" >&2
-	exit 1;;
-
-    *)  break;;
-  esac
-  shift
-done
-
-if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
-  # When -d is used, all remaining arguments are directories to create.
-  # When -t is used, the destination is already specified.
-  # Otherwise, the last argument is the destination.  Remove it from $@.
-  for arg
-  do
-    if test -n "$dst_arg"; then
-      # $@ is not empty: it contains at least $arg.
-      set fnord "$@" "$dst_arg"
-      shift # fnord
-    fi
-    shift # arg
-    dst_arg=$arg
-    # Protect names problematic for `test' and other utilities.
-    case $dst_arg in
-      -* | [=\(\)!]) dst_arg=./$dst_arg;;
-    esac
-  done
-fi
-
-if test $# -eq 0; then
-  if test -z "$dir_arg"; then
-    echo "$0: no input file specified." >&2
-    exit 1
-  fi
-  # It's OK to call `install-sh -d' without argument.
-  # This can happen when creating conditional directories.
-  exit 0
-fi
-
-if test -z "$dir_arg"; then
-  do_exit='(exit $ret); exit $ret'
-  trap "ret=129; $do_exit" 1
-  trap "ret=130; $do_exit" 2
-  trap "ret=141; $do_exit" 13
-  trap "ret=143; $do_exit" 15
-
-  # Set umask so as not to create temps with too-generous modes.
-  # However, 'strip' requires both read and write access to temps.
-  case $mode in
-    # Optimize common cases.
-    *644) cp_umask=133;;
-    *755) cp_umask=22;;
-
-    *[0-7])
-      if test -z "$stripcmd"; then
-	u_plus_rw=
-      else
-	u_plus_rw='% 200'
-      fi
-      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
-    *)
-      if test -z "$stripcmd"; then
-	u_plus_rw=
-      else
-	u_plus_rw=,u+rw
-      fi
-      cp_umask=$mode$u_plus_rw;;
-  esac
-fi
-
-for src
-do
-  # Protect names problematic for `test' and other utilities.
-  case $src in
-    -* | [=\(\)!]) src=./$src;;
-  esac
-
-  if test -n "$dir_arg"; then
-    dst=$src
-    dstdir=$dst
-    test -d "$dstdir"
-    dstdir_status=$?
-  else
-
-    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
-    # might cause directories to be created, which would be especially bad
-    # if $src (and thus $dsttmp) contains '*'.
-    if test ! -f "$src" && test ! -d "$src"; then
-      echo "$0: $src does not exist." >&2
-      exit 1
-    fi
-
-    if test -z "$dst_arg"; then
-      echo "$0: no destination specified." >&2
-      exit 1
-    fi
-    dst=$dst_arg
-
-    # If destination is a directory, append the input filename; won't work
-    # if double slashes aren't ignored.
-    if test -d "$dst"; then
-      if test -n "$no_target_directory"; then
-	echo "$0: $dst_arg: Is a directory" >&2
-	exit 1
-      fi
-      dstdir=$dst
-      dst=$dstdir/`basename "$src"`
-      dstdir_status=0
-    else
-      # Prefer dirname, but fall back on a substitute if dirname fails.
-      dstdir=`
-	(dirname "$dst") 2>/dev/null ||
-	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	     X"$dst" : 'X\(//\)[^/]' \| \
-	     X"$dst" : 'X\(//\)$' \| \
-	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
-	echo X"$dst" |
-	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\/\)[^/].*/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\/\)$/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\).*/{
-		   s//\1/
-		   q
-		 }
-		 s/.*/./; q'
-      `
-
-      test -d "$dstdir"
-      dstdir_status=$?
-    fi
-  fi
-
-  obsolete_mkdir_used=false
-
-  if test $dstdir_status != 0; then
-    case $posix_mkdir in
-      '')
-	# Create intermediate dirs using mode 755 as modified by the umask.
-	# This is like FreeBSD 'install' as of 1997-10-28.
-	umask=`umask`
-	case $stripcmd.$umask in
-	  # Optimize common cases.
-	  *[2367][2367]) mkdir_umask=$umask;;
-	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
-	  *[0-7])
-	    mkdir_umask=`expr $umask + 22 \
-	      - $umask % 100 % 40 + $umask % 20 \
-	      - $umask % 10 % 4 + $umask % 2
-	    `;;
-	  *) mkdir_umask=$umask,go-w;;
-	esac
-
-	# With -d, create the new directory with the user-specified mode.
-	# Otherwise, rely on $mkdir_umask.
-	if test -n "$dir_arg"; then
-	  mkdir_mode=-m$mode
-	else
-	  mkdir_mode=
-	fi
-
-	posix_mkdir=false
-	case $umask in
-	  *[123567][0-7][0-7])
-	    # POSIX mkdir -p sets u+wx bits regardless of umask, which
-	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
-	    ;;
-	  *)
-	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
-	    if (umask $mkdir_umask &&
-		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
-	    then
-	      if test -z "$dir_arg" || {
-		   # Check for POSIX incompatibilities with -m.
-		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-		   # other-writeable bit of parent directory when it shouldn't.
-		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
-		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
-		   case $ls_ld_tmpdir in
-		     d????-?r-*) different_mode=700;;
-		     d????-?--*) different_mode=755;;
-		     *) false;;
-		   esac &&
-		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
-		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
-		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
-		   }
-		 }
-	      then posix_mkdir=:
-	      fi
-	      rmdir "$tmpdir/d" "$tmpdir"
-	    else
-	      # Remove any dirs left behind by ancient mkdir implementations.
-	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
-	    fi
-	    trap '' 0;;
-	esac;;
-    esac
-
-    if
-      $posix_mkdir && (
-	umask $mkdir_umask &&
-	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
-      )
-    then :
-    else
-
-      # The umask is ridiculous, or mkdir does not conform to POSIX,
-      # or it failed possibly due to a race condition.  Create the
-      # directory the slow way, step by step, checking for races as we go.
-
-      case $dstdir in
-	/*) prefix='/';;
-	[-=\(\)!]*) prefix='./';;
-	*)  prefix='';;
-      esac
-
-      eval "$initialize_posix_glob"
-
-      oIFS=$IFS
-      IFS=/
-      $posix_glob set -f
-      set fnord $dstdir
-      shift
-      $posix_glob set +f
-      IFS=$oIFS
-
-      prefixes=
-
-      for d
-      do
-	test X"$d" = X && continue
-
-	prefix=$prefix$d
-	if test -d "$prefix"; then
-	  prefixes=
-	else
-	  if $posix_mkdir; then
-	    (umask=$mkdir_umask &&
-	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
-	    # Don't fail if two instances are running concurrently.
-	    test -d "$prefix" || exit 1
-	  else
-	    case $prefix in
-	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
-	      *) qprefix=$prefix;;
-	    esac
-	    prefixes="$prefixes '$qprefix'"
-	  fi
-	fi
-	prefix=$prefix/
-      done
-
-      if test -n "$prefixes"; then
-	# Don't fail if two instances are running concurrently.
-	(umask $mkdir_umask &&
-	 eval "\$doit_exec \$mkdirprog $prefixes") ||
-	  test -d "$dstdir" || exit 1
-	obsolete_mkdir_used=true
-      fi
-    fi
-  fi
-
-  if test -n "$dir_arg"; then
-    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
-    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
-      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
-  else
-
-    # Make a couple of temp file names in the proper directory.
-    dsttmp=$dstdir/_inst.$$_
-    rmtmp=$dstdir/_rm.$$_
-
-    # Trap to clean up those temp files at exit.
-    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-
-    # Copy the file name to the temp name.
-    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
-
-    # and set any options; do chmod last to preserve setuid bits.
-    #
-    # If any of these fail, we abort the whole thing.  If we want to
-    # ignore errors from any of these, just make sure not to ignore
-    # errors from the above "$doit $cpprog $src $dsttmp" command.
-    #
-    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
-    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
-    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
-
-    # If -C, don't bother to copy if it wouldn't change the file.
-    if $copy_on_change &&
-       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` &&
-       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` &&
-
-       eval "$initialize_posix_glob" &&
-       $posix_glob set -f &&
-       set X $old && old=:$2:$4:$5:$6 &&
-       set X $new && new=:$2:$4:$5:$6 &&
-       $posix_glob set +f &&
-
-       test "$old" = "$new" &&
-       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
-    then
-      rm -f "$dsttmp"
-    else
-      # Rename the file to the real destination.
-      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
-
-      # The rename failed, perhaps because mv can't rename something else
-      # to itself, or perhaps because mv is so ancient that it does not
-      # support -f.
-      {
-	# Now remove or move aside any old file at destination location.
-	# We try this two ways since rm can't unlink itself on some
-	# systems and the destination file might be busy for other
-	# reasons.  In this case, the final cleanup might fail but the new
-	# file should still install successfully.
-	{
-	  test ! -f "$dst" ||
-	  $doit $rmcmd -f "$dst" 2>/dev/null ||
-	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
-	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
-	  } ||
-	  { echo "$0: cannot unlink or rename $dst" >&2
-	    (exit 1); exit 1
-	  }
-	} &&
-
-	# Now rename the file to the real destination.
-	$doit $mvcmd "$dsttmp" "$dst"
-      }
-    fi || exit 1
-
-    trap '' 0
-  fi
-done
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
Index: bcfa/Makefile.in
===================================================================
--- libcfa/Makefile.in	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,55 +1,0 @@
-######################### -*- Mode: Makefile-Gmake -*- ########################
-##
-## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-##
-## The contents of this file are covered under the licence agreement in the
-## file "LICENCE" distributed with Cforall.
-##
-## Makefile.in -- 
-##
-## Author           : Peter A. Buhr
-## Created On       : Sat May 16 08:05:18 2015
-## Last Modified By : Peter A. Buhr
-## Last Modified On : Thu May 21 22:00:51 2015
-## Update Count     : 3
-###############################################################################
-
-INSTALL=@INSTALL@
-BACKEND_CC := @BACKEND_CC@
-CFA_LIBDIR = @CFA_LIBDIR@
-
-LIBRARIES := libcfa.a builtins.cf builtins.c
-
-all: ${LIBRARIES}
-
-install: all
-	${INSTALL} -d @CFA_LIBDIR@
-	${INSTALL} prelude.cf @CFA_LIBDIR@
-	${INSTALL} libcfa.a @CFA_LIBDIR@
-
-# make forward declarations for gcc builtins
-builtins.c: Makefile builtins.def
-	@BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@
-
-builtins.cf: builtins.c
-	@BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@
-	${INSTALL} builtins.cf @CFA_LIBDIR@
-
-libcfa-prelude.c: @CFA_LIBDIR@/cfa-cpp prelude.cf builtins.cf
-	sed -i -e "s#typedef.*ptrdiff_t.*#`@BACKEND_CC@ -E ptrdiff_t.c | grep 'typedef.*ptrdiff_t'`#" prelude.cf
-	@CFA_LIBDIR@/cfa-cpp -l prelude.cf $@
-	rm -f prelude.c
-
-libcfa-prelude.o: libcfa-prelude.c
-	${BACKEND_CC} -c -o $@ $<
-
-libcfa.a: libcfa-prelude.o
-	ar crs $@ $^
-
-EXTRA_OUTPUT += libcfa-prelude.o libcfa-prelude.c
-
-# clean-up rule
-clean:
-	rm -f ${LIBRARIES} ${EXTRA_OUTPUT}
-
-distclean: clean
Index: bcfa/builtins.def
===================================================================
--- libcfa/builtins.def	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,874 +1,0 @@
-/* This file contains the definitions and documentation for the
-   builtins used in the GNU compiler.
-   Copyright (C) 2000-2014 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3.  If not see
-<http://www.gnu.org/licenses/>.  */
-
-/* Before including this file, you should define a macro:
-
-     DEF_BUILTIN (ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P,
-                  FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND)
-
-   This macro will be called once for each builtin function.  The
-   ENUM will be of type `enum built_in_function', and will indicate
-   which builtin function is being processed.  The NAME of the builtin
-   function (which will always start with `__builtin_') is a string
-   literal.  The CLASS is of type `enum built_in_class' and indicates
-   what kind of builtin is being processed.
-
-   Some builtins are actually two separate functions.  For example,
-   for `strcmp' there are two builtin functions; `__builtin_strcmp'
-   and `strcmp' itself.  Both behave identically.  Other builtins
-   define only the `__builtin' variant.  If BOTH_P is TRUE, then this
-   builtin has both variants; otherwise, it is has only the first
-   variant.
-
-   TYPE indicates the type of the function.  The symbols correspond to
-   enumerals from builtin-types.def.  If BOTH_P is true, then LIBTYPE
-   is the type of the non-`__builtin_' variant.  Otherwise, LIBTYPE
-   should be ignored.
-
-   If FALLBACK_P is true then, if for some reason, the compiler cannot
-   expand the builtin function directly, it will call the
-   corresponding library function (which does not have the
-   `__builtin_' prefix.
-
-   If NONANSI_P is true, then the non-`__builtin_' variant is not an
-   ANSI/ISO library function, and so we should pretend it does not
-   exist when compiling in ANSI conformant mode.
-
-   ATTRs is an attribute list as defined in builtin-attrs.def that
-   describes the attributes of this builtin function.
-
-   IMPLICIT specifies condition when the builtin can be produced by
-   compiler.  For instance C90 reserves floorf function, but does not
-   define it's meaning.  When user uses floorf we may assume that the
-   floorf has the meaning we expect, but we can't produce floorf by
-   simplifying floor((double)float) since the runtime need not implement
-   it.
-
-   The builtins is registered only if COND is true.  */
-
-/* A GCC builtin (like __builtin_saveregs) is provided by the
-   compiler, but does not correspond to a function in the standard
-   library.  */
-#undef DEF_GCC_BUILTIN
-#define DEF_GCC_BUILTIN(ENUM, NAME, TYPE, ATTRS)		\
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, BT_LAST,	\
-	       false, false, false, ATTRS, true, true)
-
-/* Like DEF_GCC_BUILTIN, except we don't prepend "__builtin_".  */
-#undef DEF_SYNC_BUILTIN
-#define DEF_SYNC_BUILTIN(ENUM, NAME, TYPE, ATTRS)		\
-  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, TYPE, BT_LAST,	\
-	       false, false, false, ATTRS, true, true)
-
-/* A library builtin (like __builtin_strchr) is a builtin equivalent
-   of an ANSI/ISO standard library function.  In addition to the
-   `__builtin' version, we will create an ordinary version (e.g,
-   `strchr') as well.  If we cannot compute the answer using the
-   builtin function, we will fall back to the standard library
-   version.  */
-#undef DEF_LIB_BUILTIN
-#define DEF_LIB_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
-	       true, true, false, ATTRS, true, true)
-
-/* Like DEF_LIB_BUILTIN, except that the function is not one that is
-   specified by ANSI/ISO C.  So, when we're being fully conformant we
-   ignore the version of these builtins that does not begin with
-   __builtin.  */
-#undef DEF_EXT_LIB_BUILTIN
-#define DEF_EXT_LIB_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
-	       true, true, true, ATTRS, false, true)
-
-/* Like DEF_LIB_BUILTIN, except that the function is only a part of
-   the standard in C94 or above.  */
-#undef DEF_C94_BUILTIN
-#define DEF_C94_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
-	       true, true, !flag_isoc94, ATTRS, targetm.libc_has_function (function_c94), true)
-
-/* Like DEF_LIB_BUILTIN, except that the function is only a part of
-   the standard in C99 or above.  */
-#undef DEF_C99_BUILTIN
-#define DEF_C99_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
-	       true, true, !flag_isoc99, ATTRS, targetm.libc_has_function (function_c99_misc), true)
-
-/* Like DEF_C99_BUILTIN, but for complex math functions.  */
-#undef DEF_C99_COMPL_BUILTIN
-#define DEF_C99_COMPL_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
-	       true, true, !flag_isoc99, ATTRS, targetm.libc_has_function (function_c99_math_complex), true)
-
-/* Builtin that is specified by C99 and C90 reserve the name for future use.
-   We can still recognize the builtin in C90 mode but we can't produce it
-   implicitly.  */
-#undef DEF_C99_C90RES_BUILTIN
-#define DEF_C99_C90RES_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
-	       true, true, !flag_isoc99, ATTRS, targetm.libc_has_function (function_c99_misc), true)
-
-/* Builtin that C99 reserve the name for future use. We can still recognize
-   the builtin in C99 mode but we can't produce it implicitly.  */
-#undef DEF_EXT_C99RES_BUILTIN
-#define DEF_EXT_C99RES_BUILTIN(ENUM, NAME, TYPE, ATTRS)        \
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,   \
-	      true, true, true, ATTRS, false, true)
-
-/* Allocate the enum and the name for a builtin, but do not actually
-   define it here at all.  */
-#undef DEF_BUILTIN_STUB
-#define DEF_BUILTIN_STUB(ENUM, NAME) \
-  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, BT_LAST, BT_LAST, false, false, \
-	       false, ATTR_LAST, false, false)
-
-/* Builtin used by the implementation of GNU OpenMP.  None of these are
-   actually implemented in the compiler; they're all in libgomp.  */
-#undef DEF_GOMP_BUILTIN
-#define DEF_GOMP_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
-               false, true, true, ATTRS, false, \
-	       (flag_openmp || flag_tree_parallelize_loops))
-
-/* Builtin used by implementation of Cilk Plus.  Most of these are decomposed
-   by the compiler but a few are implemented in libcilkrts.  */ 
-#undef DEF_CILK_BUILTIN_STUB
-#define DEF_CILK_BUILTIN_STUB(ENUM, NAME) \
-  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, BT_LAST, BT_LAST, false, false, \
-	       false, ATTR_LAST, false, false)
-
-/* Builtin used by the implementation of GNU TM.  These
-   functions are mapped to the actual implementation of the STM library. */
-#undef DEF_TM_BUILTIN
-#define DEF_TM_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
-	       true, true, true, ATTRS, false, flag_tm)
-
-/* Builtin used by the implementation of libsanitizer. These
-   functions are mapped to the actual implementation of the 
-   libtsan library. */
-#undef DEF_SANITIZER_BUILTIN
-#define DEF_SANITIZER_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
-  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
-	       true, true, true, ATTRS, true, \
-	      (flag_sanitize & (SANITIZE_ADDRESS | SANITIZE_THREAD \
-				| SANITIZE_UNDEFINED)))
-
-#undef DEF_CILKPLUS_BUILTIN
-#define DEF_CILKPLUS_BUILTIN(ENUM, NAME, TYPE, ATTRS)  \
-  DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, BT_FN_INT_VAR, BT_LAST, \
-  	       false, false, false, ATTRS, false, flag_cilkplus) 
-
-/* Define an attribute list for math functions that are normally
-   "impure" because some of them may write into global memory for
-   `errno'.  If !flag_errno_math they are instead "const".  */
-#undef ATTR_MATHFN_ERRNO
-#define ATTR_MATHFN_ERRNO (flag_errno_math ? \
-	ATTR_NOTHROW_LEAF_LIST : ATTR_CONST_NOTHROW_LEAF_LIST)
-
-/* Define an attribute list for math functions that are normally
-   "const" but if flag_rounding_math is set they are instead "pure".
-   This distinction accounts for the fact that some math functions
-   check the rounding mode which is akin to examining global
-   memory.  */
-#undef ATTR_MATHFN_FPROUNDING
-#define ATTR_MATHFN_FPROUNDING (flag_rounding_math ? \
-	ATTR_PURE_NOTHROW_LEAF_LIST : ATTR_CONST_NOTHROW_LEAF_LIST)
-
-/* Define an attribute list for math functions that are normally
-   "impure" because some of them may write into global memory for
-   `errno'.  If !flag_errno_math, we can possibly use "pure" or
-   "const" depending on whether we care about FP rounding.  */
-#undef ATTR_MATHFN_FPROUNDING_ERRNO
-#define ATTR_MATHFN_FPROUNDING_ERRNO (flag_errno_math ? \
-	ATTR_NOTHROW_LEAF_LIST : ATTR_MATHFN_FPROUNDING)
-
-/* Define an attribute list for math functions that need to mind FP
-   rounding, but because they store into memory they are never "const"
-   or "pure".  Use of this macro is mainly for documentation and
-   maintenance purposes.  */
-#undef ATTR_MATHFN_FPROUNDING_STORE
-#define ATTR_MATHFN_FPROUNDING_STORE ATTR_NOTHROW_LEAF_LIST
-
-/* Define an attribute list for leaf functions that do not throw
-   exceptions normally, but may throw exceptions when using
-   -fnon-call-exceptions.  */
-#define ATTR_NOTHROWCALL_LEAF_LIST (flag_non_call_exceptions ? \
-	ATTR_LEAF_LIST : ATTR_NOTHROW_LEAF_LIST)
-
-/* Make sure 0 is not a legitimate builtin.  */
-DEF_BUILTIN_STUB(BUILT_IN_NONE, (const char *)0)
-
-/* Category: math builtins.  */
-DEF_LIB_BUILTIN        (BUILT_IN_ACOS, "acos", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ACOSF, "acosf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ACOSH, "acosh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ACOSHF, "acoshf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ACOSHL, "acoshl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ACOSL, "acosl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_ASIN, "asin", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ASINF, "asinf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ASINH, "asinh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_ASINHF, "asinhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_ASINHL, "asinhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ASINL, "asinl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_ATAN, "atan", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_LIB_BUILTIN        (BUILT_IN_ATAN2, "atan2", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ATAN2F, "atan2f", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ATAN2L, "atan2l", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ATANF, "atanf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_ATANH, "atanh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ATANHF, "atanhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ATANHL, "atanhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ATANL, "atanl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_CBRT, "cbrt", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_CBRTF, "cbrtf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_CBRTL, "cbrtl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_LIB_BUILTIN        (BUILT_IN_CEIL, "ceil", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_CEILF, "ceilf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_CEILL, "ceill", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_COPYSIGN, "copysign", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_COPYSIGNF, "copysignf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_COPYSIGNL, "copysignl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_COS, "cos", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_COSF, "cosf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_LIB_BUILTIN        (BUILT_IN_COSH, "cosh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_COSHF, "coshf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_COSHL, "coshl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_COSL, "cosl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_DREM, "drem", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_DREMF, "dremf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_DREML, "dreml", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ERF, "erf", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_ERFC, "erfc", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ERFCF, "erfcf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ERFCL, "erfcl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ERFF, "erff", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_ERFL, "erfl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_LIB_BUILTIN        (BUILT_IN_EXP, "exp", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_EXP10, "exp10", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_EXP10F, "exp10f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_EXP10L, "exp10l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_EXP2, "exp2", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_EXP2F, "exp2f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_EXP2L, "exp2l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_EXPF, "expf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_EXPL, "expl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_EXPM1, "expm1", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_EXPM1F, "expm1f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_EXPM1L, "expm1l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_FABS, "fabs", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FABSF, "fabsf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FABSL, "fabsl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_FABSD32, "fabsd32", BT_FN_DFLOAT32_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_FABSD64, "fabsd64", BT_FN_DFLOAT64_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_FABSD128, "fabsd128", BT_FN_DFLOAT128_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_FDIM, "fdim", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_FDIMF, "fdimf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_FDIML, "fdiml", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_FLOOR, "floor", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FLOORF, "floorf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FLOORL, "floorl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_FMA, "fma", BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_FMAF, "fmaf", BT_FN_FLOAT_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_FMAL, "fmal", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_FMAX, "fmax", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_FMAXF, "fmaxf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_FMAXL, "fmaxl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_FMIN, "fmin", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_FMINF, "fminf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_FMINL, "fminl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_FMOD, "fmod", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FMODF, "fmodf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FMODL, "fmodl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_FREXP, "frexp", BT_FN_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FREXPF, "frexpf", BT_FN_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_FREXPL, "frexpl", BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMA, "gamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAF, "gammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAL, "gammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMA_R, "gamma_r", BT_FN_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAF_R, "gammaf_r", BT_FN_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAL_R, "gammal_r", BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VAL, "huge_val", BT_FN_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VALF, "huge_valf", BT_FN_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VALL, "huge_vall", BT_FN_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_HYPOT, "hypot", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_HYPOTF, "hypotf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_HYPOTL, "hypotl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_ICEIL, "iceil", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_ICEILF, "iceilf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_ICEILL, "iceill", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_IFLOOR, "ifloor", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_IFLOORF, "ifloorf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_IFLOORL, "ifloorl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_ILOGB, "ilogb", BT_FN_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ILOGBF, "ilogbf", BT_FN_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ILOGBL, "ilogbl", BT_FN_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_INF, "inf", BT_FN_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_INFF, "inff", BT_FN_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_INFL, "infl", BT_FN_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN	       (BUILT_IN_INFD32, "infd32", BT_FN_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_INFD64, "infd64", BT_FN_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_INFD128, "infd128", BT_FN_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_IRINT, "irint", BT_FN_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_IRINTF, "irintf", BT_FN_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_IRINTL, "irintl", BT_FN_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_IROUND, "iround", BT_FN_INT_DOUBLE, ATTR_MATHFN_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_IROUNDF, "iroundf", BT_FN_INT_FLOAT, ATTR_MATHFN_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_IROUNDL, "iroundl", BT_FN_INT_LONGDOUBLE, ATTR_MATHFN_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_J0, "j0", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_J0F, "j0f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_J0L, "j0l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_J1, "j1", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_J1F, "j1f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_J1L, "j1l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_JN, "jn", BT_FN_DOUBLE_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_JNF, "jnf", BT_FN_FLOAT_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_JNL, "jnl", BT_FN_LONGDOUBLE_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_LCEIL, "lceil", BT_FN_LONG_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LCEILF, "lceilf", BT_FN_LONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LCEILL, "lceill", BT_FN_LONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_LDEXP, "ldexp", BT_FN_DOUBLE_DOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_LDEXPF, "ldexpf", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_LDEXPL, "ldexpl", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_LFLOOR, "lfloor", BT_FN_LONG_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LFLOORF, "lfloorf", BT_FN_LONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LFLOORL, "lfloorl", BT_FN_LONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_LGAMMA, "lgamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_BUILTIN        (BUILT_IN_LGAMMAF, "lgammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_BUILTIN        (BUILT_IN_LGAMMAL, "lgammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_LGAMMA_R, "lgamma_r", BT_FN_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_LGAMMAF_R, "lgammaf_r", BT_FN_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_LGAMMAL_R, "lgammal_r", BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_GCC_BUILTIN        (BUILT_IN_LLCEIL, "llceil", BT_FN_LONGLONG_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LLCEILF, "llceilf", BT_FN_LONGLONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LLCEILL, "llceill", BT_FN_LONGLONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LLFLOOR, "llfloor", BT_FN_LONGLONG_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LLFLOORF, "llfloorf", BT_FN_LONGLONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LLFLOORL, "llfloorl", BT_FN_LONGLONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_LLRINT, "llrint", BT_FN_LONGLONG_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LLRINTF, "llrintf", BT_FN_LONGLONG_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LLRINTL, "llrintl", BT_FN_LONGLONG_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LLROUND, "llround", BT_FN_LONGLONG_DOUBLE, ATTR_MATHFN_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LLROUNDF, "llroundf", BT_FN_LONGLONG_FLOAT, ATTR_MATHFN_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LLROUNDL, "llroundl", BT_FN_LONGLONG_LONGDOUBLE, ATTR_MATHFN_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_LOG, "log", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_LOG10, "log10", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_LOG10F, "log10f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_LOG10L, "log10l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOG1P, "log1p", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOG1PF, "log1pf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOG1PL, "log1pl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOG2, "log2", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOG2F, "log2f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOG2L, "log2l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOGB, "logb", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOGBF, "logbf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LOGBL, "logbl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_LOGF, "logf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_LOGL, "logl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LRINT, "lrint", BT_FN_LONG_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LRINTF, "lrintf", BT_FN_LONG_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LRINTL, "lrintl", BT_FN_LONG_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LROUND, "lround", BT_FN_LONG_DOUBLE, ATTR_MATHFN_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LROUNDF, "lroundf", BT_FN_LONG_FLOAT, ATTR_MATHFN_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_LROUNDL, "lroundl", BT_FN_LONG_LONGDOUBLE, ATTR_MATHFN_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_MODF, "modf", BT_FN_DOUBLE_DOUBLE_DOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_MODFF, "modff", BT_FN_FLOAT_FLOAT_FLOATPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_MODFL, "modfl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_BUILTIN        (BUILT_IN_NAN, "nan", BT_FN_DOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_C99_BUILTIN        (BUILT_IN_NANF, "nanf", BT_FN_FLOAT_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_C99_BUILTIN        (BUILT_IN_NANL, "nanl", BT_FN_LONGDOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_GCC_BUILTIN        (BUILT_IN_NAND32, "nand32", BT_FN_DFLOAT32_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_GCC_BUILTIN        (BUILT_IN_NAND64, "nand64", BT_FN_DFLOAT64_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_GCC_BUILTIN        (BUILT_IN_NAND128, "nand128", BT_FN_DFLOAT128_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_GCC_BUILTIN        (BUILT_IN_NANS, "nans", BT_FN_DOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_GCC_BUILTIN        (BUILT_IN_NANSF, "nansf", BT_FN_FLOAT_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_GCC_BUILTIN        (BUILT_IN_NANSL, "nansl", BT_FN_LONGDOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_C99_BUILTIN        (BUILT_IN_NEARBYINT, "nearbyint", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_NEARBYINTF, "nearbyintf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_NEARBYINTL, "nearbyintl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_NEXTAFTER, "nextafter", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_NEXTAFTERF, "nextafterf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_NEXTAFTERL, "nextafterl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_NEXTTOWARD, "nexttoward", BT_FN_DOUBLE_DOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_NEXTTOWARDF, "nexttowardf", BT_FN_FLOAT_FLOAT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_NEXTTOWARDL, "nexttowardl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_POW, "pow", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_POW10, "pow10", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_POW10F, "pow10f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_POW10L, "pow10l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_POWF, "powf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_GCC_BUILTIN        (BUILT_IN_POWI, "powi", BT_FN_DOUBLE_DOUBLE_INT, ATTR_MATHFN_FPROUNDING)
-DEF_GCC_BUILTIN        (BUILT_IN_POWIF, "powif", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING)
-DEF_GCC_BUILTIN        (BUILT_IN_POWIL, "powil", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_POWL, "powl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_REMAINDER, "remainder", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_REMAINDERF, "remainderf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_REMAINDERL, "remainderl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_REMQUO, "remquo", BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_BUILTIN        (BUILT_IN_REMQUOF, "remquof", BT_FN_FLOAT_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_BUILTIN        (BUILT_IN_REMQUOL, "remquol", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_BUILTIN        (BUILT_IN_RINT, "rint", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_RINTF, "rintf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_RINTL, "rintl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_ROUND, "round", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_ROUNDF, "roundf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_ROUNDL, "roundl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SCALB, "scalb", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SCALBF, "scalbf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SCALBL, "scalbl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_SCALBLN, "scalbln", BT_FN_DOUBLE_DOUBLE_LONG, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_SCALBLNF, "scalblnf", BT_FN_FLOAT_FLOAT_LONG, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_SCALBLNL, "scalblnl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONG, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_SCALBN, "scalbn", BT_FN_DOUBLE_DOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_SCALBNF, "scalbnf", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_SCALBNL, "scalbnl", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBIT, "signbit", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITF, "signbitf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITL, "signbitl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITD32, "signbitd32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITD64, "signbitd64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITD128, "signbitd128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNIFICAND, "significand", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNIFICANDF, "significandf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNIFICANDL, "significandl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_SIN, "sin", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SINCOS, "sincos", BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SINCOSF, "sincosf", BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SINCOSL, "sincosl", BT_FN_VOID_LONGDOUBLE_LONGDOUBLEPTR_LONGDOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_SINF, "sinf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_LIB_BUILTIN        (BUILT_IN_SINH, "sinh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_SINHF, "sinhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_SINHL, "sinhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_SINL, "sinl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_LIB_BUILTIN        (BUILT_IN_SQRT, "sqrt", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_SQRTF, "sqrtf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_SQRTL, "sqrtl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_LIB_BUILTIN        (BUILT_IN_TAN, "tan", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_TANF, "tanf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_LIB_BUILTIN        (BUILT_IN_TANH, "tanh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_TANHF, "tanhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_TANHL, "tanhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_TANL, "tanl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_BUILTIN        (BUILT_IN_TGAMMA, "tgamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_TGAMMAF, "tgammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_TGAMMAL, "tgammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_C99_BUILTIN        (BUILT_IN_TRUNC, "trunc", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_TRUNCF, "truncf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_TRUNCL, "truncl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y0, "y0", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y0F, "y0f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y0L, "y0l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y1, "y1", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y1F, "y1f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_Y1L, "y1l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_YN, "yn", BT_FN_DOUBLE_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_YNF, "ynf", BT_FN_FLOAT_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_YNL, "ynl", BT_FN_LONGDOUBLE_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
-
-/* Category: _Complex math builtins.  */
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CABS, "cabs", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CABSF, "cabsf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CABSL, "cabsl", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOS, "cacos", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSF, "cacosf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSH, "cacosh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSHF, "cacoshf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSHL, "cacoshl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSL, "cacosl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CARG, "carg", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CARGF, "cargf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CARGL, "cargl", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASIN, "casin", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINF, "casinf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINH, "casinh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINHF, "casinhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINHL, "casinhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINL, "casinl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATAN, "catan", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANF, "catanf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANH, "catanh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANHF, "catanhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANHL, "catanhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANL, "catanl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOS, "ccos", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSF, "ccosf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSH, "ccosh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSHF, "ccoshf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSHL, "ccoshl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSL, "ccosl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CEXP, "cexp", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CEXPF, "cexpf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CEXPL, "cexpl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_GCC_BUILTIN        (BUILT_IN_CEXPI, "cexpi", BT_FN_COMPLEX_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_GCC_BUILTIN        (BUILT_IN_CEXPIF, "cexpif", BT_FN_COMPLEX_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_GCC_BUILTIN        (BUILT_IN_CEXPIL, "cexpil", BT_FN_COMPLEX_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CIMAG, "cimag", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CIMAGF, "cimagf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CIMAGL, "cimagl", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CLOG, "clog", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CLOGF, "clogf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CLOGL, "clogl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_EXT_C99RES_BUILTIN (BUILT_IN_CLOG10, "clog10", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_EXT_C99RES_BUILTIN (BUILT_IN_CLOG10F, "clog10f", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_EXT_C99RES_BUILTIN (BUILT_IN_CLOG10L, "clog10l", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CONJ, "conj", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CONJF, "conjf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CONJL, "conjl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPOW, "cpow", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPOWF, "cpowf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPOWL, "cpowl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPROJ, "cproj", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPROJF, "cprojf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPROJL, "cprojl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CREAL, "creal", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CREALF, "crealf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CREALL, "creall", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSIN, "csin", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINF, "csinf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINH, "csinh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINHF, "csinhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINHL, "csinhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINL, "csinl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSQRT, "csqrt", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSQRTF, "csqrtf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSQRTL, "csqrtl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTAN, "ctan", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANF, "ctanf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANH, "ctanh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANHF, "ctanhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANHL, "ctanhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANL, "ctanl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
-
-/* Category: string/memory builtins.  */
-/* bcmp, bcopy and bzero have traditionally accepted NULL pointers
-   when the length parameter is zero, so don't apply attribute "nonnull".  */
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_BCMP, "bcmp", BT_FN_INT_CONST_PTR_CONST_PTR_SIZE, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_BCOPY, "bcopy", BT_FN_VOID_CONST_PTR_PTR_SIZE, ATTR_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_BZERO, "bzero", BT_FN_VOID_PTR_SIZE, ATTR_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_INDEX, "index", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_MEMCHR, "memchr", BT_FN_PTR_CONST_PTR_INT_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_MEMCMP, "memcmp", BT_FN_INT_CONST_PTR_CONST_PTR_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_MEMCPY, "memcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_MEMMOVE, "memmove", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMPCPY, "mempcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_MEMSET, "memset", BT_FN_PTR_PTR_INT_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_RINDEX, "rindex", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPCPY, "stpcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPNCPY, "stpncpy", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCASECMP, "strcasecmp", BT_FN_INT_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRCAT, "strcat", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRCHR, "strchr", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRCMP, "strcmp", BT_FN_INT_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRCPY, "strcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_RET1_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRCSPN, "strcspn", BT_FN_SIZE_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRDUP, "strdup", BT_FN_STRING_CONST_STRING, ATTR_MALLOC_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNDUP, "strndup", BT_FN_STRING_CONST_STRING_SIZE, ATTR_MALLOC_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRLEN, "strlen", BT_FN_SIZE_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCASECMP, "strncasecmp", BT_FN_INT_CONST_STRING_CONST_STRING_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRNCAT, "strncat", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRNCMP, "strncmp", BT_FN_INT_CONST_STRING_CONST_STRING_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRNCPY, "strncpy", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRPBRK, "strpbrk", BT_FN_STRING_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRRCHR, "strrchr", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRSPN, "strspn", BT_FN_SIZE_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_STRSTR, "strstr", BT_FN_STRING_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)
-
-/* Category: stdio builtins.  */
-DEF_LIB_BUILTIN        (BUILT_IN_FPRINTF, "fprintf", BT_FN_INT_FILEPTR_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_2_3)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPRINTF_UNLOCKED, "fprintf_unlocked", BT_FN_INT_FILEPTR_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_2_3)
-DEF_LIB_BUILTIN        (BUILT_IN_PUTC, "putc", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_PUTC_UNLOCKED, "putc_unlocked", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_FPUTC, "fputc", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPUTC_UNLOCKED, "fputc_unlocked", BT_FN_INT_INT_FILEPTR, ATTR_NONNULL_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_FPUTS, "fputs", BT_FN_INT_CONST_STRING_FILEPTR, ATTR_NONNULL_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPUTS_UNLOCKED, "fputs_unlocked", BT_FN_INT_CONST_STRING_FILEPTR, ATTR_NONNULL_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_FSCANF, "fscanf", BT_FN_INT_FILEPTR_CONST_STRING_VAR, ATTR_FORMAT_SCANF_2_3)
-DEF_LIB_BUILTIN        (BUILT_IN_FWRITE, "fwrite", BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR, ATTR_NONNULL_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FWRITE_UNLOCKED, "fwrite_unlocked", BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR, ATTR_NONNULL_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_PRINTF, "printf", BT_FN_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_1_2)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_PRINTF_UNLOCKED, "printf_unlocked", BT_FN_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_1_2)
-DEF_LIB_BUILTIN        (BUILT_IN_PUTCHAR, "putchar", BT_FN_INT_INT, ATTR_NULL)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_PUTCHAR_UNLOCKED, "putchar_unlocked", BT_FN_INT_INT, ATTR_NULL)
-DEF_LIB_BUILTIN        (BUILT_IN_PUTS, "puts", BT_FN_INT_CONST_STRING, ATTR_NONNULL_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_PUTS_UNLOCKED, "puts_unlocked", BT_FN_INT_CONST_STRING, ATTR_NONNULL_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_SCANF, "scanf", BT_FN_INT_CONST_STRING_VAR, ATTR_FORMAT_SCANF_1_2)
-DEF_C99_BUILTIN        (BUILT_IN_SNPRINTF, "snprintf", BT_FN_INT_STRING_SIZE_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_3_4)
-DEF_LIB_BUILTIN        (BUILT_IN_SPRINTF, "sprintf", BT_FN_INT_STRING_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_2_3)
-DEF_LIB_BUILTIN        (BUILT_IN_SSCANF, "sscanf", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_FORMAT_SCANF_NOTHROW_2_3)
-DEF_LIB_BUILTIN        (BUILT_IN_VFPRINTF, "vfprintf", BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_2_0)
-DEF_C99_BUILTIN        (BUILT_IN_VFSCANF, "vfscanf", BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG, ATTR_FORMAT_SCANF_2_0)
-DEF_LIB_BUILTIN        (BUILT_IN_VPRINTF, "vprintf", BT_FN_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_1_0)
-DEF_C99_BUILTIN        (BUILT_IN_VSCANF, "vscanf", BT_FN_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_SCANF_1_0)
-DEF_C99_BUILTIN        (BUILT_IN_VSNPRINTF, "vsnprintf", BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_3_0)
-DEF_LIB_BUILTIN        (BUILT_IN_VSPRINTF, "vsprintf", BT_FN_INT_STRING_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_2_0)
-DEF_C99_BUILTIN        (BUILT_IN_VSSCANF, "vsscanf", BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG, ATTR_FORMAT_SCANF_NOTHROW_2_0)
-
-/* Category: ctype builtins.  */
-DEF_LIB_BUILTIN        (BUILT_IN_ISALNUM, "isalnum", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISALPHA, "isalpha", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISASCII, "isascii", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_ISBLANK, "isblank", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISCNTRL, "iscntrl", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISDIGIT, "isdigit", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISGRAPH, "isgraph", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISLOWER, "islower", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISPRINT, "isprint", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISPUNCT, "ispunct", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISSPACE, "isspace", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISUPPER, "isupper", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ISXDIGIT, "isxdigit", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_TOASCII, "toascii", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_TOLOWER, "tolower", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_TOUPPER, "toupper", BT_FN_INT_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-
-/* Category: wctype builtins.  */
-DEF_C94_BUILTIN        (BUILT_IN_ISWALNUM, "iswalnum", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWALPHA, "iswalpha", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_ISWBLANK, "iswblank", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWCNTRL, "iswcntrl", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWDIGIT, "iswdigit", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWGRAPH, "iswgraph", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWLOWER, "iswlower", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWPRINT, "iswprint", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWPUNCT, "iswpunct", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWSPACE, "iswspace", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWUPPER, "iswupper", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_ISWXDIGIT, "iswxdigit", BT_FN_INT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_TOWLOWER, "towlower", BT_FN_WINT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_C94_BUILTIN        (BUILT_IN_TOWUPPER, "towupper", BT_FN_WINT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST)
-
-/* Category: miscellaneous builtins.  */
-DEF_LIB_BUILTIN        (BUILT_IN_ABORT, "abort", BT_FN_VOID, ATTR_NORETURN_NOTHROW_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_ABS, "abs", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_AGGREGATE_INCOMING_ADDRESS, "aggregate_incoming_address", BT_FN_PTR_VAR, ATTR_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ALLOCA, "alloca", BT_FN_PTR_SIZE, ATTR_MALLOC_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_APPLY, "apply", BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE, ATTR_NULL)
-DEF_GCC_BUILTIN        (BUILT_IN_APPLY_ARGS, "apply_args", BT_FN_PTR_VAR, ATTR_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_BSWAP16, "bswap16", BT_FN_UINT16_UINT16, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_BSWAP32, "bswap32", BT_FN_UINT32_UINT32, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_BSWAP64, "bswap64", BT_FN_UINT64_UINT64, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_CLEAR_CACHE, "__clear_cache", BT_FN_VOID_PTR_PTR, ATTR_NOTHROW_LEAF_LIST)
-/* [trans-mem]: Adjust BUILT_IN_TM_CALLOC if BUILT_IN_CALLOC is changed.  */
-DEF_LIB_BUILTIN        (BUILT_IN_CALLOC, "calloc", BT_FN_PTR_SIZE_SIZE, ATTR_MALLOC_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLASSIFY_TYPE, "classify_type", BT_FN_INT_VAR, ATTR_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLZ, "clz", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLZIMAX, "clzimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLZL, "clzl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLZLL, "clzll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CONSTANT_P, "constant_p", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CTZ, "ctz", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CTZIMAX, "ctzimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CTZL, "ctzl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CTZLL, "ctzll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLRSB, "clrsb", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLRSBIMAX, "clrsbimax", BT_FN_INT_INTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLRSBL, "clrsbl", BT_FN_INT_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_CLRSBLL, "clrsbll", BT_FN_INT_LONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_DCGETTEXT, "dcgettext", BT_FN_STRING_CONST_STRING_CONST_STRING_INT, ATTR_FORMAT_ARG_2)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_DGETTEXT, "dgettext", BT_FN_STRING_CONST_STRING_CONST_STRING, ATTR_FORMAT_ARG_2)
-DEF_GCC_BUILTIN        (BUILT_IN_DWARF_CFA, "dwarf_cfa", BT_FN_PTR, ATTR_NULL)
-DEF_GCC_BUILTIN        (BUILT_IN_DWARF_SP_COLUMN, "dwarf_sp_column", BT_FN_UINT, ATTR_NULL)
-DEF_GCC_BUILTIN        (BUILT_IN_EH_RETURN, "eh_return", BT_FN_VOID_PTRMODE_PTR, ATTR_NORETURN_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_EH_RETURN_DATA_REGNO, "eh_return_data_regno", BT_FN_INT_INT, ATTR_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECL, "execl", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_SENTINEL_NOTHROW_LIST)
-DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECLP, "execlp", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_SENTINEL_NOTHROW_LIST)
-DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECLE, "execle", BT_FN_INT_CONST_STRING_CONST_STRING_VAR, ATTR_NOTHROW_SENTINEL_1)
-DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECV, "execv", BT_FN_INT_CONST_STRING_PTR_CONST_STRING, ATTR_NOTHROW_LIST)
-DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECVP, "execvp", BT_FN_INT_CONST_STRING_PTR_CONST_STRING, ATTR_NOTHROW_LIST)
-DEF_EXT_LIB_BUILTIN        (BUILT_IN_EXECVE, "execve", BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING, ATTR_NOTHROW_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_EXIT, "exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_EXPECT, "expect", BT_FN_LONG_LONG_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_ASSUME_ALIGNED, "assume_aligned", BT_FN_PTR_CONST_PTR_SIZE_VAR, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_EXTEND_POINTER, "extend_pointer", BT_FN_UNWINDWORD_PTR, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_EXTRACT_RETURN_ADDR, "extract_return_addr", BT_FN_PTR_PTR, ATTR_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFS, "ffs", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFSIMAX, "ffsimax", BT_FN_INT_INTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFSL, "ffsl", BT_FN_INT_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FFSLL, "ffsll", BT_FN_INT_LONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN        (BUILT_IN_FORK, "fork", BT_FN_PID, ATTR_NOTHROW_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_FRAME_ADDRESS, "frame_address", BT_FN_PTR_UINT, ATTR_NULL)
-/* [trans-mem]: Adjust BUILT_IN_TM_FREE if BUILT_IN_FREE is changed.  */
-DEF_LIB_BUILTIN        (BUILT_IN_FREE, "free", BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_FROB_RETURN_ADDR, "frob_return_addr", BT_FN_PTR_PTR, ATTR_NULL)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_GETTEXT, "gettext", BT_FN_STRING_CONST_STRING, ATTR_FORMAT_ARG_1)
-DEF_C99_BUILTIN        (BUILT_IN_IMAXABS, "imaxabs", BT_FN_INTMAX_INTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_INIT_DWARF_REG_SIZES, "init_dwarf_reg_size_table", BT_FN_VOID_PTR, ATTR_NULL)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITE, "finite", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITEF, "finitef", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITEL, "finitel", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITED32, "finited32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITED64, "finited64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FINITED128, "finited128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_FPCLASSIFY, "fpclassify", BT_FN_INT_INT_INT_INT_INT_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISFINITE, "isfinite", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISINF_SIGN, "isinf_sign", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ISINF, "isinf", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFF, "isinff", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFL, "isinfl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFD32, "isinfd32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFD64, "isinfd64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISINFD128, "isinfd128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_C90RES_BUILTIN (BUILT_IN_ISNAN, "isnan", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNANF, "isnanf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNANL, "isnanl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNAND32, "isnand32", BT_FN_INT_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNAND64, "isnand64", BT_FN_INT_DFLOAT64, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_ISNAND128, "isnand128", BT_FN_INT_DFLOAT128, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_ISNORMAL, "isnormal", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISGREATER, "isgreater", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISGREATEREQUAL, "isgreaterequal", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISLESS, "isless", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISLESSEQUAL, "islessequal", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISLESSGREATER, "islessgreater", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_ISUNORDERED, "isunordered", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
-DEF_LIB_BUILTIN        (BUILT_IN_LABS, "labs", BT_FN_LONG_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN_LLABS, "llabs", BT_FN_LONGLONG_LONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_LONGJMP, "longjmp", BT_FN_VOID_PTR_INT, ATTR_NORETURN_NOTHROW_LIST)
-/* [trans-mem]: Adjust BUILT_IN_TM_MALLOC if BUILT_IN_MALLOC is changed.  */
-DEF_LIB_BUILTIN        (BUILT_IN_MALLOC, "malloc", BT_FN_PTR_SIZE, ATTR_MALLOC_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_NEXT_ARG, "next_arg", BT_FN_PTR_VAR, ATTR_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_PARITY, "parity", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_PARITYIMAX, "parityimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_PARITYL, "parityl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_PARITYLL, "parityll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNT, "popcount", BT_FN_INT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNTIMAX, "popcountimax", BT_FN_INT_UINTMAX, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNTL, "popcountl", BT_FN_INT_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_POPCOUNTLL, "popcountll", BT_FN_INT_ULONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_POSIX_MEMALIGN, "posix_memalign", BT_FN_INT_PTRPTR_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_GCC_BUILTIN        (BUILT_IN_PREFETCH, "prefetch", BT_FN_VOID_CONST_PTR_VAR, ATTR_NOVOPS_LEAF_LIST)
-DEF_LIB_BUILTIN        (BUILT_IN_REALLOC, "realloc", BT_FN_PTR_PTR_SIZE, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_RETURN, "return", BT_FN_VOID_PTR, ATTR_NORETURN_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_RETURN_ADDRESS, "return_address", BT_FN_PTR_UINT, ATTR_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_SAVEREGS, "saveregs", BT_FN_PTR_VAR, ATTR_NULL)
-DEF_GCC_BUILTIN        (BUILT_IN_SETJMP, "setjmp", BT_FN_INT_PTR, ATTR_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRFMON, "strfmon", BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR, ATTR_FORMAT_STRFMON_NOTHROW_3_4)
-DEF_LIB_BUILTIN        (BUILT_IN_STRFTIME, "strftime", BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR, ATTR_FORMAT_STRFTIME_NOTHROW_3_0)
-DEF_GCC_BUILTIN        (BUILT_IN_TRAP, "trap", BT_FN_VOID, ATTR_NORETURN_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_UNREACHABLE, "unreachable", BT_FN_VOID, ATTR_CONST_NORETURN_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_UNWIND_INIT, "unwind_init", BT_FN_VOID, ATTR_NULL)
-DEF_GCC_BUILTIN        (BUILT_IN_UPDATE_SETJMP_BUF, "update_setjmp_buf", BT_FN_VOID_PTR_INT, ATTR_NULL)
-DEF_GCC_BUILTIN        (BUILT_IN_VA_COPY, "va_copy", BT_FN_VOID_VALIST_REF_VALIST_ARG, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_VA_END, "va_end", BT_FN_VOID_VALIST_REF, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_VA_START, "va_start", BT_FN_VOID_VALIST_REF_VAR, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_VA_ARG_PACK, "va_arg_pack", BT_FN_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN        (BUILT_IN_VA_ARG_PACK_LEN, "va_arg_pack_len", BT_FN_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN__EXIT, "_exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LEAF_LIST)
-DEF_C99_BUILTIN        (BUILT_IN__EXIT2, "_Exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LEAF_LIST)
-
-/* Implementing nested functions.  */
-DEF_BUILTIN_STUB (BUILT_IN_INIT_TRAMPOLINE, "__builtin_init_trampoline")
-DEF_BUILTIN_STUB (BUILT_IN_INIT_HEAP_TRAMPOLINE, "__builtin_init_heap_trampoline")
-DEF_BUILTIN_STUB (BUILT_IN_ADJUST_TRAMPOLINE, "__builtin_adjust_trampoline")
-DEF_BUILTIN_STUB (BUILT_IN_NONLOCAL_GOTO, "__builtin_nonlocal_goto")
-
-/* Implementing __builtin_setjmp.  */
-DEF_BUILTIN_STUB (BUILT_IN_SETJMP_SETUP, "__builtin_setjmp_setup")
-DEF_BUILTIN_STUB (BUILT_IN_SETJMP_RECEIVER, "__builtin_setjmp_receiver")
-
-/* Implementing variable sized local variables.  */
-DEF_BUILTIN_STUB (BUILT_IN_STACK_SAVE, "__builtin_stack_save")
-DEF_BUILTIN_STUB (BUILT_IN_STACK_RESTORE, "__builtin_stack_restore")
-DEF_BUILTIN_STUB (BUILT_IN_ALLOCA_WITH_ALIGN, "__builtin_alloca_with_align")
-
-/* Object size checking builtins.  */
-DEF_GCC_BUILTIN	       (BUILT_IN_OBJECT_SIZE, "object_size", BT_FN_SIZE_CONST_PTR_INT, ATTR_PURE_NOTHROW_LEAF_LIST)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMCPY_CHK, "__memcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMMOVE_CHK, "__memmove_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMPCPY_CHK, "__mempcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_MEMSET_CHK, "__memset_chk", BT_FN_PTR_PTR_INT_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPCPY_CHK, "__stpcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STPNCPY_CHK, "__stpncpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCAT_CHK, "__strcat_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRCPY_CHK, "__strcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCAT_CHK, "__strncat_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRNCPY_CHK, "__strncpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SNPRINTF_CHK, "__snprintf_chk", BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_5_6)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_SPRINTF_CHK, "__sprintf_chk", BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_NOTHROW_4_5)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_VSNPRINTF_CHK, "__vsnprintf_chk", BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_5_0)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_VSPRINTF_CHK, "__vsprintf_chk", BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_NOTHROW_4_0)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_FPRINTF_CHK, "__fprintf_chk", BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_3_4)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_PRINTF_CHK, "__printf_chk", BT_FN_INT_INT_CONST_STRING_VAR, ATTR_FORMAT_PRINTF_2_3)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_VFPRINTF_CHK, "__vfprintf_chk", BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_3_0)
-DEF_EXT_LIB_BUILTIN    (BUILT_IN_VPRINTF_CHK, "__vprintf_chk", BT_FN_INT_INT_CONST_STRING_VALIST_ARG, ATTR_FORMAT_PRINTF_2_0)
-
-/* Profiling hooks.  */
-DEF_BUILTIN (BUILT_IN_PROFILE_FUNC_ENTER, "__cyg_profile_func_enter", BUILT_IN_NORMAL, BT_FN_VOID_PTR_PTR, BT_LAST,
-	     false, false, false, ATTR_NULL, true, true)
-DEF_BUILTIN (BUILT_IN_PROFILE_FUNC_EXIT, "__cyg_profile_func_exit", BUILT_IN_NORMAL, BT_FN_VOID_PTR_PTR, BT_LAST,
-	     false, false, false, ATTR_NULL, true, true)
-
-/* TLS thread pointer related builtins.  */
-DEF_BUILTIN (BUILT_IN_THREAD_POINTER, "__builtin_thread_pointer",
-	     BUILT_IN_NORMAL, BT_FN_PTR, BT_LAST,
-	     false, false, true, ATTR_CONST_NOTHROW_LIST, true,
-	     targetm.have_tls)
-
-DEF_BUILTIN (BUILT_IN_SET_THREAD_POINTER, "__builtin_set_thread_pointer",
-	     BUILT_IN_NORMAL, BT_FN_VOID_PTR, BT_LAST,
-	     false, false, true, ATTR_NOTHROW_LIST, true,
-	     targetm.have_tls)
-
-/* TLS emulation.  */
-DEF_BUILTIN (BUILT_IN_EMUTLS_GET_ADDRESS, targetm.emutls.get_address,
-	     BUILT_IN_NORMAL,
-	     BT_FN_PTR_PTR,  BT_FN_PTR_PTR,
-	     true, true, true, ATTR_CONST_NOTHROW_NONNULL_LEAF, false,
-	     !targetm.have_tls)
-DEF_BUILTIN (BUILT_IN_EMUTLS_REGISTER_COMMON,
-	     targetm.emutls.register_common, BUILT_IN_NORMAL,
-	     BT_FN_VOID_PTR_WORD_WORD_PTR, BT_FN_VOID_PTR_WORD_WORD_PTR,
-	     true, true, true, ATTR_NOTHROW_LEAF_LIST, false,
-	     !targetm.have_tls)
-
-/* Exception support.  */
-DEF_BUILTIN_STUB (BUILT_IN_UNWIND_RESUME, "__builtin_unwind_resume")
-DEF_BUILTIN_STUB (BUILT_IN_CXA_END_CLEANUP, "__builtin_cxa_end_cleanup")
-DEF_BUILTIN_STUB (BUILT_IN_EH_POINTER, "__builtin_eh_pointer")
-DEF_BUILTIN_STUB (BUILT_IN_EH_FILTER, "__builtin_eh_filter")
-DEF_BUILTIN_STUB (BUILT_IN_EH_COPY_VALUES, "__builtin_eh_copy_values")
-
-/* __FILE__, __LINE__, __FUNCTION__ as builtins.  */
-DEF_GCC_BUILTIN (BUILT_IN_FILE, "FILE", BT_FN_CONST_STRING, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN (BUILT_IN_FUNCTION, "FUNCTION", BT_FN_CONST_STRING, ATTR_NOTHROW_LEAF_LIST)
-DEF_GCC_BUILTIN (BUILT_IN_LINE, "LINE", BT_FN_INT, ATTR_NOTHROW_LEAF_LIST)
-
-#if 0
-/* Synchronization Primitives.  */
-#include "sync-builtins.def"
-
-/* OpenMP builtins.  */
-#include "omp-builtins.def"
-
-/* Cilk keywords builtins.  */
-#include "cilk-builtins.def"
-
-/* GTM builtins. */
-#include "gtm-builtins.def"
-
-/* Sanitizer builtins. */
-#include "sanitizer.def"
-
-/* Cilk Plus builtins.  */
-#include "cilkplus.def"
-#endif
Index: bcfa/prelude.cf
===================================================================
--- libcfa/prelude.cf	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,615 +1,0 @@
-//                               -*- Mode: C -*- 
-// 
-// Copyright (C) Glen Ditchfield 1994, 1999
-// 
-// prelude.cf -- Standard Cforall Preample for C99
-// 
-// Author           : Glen Ditchfield
-// Created On       : Sat Nov 29 07:23:41 2014
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May  4 17:21:02 2015
-// Update Count     : 70
-//
-
-// Following line added from stddef.h by build
-
-typedef long int ptrdiff_t;
-
-// Section numbers from: http://plg.uwaterloo.ca/~cforall/refrat.pdf
-
-// ------------------------------------------------------------
-//
-// Section 4.1 Primary Expressions
-//
-// ------------------------------------------------------------
-
-const int 0, 1;
-
-forall ( dtype DT ) const DT * const	0;
-forall ( ftype FT ) FT * const		0;
-
-// ------------------------------------------------------------
-//
-// Section 4.2 Postfix Operators
-//
-// ------------------------------------------------------------
-
-_Bool			?++( _Bool * ),				?++( volatile _Bool * );
-_Bool			?--( _Bool * ),				?--( volatile _Bool * );
-unsigned char		?++( unsigned char * ),			?++( volatile unsigned char * );
-signed int		?++( signed int * ),			?++( volatile signed int * );
-signed int		?--( signed int * ),			?--( volatile signed int * );
-unsigned int		?++( unsigned int * ),			?++( volatile unsigned int * );
-unsigned int		?--( unsigned int * ),			?--( volatile unsigned int * );
-signed long int		?++( signed long int * ),		?++( volatile signed long int * );
-signed long int		?--( signed long int * ),		?--( volatile signed long int * );
-unsigned long int	?++( unsigned long int * ),		?++( volatile unsigned long int * );
-unsigned long int	?--( unsigned long int * ),		?--( volatile unsigned long int * );
-signed long long int	?++( signed long long int * ),		?++( volatile signed long long int * );
-signed long long int	?--( signed long long int * ),		?--( volatile signed long long int * );
-unsigned long long int	?++( unsigned long long int * ),	?++( volatile unsigned long long int * );
-unsigned long long int	?--( unsigned long long int * ),	?--( volatile unsigned long long int * );
-float			?++( float * ),				?++( volatile float * );
-float			?--( float * ),				?--( volatile float * );
-double			?++( double * ),			?++( volatile double * );
-double			?--( double * ),			?--( volatile double * );
-long double		?++( long double * ),			?++( volatile long double * );
-long double		?--( long double * ),			?--( volatile long double * );
-float _Complex		?++( float _Complex * ),		?++( volatile float _Complex * );
-float _Complex		?--( float _Complex * ),		?--( volatile float _Complex * );
-double _Complex		?++( double _Complex * ),		?++( volatile double _Complex * );
-double _Complex		?--( double _Complex * ),		?--( volatile double _Complex * );
-long double _Complex	?++( long double _Complex * ),		?++( volatile long double _Complex * );
-long double _Complex	?--( long double _Complex * ),		?--( volatile long double _Complex * );
-
-forall( type T ) T *			 ?++(		     T ** );
-forall( type T ) const T *		 ?++( const	     T ** );
-forall( type T ) volatile T *		 ?++(	    volatile T ** );
-forall( type T ) const volatile T *	 ?++( const volatile T ** );
-forall( type T ) T *			 ?--(		     T ** );
-forall( type T ) const T *		 ?--( const	     T ** );
-forall( type T ) volatile T *		 ?--(	    volatile T ** );
-forall( type T ) const volatile T *	 ?--( const volatile T ** );
-
-forall( type T ) lvalue T		 ?[?](		      T *,	    ptrdiff_t );
-forall( type T ) const lvalue T		 ?[?]( const	      T *,	    ptrdiff_t );
-forall( type T ) volatile lvalue T	 ?[?](       volatile T *,	    ptrdiff_t );
-forall( type T ) const volatile lvalue T ?[?]( const volatile T *,	    ptrdiff_t );
-forall( type T ) lvalue T		 ?[?](		ptrdiff_t,		  T * );
-forall( type T ) const lvalue T		 ?[?](		ptrdiff_t, const	  T * );
-forall( type T ) volatile lvalue T	 ?[?](		ptrdiff_t,	 volatile T * );
-forall( type T ) const volatile lvalue T ?[?](		ptrdiff_t, const volatile T * );
-
-// ------------------------------------------------------------
-//
-// Section 4.3 Unary Operators
-//
-// ------------------------------------------------------------
-
-_Bool			++?( _Bool * ),				--?( _Bool * );
-signed int		++?( signed int * ),			--?( signed int * );
-unsigned int		++?( unsigned int * ),			--?( unsigned int * );
-signed long int		++?( signed long int * ),		--?( signed long int * );
-unsigned long int	++?( unsigned long int * ),		--?( unsigned long int * );
-signed long long int	++?( signed long long int * ),		--?( signed long long int * );
-unsigned long long int	++?( unsigned long long int * ),	--?( unsigned long long int * );
-float			++?( float * ),				--?( float * );
-double			++?( double * ),			--?( double * );
-long double		++?( long double * ),			--?( long double * );
-float _Complex		++?( float _Complex * ),		--?( float _Complex * );
-double _Complex		++?( double _Complex * ),		--?( double _Complex * );
-long double _Complex	++?( long double _Complex * ),		--?( long double _Complex * );
-
-forall( type T ) T *			 ++?(		     T ** );
-forall( type T ) const T *		 ++?( const	     T ** );
-forall( type T ) volatile T *		 ++?(	    volatile T ** );
-forall( type T ) const volatile T *	 ++?( const volatile T ** );
-forall( type T ) T *			 --?(		     T ** );
-forall( type T ) const T *		 --?( const	     T ** );
-forall( type T ) volatile T *		 --?(	    volatile T ** );
-forall( type T ) const volatile T *	 --?( const volatile T ** );
-
-forall( type T ) lvalue T		 *?(		     T * );
-forall( type T ) const lvalue T		 *?( const	     T * );
-forall( type T ) volatile lvalue T	 *?(       volatile  T * );
-forall( type T ) const volatile lvalue T *?( const volatile  T * );
-forall( ftype FT ) lvalue FT		 *?( FT * );
-
-_Bool			+?( _Bool ),			-?( _Bool ),			~?( _Bool );	     
-signed int		+?( signed int ),		-?( signed int ),		~?( signed int );	     
-unsigned int		+?( unsigned int ),		-?( unsigned int ),		~?( unsigned int );	     
-signed long int		+?( signed long int ),		-?( signed long int ),		~?( signed long int );	     
-unsigned long int	+?( unsigned long int ),	-?( unsigned long int ),	~?( unsigned long int );	     
-signed long long int	+?( signed long long int ),	-?( signed long long int ),	~?( signed long long int );    
-unsigned long long int	+?( unsigned long long int ),	-?( unsigned long long int ),	~?( unsigned long long int );  
-float			+?( float ),			-?( float );
-double			+?( double ),			-?( double );
-long double		+?( long double ),		-?( long double );
-float _Complex		+?( float _Complex ),		-?( float _Complex );
-double _Complex		+?( double _Complex ),		-?( double _Complex );
-long double _Complex	+?( long double _Complex ),	-?( long double _Complex );
-
-signed int	!?( signed int ),		!?( unsigned int ),
-		!?( long int ),			!?( unsigned long int ),
-		!?( long long int ),		!?( unsigned long long int ),
-		!?( float ),			!?( double ),			!?( long double ),
-		!?( float _Complex ),		!?( double _Complex ),		!?( long double _Complex );
-
-forall ( dtype DT ) int !?( const volatile DT * );
-forall ( ftype FT ) int !?( FT * );
-
-// ------------------------------------------------------------
-//
-// Section 4.5 Multiplicative Operators
-//
-// ------------------------------------------------------------
-
-_Bool			?*?( _Bool, _Bool ),					?/?( _Bool, _Bool ),				?%?( _Bool, _Bool );
-signed int		?*?( signed int, signed int ),				?/?( signed int, signed int ),			?%?( signed int, signed int );
-unsigned int		?*?( unsigned int, unsigned int ),			?/?( unsigned int, unsigned int ),		?%?( unsigned int, unsigned int );
-signed long int		?*?( signed long int, signed long int ),		?/?( signed long int, signed long int ),	?%?( signed long int, signed long int );
-unsigned long int	?*?( unsigned long int, unsigned long int ),		?/?( unsigned long int, long unsigned ),	?%?( long unsigned, long unsigned );
-signed long long int	?*?( signed long long int, signed long long int ),	?/?( signed long long int, signed long long int ), ?%?( signed long long int, signed long long int );
-unsigned long long int	?*?( unsigned long long int, unsigned long long int ),	?/?( unsigned long long int, long long unsigned ), ?%?( long long unsigned, long long unsigned );
-float			?*?( float, float ),					?/?( float, float );
-double			?*?( double, double ),					?/?( double, double );
-long double		?*?( long double, long double ),			?/?( long double, long double );
-// gcc does not support _Imaginary
-//float _Imaginary	?*?( float _Imaginary, float _Imaginary),		?/?( float _Imaginary, float _Imaginary );
-//double _Imaginary	?*?( double _Imaginary, double _Imaginary),		?/?( double _Imaginary, double _Imaginary );
-//long double _Imaginary	?*?( long double _Imaginary, long double _Imaginary),	?/?( long double _Imaginary, long double _Imaginary );
-float _Complex		?*?( float _Complex, float _Complex ),			?/?( float _Complex, float _Complex );
-double _Complex		?*?( double _Complex, double _Complex ),		?/?( double _Complex, double _Complex );
-long double _Complex	?*?( long double _Complex, long double _Complex ),	?/?( long double _Complex, long double _Complex );
-
-// ------------------------------------------------------------
-//
-// Section 4.6 Additive Operators
-//
-// ------------------------------------------------------------
-
-_Bool			?+?( _Bool, _Bool ),					?-?( _Bool, _Bool );
-signed int		?+?( signed int, signed int ),				?-?( signed int, signed int );
-unsigned int		?+?( unsigned int, unsigned int ),			?-?( unsigned int, unsigned int );
-signed long int		?+?( signed long int, signed long int ),		?-?( signed long int, signed long int );
-unsigned long int	?+?( unsigned long int, unsigned long int ),		?-?( unsigned long int, long unsigned );
-signed long long int	?+?( signed long long int, long long int  signed),	?-?( signed long long int, signed long long int );
-unsigned long long int	?+?( unsigned long long int, unsigned long long int ),	?-?( unsigned long long int, long long unsigned );
-float			?+?( float, float ),					?-?( float, float );
-double			?+?( double, double ),					?-?( double, double );
-long double		?+?( long double, long double ),			?-?( long double, long double );
-float _Complex		?+?( float _Complex, float _Complex ),			?-?( float _Complex, float _Complex );
-double _Complex		?+?( double _Complex, double _Complex ),		?-?( double _Complex, double _Complex );
-long double _Complex	?+?( long double _Complex, long double _Complex ),	?-?( long double _Complex, long double _Complex );
-
-forall( type T ) T *			?+?(		    T *,	  ptrdiff_t );
-forall( type T ) T *			?+?(	      ptrdiff_t,		T * );
-forall( type T ) const T *		?+?( const	    T *,	  ptrdiff_t );
-forall( type T ) const T *		?+?(	      ptrdiff_t, const		T * );
-forall( type T ) volatile T *		?+?(	   volatile T *,	  ptrdiff_t );
-forall( type T ) volatile T *		?+?(	      ptrdiff_t,       volatile T * );
-forall( type T ) const volatile T *	?+?( const volatile T *,	  ptrdiff_t );
-forall( type T ) const volatile T *	?+?(	      ptrdiff_t, const volatile T * );
-forall( type T ) T *			?-?(		    T *,	  ptrdiff_t );
-forall( type T ) const T *		?-?( const	    T *,	  ptrdiff_t );
-forall( type T ) volatile T *		?-?(	   volatile T *,	  ptrdiff_t );
-forall( type T ) const volatile T *	?-?( const volatile T *,	  ptrdiff_t );
-forall( type T ) ptrdiff_t		?-?( const volatile T *, const volatile T * );
-
-// ------------------------------------------------------------
-//
-// Section 4.7 Bitwise Shift Operators
-//
-// ------------------------------------------------------------
-
-_Bool			?<<?( _Bool, _Bool ),				?>>?( _Bool, _Bool );
-signed int		?<<?( signed int, signed int ),			?>>?( signed int, signed int );
-unsigned int		?<<?( unsigned int, unsigned int ),		?>>?( unsigned int, unsigned int );
-signed long int		?<<?( signed long int, signed long int ),	?>>?( signed long int, signed long int );
-unsigned long int	?<<?( unsigned long int, long unsigned ),	?>>?( unsigned long int, unsigned long int );
-
-// ------------------------------------------------------------
-//
-// Section 4.8 Relational Operators
-//
-// ------------------------------------------------------------
-
-signed int ?<?( _Bool, _Bool ),				?<=?( _Bool, _Bool ),
-	   ?>?( _Bool, _Bool ),				?>=?( _Bool, _Bool );
-signed int ?<?( unsigned char, unsigned char ),		?<=?( unsigned char, unsigned char ),
-	   ?>?( unsigned char, unsigned char ),		?>=?( unsigned char, unsigned char );
-signed int ?<?( signed int, signed int ),		?<=?( signed int, signed int ),
-	   ?>?( signed int, signed int ),		?>=?( signed int, signed int );
-signed int ?<?( unsigned int, unsigned int ),		?<=?( unsigned int, unsigned int ),
-	   ?>?( unsigned int, unsigned int ),		?>=?( unsigned int, unsigned int );
-signed int ?<?( signed long int, signed long int ),	?<=?( signed long int, signed long int ),
-	   ?>?( signed long int, signed long int ),	?>=?( signed long int, signed long int );
-signed int ?<?( unsigned long int, unsigned long int ),	?<=?( unsigned long int, unsigned long int ),
-	   ?>?( unsigned long int, unsigned long int ),	?>=?( unsigned long int, unsigned long int );
-signed int ?<?( float, float ),				?<=?( float, float ),
-	   ?>?( float, float ),				?>=?( float, float );
-signed int ?<?( double, double ),			?<=?( double, double ),
-	   ?>?( double, double ),			?>=?( double, double );
-signed int ?<?( long double, long double ),		?<=?( long double, long double ),
-	   ?>?( long double, long double ),		?>=?( long double, long double );
-
-forall( dtype DT ) signed int ?<?(  const volatile DT *, const volatile DT * );
-forall( dtype DT ) signed int ?>?(  const volatile DT *, const volatile DT * );
-forall( dtype DT ) signed int ?<=?( const volatile DT *, const volatile DT * );
-forall( dtype DT ) signed int ?>=?( const volatile DT *, const volatile DT * );
-
-// ------------------------------------------------------------
-//
-// Section 4.9 Equality Operators
-//
-// ------------------------------------------------------------
-
-signed int ?==?( _Bool, _Bool ),				?!=?( _Bool, _Bool );
-signed int ?==?( signed int, signed int ),			?!=?( signed int, signed int );
-signed int ?==?( unsigned int, unsigned int ),			?!=?( unsigned int, unsigned int );
-signed int ?==?( signed long int, signed long int ),		?!=?( signed long int, signed long int );
-signed int ?==?( unsigned long int, unsigned long int ),	?!=?( unsigned long int, long unsigned );
-signed int ?==?( signed long long int, long long int  signed),	?!=?( signed long long int, signed long long int );
-signed int ?==?( unsigned long long int, unsigned long long int ), ?!=?( unsigned long long int, long long unsigned );
-signed int ?==?( float, float ),				?!=?( float, float );
-signed int ?==?( double, double ),				?!=?( double, double );
-signed int ?==?( long double, long double ),			?!=?( long double, long double );
-signed int ?==?( float _Complex, float _Complex ),		?!=?( float _Complex, float _Complex );
-signed int ?==?( double _Complex, double _Complex ),		?!=?( double _Complex, double _Complex );
-signed int ?==?( long double _Complex, long double _Complex ),	?!=?( long double _Complex, long double _Complex );
-
-forall( dtype DT ) signed int ?==?(		   DT *,		DT * );
-forall( dtype DT ) signed int ?==?( const	   DT *, const		DT * );
-forall( dtype DT ) signed int ?==?(       volatile DT *,       volatile DT * );
-forall( dtype DT ) signed int ?==?( const volatile DT *, const volatile DT * );
-forall( ftype FT ) signed int ?==?( FT *, FT * );
-forall( dtype DT ) signed int ?!=?(		   DT *,		DT * );
-forall( dtype DT ) signed int ?!=?( const	   DT *, const		DT * );
-forall( dtype DT ) signed int ?!=?(       volatile DT *,       volatile DT * );
-forall( dtype DT ) signed int ?!=?( const volatile DT *, const volatile DT * );
-forall( ftype FT ) signed int ?!=?( FT *, FT * );
-
-forall( dtype DT ) signed int ?==?( const volatile DT   *, const volatile void * );
-forall( dtype DT ) signed int ?==?( const volatile void *, const volatile DT * );
-forall( dtype DT ) signed int ?!=?( const volatile DT   *, const volatile void * );
-forall( dtype DT ) signed int ?!=?( const volatile void *, const volatile DT * );
-
-forall( dtype DT ) signed int ?==?( const volatile DT *, forall( dtype DT2 )const DT2 * );
-forall( dtype DT ) signed int ?==?( forall( dtype DT2 )const DT2 *, const volatile DT * );
-forall( ftype FT ) signed int ?==?( FT *, forall( ftype FT2 )FT2 * );
-forall( ftype FT ) signed int ?==?( forall( ftype FT2 )FT2 *, FT * );
-forall( dtype DT ) signed int ?!=?( const volatile DT *, forall( dtype DT2 )const DT2 * );
-forall( dtype DT ) signed int ?!=?( forall( dtype DT2 )const DT2 *, const volatile DT * );
-forall( ftype FT ) signed int ?!=?( FT *, forall( ftype FT2 )FT2 * );
-forall( ftype FT ) signed int ?!=?( forall( ftype FT2 )FT2 *, FT * );
-
-// ------------------------------------------------------------
-//
-// Section 4.10 Bitwise AND Operators
-//
-// ------------------------------------------------------------
-
-_Bool			?&?( _Bool, _Bool );
-signed int		?&?( signed int, signed int );
-unsigned int		?&?( unsigned int, unsigned int );
-signed long int		?&?( signed long int, signed long int );
-unsigned long int	?&?( unsigned long int, unsigned long int );
-
-// ------------------------------------------------------------
-//
-// Section 4.11 Bitwise XOR Operators
-//
-// ------------------------------------------------------------
-
-_Bool			?^?( _Bool, _Bool );
-signed int		?^?( signed int, signed int );
-unsigned int		?^?( unsigned int, unsigned int );
-signed long int		?^?( signed long int, signed long int );
-unsigned long int	?^?( unsigned long int, unsigned long int );
-
-// ------------------------------------------------------------
-//
-// Section 4.12 Bitwise OR Operators
-//
-// ------------------------------------------------------------
-
-_Bool			?|?( _Bool, _Bool );
-signed int		?|?( signed int, signed int );
-unsigned int		?|?( unsigned int, unsigned int );
-signed long int		?|?( signed long int, signed long int );
-unsigned long int	?|?( unsigned long int, unsigned long int );
-
-// ------------------------------------------------------------
-//
-// Section 4.16 Assignment Operator
-//
-// ------------------------------------------------------------
-
-forall( ftype FT ) FT *			?=?( FT **, FT * );
-forall( ftype FT ) FT *			?=?( FT * volatile *, FT * );
-
-forall( dtype DT ) DT *			?=?(		     DT *	   *,			DT * );
-forall( dtype DT ) DT *			?=?(		     DT * volatile *,			DT * );
-forall( dtype DT ) const DT *		?=?( const	     DT *	   *,			DT * );
-forall( dtype DT ) const DT *		?=?( const	     DT * volatile *,			DT * );
-forall( dtype DT ) const DT *		?=?( const	     DT *	   *, const		DT * );
-forall( dtype DT ) const DT *		?=?( const	     DT * volatile *, const		DT * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   *,			DT * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile *,			DT * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   *,	    volatile	DT * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile *,	    volatile	DT * );
-
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *,			DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,			DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   *, const		DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const		DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   *,	    volatile	DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,	    volatile	DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   *, const volatile	DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const volatile	DT * );
-
-forall( dtype DT ) DT *			?=?(		     DT *	   *,			void * );
-forall( dtype DT ) DT *			?=?(		     DT * volatile *,			void * );
-forall( dtype DT ) const DT *		?=?( const	     DT *	   *,			void * );
-forall( dtype DT ) const DT *		?=?( const	     DT * volatile *,			void * );
-forall( dtype DT ) const DT *		?=?( const	     DT *	   *, const		void * );
-forall( dtype DT ) const DT *		?=?( const	     DT * volatile *, const		void * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   *,			void * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile *,			void * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   *,	    volatile	void * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile *,	    volatile	void * );
-
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *,			void * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile *,			void * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *, const		void * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile *, const		void * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *,	    volatile	void * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile *,	    volatile	void * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *, const volatile	void * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile *, const volatile	void * );
-
-forall( dtype DT ) void *		 ?=?(		     void *	     *,			DT * );
-forall( dtype DT ) void *		 ?=?(		     void * volatile *,			DT * );
-forall( dtype DT ) const void *		 ?=?( const	     void *	     *,			DT * );
-forall( dtype DT ) const void *		 ?=?( const	     void * volatile *,			DT * );
-forall( dtype DT ) const void *		 ?=?( const	     void *	     *, const		DT * );
-forall( dtype DT ) const void *		 ?=?( const	     void * volatile *, const		DT * );
-forall( dtype DT ) volatile void *	 ?=?(	    volatile void *	     *,			DT * );
-forall( dtype DT ) volatile void *	 ?=?(	    volatile void * volatile *,			DT * );
-forall( dtype DT ) volatile void *	 ?=?(	    volatile void *	     *,	      volatile	DT * );
-forall( dtype DT ) volatile void *	 ?=?(	    volatile void * volatile *,	      volatile	DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void *	     *,			DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *,			DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void *	     *, const		DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *, const		DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void *	     *,	      volatile	DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *,	      volatile	DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void *	     *, const volatile	DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *, const volatile	DT * );
-
-void *			?=?(		    void *	    *,		      void * );
-void *			?=?(		    void * volatile *,		      void * );
-const void *		?=?( const	    void *	    *,		      void * );
-const void *		?=?( const	    void * volatile *,		      void * );
-const void *		?=?( const	    void *	    *, const	      void * );
-const void *		?=?( const	    void * volatile *, const	      void * );
-volatile void *		?=?(	   volatile void *	    *,		      void * );
-volatile void *		?=?(	   volatile void * volatile *,		      void * );
-volatile void *		?=?(	   volatile void *	    *,	     volatile void * );
-volatile void *		?=?(	   volatile void * volatile *,	     volatile void * );
-const volatile void *	?=?( const volatile void *	    *,		      void * );
-const volatile void *	?=?( const volatile void * volatile *,		      void * );
-const volatile void *	?=?( const volatile void *	    *, const	      void * );
-const volatile void *	?=?( const volatile void * volatile *, const	      void * );
-const volatile void *	?=?( const volatile void *	    *,	     volatile void * );
-const volatile void *	?=?( const volatile void * volatile *,	     volatile void * );
-const volatile void *	?=?( const volatile void *	    *, const volatile void * );
-const volatile void *	?=?( const volatile void * volatile *, const volatile void * );
-
-forall( dtype DT ) DT *			?=?(		    DT *	  *, forall( dtype DT2 ) const DT2 * );
-forall( dtype DT ) DT *			?=?(		    DT * volatile *, forall( dtype DT2 ) const DT2 * );
-forall( dtype DT ) const DT *		?=?( const	    DT *	  *, forall( dtype DT2 ) const DT2 * );
-forall( dtype DT ) const DT *		?=?( const	    DT * volatile *, forall( dtype DT2 ) const DT2 * );
-forall( dtype DT ) volatile DT *	?=?( volatile	    DT *	  *, forall( dtype DT2 ) const DT2 * );
-forall( dtype DT ) volatile DT *	?=?( volatile	    DT * volatile *, forall( dtype DT2 ) const DT2 * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile DT *	  *, forall( dtype DT2 ) const DT2 * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile DT * volatile *, forall( dtype DT2 ) const DT2 * );
-
-forall( ftype FT ) FT *			?=?( FT *	   *, forall( ftype FT2 ) FT2 * );
-forall( ftype FT ) FT *			?=?( FT * volatile *, forall( ftype FT2 ) FT2 * );
-
-forall( type T ) T *			?+=?(		     T *	  *, ptrdiff_t );
-forall( type T ) T *			?+=?(		     T * volatile *, ptrdiff_t );
-forall( type T ) const T *		?+=?( const	     T *	  *, ptrdiff_t );
-forall( type T ) const T *		?+=?( const	     T * volatile *, ptrdiff_t );
-forall( type T ) volatile T *		?+=?(	    volatile T *	  *, ptrdiff_t );
-forall( type T ) volatile T *		?+=?(	    volatile T * volatile *, ptrdiff_t );
-forall( type T ) const volatile T *	?+=?( const volatile T *	  *, ptrdiff_t );
-forall( type T ) const volatile T *	?+=?( const volatile T * volatile *, ptrdiff_t );
-forall( type T ) T *			?-=?(		     T *	  *, ptrdiff_t );
-forall( type T ) T *			?-=?(		     T * volatile *, ptrdiff_t );
-forall( type T ) const T *		?-=?( const	     T *	  *, ptrdiff_t );
-forall( type T ) const T *		?-=?( const	     T * volatile *, ptrdiff_t );
-forall( type T ) volatile T *		?-=?(	    volatile T *	  *, ptrdiff_t );
-forall( type T ) volatile T *		?-=?(	    volatile T * volatile *, ptrdiff_t );
-forall( type T ) const volatile T *	?-=?( const volatile T *	  *, ptrdiff_t );
-forall( type T ) const volatile T *	?-=?( const volatile T * volatile *, ptrdiff_t );
-
-_Bool			?=?( _Bool *, _Bool ),					?=?( volatile _Bool *, _Bool );
-char			?=?( char *, char ),					?=?( volatile char *, char );
-char signed		?=?( char signed *, char signed ),			?=?( volatile char signed *, char signed );
-char unsigned		?=?( char unsigned *, char unsigned ),			?=?( volatile char unsigned *, char unsigned );
-int short		?=?( int short *, int short ),				?=?( volatile int short *, int short );
-int short unsigned	?=?( int short unsigned *, int short unsigned ),	?=?( volatile int short unsigned *, int short unsigned );
-signed int		?=?( signed int *, signed int ),			?=?( volatile signed int *, signed int );
-unsigned int		?=?( unsigned *, unsigned ),				?=?( volatile unsigned *, unsigned );
-signed long int		?=?( signed long int *, signed long int ),		?=?( volatile signed long int *, signed long int );
-unsigned long int	?=?( unsigned long int *, unsigned long int ),		?=?( volatile unsigned long int *, unsigned long int );
-signed long long int	?=?( signed long long int *, signed long long int ),	?=?( volatile signed long long int *, signed long long int );
-unsigned long long int	?=?( unsigned long long int *, unsigned long long int ), ?=?( volatile unsigned long long int *, unsigned long long int );
-
-_Bool			?*=?( _Bool *, _Bool ),					?*=?( volatile _Bool *, _Bool );
-char			?*=?( char *, char ),					?*=?( volatile char *, char );
-char signed		?*=?( char signed *, char signed ),			?*=?( volatile char signed *, char signed );
-char unsigned		?*=?( char unsigned *, char unsigned ),			?*=?( volatile char unsigned *, char unsigned );
-int short		?*=?( int short *, int short ),				?*=?( volatile int short *, int short );
-int short unsigned	?*=?( int short unsigned *, int short unsigned ),	?*=?( volatile int short unsigned *, int short unsigned );
-signed int		?*=?( signed int *, signed int ),			?*=?( volatile signed int *, signed int );
-unsigned int		?*=?( unsigned *, unsigned ),				?*=?( volatile unsigned *, unsigned );
-signed long int		?*=?( signed long int *, signed long int ),		?*=?( volatile signed long int *, signed long int );
-unsigned long int	?*=?( unsigned long int *, unsigned long int ),		?*=?( volatile unsigned long int *, unsigned long int );
-signed long long int	?*=?( signed long long int *, signed long long int ),	?*=?( volatile signed long long int *, signed long long int );
-unsigned long long int	?*=?( unsigned long long int *, unsigned long long int ), ?*=?( volatile unsigned long long int *, unsigned long long int );
-
-_Bool			?/=?( _Bool *, _Bool ),					?/=?( volatile _Bool *, _Bool );
-char			?/=?( char *, char ),					?/=?( volatile char *, char );
-char signed		?/=?( char signed *, char signed ),			?/=?( volatile char signed *, char signed );
-char unsigned		?/=?( char unsigned *, char unsigned ),			?/=?( volatile char unsigned *, char unsigned );
-int short		?/=?( int short *, int short ),				?/=?( volatile int short *, int short );
-int short unsigned	?/=?( int short unsigned *, int short unsigned ),	?/=?( volatile int short unsigned *, int short unsigned );
-signed int		?/=?( signed int *, signed int ),			?/=?( volatile signed int *, signed int );
-unsigned int		?/=?( unsigned *, unsigned ),				?/=?( volatile unsigned *, unsigned );
-signed long int		?/=?( signed long int *, signed long int ),		?/=?( volatile signed long int *, signed long int );
-unsigned long int	?/=?( unsigned long int *, unsigned long int ),		?/=?( volatile unsigned long int *, unsigned long int );
-signed long long int	?/=?( signed long long int *, signed long long int ),	?/=?( volatile signed long long int *, signed long long int );
-unsigned long long int	?/=?( unsigned long long int *, unsigned long long int ), ?/=?( volatile unsigned long long int *, unsigned long long int );
-
-_Bool			?%=?( _Bool *, _Bool ),					?%=?( volatile _Bool *, _Bool );
-char			?%=?( char *, char ),					?%=?( volatile char *, char );
-char signed		?%=?( char signed *, char signed ),			?%=?( volatile char signed *, char signed );
-char unsigned		?%=?( char unsigned *, char unsigned ),			?%=?( volatile char unsigned *, char unsigned );
-int short		?%=?( int short *, int short ),				?%=?( volatile int short *, int short );
-int short unsigned	?%=?( int short unsigned *, int short unsigned ),	?%=?( volatile int short unsigned *, int short unsigned );
-signed int		?%=?( signed int *, signed int ),			?%=?( volatile signed int *, signed int );
-unsigned int		?%=?( unsigned *, unsigned ),				?%=?( volatile unsigned *, unsigned );
-signed long int		?%=?( signed long int *, signed long int ),		?%=?( volatile signed long int *, signed long int );
-unsigned long int	?%=?( unsigned long int *, unsigned long int ),		?%=?( volatile unsigned long int *, unsigned long int );
-signed long long int	?%=?( signed long long int *, signed long long int ),	?%=?( volatile signed long long int *, signed long long int );
-unsigned long long int	?%=?( unsigned long long int *, unsigned long long int ), ?%=?( volatile unsigned long long int *, unsigned long long int );
-
-_Bool			?+=?( _Bool *, _Bool ),					?+=?( volatile _Bool *, _Bool );
-char			?+=?( char *, char ),					?+=?( volatile char *, char );
-char signed		?+=?( char signed *, char signed ),			?+=?( volatile char signed *, char signed );
-char unsigned		?+=?( char unsigned *, char unsigned ),			?+=?( volatile char unsigned *, char unsigned );
-int short		?+=?( int short *, int short ),				?+=?( volatile int short *, int short );
-int short unsigned	?+=?( int short unsigned *, int short unsigned ),	?+=?( volatile int short unsigned *, int short unsigned );
-signed int		?+=?( signed int *, signed int ),			?+=?( volatile signed int *, signed int );
-unsigned int		?+=?( unsigned *, unsigned ),				?+=?( volatile unsigned *, unsigned );
-signed long int		?+=?( signed long int *, signed long int ),		?+=?( volatile signed long int *, signed long int );
-unsigned long int	?+=?( unsigned long int *, unsigned long int ),		?+=?( volatile unsigned long int *, unsigned long int );
-signed long long int	?+=?( signed long long int *, signed long long int ),	?+=?( volatile signed long long int *, signed long long int );
-unsigned long long int	?+=?( unsigned long long int *, unsigned long long int ), ?+=?( volatile unsigned long long int *, unsigned long long int );
-
-_Bool			?-=?( _Bool *, _Bool ),					?-=?( volatile _Bool *, _Bool );
-char			?-=?( char *, char ),					?-=?( volatile char *, char );
-char signed		?-=?( char signed *, char signed ),			?-=?( volatile char signed *, char signed );
-char unsigned		?-=?( char unsigned *, char unsigned ),			?-=?( volatile char unsigned *, char unsigned );
-int short		?-=?( int short *, int short ),				?-=?( volatile int short *, int short );
-int short unsigned	?-=?( int short unsigned *, int short unsigned ),	?-=?( volatile int short unsigned *, int short unsigned );
-signed int		?-=?( signed int *, signed int ),			?-=?( volatile signed int *, signed int );
-unsigned int		?-=?( unsigned *, unsigned ),				?-=?( volatile unsigned *, unsigned );
-signed long int		?-=?( signed long int *, signed long int ),		?-=?( volatile signed long int *, signed long int );
-unsigned long int	?-=?( unsigned long int *, unsigned long int ),		?-=?( volatile unsigned long int *, unsigned long int );
-signed long long int	?-=?( signed long long int *, signed long long int ),	?-=?( volatile signed long long int *, signed long long int );
-unsigned long long int	?-=?( unsigned long long int *, unsigned long long int ), ?-=?( volatile unsigned long long int *, unsigned long long int );
-
-_Bool			?<<=?( _Bool *, _Bool ),				?<<=?( volatile _Bool *, _Bool );
-char			?<<=?( char *, char ),					?<<=?( volatile char *, char );
-char signed		?<<=?( char signed *, char signed ),			?<<=?( volatile char signed *, char signed );
-char unsigned		?<<=?( char unsigned *, char unsigned ),		?<<=?( volatile char unsigned *, char unsigned );
-int short		?<<=?( int short *, int short ),			?<<=?( volatile int short *, int short );
-int short unsigned	?<<=?( int short unsigned *, int short unsigned ),	?<<=?( volatile int short unsigned *, int short unsigned );
-signed int		?<<=?( signed int *, signed int ),			?<<=?( volatile signed int *, signed int );
-unsigned int		?<<=?( unsigned *, unsigned ),				?<<=?( volatile unsigned *, unsigned );
-signed long int		?<<=?( signed long int *, signed long int ),		?<<=?( volatile signed long int *, signed long int );
-unsigned long int	?<<=?( unsigned long int *, unsigned long int ),	?<<=?( volatile unsigned long int *, unsigned long int );
-signed long long int	?<<=?( signed long long int *, signed long long int ),	?<<=?( volatile signed long long int *, signed long long int );
-unsigned long long int	?<<=?( unsigned long long int *, unsigned long long int ), ?<<=?( volatile unsigned long long int *, unsigned long long int );
-
-_Bool			?>>=?( _Bool *, _Bool ),				?>>=?( volatile _Bool *, _Bool );
-char			?>>=?( char *, char ),					?>>=?( volatile char *, char );
-char signed		?>>=?( char signed *, char signed ),			?>>=?( volatile char signed *, char signed );
-char unsigned		?>>=?( char unsigned *, char unsigned ),		?>>=?( volatile char unsigned *, char unsigned );
-int short		?>>=?( int short *, int short ),			?>>=?( volatile int short *, int short );
-int short unsigned	?>>=?( int short unsigned *, int short unsigned ),	?>>=?( volatile int short unsigned *, int short unsigned );
-signed int		?>>=?( signed int *, signed int ),			?>>=?( volatile signed int *, signed int );
-unsigned int		?>>=?( unsigned *, unsigned ),				?>>=?( volatile unsigned *, unsigned );
-signed long int		?>>=?( signed long int *, signed long int ),		?>>=?( volatile signed long int *, signed long int );
-unsigned long int	?>>=?( unsigned long int *, unsigned long int ),	?>>=?( volatile unsigned long int *, unsigned long int );
-signed long long int	?>>=?( signed long long int *, signed long long int ),	?>>=?( volatile signed long long int *, signed long long int );
-unsigned long long int	?>>=?( unsigned long long int *, unsigned long long int ), ?>>=?( volatile unsigned long long int *, unsigned long long int );
-
-_Bool			?&=?( _Bool *, _Bool ),					?&=?( volatile _Bool *, _Bool );
-char			?&=?( char *, char ),					?&=?( volatile char *, char );
-char signed		?&=?( char signed *, char signed ),			?&=?( volatile char signed *, char signed );
-char unsigned		?&=?( char unsigned *, char unsigned ),			?&=?( volatile char unsigned *, char unsigned );
-int short		?&=?( int short *, int short ),				?&=?( volatile int short *, int short );
-int short unsigned	?&=?( int short unsigned *, int short unsigned ),	?&=?( volatile int short unsigned *, int short unsigned );
-signed int		?&=?( signed int *, signed int ),			?&=?( volatile signed int *, signed int );
-unsigned int		?&=?( unsigned *, unsigned ),				?&=?( volatile unsigned *, unsigned );
-signed long int		?&=?( signed long int *, signed long int ),		?&=?( volatile signed long int *, signed long int );
-unsigned long int	?&=?( unsigned long int *, unsigned long int ),		?&=?( volatile unsigned long int *, unsigned long int );
-signed long long int	?&=?( signed long long int *, signed long long int ),	?&=?( volatile signed long long int *, signed long long int );
-unsigned long long int	?&=?( unsigned long long int *, unsigned long long int ), ?&=?( volatile unsigned long long int *, unsigned long long int );
-
-_Bool			?|=?( _Bool *, _Bool ),					?|=?( volatile _Bool *, _Bool );
-char			?|=?( char *, char ),					?|=?( volatile char *, char );
-char signed		?|=?( char signed *, char signed ),			?|=?( volatile char signed *, char signed );
-char unsigned		?|=?( char unsigned *, char unsigned ),			?|=?( volatile char unsigned *, char unsigned );
-int short		?|=?( int short *, int short ),				?|=?( volatile int short *, int short );
-int short unsigned	?|=?( int short unsigned *, int short unsigned ),	?|=?( volatile int short unsigned *, int short unsigned );
-signed int		?|=?( signed int *, signed int ),			?|=?( volatile signed int *, signed int );
-unsigned int		?|=?( unsigned *, unsigned ),				?|=?( volatile unsigned *, unsigned );
-signed long int		?|=?( signed long int *, signed long int ),		?|=?( volatile signed long int *, signed long int );
-unsigned long int	?|=?( unsigned long int *, unsigned long int ),		?|=?( volatile unsigned long int *, unsigned long int );
-signed long long int	?|=?( signed long long int *, signed long long int ),	?|=?( volatile signed long long int *, signed long long int );
-unsigned long long int	?|=?( unsigned long long int *, unsigned long long int ), ?|=?( volatile unsigned long long int *, unsigned long long int );
-
-_Bool			?^=?( _Bool *, _Bool ),					?^=?( volatile _Bool *, _Bool );
-char			?^=?( char *, char ),					?^=?( volatile char *, char );
-char signed		?^=?( char signed *, char signed ),			?^=?( volatile char signed *, char signed );
-char unsigned		?^=?( char unsigned *, char unsigned ),			?^=?( volatile char unsigned *, char unsigned );
-int short		?^=?( int short *, int short ),				?^=?( volatile int short *, int short );
-int short unsigned	?^=?( int short unsigned *, int short unsigned ),	?^=?( volatile int short unsigned *, int short unsigned );
-signed int		?^=?( signed int *, signed int ),			?^=?( volatile signed int *, signed int );
-unsigned int		?^=?( unsigned *, unsigned ),				?^=?( volatile unsigned *, unsigned );
-signed long int		?^=?( signed long int *, signed long int ),		?^=?( volatile signed long int *, signed long int );
-unsigned long int	?^=?( unsigned long int *, unsigned long int ),		?^=?( volatile unsigned long int *, unsigned long int );
-signed long long int	?^=?( signed long long int *, signed long long int ),	?^=?( volatile signed long long int *, signed long long int );
-unsigned long long int	?^=?( unsigned long long int *, unsigned long long int ), ?^=?( volatile unsigned long long int *, unsigned long long int );
-
-float			?=?(  float *, float ), ?=?(  volatile float *, float ),
-			?*=?( float *, float ), ?*=?( volatile float *, float ),
-			?/=?( float *, float ), ?/=?( volatile float *, float ),
-			?+=?( float *, float ), ?+=?( volatile float *, float ),
-			?-=?( float *, float ), ?-=?( volatile float *, float );
-
-double			?=?(  double *, double ), ?=?(  volatile double *, double ),
-			?*=?( double *, double ), ?*=?( volatile double *, double ),
-			?/=?( double *, double ), ?/=?( volatile double *, double ),
-			?+=?( double *, double ), ?+=?( volatile double *, double ),
-			?-=?( double *, double ), ?-=?( volatile double *, double );
-
-long double		?=?(  long double *, long double ), ?=?(  volatile long double *, long double ),
-			?*=?( long double *, long double ), ?*=?( volatile long double *, long double ),
-			?/=?( long double *, long double ), ?/=?( volatile long double *, long double ),
-			?+=?( long double *, long double ), ?+=?( volatile long double *, long double ),
-			?-=?( long double *, long double ), ?-=?( volatile long double *, long double );
-
-float _Complex		?=?(  float _Complex *, float _Complex ), ?=?(  volatile float _Complex *, float _Complex ),
-			?*=?( float _Complex *, float _Complex ), ?*=?( volatile float _Complex *, float _Complex ),
-			?/=?( float _Complex *, float _Complex ), ?/=?( volatile float _Complex *, float _Complex ),
-			?+=?( float _Complex *, float _Complex ), ?+=?( volatile float _Complex *, float _Complex ),
-			?-=?( float _Complex *, float _Complex ), ?-=?( volatile float _Complex *, float _Complex );
-
-double _Complex		?=?(  double _Complex *, double _Complex ), ?=?(  volatile double _Complex *, double _Complex ),
-			?*=?( double _Complex *, double _Complex ), ?*=?( volatile double _Complex *, double _Complex ),
-			?/=?( double _Complex *, double _Complex ), ?/=?( volatile double _Complex *, double _Complex ),
-			?+=?( double _Complex *, double _Complex ), ?+=?( volatile double _Complex *, double _Complex ),
-			?-=?( double _Complex *, double _Complex ), ?-=?( volatile double _Complex *, double _Complex );
-
-long double _Complex	?=?(  long double _Complex *, long double _Complex ), ?=?(  volatile long double _Complex *, long double _Complex ),
-			?*=?( long double _Complex *, long double _Complex ), ?*=?( volatile long double _Complex *, long double _Complex ),
-			?/=?( long double _Complex *, long double _Complex ), ?/=?( volatile long double _Complex *, long double _Complex ),
-			?+=?( long double _Complex *, long double _Complex ), ?+=?( volatile long double _Complex *, long double _Complex ),
-			?-=?( long double _Complex *, long double _Complex ), ?-=?( volatile long double _Complex *, long double _Complex );
Index: bcfa/prototypes.awk
===================================================================
--- libcfa/prototypes.awk	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,137 +1,0 @@
-#
-# Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-#
-# The contents of this file are covered under the licence agreement in the
-# file "LICENCE" distributed with Cforall.
-#
-# prototypes.awk -- 
-#
-# Author           : Peter A. Buhr
-# Created On       : Sat May 16 07:57:37 2015
-# Last Modified By : Peter A. Buhr
-# Last Modified On : Sat May 16 08:02:10 2015
-# Update Count     : 3
-# 
-
-# http://llvm.org/svn/llvm-project/cfe/trunk/include/clang/Basic/Builtins.def
-
-BEGIN {
-    FS = "("
-    # order so string search is longest string
-    types[0]  = "UINTMAX";					vtypes[0]  = "unsigned long int"
-    types[1]  = "UINT16";					vtypes[1]  = "short int"
-    types[2]  = "UINT32";					vtypes[2]  = "int"
-    types[3]  = "UINT64";					vtypes[3]  = "long long int"
-    types[4]  = "UINT";						vtypes[4]  = "unsigned int"
-    types[5]  = "INTMAX";					vtypes[5]  = "long int"
-    types[6]  = "INTPTR";					vtypes[6]  = "int *"
-    types[7]  = "WINT";						vtypes[7]  = "unsigned int"
-    types[8]  = "INT";						vtypes[8]  = "int"
-    types[9]  = "ULONGLONG";				vtypes[9]  = "unsigned long long"
-    types[10] = "ULONG";					vtypes[10] = "unsigned long"
-    types[11] = "UNSIGNED";					vtypes[11] = "unsigned"
-    types[12] = "COMPLEX_LONGDOUBLE";		vtypes[12] = "_Complex long double"
-    types[13] = "COMPLEX_DOUBLE";			vtypes[13] = "_Complex double"
-    types[14] = "COMPLEX_FLOAT";			vtypes[14] = "_Complex float"
-    types[15] = "LONGDOUBLEPTR";			vtypes[15] = "long double *"
-    types[16] = "LONGDOUBLE";				vtypes[16] = "long double"
-    types[17] = "LONGLONG";					vtypes[17] = "long long"
-    types[18] = "LONG";						vtypes[18] = "long"
-    types[19] = "DFLOAT32";					vtypes[19] = "_Decimal32"
-    types[20] = "DFLOAT64";					vtypes[20] = "_Decimal64"
-    types[21] = "DFLOAT128";				vtypes[21] = "_Decimal128"
-    types[22] = "DOUBLEPTR";				vtypes[22] = "double *"
-    types[23] = "DOUBLE";					vtypes[23] = "double"
-    types[24] = "FLOATPTR";					vtypes[24] = "float *"
-    types[25] = "FLOAT";					vtypes[25] = "float"
-    types[26] = "CONST_PTR";				vtypes[26] = "const void *"
-    types[27] = "CONST_STRING";				vtypes[27] = "const char *"
-    types[28] = "PTR_FN_VOID_VAR_PTR_SIZE";	vtypes[28] = ""
-    types[29] = "PTR_CONST_STRING";			vtypes[29] = "char *const"
-    types[30] = "PTRMODE_PTR";				vtypes[30] = ""
-    types[31] = "PTRPTR";					vtypes[31] = "void **"
-    types[32] = "PTR";						vtypes[32] = "void *"
-    types[33] = "VOID";						vtypes[33] = "void"
-    types[34] = "STRING";					vtypes[34] = "char *"
-    types[35] = "FILEPTR";					vtypes[35] = "struct _IO_FILE *"
-    types[36] = "SIZE";						vtypes[36] = "unsigned long"
-    types[37] = "VAR";						vtypes[37] = "..."
-    types[38] = "VALIST_ARG";				vtypes[38] = "void **"
-    types[39] = "VALIST_REF";				vtypes[39] = "void **"
-    types[40] = "UNWINDWORD";				vtypes[40] = "void *"
-    types[41] = "WORD";						vtypes[41] = ""
-    types[42] = "SSIZE";					vtypes[42] = "long int"
-    types[43] = "PID";						vtypes[43] = "int"
-    N = 44
-} # BEGIN
-
-/^BT_/ { prototypes[$1] = $1 }
-
-END {
-    printf( "#define DEF_BUILTIN(ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P, FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND) TYPE(NAME)\n" );
-    printf( "#define FUNC_SIMPLE(RETURN, NAME, ARGS...) RETURN NAME(ARGS);\n" );
-    printf( "#define BT_LAST(NAME) FUNC_SIMPLE(void, NAME)\n\n" );
-
-    # generate C types for macros names
-    for ( i = 0; i < N; i += 1 ) {
-		printf( "#define BT_%s %s\n", types[i], vtypes[i] )
-    } # for
-    printf( "\n" )
-
-    for ( prototype in prototypes ) {
-		if ( index( "BT_LAST", prototype ) == 1 ) {
-			continue
-		} # if
-
-		printf( "#define %s(NAME) FUNC_SIMPLE(", prototype )
-
-		if ( sub( "BT_FN_", "", prototype ) == 0 ) {
-			printf( "\n********** BAD MACRO NAME \"%s\" **********\n", prototype )
-			exit 0
-		} # if
-
-		# generate function return type as macro
-		for ( t = 0; t < N; t += 1 ) {					# find longest match 
-			type = types[t];
-			if ( index( prototype, type ) == 1 ) {		# found match
-				printf( "BT_%s, NAME", type )
-				sub( type, "", prototype )
-				break;
-			} # if
-		} # for
-
-		# generate function parameter types as macro
-		if ( index( prototype, "VAR" ) != 2 ) {			# C-style empty parameters ?
-			for ( p = 0; length( prototype ) > 0; p += 1 ) { # until all parameters types are removed
-				sub( "_", "", prototype)				# remove "_"
-				printf( ", ", type )
-				temp = prototype
-				for ( t = 0; t < N; t += 1 ) {			# find longest match
-					type = types[t];
-					if ( index( prototype, type ) == 1 ) { # found match
-						printf( "BT_%s", type )
-						sub( type, "", prototype )
-						break;
-					} # if
-				} # for
-				if ( temp == prototype ) {				# no match found for parameter in macro table
-					printf( "\n********** MISSING TYPE \"%s\" **********\n", prototype )
-					exit 0
-				} # if
-			} # for
-		} # if
-		printf( ")\n" )
-    } # for
-
-    # extras
-    printf( "\n#include \"builtins.def\"\n\n" );
-    printf( "typedef void ** __builtin_va_list;\n" );
-    printf( "extern const char *__PRETTY_FUNCTION__;\n" );
-    printf( "typedef int wchar_t;\n" );
-} # END
-
-# Local Variables: #
-# tab-width: 4 #
-# mode: awk #
-# compile-command: "make install" #
-# End: #
Index: bcfa/prototypes.c
===================================================================
--- libcfa/prototypes.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,2 +1,0 @@
-#define DEF_BUILTIN(ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P, FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND) TYPE(NAME)
-#include "builtins.def"
Index: bcfa/ptrdiff_t.c
===================================================================
--- libcfa/ptrdiff_t.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,1 +1,0 @@
-#include <stddef.h>
Index: ssing
===================================================================
--- missing	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,336 +1,0 @@
-#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
-# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-if test $# -eq 0; then
-  echo 1>&2 "Try \`$0 --help' for more information"
-  exit 1
-fi
-
-run=:
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
-  configure_ac=configure.ac
-else
-  configure_ac=configure.in
-fi
-
-case "$1" in
---run)
-  # Try to run requested program, and just exit if it succeeds.
-  run=
-  shift
-  "$@" && exit 0
-  ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case "$1" in
-
-  -h|--h|--he|--hel|--help)
-    echo "\
-$0 [OPTION]... PROGRAM [ARGUMENT]...
-
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
-
-Options:
-  -h, --help      display this help and exit
-  -v, --version   output version information and exit
-  --run           try to run the given command, and emulate it if it fails
-
-Supported PROGRAM values:
-  aclocal      touch file \`aclocal.m4'
-  autoconf     touch file \`configure'
-  autoheader   touch file \`config.h.in'
-  automake     touch all \`Makefile.in' files
-  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
-  flex         create \`lex.yy.c', if possible, from existing .c
-  help2man     touch the output file
-  lex          create \`lex.yy.c', if possible, from existing .c
-  makeinfo     touch the output file
-  tar          try tar, gnutar, gtar, then tar without non-portable flags
-  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]"
-    ;;
-
-  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
-    echo "missing 0.4 - GNU automake"
-    ;;
-
-  -*)
-    echo 1>&2 "$0: Unknown \`$1' option"
-    echo 1>&2 "Try \`$0 --help' for more information"
-    exit 1
-    ;;
-
-  aclocal*)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    fi
-
-    echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
-         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
-         to install the \`Automake' and \`Perl' packages.  Grab them from
-         any GNU archive site."
-    touch aclocal.m4
-    ;;
-
-  autoconf)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    fi
-
-    echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
-         you modified \`${configure_ac}'.  You might want to install the
-         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
-         archive site."
-    touch configure
-    ;;
-
-  autoheader)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    fi
-
-    echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
-         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
-         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
-         from any GNU archive site."
-    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
-    test -z "$files" && files="config.h"
-    touch_files=
-    for f in $files; do
-      case "$f" in
-      *:*) touch_files="$touch_files "`echo "$f" |
-				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
-      *) touch_files="$touch_files $f.in";;
-      esac
-    done
-    touch $touch_files
-    ;;
-
-  automake*)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    fi
-
-    echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
-         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
-         You might want to install the \`Automake' and \`Perl' packages.
-         Grab them from any GNU archive site."
-    find . -type f -name Makefile.am -print |
-	   sed 's/\.am$/.in/' |
-	   while read f; do touch "$f"; done
-    ;;
-
-  autom4te)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    fi
-
-    echo 1>&2 "\
-WARNING: \`$1' is needed, and you do not seem to have it handy on your
-         system.  You might have modified some files without having the
-         proper tools for further handling them.
-         You can get \`$1Help2man' as part of \`Autoconf' from any GNU
-         archive site."
-
-    file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
-    test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
-    if test -f "$file"; then
-	touch $file
-    else
-	test -z "$file" || exec >$file
-	echo "#! /bin/sh"
-	echo "# Created by GNU Automake missing as a replacement of"
-	echo "#  $ $@"
-	echo "exit 0"
-	chmod +x $file
-	exit 1
-    fi
-    ;;
-
-  bison|yacc)
-    echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
-         you modified a \`.y' file.  You may need the \`Bison' package
-         in order for those modifications to take effect.  You can get
-         \`Bison' from any GNU archive site."
-    rm -f y.tab.c y.tab.h
-    if [ $# -ne 1 ]; then
-        eval LASTARG="\${$#}"
-	case "$LASTARG" in
-	*.y)
-	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-	    if [ -f "$SRCFILE" ]; then
-	         cp "$SRCFILE" y.tab.c
-	    fi
-	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-	    if [ -f "$SRCFILE" ]; then
-	         cp "$SRCFILE" y.tab.h
-	    fi
-	  ;;
-	esac
-    fi
-    if [ ! -f y.tab.h ]; then
-	echo >y.tab.h
-    fi
-    if [ ! -f y.tab.c ]; then
-	echo 'main() { return 0; }' >y.tab.c
-    fi
-    ;;
-
-  lex|flex)
-    echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
-         you modified a \`.l' file.  You may need the \`Flex' package
-         in order for those modifications to take effect.  You can get
-         \`Flex' from any GNU archive site."
-    rm -f lex.yy.c
-    if [ $# -ne 1 ]; then
-        eval LASTARG="\${$#}"
-	case "$LASTARG" in
-	*.l)
-	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-	    if [ -f "$SRCFILE" ]; then
-	         cp "$SRCFILE" lex.yy.c
-	    fi
-	  ;;
-	esac
-    fi
-    if [ ! -f lex.yy.c ]; then
-	echo 'main() { return 0; }' >lex.yy.c
-    fi
-    ;;
-
-  help2man)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    fi
-
-    echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
-	 you modified a dependency of a manual page.  You may need the
-	 \`Help2man' package in order for those modifications to take
-	 effect.  You can get \`Help2man' from any GNU archive site."
-
-    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
-    if test -z "$file"; then
-	file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
-    fi
-    if [ -f "$file" ]; then
-	touch $file
-    else
-	test -z "$file" || exec >$file
-	echo ".ab help2man is required to generate this page"
-	exit 1
-    fi
-    ;;
-
-  makeinfo)
-    if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
-       # We have makeinfo, but it failed.
-       exit 1
-    fi
-
-    echo 1>&2 "\
-WARNING: \`$1' is missing on your system.  You should only need it if
-         you modified a \`.texi' or \`.texinfo' file, or any other file
-         indirectly affecting the aspect of the manual.  The spurious
-         call might also be the consequence of using a buggy \`make' (AIX,
-         DU, IRIX).  You might want to install the \`Texinfo' package or
-         the \`GNU make' package.  Grab either from any GNU archive site."
-    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
-    if test -z "$file"; then
-      file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
-    fi
-    touch $file
-    ;;
-
-  tar)
-    shift
-    if test -n "$run"; then
-      echo 1>&2 "ERROR: \`tar' requires --run"
-      exit 1
-    fi
-
-    # We have already tried tar in the generic part.
-    # Look for gnutar/gtar before invocation to avoid ugly error
-    # messages.
-    if (gnutar --version > /dev/null 2>&1); then
-       gnutar "$@" && exit 0
-    fi
-    if (gtar --version > /dev/null 2>&1); then
-       gtar "$@" && exit 0
-    fi
-    firstarg="$1"
-    if shift; then
-	case "$firstarg" in
-	*o*)
-	    firstarg=`echo "$firstarg" | sed s/o//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-	case "$firstarg" in
-	*h*)
-	    firstarg=`echo "$firstarg" | sed s/h//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-    fi
-
-    echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
-         You may want to install GNU tar or Free paxutils, or check the
-         command line arguments."
-    exit 1
-    ;;
-
-  *)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, and you do not seem to have it handy on your
-         system.  You might have modified some files without having the
-         proper tools for further handling them.  Check the \`README' file,
-         it often tells you about the needed prerequirements for installing
-         this package.  You may also peek at any GNU archive site, in case
-         some other package would contain this missing \`$1' program."
-    exit 1
-    ;;
-esac
-
-exit 0
Index: installdirs
===================================================================
--- mkinstalldirs	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,99 +1,0 @@
-#! /bin/sh
-# mkinstalldirs --- make directory hierarchy
-# Author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Public domain
-
-errstatus=0
-dirmode=""
-
-usage="\
-Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
-
-# process command line arguments
-while test $# -gt 0 ; do
-   case "${1}" in
-     -h | --help | --h* )			# -h for help
-	echo "${usage}" 1>&2; exit 0 ;;
-     -m )					# -m PERM arg
-	shift
-	test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; }
-	dirmode="${1}"
-	shift ;;
-     -- ) shift; break ;;			# stop option processing
-     -* ) echo "${usage}" 1>&2; exit 1 ;;	# unknown option
-     * )  break ;;				# first non-opt arg
-   esac
-done
-
-for file
-do
-  if test -d "$file"; then
-    shift
-  else
-    break
-  fi
-done
-
-case $# in
-0) exit 0 ;;
-esac
-
-case $dirmode in
-'')
-  if mkdir -p -- . 2>/dev/null; then
-    echo "mkdir -p -- $*"
-    exec mkdir -p -- "$@"
-  fi ;;
-*)
-  if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
-    echo "mkdir -m $dirmode -p -- $*"
-    exec mkdir -m "$dirmode" -p -- "$@"
-  fi ;;
-esac
-
-for file
-do
-   set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
-   shift
-
-   pathcomp=
-   for d
-   do
-     pathcomp="$pathcomp$d"
-     case "$pathcomp" in
-       -* ) pathcomp=./$pathcomp ;;
-     esac
-
-     if test ! -d "$pathcomp"; then
-	echo "mkdir $pathcomp"
-
-	mkdir "$pathcomp" || lasterr=$?
-
-	if test ! -d "$pathcomp"; then
-	  errstatus=$lasterr
-	else
-	  if test ! -z "$dirmode"; then
-	     echo "chmod $dirmode $pathcomp"
-
-	     lasterr=""
-	     chmod "$dirmode" "$pathcomp" || lasterr=$?
-
-	     if test ! -z "$lasterr"; then
-	       errstatus=$lasterr
-	     fi
-	  fi
-	fi
-     fi
-
-     pathcomp="$pathcomp/"
-   done
-done
-
-exit $errstatus
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 3
-# End:
-# mkinstalldirs ends here
Index: src/ArgTweak/module.mk
===================================================================
--- src/ArgTweak/module.mk	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/ArgTweak/module.mk	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,4 +1,18 @@
-SRC +=  ArgTweak/Rewriter.cc \
-#	ArgTweak/Mutate.cc \
-	$(NULL)
+######################### -*- Mode: Makefile-Gmake -*- ########################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## module.mk -- 
+##
+## Author           : Richard C. Bilson
+## Created On       : Mon Jun  1 17:49:17 2015
+## Last Modified By : Peter A. Buhr
+## Last Modified On : Mon Jun  1 17:50:11 2015
+## Update Count     : 1
+###############################################################################
 
+#SRC +=  ArgTweak/Rewriter.cc \
+#	ArgTweak/Mutate.cc
Index: src/CodeGen/CodeGenerator.cc
===================================================================
--- src/CodeGen/CodeGenerator.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/CodeGen/CodeGenerator.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,669 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// CodeGenerator.cc -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Mon May 18 07:44:20 2015
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Jun 24 16:11:41 2015
+// Update Count     : 143
+//
+
+#include <algorithm>
+#include <iostream>
+#include <cassert>
+#include <list>
+
+#include "Parser/ParseNode.h"
+
+#include "SynTree/Type.h"
+#include "SynTree/Expression.h"
+#include "SynTree/Initializer.h"
+#include "SynTree/Statement.h"
+
+#include "utility.h"
+#include "UnimplementedError.h"
+
+#include "CodeGenerator.h"
+#include "OperatorTable.h"
+#include "GenType.h"
+
+using namespace std;
+
+namespace CodeGen {
+	int CodeGenerator::tabsize = 4;
+
+	// the kinds of statements that would ideally be separated by more whitespace
+	bool wantSpacing( Statement * stmt) {
+		return dynamic_cast< IfStmt * >( stmt ) || dynamic_cast< CompoundStmt * >( stmt ) ||
+			dynamic_cast< WhileStmt * >( stmt ) || dynamic_cast< ForStmt * > ( stmt ) || dynamic_cast< SwitchStmt *>( stmt );
+	}
+
+	ostream & CodeGenerator::Indenter::operator()( ostream & output ) {
+	  return output << string( cg.cur_indent, ' ' );
+	}
+
+	ostream & operator<<( ostream & output, CodeGenerator::Indenter &indent ) {
+		return indent( output );
+	}
+
+	CodeGenerator::CodeGenerator( std::ostream &os ) : indent(*this), cur_indent( 0 ), insideFunction( false ), output( os ) { }
+
+	CodeGenerator::CodeGenerator( std::ostream &os, std::string init, int indentation, bool infunp )
+			: indent(*this), cur_indent( indentation ), insideFunction( infunp ), output( os ) {
+		//output << std::string( init );
+	}
+
+	CodeGenerator::CodeGenerator( std::ostream &os, char *init, int indentation, bool infunp )
+			: indent(*this), cur_indent( indentation ), insideFunction( infunp ), output( os ) {
+		//output << std::string( init );
+	}
+
+	string mangleName( DeclarationWithType *decl ) {
+		if ( decl->get_mangleName() != "" ) {
+			return decl->get_mangleName();
+		} else {
+			return decl->get_name();
+		} // if
+	}
+
+	//*** Declarations
+	void CodeGenerator::visit( FunctionDecl *functionDecl ) {
+		handleStorageClass( functionDecl );
+		if ( functionDecl->get_isInline() ) {
+			output << "inline ";
+		} // if
+		if ( functionDecl->get_isNoreturn() ) {
+			output << "_Noreturn ";
+		} // if
+		output << genType( functionDecl->get_functionType(), mangleName( functionDecl ) );
+
+		// how to get this to the Functype?
+		std::list< Declaration * > olds = functionDecl->get_oldDecls();
+		if ( ! olds.empty() ) {
+			output << " /* function has old declaration */";
+		} // if
+
+		// acceptAll( functionDecl->get_oldDecls(), *this );
+		if ( functionDecl->get_statements() ) {
+			functionDecl->get_statements()->accept(*this );
+		} // if
+	}
+
+	void CodeGenerator::visit( ObjectDecl *objectDecl ) {
+		handleStorageClass( objectDecl );
+		output << genType( objectDecl->get_type(), mangleName( objectDecl ) );
+	
+		if ( objectDecl->get_init() ) {
+			output << " = ";
+			objectDecl->get_init()->accept( *this );
+		} // if
+		if ( objectDecl->get_bitfieldWidth() ) {
+			output << ":";
+			objectDecl->get_bitfieldWidth()->accept( *this );
+		} // if
+	}
+
+	void CodeGenerator::handleAggregate( AggregateDecl *aggDecl ) {
+		if ( aggDecl->get_name() != "" )
+			output << aggDecl->get_name();
+	
+		std::list< Declaration * > &memb = aggDecl->get_members();
+
+		if ( ! memb.empty() ) {
+			output << " {" << endl;
+
+			cur_indent += CodeGenerator::tabsize; 
+			for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
+				output << indent; 
+				(*i)->accept(*this );
+				output << ";" << endl;
+			}
+
+			cur_indent -= CodeGenerator::tabsize; 
+
+			output << indent << "}";
+		} // if
+	}
+
+	void CodeGenerator::visit( StructDecl *structDecl ) {
+		output << "struct ";
+		handleAggregate( structDecl );
+	}
+
+	void CodeGenerator::visit( UnionDecl *aggregateDecl ) {
+		output << "union ";
+		handleAggregate( aggregateDecl );
+	}
+  
+	void CodeGenerator::visit( EnumDecl *aggDecl ) {
+		output << "enum ";
+
+		if ( aggDecl->get_name() != "" )
+			output << aggDecl->get_name();
+	
+		std::list< Declaration* > &memb = aggDecl->get_members();
+
+		if ( ! memb.empty() ) {
+			output << " {" << endl;
+
+			cur_indent += CodeGenerator::tabsize; 
+			for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
+				ObjectDecl *obj = dynamic_cast< ObjectDecl* >( *i );
+				assert( obj );
+				output << indent << mangleName( obj ); 
+				if ( obj->get_init() ) {
+					output << " = ";
+					obj->get_init()->accept(*this );
+				} // if
+				output << "," << endl;
+			} // for
+
+			cur_indent -= CodeGenerator::tabsize; 
+
+			output << indent << "}";
+		} // if
+	}
+  
+	void CodeGenerator::visit( ContextDecl *aggregateDecl ) {}
+  
+	void CodeGenerator::visit( TypedefDecl *typeDecl ) {
+		output << "typedef ";
+		output << genType( typeDecl->get_base(), typeDecl->get_name() );
+	}
+  
+	void CodeGenerator::visit( TypeDecl *typeDecl ) {
+		// really, we should mutate this into something that isn't a TypeDecl but that requires large-scale changes,
+		// still to be done
+		output << "extern unsigned long " << typeDecl->get_name();
+		if ( typeDecl->get_base() ) {
+			output << " = sizeof( " << genType( typeDecl->get_base(), "" ) << " )";
+		} // if
+	}
+
+	void CodeGenerator::visit( SingleInit *init ) {
+		init->get_value()->accept( *this );
+	}
+
+	void CodeGenerator::visit( ListInit *init ) {
+		output << "{ ";
+		genCommaList( init->begin_initializers(), init->end_initializers() );
+		output << " }";
+	}
+
+	void CodeGenerator::visit( Constant *constant ) { 
+		output << constant->get_value() ;
+	}
+
+	//*** Expressions
+	void CodeGenerator::visit( ApplicationExpr *applicationExpr ) {
+		if ( VariableExpr *varExpr = dynamic_cast< VariableExpr* >( applicationExpr->get_function() ) ) {
+			OperatorInfo opInfo;
+			if ( varExpr->get_var()->get_linkage() == LinkageSpec::Intrinsic && operatorLookup( varExpr->get_var()->get_name(), opInfo ) ) {
+				std::list< Expression* >::iterator arg = applicationExpr->get_args().begin();
+				switch ( opInfo.type ) {
+				  case OT_PREFIXASSIGN:
+				  case OT_POSTFIXASSIGN:
+				  case OT_INFIXASSIGN:
+					{
+						assert( arg != applicationExpr->get_args().end() );
+						if ( AddressExpr *addrExpr = dynamic_cast< AddressExpr * >( *arg ) ) {
+	        
+							*arg = addrExpr->get_arg();
+						} else {
+							UntypedExpr *newExpr = new UntypedExpr( new NameExpr( "*?" ) );
+							newExpr->get_args().push_back( *arg );
+							*arg = newExpr;
+						} // if
+						break;
+					}
+	      
+				  default:
+					// do nothing
+					;
+				}
+	    
+				switch ( opInfo.type ) {
+				  case OT_INDEX:
+					assert( applicationExpr->get_args().size() == 2 );
+					(*arg++)->accept( *this );
+					output << "[";
+					(*arg)->accept( *this );
+					output << "]";
+					break;
+	      
+				  case OT_CALL:
+					// there are no intrinsic definitions of the function call operator
+					assert( false );
+					break;
+	      
+				  case OT_PREFIX:
+				  case OT_PREFIXASSIGN:
+					assert( applicationExpr->get_args().size() == 1 );
+					output << "(";
+					output << opInfo.symbol;
+					(*arg)->accept( *this );
+					output << ")";
+					break;
+	      
+				  case OT_POSTFIX:
+				  case OT_POSTFIXASSIGN:
+					assert( applicationExpr->get_args().size() == 1 );
+					(*arg)->accept( *this );
+					output << opInfo.symbol;
+					break;
+
+				  case OT_INFIX:
+				  case OT_INFIXASSIGN:
+					assert( applicationExpr->get_args().size() == 2 );
+					output << "(";
+					(*arg++)->accept( *this );
+					output << opInfo.symbol;
+					(*arg)->accept( *this );
+					output << ")";
+					break;
+	      
+				  case OT_CONSTANT:
+					// there are no intrinsic definitions of 0 or 1 as functions
+					assert( false );
+				}
+			} else {
+				varExpr->accept( *this );
+				output << "(";
+				genCommaList( applicationExpr->get_args().begin(), applicationExpr->get_args().end() );
+				output << ")";
+			} // if
+		} else {
+			applicationExpr->get_function()->accept( *this );
+			output << "(";
+			genCommaList( applicationExpr->get_args().begin(), applicationExpr->get_args().end() );
+			output << ")";
+		} // if
+	}
+  
+	void CodeGenerator::visit( UntypedExpr *untypedExpr ) {
+		if ( NameExpr *nameExpr = dynamic_cast< NameExpr* >( untypedExpr->get_function() ) ) {
+			OperatorInfo opInfo;
+			if ( operatorLookup( nameExpr->get_name(), opInfo ) ) {
+				std::list< Expression* >::iterator arg = untypedExpr->get_args().begin();
+				switch ( opInfo.type ) {
+				  case OT_INDEX:
+					assert( untypedExpr->get_args().size() == 2 );
+					(*arg++)->accept( *this );
+					output << "[";
+					(*arg)->accept( *this );
+					output << "]";
+					break;
+	      
+				  case OT_CALL:
+					assert( false );
+					break;
+	      
+				  case OT_PREFIX:
+				  case OT_PREFIXASSIGN:
+				  case OT_LABELADDRESS:
+					assert( untypedExpr->get_args().size() == 1 );
+					output << "(";
+					output << opInfo.symbol;
+					(*arg)->accept( *this );
+					output << ")";
+					break;
+	      
+				  case OT_POSTFIX:
+				  case OT_POSTFIXASSIGN:
+					assert( untypedExpr->get_args().size() == 1 );
+					(*arg)->accept( *this );
+					output << opInfo.symbol;
+					break;
+  
+				  case OT_INFIX:
+				  case OT_INFIXASSIGN:
+					assert( untypedExpr->get_args().size() == 2 );
+					output << "(";
+					(*arg++)->accept( *this );
+					output << opInfo.symbol;
+					(*arg)->accept( *this );
+					output << ")";
+					break;
+					
+				  case OT_CONSTANT:
+					// there are no intrinsic definitions of 0 or 1 as functions
+					assert( false );
+				}
+			} else {
+				nameExpr->accept( *this );
+				output << "(";
+				genCommaList( untypedExpr->get_args().begin(), untypedExpr->get_args().end() );
+				output << ")";
+			} // if
+		} else {
+			untypedExpr->get_function()->accept( *this );
+			output << "(";
+			genCommaList( untypedExpr->get_args().begin(), untypedExpr->get_args().end() );
+			output << ")";
+		} // if
+	}
+  
+	void CodeGenerator::visit( NameExpr *nameExpr ) {
+		OperatorInfo opInfo;
+		if ( operatorLookup( nameExpr->get_name(), opInfo ) ) {
+			assert( opInfo.type == OT_CONSTANT );
+			output << opInfo.symbol;
+		} else {
+			output << nameExpr->get_name();
+		} // if
+	}
+  
+	void CodeGenerator::visit( AddressExpr *addressExpr ) {
+		output << "(&";
+		// this hack makes sure that we don't convert "constant_zero" to "0" if we're taking its address
+		if ( VariableExpr *variableExpr = dynamic_cast< VariableExpr* >( addressExpr->get_arg() ) ) {
+			output << mangleName( variableExpr->get_var() );
+		} else {
+			addressExpr->get_arg()->accept( *this );
+		} // if
+		output << ")";
+	}
+
+	void CodeGenerator::visit( CastExpr *castExpr ) {
+		output << "((";
+		if ( castExpr->get_results().empty() ) {
+			output << "void" ;
+		} else {
+			output << genType( castExpr->get_results().front(), "" );
+		} // if
+		output << ")";
+		castExpr->get_arg()->accept( *this );
+		output << ")";
+	}
+  
+	void CodeGenerator::visit( UntypedMemberExpr *memberExpr ) {
+		assert( false );
+	}
+  
+	void CodeGenerator::visit( MemberExpr *memberExpr ) {
+		memberExpr->get_aggregate()->accept( *this );
+		output << "." << mangleName( memberExpr->get_member() );
+	}
+  
+	void CodeGenerator::visit( VariableExpr *variableExpr ) {
+		OperatorInfo opInfo;
+		if ( variableExpr->get_var()->get_linkage() == LinkageSpec::Intrinsic && operatorLookup( variableExpr->get_var()->get_name(), opInfo ) && opInfo.type == OT_CONSTANT ) {
+			output << opInfo.symbol;
+		} else {
+			output << mangleName( variableExpr->get_var() );
+		} // if
+	}
+  
+	void CodeGenerator::visit( ConstantExpr *constantExpr ) {
+		assert( constantExpr->get_constant() );
+		constantExpr->get_constant()->accept( *this );
+	}
+  
+	void CodeGenerator::visit( SizeofExpr *sizeofExpr ) {
+		output << "sizeof(";
+		if ( sizeofExpr->get_isType() ) {
+			output << genType( sizeofExpr->get_type(), "" );
+		} else {
+			sizeofExpr->get_expr()->accept( *this );
+		} // if
+		output << ")";
+	}
+  
+	void CodeGenerator::visit( LogicalExpr *logicalExpr ) {
+		output << "(";
+		logicalExpr->get_arg1()->accept( *this );
+		if ( logicalExpr->get_isAnd() ) {
+			output << " && ";
+		} else {
+			output << " || ";
+		} // if
+		logicalExpr->get_arg2()->accept( *this );
+		output << ")";
+	}
+  
+	void CodeGenerator::visit( ConditionalExpr *conditionalExpr ) {
+		output << "(";
+		conditionalExpr->get_arg1()->accept( *this );
+		output << " ? ";
+		conditionalExpr->get_arg2()->accept( *this );
+		output << " : ";
+		conditionalExpr->get_arg3()->accept( *this );
+		output << ")";
+	}
+  
+	void CodeGenerator::visit( CommaExpr *commaExpr ) {
+		output << "(";
+		commaExpr->get_arg1()->accept( *this );
+		output << " , ";
+		commaExpr->get_arg2()->accept( *this );
+		output << ")";
+	}
+  
+	void CodeGenerator::visit( TupleExpr *tupleExpr ) {}
+  
+	void CodeGenerator::visit( TypeExpr *typeExpr ) {}
+
+	//*** Statements
+	void CodeGenerator::visit( CompoundStmt *compoundStmt ) {
+		std::list<Statement*> ks = compoundStmt->get_kids();
+		output << "{" << endl;
+
+		cur_indent += CodeGenerator::tabsize;
+
+		for ( std::list<Statement *>::iterator i = ks.begin(); i != ks.end();  i++) {
+			output << indent << printLabels( (*i)->get_labels() );
+			(*i)->accept(*this );
+
+			output << endl;
+			if ( wantSpacing( *i ) ) {
+				output << endl;
+			}
+		}
+		cur_indent -= CodeGenerator::tabsize; 
+
+		output << indent << "}";
+	}
+
+	void CodeGenerator::visit( ExprStmt *exprStmt ) {
+		// I don't see why this check is necessary. 
+		// If this starts to cause problems then put it back in, 
+		// with an explanation
+		assert( exprStmt );
+
+		// if ( exprStmt != 0 ) {
+		exprStmt->get_expr()->accept( *this );
+		output << ";" ;
+		// } // if
+	}
+
+	void CodeGenerator::visit( IfStmt *ifStmt ) {
+		output << "if (";
+		ifStmt->get_condition()->accept(*this );
+		output << ") ";
+
+		ifStmt->get_thenPart()->accept(*this );
+
+		if ( ifStmt->get_elsePart() != 0) {
+			output << " else ";
+			ifStmt->get_elsePart()->accept(*this );
+		} // if
+	}
+
+	void CodeGenerator::visit( SwitchStmt *switchStmt ) {
+		output << "switch (" ;
+		switchStmt->get_condition()->accept(*this );
+		output << ") ";
+		
+		output << "{" << std::endl;
+		cur_indent += CodeGenerator::tabsize;
+
+		acceptAll( switchStmt->get_branches(), *this );
+
+		cur_indent -= CodeGenerator::tabsize;
+
+		output << indent << "}";
+	}
+
+	void CodeGenerator::visit( CaseStmt *caseStmt ) {
+		output << indent;
+		if ( caseStmt->isDefault()) {
+			output << "default";
+		} else {
+			output << "case ";
+			caseStmt->get_condition()->accept(*this );
+		} // if
+		output << ":\n";
+		
+		std::list<Statement *> sts = caseStmt->get_statements();
+
+		cur_indent += CodeGenerator::tabsize;
+		for ( std::list<Statement *>::iterator i = sts.begin(); i != sts.end();  i++) {
+			output << indent << printLabels( (*i)->get_labels() )  ;
+			(*i)->accept(*this );
+			output << endl;
+		}
+		cur_indent -= CodeGenerator::tabsize;
+	}
+
+	void CodeGenerator::visit( BranchStmt *branchStmt ) {
+		switch ( branchStmt->get_type()) {
+		  case BranchStmt::Goto:
+			if ( ! branchStmt->get_target().empty() )
+				output << "goto " << branchStmt->get_target();
+			else { 
+				if ( branchStmt->get_computedTarget() != 0 ) {
+					output << "goto *";
+					branchStmt->get_computedTarget()->accept( *this );
+				} // if
+			} // if
+			break;
+		  case BranchStmt::Break:
+			output << "break";
+			break;
+		  case BranchStmt::Continue:
+			output << "continue";
+			break;
+		}
+		output << ";";
+	}
+
+
+	void CodeGenerator::visit( ReturnStmt *returnStmt ) {
+		output << "return ";
+
+		// xxx -- check for null expression;
+		if ( returnStmt->get_expr() ) {
+			returnStmt->get_expr()->accept( *this );
+		} // if
+		output << ";";
+	}
+
+	void CodeGenerator::visit( WhileStmt *whileStmt ) {
+		if ( whileStmt->get_isDoWhile() )
+			output << "do" ;
+		else {
+			output << "while (" ;
+			whileStmt->get_condition()->accept(*this );
+			output << ")";
+		} // if
+		output << " ";
+
+		output << CodeGenerator::printLabels( whileStmt->get_body()->get_labels() );
+		whileStmt->get_body()->accept( *this );
+
+		output << indent;
+
+		if ( whileStmt->get_isDoWhile() ) {
+			output << " while (" ;
+			whileStmt->get_condition()->accept(*this );
+			output << ");";
+		} // if
+	}
+
+	void CodeGenerator::visit( ForStmt *forStmt ) {
+		output << "for (";
+
+		if ( forStmt->get_initialization() != 0 )
+			forStmt->get_initialization()->accept( *this );
+		else
+			output << ";";
+		
+		if ( forStmt->get_condition() != 0 )
+			forStmt->get_condition()->accept( *this );
+		output << ";";
+
+		if ( forStmt->get_increment() != 0 )
+			forStmt->get_increment()->accept( *this );
+		output << ") ";
+
+		if ( forStmt->get_body() != 0 ) {
+			output << CodeGenerator::printLabels( forStmt->get_body()->get_labels() );
+			forStmt->get_body()->accept( *this );
+		} // if
+	}
+
+	void CodeGenerator::visit( NullStmt *nullStmt ) {
+		//output << indent << CodeGenerator::printLabels( nullStmt->get_labels() );
+		output << "/* null statement */ ;";
+	}
+
+	void CodeGenerator::visit( DeclStmt *declStmt ) {
+		declStmt->get_decl()->accept( *this );
+	
+		if ( doSemicolon( declStmt->get_decl() ) ) {
+			output << ";";
+		} // if
+	}
+
+	std::string CodeGenerator::printLabels( std::list< Label > &l ) {
+		std::string str( "" );
+		l.unique(); // assumes a sorted list. Why not use set?
+
+		for ( std::list< Label >::iterator i = l.begin(); i != l.end(); i++ )
+			str += *i + ": ";
+
+		return str;
+	}
+
+	void CodeGenerator::handleStorageClass( Declaration *decl ) {
+		switch ( decl->get_storageClass() ) {
+		  case DeclarationNode::Extern:
+			output << "extern ";
+			break;
+		  case DeclarationNode::Static:
+			output << "static ";
+			break;
+		  case DeclarationNode::Auto:
+			// silently drop storage class
+			break;
+		  case DeclarationNode::Register:
+			output << "register ";
+			break;
+		  case DeclarationNode::Inline:
+			output << "inline ";
+			break;
+		  case DeclarationNode::Fortran:
+			output << "fortran ";
+			break;
+		  case DeclarationNode::Noreturn:
+			output << "_Noreturn ";
+			break;
+		  case DeclarationNode::Threadlocal:
+			output << "_Thread_local ";
+			break;
+		  case DeclarationNode::NoStorageClass:
+			break;
+		} // switch
+	}
+} // namespace CodeGen
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: src/CodeGen/CodeGenerator.h
===================================================================
--- src/CodeGen/CodeGenerator.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/CodeGen/CodeGenerator.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,127 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// CodeGenerator.h -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Mon May 18 07:44:20 2015
+// Last Modified By : Rob Schluntz
+// Last Modified On : Thu Jun 11 13:24:23 2015
+// Update Count     : 23
+//
+
+#ifndef CODEGENV_H
+#define CODEGENV_H
+
+#include <list>
+
+#include "SynTree/SynTree.h"
+#include "SynTree/Visitor.h"
+#include "SymTab/Indexer.h"
+
+namespace CodeGen {
+	class CodeGenerator : public Visitor {
+	  public:
+		static int tabsize;
+
+		CodeGenerator( std::ostream &os );
+		CodeGenerator( std::ostream &os, std::string, int indent = 0, bool infun = false );
+		CodeGenerator( std::ostream &os, char *, int indent = 0, bool infun = false );
+
+		//*** Declaration
+		virtual void visit( StructDecl * );
+		virtual void visit( FunctionDecl * );
+		virtual void visit( ObjectDecl * );
+		virtual void visit( UnionDecl *aggregateDecl );
+		virtual void visit( EnumDecl *aggregateDecl );
+		virtual void visit( ContextDecl *aggregateDecl );
+		virtual void visit( TypedefDecl *typeDecl );
+		virtual void visit( TypeDecl *typeDecl );
+
+		//*** Initializer
+		virtual void visit( SingleInit * );
+		virtual void visit( ListInit * );
+
+		//*** Constant
+		virtual void visit( Constant * );
+
+		//*** Expression
+		virtual void visit( ApplicationExpr *applicationExpr );
+		virtual void visit( UntypedExpr *untypedExpr );
+		virtual void visit( NameExpr *nameExpr );
+		virtual void visit( AddressExpr *addressExpr );
+		virtual void visit( CastExpr *castExpr );
+		virtual void visit( UntypedMemberExpr *memberExpr );
+		virtual void visit( MemberExpr *memberExpr );
+		virtual void visit( VariableExpr *variableExpr );
+		virtual void visit( ConstantExpr *constantExpr ); 
+		virtual void visit( SizeofExpr *sizeofExpr );
+		virtual void visit( LogicalExpr *logicalExpr );
+		virtual void visit( ConditionalExpr *conditionalExpr );
+		virtual void visit( CommaExpr *commaExpr );
+		virtual void visit( TupleExpr *tupleExpr );
+		virtual void visit( TypeExpr *typeExpr );
+
+		//*** Statements
+		virtual void visit( CompoundStmt * );
+		virtual void visit( ExprStmt * );
+		virtual void visit( IfStmt * );
+		virtual void visit( SwitchStmt * );
+		virtual void visit( CaseStmt * );
+		virtual void visit( BranchStmt * );
+		virtual void visit( ReturnStmt * );
+		virtual void visit( WhileStmt * );
+		virtual void visit( ForStmt * );
+		virtual void visit( NullStmt * );
+		virtual void visit( DeclStmt * ); 
+
+		template< class Iterator > void genCommaList( Iterator begin, Iterator end );
+
+		struct Indenter {
+			Indenter(CodeGenerator &cg) : cg(cg) {}
+			CodeGenerator & cg;
+			std::ostream& operator()(std::ostream & os);
+		};
+	  private:
+
+		Indenter indent;
+		int cur_indent;
+		bool insideFunction;
+		std::ostream &output;
+
+		static std::string printLabels ( std::list < Label > & );
+		void handleStorageClass( Declaration *decl );
+		void handleAggregate( AggregateDecl *aggDecl );
+		void handleTypedef( NamedTypeDecl *namedType );
+
+	};
+	
+	template< class Iterator >
+	void CodeGenerator::genCommaList( Iterator begin, Iterator end ) {
+		if ( begin == end ) return;
+
+		for ( ;; ) {
+			(*begin++)->accept( *this );
+			if ( begin == end ) return;
+			output << ", ";
+		} // for
+	}
+  
+	inline bool doSemicolon( Declaration* decl ) {
+		if ( FunctionDecl* func = dynamic_cast< FunctionDecl* >( decl ) ) {
+			return ! func->get_statements();
+		} // if
+		return true;
+	}
+} // namespace CodeGen
+
+#endif // CODEGENV_H
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: c/CodeGen/CodeGenerator2.cc
===================================================================
--- src/CodeGen/CodeGenerator2.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,666 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// CodeGenerator2.cc -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu May 21 17:13:35 2015
-// Update Count     : 7
-//
-
-#include <algorithm>
-#include <iostream>
-#include <cassert>
-#include <list>
-
-#include "SynTree/Type.h"
-#include "SynTree/Declaration.h"
-#include "SynTree/Statement.h"
-#include "SynTree/Expression.h"
-#include "SynTree/Initializer.h"
-
-#include "utility.h"
-#include "UnimplementedError.h"
-
-#include "CodeGenerator2.h"
-#include "OperatorTable.h"
-#include "GenType.h"
-
-using namespace std;
-
-namespace CodeGen {
-	int CodeGenerator2::tabsize = 4;
-
-	CodeGenerator2::CodeGenerator2( std::ostream &os ) : cur_indent( 0 ), insideFunction( false ), before( os ), after() { }
-
-	CodeGenerator2::CodeGenerator2( std::ostream &os, std::string init, int indent, bool infunp )
-		: cur_indent( indent ), insideFunction( infunp ), before( os ) {
-		//before << std::string( init );
-	}
-
-	CodeGenerator2::CodeGenerator2( std::ostream &os, char *init, int indent, bool infunp )
-		: cur_indent( indent ), insideFunction( infunp ), before( os ) {
-		//before << std::string( init );
-	}
-
-	string mangleName( DeclarationWithType *decl ) {
-		if ( decl->get_mangleName() != "" ) {
-			return decl->get_mangleName();
-		} else {
-			return decl->get_name();
-		} // if
-	}
-  
-	//*** Declarations
-	void CodeGenerator2::visit( FunctionDecl *functionDecl ) {
-		handleStorageClass( functionDecl );
-		before << genType( functionDecl->get_functionType(), mangleName( functionDecl ) );
-
-		// how to get this to the Functype?
-		std::list< Declaration * > olds = functionDecl->get_oldDecls();
-		if ( ! olds.empty() ) {
-			before << " /* function has old declaration */";
-		} // if
-
-		// acceptAll( functionDecl->get_oldDecls(), *this );
-		if ( functionDecl->get_statements() ) {
-			functionDecl->get_statements()->accept(*this );
-		} // if
-	}
-
-	void CodeGenerator2::visit( ObjectDecl *objectDecl ) {
-		handleStorageClass( objectDecl );
-		before << genType( objectDecl->get_type(), mangleName( objectDecl ) );
-	
-		if ( objectDecl->get_init() ) {
-			before << " = ";
-			objectDecl->get_init()->accept( *this );
-		} // if
-		if ( objectDecl->get_bitfieldWidth() ) {
-			before << ":";
-			objectDecl->get_bitfieldWidth()->accept( *this );
-		} // if
-	}
-
-	void CodeGenerator2::handleAggregate( AggregateDecl *aggDecl ) {
-		if ( aggDecl->get_name() != "" )
-			before << aggDecl->get_name();
-	
-		std::list< Declaration * > &memb = aggDecl->get_members();
-
-		if ( ! memb.empty() ) {
-			before << endl << string( cur_indent, ' ' ) << "{" << endl;
-
-			cur_indent += CodeGenerator2::tabsize; 
-			for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
-				before << string( cur_indent, ' ' ); 
-				(*i)->accept(*this );
-				before << ";" << endl;
-			}
-
-			cur_indent -= CodeGenerator2::tabsize; 
-
-			before << string( cur_indent, ' ' ) << "}";
-		} // if
-	}
-
-	void CodeGenerator2::visit( StructDecl *structDecl ) {
-		before << "struct ";
-		handleAggregate( structDecl );
-	}
-
-	void CodeGenerator2::visit( UnionDecl *aggregateDecl ) {
-		before << "union ";
-		handleAggregate( aggregateDecl );
-	}
-  
-	void CodeGenerator2::visit( EnumDecl *aggDecl ) {
-		before << "enum ";
-
-		if ( aggDecl->get_name() != "" )
-			before << aggDecl->get_name();
-	
-		std::list< Declaration* > &memb = aggDecl->get_members();
-
-		if ( ! memb.empty() ) {
-			before << endl << "{" << endl;
-
-			cur_indent += CodeGenerator2::tabsize; 
-			for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
-				ObjectDecl *obj = dynamic_cast< ObjectDecl* >( *i );
-				assert( obj );
-				before << string( cur_indent, ' ' ) << mangleName( obj ); 
-				if ( obj->get_init() ) {
-					before << " = ";
-					obj->get_init()->accept(*this );
-				} // if
-				before << "," << endl;
-			} // for
-
-			cur_indent -= CodeGenerator2::tabsize; 
-
-			before << "}" << endl;
-		} // if
-	}
-  
-	void CodeGenerator2::visit( ContextDecl *aggregateDecl ) {}
-  
-	void CodeGenerator2::visit( TypedefDecl *typeDecl ) {
-		before << "typedef ";
-		before << genType( typeDecl->get_base(), typeDecl->get_name() );
-	}
-  
-	void CodeGenerator2::visit( TypeDecl *typeDecl ) {
-		// really, we should mutate this into something that isn't a TypeDecl but that requires large-scale changes,
-		// still to be done
-		before << "extern unsigned long " << typeDecl->get_name();
-		if ( typeDecl->get_base() ) {
-			before << " = sizeof( " << genType( typeDecl->get_base(), "" ) << " )";
-		} // if
-	}
-
-	void CodeGenerator2::visit( SingleInit *init ) {
-		init->get_value()->accept( *this );
-	}
-
-	void CodeGenerator2::visit( ListInit *init ) {
-		before << "{ ";
-		genCommaList( init->begin_initializers(), init->end_initializers() );
-		before << " }";
-	}
-
-	void CodeGenerator2::visit( Constant *constant ) { 
-		before << constant->get_value() ;
-	}
-
-	//*** Expressions
-	void CodeGenerator2::visit( ApplicationExpr *applicationExpr ) {
-		if ( VariableExpr *varExpr = dynamic_cast< VariableExpr* >( applicationExpr->get_function() ) ) {
-			OperatorInfo opInfo;
-			if ( varExpr->get_var()->get_linkage() == LinkageSpec::Intrinsic && operatorLookup( varExpr->get_var()->get_name(), opInfo ) ) {
-				std::list< Expression* >::iterator arg = applicationExpr->get_args().begin();
-				switch ( opInfo.type ) {
-				  case OT_PREFIXASSIGN:
-				  case OT_POSTFIXASSIGN:
-				  case OT_INFIXASSIGN:
-					{
-						assert( arg != applicationExpr->get_args().end() );
-						if ( AddressExpr *addrExpr = dynamic_cast< AddressExpr * >( *arg ) ) {
-	        
-							*arg = addrExpr->get_arg();
-						} else {
-							UntypedExpr *newExpr = new UntypedExpr( new NameExpr( "*?" ) );
-							newExpr->get_args().push_back( *arg );
-							*arg = newExpr;
-						} // if
-						break;
-					}
-	      
-				  default:
-					// do nothing
-					;
-				}
-	    
-				switch ( opInfo.type ) {
-				  case OT_INDEX:
-					assert( applicationExpr->get_args().size() == 2 );
-					(*arg++)->accept( *this );
-					before << "[";
-					(*arg)->accept( *this );
-					before << "]";
-					break;
-	      
-				  case OT_CALL:
-					// there are no intrinsic definitions of the function call operator
-					assert( false );
-					break;
-	      
-				  case OT_PREFIX:
-				  case OT_PREFIXASSIGN:
-					assert( applicationExpr->get_args().size() == 1 );
-					before << "(";
-					before << opInfo.symbol;
-					(*arg)->accept( *this );
-					before << ")";
-					break;
-	      
-				  case OT_POSTFIX:
-				  case OT_POSTFIXASSIGN:
-					assert( applicationExpr->get_args().size() == 1 );
-					(*arg)->accept( *this );
-					before << opInfo.symbol;
-					break;
-
-				  case OT_INFIX:
-				  case OT_INFIXASSIGN:
-					assert( applicationExpr->get_args().size() == 2 );
-					before << "(";
-					(*arg++)->accept( *this );
-					before << opInfo.symbol;
-					(*arg)->accept( *this );
-					before << ")";
-					break;
-	      
-				  case OT_CONSTANT:
-					// there are no intrinsic definitions of 0 or 1 as functions
-					assert( false );
-				}
-			} else {
-				varExpr->accept( *this );
-				before << "(";
-				genCommaList( applicationExpr->get_args().begin(), applicationExpr->get_args().end() );
-				before << ")";
-			} // if
-		} else {
-			applicationExpr->get_function()->accept( *this );
-			before << "(";
-			genCommaList( applicationExpr->get_args().begin(), applicationExpr->get_args().end() );
-			before << ")";
-		} // if
-	}
-  
-	void CodeGenerator2::visit( UntypedExpr *untypedExpr ) {
-		if ( NameExpr *nameExpr = dynamic_cast< NameExpr* >( untypedExpr->get_function() ) ) {
-			OperatorInfo opInfo;
-			if ( operatorLookup( nameExpr->get_name(), opInfo ) ) {
-				std::list< Expression* >::iterator arg = untypedExpr->get_args().begin();
-				switch ( opInfo.type ) {
-				  case OT_INDEX:
-					assert( untypedExpr->get_args().size() == 2 );
-					(*arg++)->accept( *this );
-					before << "[";
-					(*arg)->accept( *this );
-					before << "]";
-					break;
-	      
-				  case OT_CALL:
-					assert( false );
-					break;
-	      
-				  case OT_PREFIX:
-				  case OT_PREFIXASSIGN:
-					assert( untypedExpr->get_args().size() == 1 );
-					before << "(";
-					before << opInfo.symbol;
-					(*arg)->accept( *this );
-					before << ")";
-					break;
-	      
-				  case OT_POSTFIX:
-				  case OT_POSTFIXASSIGN:
-					assert( untypedExpr->get_args().size() == 1 );
-					(*arg)->accept( *this );
-					before << opInfo.symbol;
-					break;
-  
-				  case OT_INFIX:
-				  case OT_INFIXASSIGN:
-					assert( untypedExpr->get_args().size() == 2 );
-					before << "(";
-					(*arg++)->accept( *this );
-					before << opInfo.symbol;
-					(*arg)->accept( *this );
-					before << ")";
-					break;
-	      
-				  case OT_CONSTANT:
-					// there are no intrinsic definitions of 0 or 1 as functions
-					assert( false );
-				}
-			} else {
-				nameExpr->accept( *this );
-				before << "(";
-				genCommaList( untypedExpr->get_args().begin(), untypedExpr->get_args().end() );
-				before << ")";
-			} // if
-		} else {
-			untypedExpr->get_function()->accept( *this );
-			before << "(";
-			genCommaList( untypedExpr->get_args().begin(), untypedExpr->get_args().end() );
-			before << ")";
-		} // if
-	}
-  
-	void CodeGenerator2::visit( NameExpr *nameExpr ) {
-		OperatorInfo opInfo;
-		if ( operatorLookup( nameExpr->get_name(), opInfo ) ) {
-			assert( opInfo.type == OT_CONSTANT );
-			before << opInfo.symbol;
-		} else {
-			before << nameExpr->get_name();
-		} // if
-	}
-  
-	void CodeGenerator2::visit( AddressExpr *addressExpr ) {
-		before << "(&";
-		// this hack makes sure that we don't convert "constant_zero" to "0" if we're taking its address
-		if ( VariableExpr *variableExpr = dynamic_cast< VariableExpr* >( addressExpr->get_arg() ) ) {
-			before << mangleName( variableExpr->get_var() );
-		} else {
-			addressExpr->get_arg()->accept( *this );
-		} // if
-		before << ")";
-	}
-
-	void CodeGenerator2::visit( CastExpr *castExpr ) {
-		before << "((";
-		if ( castExpr->get_results().empty() ) {
-			before << "void" ;
-		} else {
-			before << genType( castExpr->get_results().front(), "" );
-		} // if
-		before << ")";
-		castExpr->get_arg()->accept( *this );
-		before << ")";
-	}
-  
-	void CodeGenerator2::visit( UntypedMemberExpr *memberExpr ) {
-		assert( false );
-	}
-  
-	void CodeGenerator2::visit( MemberExpr *memberExpr ) {
-		memberExpr->get_aggregate()->accept( *this );
-		before << "." << mangleName( memberExpr->get_member() );
-	}
-  
-	void CodeGenerator2::visit( VariableExpr *variableExpr ) {
-		OperatorInfo opInfo;
-		if ( variableExpr->get_var()->get_linkage() == LinkageSpec::Intrinsic && operatorLookup( variableExpr->get_var()->get_name(), opInfo ) && opInfo.type == OT_CONSTANT ) {
-			before << opInfo.symbol;
-		} else {
-			before << mangleName( variableExpr->get_var() );
-		} // if
-	}
-  
-	void CodeGenerator2::visit( ConstantExpr *constantExpr ) {
-		assert( constantExpr->get_constant() );
-		constantExpr->get_constant()->accept( *this );
-	}
-  
-	void CodeGenerator2::visit( SizeofExpr *sizeofExpr ) {
-		before << "sizeof(";
-		if ( sizeofExpr->get_isType() ) {
-			before << genType( sizeofExpr->get_type(), "" );
-		} else {
-			sizeofExpr->get_expr()->accept( *this );
-		} // if
-		before << ")";
-	}
-  
-	void CodeGenerator2::visit( LogicalExpr *logicalExpr ) {
-		before << "(";
-		logicalExpr->get_arg1()->accept( *this );
-		if ( logicalExpr->get_isAnd() ) {
-			before << " && ";
-		} else {
-			before << " || ";
-		} // if
-		logicalExpr->get_arg2()->accept( *this );
-		before << ")";
-	}
-  
-	void CodeGenerator2::visit( ConditionalExpr *conditionalExpr ) {
-		before << "(";
-		conditionalExpr->get_arg1()->accept( *this );
-		before << " ? ";
-		conditionalExpr->get_arg2()->accept( *this );
-		before << " : ";
-		conditionalExpr->get_arg3()->accept( *this );
-		before << ")";
-	}
-  
-	void CodeGenerator2::visit( CommaExpr *commaExpr ) {
-		before << "(";
-		commaExpr->get_arg1()->accept( *this );
-		before << " , ";
-		commaExpr->get_arg2()->accept( *this );
-		before << ")";
-	}
-  
-	void CodeGenerator2::visit( TupleExpr *tupleExpr ) {}
-  
-	void CodeGenerator2::visit( TypeExpr *typeExpr ) {}
-  
-  
-	//*** Statements
-	void CodeGenerator2::visit( CompoundStmt *compoundStmt ) {
-		std::list<Statement*> ks = compoundStmt->get_kids();
-
-		before << endl << string( cur_indent, ' ' ) << "{" << endl;
-
-		cur_indent += CodeGenerator2::tabsize; 
-
-		for ( std::list<Statement *>::iterator i = ks.begin(); i != ks.end();  i++) {
-			before << string( cur_indent, ' ' ) << printLabels( (*i)->get_labels() )  ;
-			(*i)->accept(*this );
-			shift_left();
-			before << endl;
-		}
-		cur_indent -= CodeGenerator2::tabsize; 
-
-		before << string( cur_indent, ' ' ) << "}" << endl;
-	}
-
-	void CodeGenerator2::visit( ExprStmt *exprStmt ) {
-		if ( exprStmt != 0 ) {
-			exprStmt->get_expr()->accept( *this );
-			shift_left();
-			before << ";" ;
-		} // if
-	}
-
-	void CodeGenerator2::visit( IfStmt *ifStmt ) {
-		before << "if (";
-		ifStmt->get_condition()->accept(*this );
-		after += ")\n";
-		shift_left(); 
-
-		cur_indent += CodeGenerator2::tabsize;
-		before << string( cur_indent, ' ' );
-		ifStmt->get_thenPart()->accept(*this );
-		cur_indent -= CodeGenerator2::tabsize; 
-		shift_left(); before << endl;
-
-		if ( ifStmt->get_elsePart() != 0) {
-			before << string( cur_indent, ' ' ) << " else " << endl ;
-
-			cur_indent += CodeGenerator2::tabsize; 
-			ifStmt->get_elsePart()->accept(*this );
-			cur_indent -= CodeGenerator2::tabsize; 
-		} // if
-	}
-
-	void CodeGenerator2::visit( SwitchStmt *switchStmt ) {
-		//before << /* "\r" << */ string( cur_indent, ' ' ) << CodeGenerator2::printLabels( switchStmt->get_labels() ) 
-		before << "switch (" ;
-		switchStmt->get_condition()->accept(*this );
-		after += ")\n";
-		shift_left();
-
-		before << string( cur_indent, ' ' ) << "{" << std::endl;
-		cur_indent += CodeGenerator2::tabsize;
-
-		std::list< Statement * > stmts = switchStmt->get_branches();
-		bool lastBreak = false; 
-
-		// horrible, horrible hack
-		if ( dynamic_cast<BranchStmt *>( stmts.back() ) != 0 ) {
-			lastBreak = true;
-			stmts.pop_back();
-		} // if
-		acceptAll( stmts, *this );
-		if ( lastBreak ) {
-			Statement *st = switchStmt->get_branches().back();
-			before << CodeGenerator2::printLabels( st->get_labels());
-			st->accept( *this );
-		} // if
-	  
-		cur_indent -= CodeGenerator2::tabsize; 
-
-		before << /* "\r" << */ string( cur_indent, ' ' ) << "}" << endl ;
-	}
-
-	void CodeGenerator2::visit( CaseStmt *caseStmt ) {
-		before << string( cur_indent, ' ' );
-		if ( caseStmt->isDefault()) 
-			before << "default "  ;
-		else {
-			before << "case "  ;
-			caseStmt->get_condition()->accept(*this );
-		} // if
-		after += ":\n";
-		shift_left();
-
-		std::list<Statement *> sts = caseStmt->get_statements();
-
-		cur_indent += CodeGenerator2::tabsize;
-		for ( std::list<Statement *>::iterator i = sts.begin(); i != sts.end();  i++) {
-			before << /* "\r" << */ string( cur_indent, ' ' ) << printLabels( (*i)->get_labels() )  ;
-			(*i)->accept(*this );
-			shift_left();
-			before << ";" << endl;
-		}
-		cur_indent -= CodeGenerator2::tabsize;
-	}
-
-	void CodeGenerator2::visit( BranchStmt *branchStmt ) {
-		switch ( branchStmt->get_type()) {
-		  case BranchStmt::Goto:
-			if ( ! branchStmt->get_target().empty() )
-				before << "goto " << branchStmt->get_target();
-			else { 
-				if ( branchStmt->get_computedTarget() != 0 ) {
-					before << "goto *";
-					branchStmt->get_computedTarget()->accept( *this );
-				} // if
-			} // if
-			break;
-		  case BranchStmt::Break:
-			before << "break";
-			break;
-		  case BranchStmt::Continue:
-			before << "continue";
-			break;
-		}
-		before << ";";
-	}
-
-
-	void CodeGenerator2::visit( ReturnStmt *returnStmt ) {
-		before << "return ";
-
-		// xxx -- check for null expression;
-		if ( returnStmt->get_expr() ) {
-			returnStmt->get_expr()->accept( *this );
-		} // if
-		after += ";";
-	}
-
-	void CodeGenerator2::visit( WhileStmt *whileStmt ) {
-		if ( whileStmt->get_isDoWhile() )
-			before << "do" ;
-		else {
-			before << "while (" ;
-			whileStmt->get_condition()->accept(*this );
-			after += ")";
-		} // if
-		after += "{\n";
-		shift_left();
-
-		whileStmt->get_body()->accept( *this );
-
-		before << /* "\r" << */ string( cur_indent, ' ' ) << "}" ;
-
-		if ( whileStmt->get_isDoWhile() ) {
-			before << " while (" ;
-			whileStmt->get_condition()->accept(*this );
-			after += ");";
-		} // if
-
-		after += "\n";
-	}
-
-	void CodeGenerator2::visit( ForStmt *forStmt ) {
-		before << "for (";
-
-		if ( forStmt->get_initialization() != 0 )
-			forStmt->get_initialization()->accept( *this );
-		else
-			before << ";";
-		shift_left();
-
-		if ( forStmt->get_condition() != 0 )
-			forStmt->get_condition()->accept( *this );
-		shift_left(); before << ";";
-
-		if ( forStmt->get_increment() != 0 )
-			forStmt->get_increment()->accept( *this );
-		shift_left(); before << ")" << endl;
-
-		if ( forStmt->get_body() != 0 ) {
-			cur_indent += CodeGenerator2::tabsize; 
-			before << string( cur_indent, ' ' ) << CodeGenerator2::printLabels( forStmt->get_body()->get_labels() );
-			forStmt->get_body()->accept( *this );
-			cur_indent -= CodeGenerator2::tabsize; 
-		} // if
-	}
-
-	void CodeGenerator2::visit( NullStmt *nullStmt ) {
-		//before << /* "\r" << */ string( cur_indent, ' ' ) << CodeGenerator2::printLabels( nullStmt->get_labels() );
-		before << "/* null statement */ ;";
-	}
-
-	void CodeGenerator2::visit( DeclStmt *declStmt ) {
-		declStmt->get_decl()->accept( *this );
-	
-		if ( doSemicolon( declStmt->get_decl() ) ) {
-			after += ";";
-		} // if
-		shift_left();
-	}
-
-	std::string CodeGenerator2::printLabels( std::list< Label > &l ) {
-		std::string str( "" );
-		l.unique();
-
-		for ( std::list< Label >::iterator i = l.begin(); i != l.end(); i++ )
-			str += *i + ": ";
-
-		return str;
-	}
-
-	void CodeGenerator2::shift_left() {
-		before << after;
-		after = "";
-	}
-
-	void CodeGenerator2::handleStorageClass( Declaration *decl ) {
-		switch ( decl->get_storageClass() ) {
-		  case Declaration::NoStorageClass:
-			break;
-		  case Declaration::Extern:
-			before << "extern ";
-			break;
-		  case Declaration::Static:
-			before << "static ";
-			break;
-		  case Declaration::Auto:
-			// silently drop storage class
-			break;
-		  case Declaration::Register:
-			before << "register ";
-			break;
-		} // switch
-	}
-} // namespace CodeGen
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/CodeGen/CodeGenerator2.h
===================================================================
--- src/CodeGen/CodeGenerator2.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,126 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// CodeGenerator2.h -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 23:35:37 2015
-// Update Count     : 2
-//
-
-#ifndef CODEGENV_H
-#define CODEGENV_H
-
-#include <strstream>
-#include <list>
-
-#include "SynTree/SynTree.h"
-#include "SynTree/Visitor.h"
-#include "SymTab/Indexer.h"
-
-namespace CodeGen {
-	class CodeGenerator2 : public Visitor {
-	  public:
-		static int tabsize;
-
-		CodeGenerator2( std::ostream &os );
-		CodeGenerator2( std::ostream &os, std::string, int indent = 0, bool infun = false );
-		CodeGenerator2( std::ostream &os, char *, int indent = 0, bool infun = false );
-
-		CodeGenerator2( CodeGenerator2 & );
-
-		//*** Declaration
-		virtual void visit( StructDecl * );
-		virtual void visit( FunctionDecl * );
-		virtual void visit( ObjectDecl * );
-		virtual void visit( UnionDecl *aggregateDecl );
-		virtual void visit( EnumDecl *aggregateDecl );
-		virtual void visit( ContextDecl *aggregateDecl );
-		virtual void visit( TypedefDecl *typeDecl );
-		virtual void visit( TypeDecl *typeDecl );
-
-		//*** Initializer
-		virtual void visit( SingleInit * );
-		virtual void visit( ListInit * );
-
-		//*** Constant
-		virtual void visit( Constant * );
-
-		//*** Expression
-		virtual void visit( ApplicationExpr *applicationExpr );
-		virtual void visit( UntypedExpr *untypedExpr );
-		virtual void visit( NameExpr *nameExpr );
-		virtual void visit( AddressExpr *addressExpr );
-		virtual void visit( CastExpr *castExpr );
-		virtual void visit( UntypedMemberExpr *memberExpr );
-		virtual void visit( MemberExpr *memberExpr );
-		virtual void visit( VariableExpr *variableExpr );
-		virtual void visit( ConstantExpr *constantExpr ); 
-		virtual void visit( SizeofExpr *sizeofExpr );
-		virtual void visit( LogicalExpr *logicalExpr );
-		virtual void visit( ConditionalExpr *conditionalExpr );
-		virtual void visit( CommaExpr *commaExpr );
-		virtual void visit( TupleExpr *tupleExpr );
-		virtual void visit( TypeExpr *typeExpr );
-
-		//*** Statements
-		virtual void visit( CompoundStmt * );
-		virtual void visit( ExprStmt * );
-		virtual void visit( IfStmt * );
-		virtual void visit( SwitchStmt * );
-		virtual void visit( CaseStmt * );
-		virtual void visit( BranchStmt * );
-		virtual void visit( ReturnStmt * );
-		virtual void visit( WhileStmt * );
-		virtual void visit( ForStmt * );
-		virtual void visit( NullStmt * );
-		virtual void visit( DeclStmt * ); 
-
-		std::string get_string( void );
-		void add_string_left( std::string s ) { before << s; }
-		void shift_left();
-		template< class Iterator > void genCommaList( Iterator begin, Iterator end );
-	  private:
-		int cur_indent;
-		bool insideFunction;
-		std::ostream &before;
-		std::string after;
-
-		static std::string printLabels ( std::list < Label > & );
-		void handleStorageClass( Declaration *decl );
-		void handleAggregate( AggregateDecl *aggDecl );
-		void handleTypedef( NamedTypeDecl *namedType );
-
-	};
-	
-	template< class Iterator >
-	void CodeGenerator2::genCommaList( Iterator begin, Iterator end ) {
-		if ( begin == end ) return;
-
-		for ( ;; ) {
-			(*begin++)->accept( *this );
-			if ( begin == end ) return;
-			before << ", ";
-		} // for
-	}
-  
-	inline bool doSemicolon( Declaration* decl ) {
-		if ( FunctionDecl* func = dynamic_cast< FunctionDecl* >( decl ) ) {
-			return ! func->get_statements();
-		} // if
-		return true;
-	}
-} // namespace CodeGen
-
-#endif // CODEGENV_H
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: src/CodeGen/GenType.cc
===================================================================
--- src/CodeGen/GenType.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/CodeGen/GenType.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,13 +10,13 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 23:38:22 2015
-// Update Count     : 2
-//
-
-#include <strstream>
+// Last Modified On : Mon Jun  8 14:36:02 2015
+// Update Count     : 9
+//
+
+#include <sstream>
 #include <cassert>
 
 #include "GenType.h"
-#include "CodeGenerator2.h"
+#include "CodeGenerator.h"
 #include "SynTree/Visitor.h"
 #include "SynTree/Type.h"
@@ -68,5 +68,5 @@
 
 	void GenType::genArray( const Type::Qualifiers &qualifiers, Type *base, Expression *dimension, bool isVarLen, bool isStatic ) {
-		std::ostrstream os;
+		std::ostringstream os;
 		if ( typeString != "" ) {
 			if ( typeString[ 0 ] == '*' ) {
@@ -97,10 +97,10 @@
 		} // if
 		if ( dimension != 0 ) {
-			CodeGenerator2 cg( os );
+			CodeGenerator cg( os );
 			dimension->accept( cg );
 		} // if
 		os << "]";
 
-		typeString = std::string( os.str(), os.pcount() );
+		typeString = os.str();
   
 		base->accept( *this );
@@ -127,5 +127,5 @@
 
 	void GenType::visit( FunctionType *funcType ) {
-		std::ostrstream os;
+		std::ostringstream os;
 
 		if ( typeString != "" ) {
@@ -148,5 +148,5 @@
 			} // if
 		} else {
-			CodeGenerator2 cg( os );
+			CodeGenerator cg( os );
 			os << "(" ;
 
@@ -159,5 +159,5 @@
 		} // if
   
-		typeString = std::string( os.str(), os.pcount() );
+		typeString = os.str();
 
 		if ( funcType->get_returnVals().size() == 0 ) {
Index: src/CodeGen/Generate.cc
===================================================================
--- src/CodeGen/Generate.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/CodeGen/Generate.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 23:39:24 2015
-// Update Count     : 1
+// Last Modified On : Thu Jun  4 14:04:25 2015
+// Update Count     : 5
 //
 
@@ -21,6 +21,5 @@
 #include "Generate.h"
 #include "SynTree/Declaration.h"
-
-#include "CodeGenerator2.h"
+#include "CodeGenerator.h"
 
 using namespace std;
@@ -28,10 +27,9 @@
 namespace CodeGen {
 	void generate( std::list< Declaration* > translationUnit, std::ostream &os, bool doIntrinsics ) {
-		CodeGen::CodeGenerator2 cgv( os );
+		CodeGen::CodeGenerator cgv( os );
 
 		for ( std::list<Declaration *>::iterator i = translationUnit.begin(); i != translationUnit.end();  i++ ) {
 			if ( LinkageSpec::isGeneratable( (*i)->get_linkage() ) && (doIntrinsics || ! LinkageSpec::isBuiltin( (*i)->get_linkage() ) ) ) {
 				(*i)->accept(cgv);
-				cgv.shift_left();
 				if ( doSemicolon( *i ) ) {
 					os << ";";
Index: src/CodeGen/OperatorTable.cc
===================================================================
--- src/CodeGen/OperatorTable.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/CodeGen/OperatorTable.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 23:42:07 2015
-// Update Count     : 2
+// Last Modified On : Tue Jun 23 17:41:14 2015
+// Update Count     : 5
 //
 
@@ -20,44 +20,45 @@
 	namespace {
 		const OperatorInfo tableValues[] = {
-			{	"?[?]",		"",		"_operator_index",			OT_INDEX		},
-			{	"?()",		"",		"_operator_call",			OT_CALL			},
-			{	"?++",		"++",	"_operator_postincr",		OT_POSTFIXASSIGN	},
-			{	"?--",		"--",	"_operator_postdecr",		OT_POSTFIXASSIGN	},
-			{	"*?",		"*",	"_operator_deref",			OT_PREFIX		},
-			{	"+?",		"+",	"_operator_unaryplus",		OT_PREFIX		},
-			{	"-?",		"-",	"_operator_unaryminus",		OT_PREFIX		},
-			{	"~?",		"~",	"_operator_bitnot",			OT_PREFIX		},
-			{	"!?",		"!",	"_operator_lognot",			OT_PREFIX		},
-			{	"++?",		"++",	"_operator_preincr",		OT_PREFIXASSIGN		},
-			{	"--?",		"--",	"_operator_predecr",		OT_PREFIXASSIGN		},
-			{	"?*?",		"*",	"_operator_multiply",		OT_INFIX		},
-			{	"?/?",		"/",	"_operator_divide",			OT_INFIX		},
-			{	"?%?",		"%",	"_operator_modulus",		OT_INFIX		},
-			{	"?+?",		"+",	"_operator_add",			OT_INFIX		},
-			{	"?-?",		"-",	"_operator_subtract",		OT_INFIX		},
-			{	"?<<?",		"<<",	"_operator_shiftleft",		OT_INFIX		},
-			{	"?>>?",		">>",	"_operator_shiftright",		OT_INFIX		},
-			{	"?<?",		"<",	"_operator_less",			OT_INFIX		},
-			{	"?>?",		">",	"_operator_greater",		OT_INFIX		},
-			{	"?<=?",		"<=",	"_operator_lessequal",		OT_INFIX		},
-			{	"?>=?",		">=",	"_operator_greaterequal",	OT_INFIX		},
-			{	"?==?",		"==",	"_operator_equal",			OT_INFIX		},
-			{	"?!=?",		"!=",	"_operator_notequal",		OT_INFIX		},
-			{	"?&?",		"&",	"_operator_bitand",			OT_INFIX		},
-			{	"?^?",		"^",	"_operator_bitxor",			OT_INFIX		},
-			{	"?|?",		"|",	"_operator_bitor",			OT_INFIX		},
-			{	"?=?",		"=",	"_operator_assign",			OT_INFIXASSIGN		},
-			{	"?*=?",		"*=",	"_operator_multassign",		OT_INFIXASSIGN		},
-			{	"?/=?",		"/=",	"_operator_divassign",		OT_INFIXASSIGN		},
-			{	"?%=?",		"%=",	"_operator_modassign",		OT_INFIXASSIGN		},
-			{	"?+=?",		"+=",	"_operator_addassign",		OT_INFIXASSIGN		},
-			{	"?-=?",		"-=",	"_operator_subassign",		OT_INFIXASSIGN		},
+			{	"?[?]",		"",		"_operator_index",				OT_INDEX			},
+			{	"?()",		"",		"_operator_call",				OT_CALL				},
+			{	"?++",		"++",	"_operator_postincr",			OT_POSTFIXASSIGN	},
+			{	"?--",		"--",	"_operator_postdecr",			OT_POSTFIXASSIGN	},
+			{	"*?",		"*",	"_operator_deref",				OT_PREFIX			},
+			{	"+?",		"+",	"_operator_unaryplus",			OT_PREFIX			},
+			{	"-?",		"-",	"_operator_unaryminus",			OT_PREFIX			},
+			{	"~?",		"~",	"_operator_bitnot",				OT_PREFIX			},
+			{	"!?",		"!",	"_operator_lognot",				OT_PREFIX			},
+			{	"++?",		"++",	"_operator_preincr",			OT_PREFIXASSIGN		},
+			{	"--?",		"--",	"_operator_predecr",			OT_PREFIXASSIGN		},
+			{	"?*?",		"*",	"_operator_multiply",			OT_INFIX			},
+			{	"?/?",		"/",	"_operator_divide",				OT_INFIX			},
+			{	"?%?",		"%",	"_operator_modulus",			OT_INFIX			},
+			{	"?+?",		"+",	"_operator_add",				OT_INFIX			},
+			{	"?-?",		"-",	"_operator_subtract",			OT_INFIX			},
+			{	"?<<?",		"<<",	"_operator_shiftleft",			OT_INFIX			},
+			{	"?>>?",		">>",	"_operator_shiftright",			OT_INFIX			},
+			{	"?<?",		"<",	"_operator_less",				OT_INFIX			},
+			{	"?>?",		">",	"_operator_greater",			OT_INFIX			},
+			{	"?<=?",		"<=",	"_operator_lessequal",			OT_INFIX			},
+			{	"?>=?",		">=",	"_operator_greaterequal",		OT_INFIX			},
+			{	"?==?",		"==",	"_operator_equal",				OT_INFIX			},
+			{	"?!=?",		"!=",	"_operator_notequal",			OT_INFIX			},
+			{	"?&?",		"&",	"_operator_bitand",				OT_INFIX			},
+			{	"?^?",		"^",	"_operator_bitxor",				OT_INFIX			},
+			{	"?|?",		"|",	"_operator_bitor",				OT_INFIX			},
+			{	"?=?",		"=",	"_operator_assign",				OT_INFIXASSIGN		},
+			{	"?*=?",		"*=",	"_operator_multassign",			OT_INFIXASSIGN		},
+			{	"?/=?",		"/=",	"_operator_divassign",			OT_INFIXASSIGN		},
+			{	"?%=?",		"%=",	"_operator_modassign",			OT_INFIXASSIGN		},
+			{	"?+=?",		"+=",	"_operator_addassign",			OT_INFIXASSIGN		},
+			{	"?-=?",		"-=",	"_operator_subassign",			OT_INFIXASSIGN		},
 			{	"?<<=?",	"<<=",	"_operator_shiftleftassign",	OT_INFIXASSIGN		},
 			{	"?>>=?",	">>=",	"_operator_shiftrightassign",	OT_INFIXASSIGN		},
-			{	"?&=?",		"&=",	"_operator_bitandassign",	OT_INFIXASSIGN		},
-			{	"?^=?",		"^=",	"_operator_bitxorassign",	OT_INFIXASSIGN		},
-			{	"?|=?",		"|=",	"_operator_bitorassign",	OT_INFIXASSIGN		},
-			{	"0",		"0",	"_constant_zero",			OT_CONSTANT		},
-			{	"1",		"1",	"_constant_one",			OT_CONSTANT		}
+			{	"?&=?",		"&=",	"_operator_bitandassign",		OT_INFIXASSIGN		},
+			{	"?^=?",		"^=",	"_operator_bitxorassign",		OT_INFIXASSIGN		},
+			{	"?|=?",		"|=",	"_operator_bitorassign",		OT_INFIXASSIGN		},
+			{	"&&",		"&&",	"&&",							OT_LABELADDRESS		},
+			{	"0",		"0",	"_constant_zero",				OT_CONSTANT			},
+			{	"1",		"1",	"_constant_one",				OT_CONSTANT			}
 		};
 
Index: src/CodeGen/OperatorTable.h
===================================================================
--- src/CodeGen/OperatorTable.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/CodeGen/OperatorTable.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 23:43:07 2015
-// Update Count     : 2
+// Last Modified On : Tue Jun 23 16:09:27 2015
+// Update Count     : 3
 //
 
@@ -29,4 +29,5 @@
 		OT_POSTFIXASSIGN,
 		OT_INFIXASSIGN,
+		OT_LABELADDRESS,
 		OT_CONSTANT
 	};
Index: src/CodeGen/module.mk
===================================================================
--- src/CodeGen/module.mk	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/CodeGen/module.mk	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,6 +1,24 @@
+######################### -*- Mode: Makefile-Gmake -*- ########################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## module.mk -- 
+##
+## Author           : Richard C. Bilson
+## Created On       : Mon Jun  1 17:49:17 2015
+## Last Modified By : Peter A. Buhr
+## Last Modified On : Tue Jun  2 11:17:02 2015
+## Update Count     : 3
+###############################################################################
+
+#SRC +=  ArgTweak/Rewriter.cc \
+#	ArgTweak/Mutate.cc
+
 SRC +=  CodeGen/Generate.cc \
-	CodeGen/CodeGenerator2.cc \
+	CodeGen/CodeGenerator.cc \
 	CodeGen/GenType.cc \
 	CodeGen/FixNames.cc \
-	CodeGen/OperatorTable.cc \
-	$(NULL)
+	CodeGen/OperatorTable.cc
Index: src/Common/SemanticError.h
===================================================================
--- src/Common/SemanticError.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Common/SemanticError.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 07:22:23 2015
-// Update Count     : 1
+// Last Modified On : Mon Jun  8 14:38:53 2015
+// Update Count     : 4
 //
 
@@ -19,5 +19,5 @@
 #include <exception>
 #include <string>
-#include <strstream>
+#include <sstream>
 #include <list>
 #include <iostream>
@@ -42,8 +42,8 @@
 template< typename T >
 SemanticError::SemanticError( const std::string &error, const T *obj ) {
-	std::ostrstream os;
+	std::ostringstream os;
 	os << "Error: " << error;
 	obj->print( os );
-	errors.push_back( std::string( os.str(), os.pcount() ) );
+	errors.push_back( os.str() );
 }
 
Index: src/Common/UniqueName.cc
===================================================================
--- src/Common/UniqueName.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Common/UniqueName.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,10 +10,10 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 07:23:41 2015
-// Update Count     : 1
+// Last Modified On : Mon Jun  8 14:47:49 2015
+// Update Count     : 3
 //
 
 #include <string>
-#include <strstream>
+#include <sstream>
 
 #include "UniqueName.h"
@@ -23,7 +23,7 @@
 
 std::string UniqueName::newName( const std::string &additional ) {
-	std::ostrstream os;
+	std::ostringstream os;
 	os << base << additional << count++;
-	return std::string( os.str(), os.pcount() );
+	return os.str();
 }
 
Index: src/Common/module.mk
===================================================================
--- src/Common/module.mk	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Common/module.mk	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,2 +1,18 @@
+######################### -*- Mode: Makefile-Gmake -*- ########################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## module.mk -- 
+##
+## Author           : Richard C. Bilson
+## Created On       : Mon Jun  1 17:49:17 2015
+## Last Modified By : Peter A. Buhr
+## Last Modified On : Mon Jun  1 17:51:23 2015
+## Update Count     : 1
+###############################################################################
+
 SRC += Common/SemanticError.cc \
        Common/UniqueName.cc
Index: src/Common/utility.h
===================================================================
--- src/Common/utility.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Common/utility.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 15:34:57 2015
-// Update Count     : 3
+// Last Modified On : Mon Jun  8 14:43:54 2015
+// Update Count     : 13
 //
 
@@ -18,5 +18,5 @@
 
 #include <iostream>
-#include <strstream>
+#include <sstream>
 #include <iterator>
 #include <string>
@@ -60,5 +60,5 @@
 	for ( typename Container::const_iterator i = container.begin(); i != container.end(); ++i ) {
 		if ( *i ) {
-			os << std::string(indent,  ' ');
+			os << std::string( indent,  ' ' );
 			(*i)->print( os, indent + 2 );
 			os << std::endl;
@@ -130,10 +130,7 @@
 template < typename T > 
 std::string toString ( T value ) {
-	std::ostrstream os;
-  
+	std::ostringstream os;
 	os << value; // << std::ends;
-	os.freeze( false );
-
-	return std::string(os.str(), os.pcount());
+	return os.str();
 }
 
@@ -151,6 +148,4 @@
 template< typename T >
 void replace( std::list< T > &org, typename std::list< T >::iterator pos, std::list< T > &with ) {
-	// TIter should secretly be a typename std::list< T >::iterator
-	//   ( g++ 3.2 issues a 'is implicitly a typename' warning if I make this explicit )
 	typename std::list< T >::iterator next = pos; advance( next, 1 );
 
@@ -196,4 +191,14 @@
 	while ( b1 != e1 && b2 != e2 )
 		*out++ = func(*b1++, *b2++);
+}
+
+// it's nice to actually be able to increment iterators by an arbitrary amount
+template< typename Iterator >
+Iterator operator+(Iterator i, int inc) {
+	while ( inc > 0 ) {
+		++i;
+		--inc;
+	}
+	return i;
 }
 
Index: src/ControlStruct/ChooseMutator.cc
===================================================================
--- src/ControlStruct/ChooseMutator.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/ControlStruct/ChooseMutator.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 15:31:39 2015
-// Update Count     : 2
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Jun 03 15:30:20 2015
+// Update Count     : 5
 //
 
@@ -44,4 +44,9 @@
 		std::list< Statement * > &stmts = caseStmt->get_statements();
 
+		// the difference between switch and choose is that switch has an implicit fallthrough
+		// to the next case, whereas choose has an implicit break at the end of the current case.
+		// thus to transform a choose statement into a switch, we only need to insert breaks at the
+		// end of any case that doesn't already end in a break and that doesn't end in a fallthru
+
 		if ( insideChoose ) {
 			BranchStmt *posBrk;
Index: src/ControlStruct/LabelFixer.cc
===================================================================
--- src/ControlStruct/LabelFixer.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/ControlStruct/LabelFixer.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 15:25:59 2015
-// Update Count     : 1
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Jun 24 16:24:34 2015
+// Update Count     : 141
 //
 
@@ -19,17 +19,38 @@
 #include "LabelFixer.h"
 #include "MLEMutator.h"
+#include "SynTree/Expression.h"
 #include "SynTree/Statement.h"
 #include "SynTree/Declaration.h"
 #include "utility.h"
 
+#include <iostream>
+
 namespace ControlStruct {
 	LabelFixer::Entry::Entry( Statement *to, Statement *from ) : definition ( to ) {
-		if ( from != 0 )
-			usage.push_back( from );
-	}
+		if ( from != 0 ) {
+			UsageLoc loc; loc.stmt = from;
+			usage.push_back( loc );
+		}
+	}
+
+	LabelFixer::Entry::Entry( Statement *to, Expression *from ) : definition ( to ) {
+		if ( from != 0 ) {
+			UsageLoc loc; loc.expr = from;
+			usage.push_back( loc );
+		}
+	}
+
 
 	bool LabelFixer::Entry::insideLoop() {
 		return ( dynamic_cast< ForStmt * > ( definition ) ||
-				 dynamic_cast< WhileStmt * > ( definition )  );
+			dynamic_cast< WhileStmt * > ( definition )  );
+	}
+
+	void LabelFixer::Entry::UsageLoc::accept( Visitor & visitor ) {
+		if ( dynamic_cast< Statement * >( stmt ) ) {
+			stmt->accept( visitor );
+		} else {
+			expr->accept( visitor );
+		}
 	}
 
@@ -40,6 +61,5 @@
 
 	void LabelFixer::visit( FunctionDecl *functionDecl ) {
-		if ( functionDecl->get_statements() != 0 )
-			functionDecl->get_statements()->accept( *this );
+		maybeAccept( functionDecl->get_statements(), *this );
 
 		MLEMutator mlemut( resolveJumps(), generator );
@@ -47,8 +67,11 @@
 	}
 
+	// prune to at most one label definition for each statement
 	void LabelFixer::visit( Statement *stmt ) {
+		currentStatement = stmt;
 		std::list< Label > &labels = stmt->get_labels();
 
 		if ( ! labels.empty() ) {
+			// only remember one label for each statement
 			Label current = setLabelsDef( labels, stmt );
 			labels.clear();
@@ -58,84 +81,166 @@
 
 	void LabelFixer::visit( BranchStmt *branchStmt ) {
-		visit ( ( Statement * )branchStmt );  // the labels this statement might have
-
-		Label target;
-		if ( (target = branchStmt->get_target()) != "" ) {
+		visit ( ( Statement * )branchStmt );
+
+		// for labeled branches, add an entry to the label table
+		Label target = branchStmt->get_target();
+		if ( target != "" ) {
 			setLabelsUsg( target, branchStmt );
-		} //else       /* computed goto or normal exit-loop statements */
-	}
-
+		}
+	}
+
+	void LabelFixer::visit( UntypedExpr *untyped ) {
+		if ( NameExpr * func = dynamic_cast< NameExpr * >( untyped->get_function() ) ) {
+			if ( func->get_name() == "&&" ) {
+				NameExpr * arg = dynamic_cast< NameExpr * >( untyped->get_args().front() );
+				Label target = arg->get_name();
+				assert( target != "" );
+				setLabelsUsg( target, untyped );
+			} else {
+				Visitor::visit( untyped );
+			}
+		}
+	}
+
+
+	// sets the definition of the labelTable entry to be the provided 
+	// statement for every label in the list parameter. Happens for every kind of statement
 	Label LabelFixer::setLabelsDef( std::list< Label > &llabel, Statement *definition ) {
 		assert( definition != 0 );
-		Entry *entry = new Entry( definition );
-		bool used = false;
-
-		for ( std::list< Label >::iterator i = llabel.begin(); i != llabel.end(); i++ )
-			if ( labelTable.find( *i ) == labelTable.end() )
-				{ used = true; labelTable[ *i ] = entry; } // undefined and unused
-			else
-				if ( labelTable[ *i ]->defined() )
-					throw SemanticError( "Duplicate definition of label: " + *i );
-				else
-					labelTable[ *i ]->set_definition( definition );
-
-		if ( ! used ) delete entry;
-
-		return labelTable[ llabel.front() ]->get_label();  // this *must* exist
-	}
-
-	Label LabelFixer::setLabelsUsg( Label orgValue, Statement *use ) {
+		assert( llabel.size() > 0 );
+
+		Entry * e = new Entry( definition );
+
+		for ( std::list< Label >::iterator i = llabel.begin(); i != llabel.end(); i++ ) {
+			if ( labelTable.find( *i ) == labelTable.end() ) {
+				// all labels on this statement need to use the same entry, so this should only be created once
+				// undefined and unused until now, add an entry
+				labelTable[ *i ] =  e;
+			} else if ( labelTable[ *i ]->defined() ) {
+				// defined twice, error
+				throw SemanticError( "Duplicate definition of label: " + *i );
+			}	else {
+				// used previously, but undefined until now -> link with this entry
+				Entry * oldEntry = labelTable[ *i ];
+				e->add_uses( *oldEntry );
+				labelTable[ *i ] = e;
+			} // if
+		} // for
+
+		// produce one of the labels attached to this statement to be 
+		// temporarily used as the canonical label
+		return labelTable[ llabel.front() ]->get_label();
+	}
+
+	// Remember all uses of a label.
+	template< typename UsageNode >
+	void LabelFixer::setLabelsUsg( Label orgValue, UsageNode *use ) {
 		assert( use != 0 );
 
-		if ( labelTable.find( orgValue ) != labelTable.end() )
-			labelTable[ orgValue ]->add_use( use );         // the label has been defined or used before
-		else
+		if ( labelTable.find( orgValue ) != labelTable.end() ) {
+			// the label has been defined or used before
+			labelTable[ orgValue ]->add_use( use );
+		} else {
 			labelTable[ orgValue ] = new Entry( 0, use );
-
-		return labelTable[ orgValue ]->get_label();
-	}
-
+		}
+	}
+
+	class LabelGetter : public Visitor {
+		public:
+		LabelGetter( Label &label ) : label( label ) {}
+
+		virtual void visit( BranchStmt * branchStmt ) {
+			label = branchStmt->get_target();
+		}
+
+		virtual void visit( UntypedExpr * untyped ) {
+			NameExpr * name = dynamic_cast< NameExpr * >( untyped->get_function() );
+			assert( name );
+			assert( name->get_name() == "&&" );
+			NameExpr * arg = dynamic_cast< NameExpr * >( untyped->get_args().front() );
+			assert( arg );
+			label = arg->get_name();
+		}		
+
+		private:
+			Label &label;
+	};
+
+	class LabelSetter : public Visitor {
+		public:
+		LabelSetter( Label label ) : label( label ) {}
+
+		virtual void visit( BranchStmt * branchStmt ) {
+			branchStmt->set_target( label );
+		}
+
+		virtual void visit( UntypedExpr * untyped ) {
+			NameExpr * name = dynamic_cast< NameExpr * >( untyped->get_function() );
+			assert( name );
+			assert( name->get_name() == "&&" );
+			NameExpr * arg = dynamic_cast< NameExpr * >( untyped->get_args().front() );
+			assert( arg );
+			arg->set_name( label );
+		}
+
+	private:
+		Label label;
+	};
+
+	// Ultimately builds a table that maps a label to its defining statement.
+	// In the process, 
 	std::map<Label, Statement * > *LabelFixer::resolveJumps() throw ( SemanticError ) {
 		std::map< Statement *, Entry * > def_us;
 
-		for ( std::map< Label, Entry *>::iterator i = labelTable.begin(); i != labelTable.end(); i++ ) {
+		// combine the entries for all labels that target the same location
+		for ( std::map< Label, Entry *>::iterator i = labelTable.begin(); i != labelTable.end(); ++i ) {
 			Entry *e = i->second;
 
-			if ( def_us.find ( e->get_definition() ) == def_us.end() )
+			if ( def_us.find ( e->get_definition() ) == def_us.end() ) {
 				def_us[ e->get_definition() ] = e;
-			else
-				if ( e->used() )
-					def_us[ e->get_definition() ]->add_uses( e->get_uses() );
-		}
-
-		// get rid of labelTable
-		for ( std::map< Statement *, Entry * >::iterator i = def_us.begin(); i != def_us.end(); i++ ) {
+			} else if ( e->used() ) {
+				def_us[ e->get_definition() ]->add_uses( *e );
+			}
+		}
+
+		// create a unique label for each target location. 
+		for ( std::map< Statement *, Entry * >::iterator i = def_us.begin(); i != def_us.end(); ++i ) {
 			Statement *to = (*i).first;
-			std::list< Statement *> &from = (*i).second->get_uses();
-			Label finalLabel = generator->newLabel();
-			(*i).second->set_label( finalLabel );
-
+			Entry * entry = (*i).second;
+			std::list< Entry::UsageLoc > &from = entry->get_uses();
+
+			// no label definition found
 			if ( to == 0 ) {
-				BranchStmt *first_use = dynamic_cast<BranchStmt *>(from.back());
-				Label undef("");
-				if ( first_use != 0 )
-					undef = first_use->get_target();
+				Label undef;
+				LabelGetter getLabel( undef );
+				from.back().accept( getLabel );
+				// Label undef = getLabel( from.back()->get_target() );
 				throw SemanticError ( "'" + undef + "' label not defined");
-			}
+			} // if
+
+			// generate a new label, and attach it to its defining statement as the only label on that statement
+			Label finalLabel = generator->newLabel( to->get_labels().back() );
+			entry->set_label( finalLabel );
 
 			to->get_labels().clear();
 			to->get_labels().push_back( finalLabel );
 
-			for ( std::list< Statement *>::iterator j = from.begin(); j != from.end(); j++ ) {
-				BranchStmt *jumpTo = dynamic_cast< BranchStmt * > ( *j );
-				assert( jumpTo != 0 );
-				jumpTo->set_target( finalLabel );
+			// redirect each of the source branch statements to the new target label
+			for ( std::list< Entry::UsageLoc >::iterator j = from.begin(); j != from.end(); ++j ) {
+				LabelSetter setLabel( finalLabel );
+				(*j).accept( setLabel );
+				// setLabel( *j, finalLabel );
+
+				// BranchStmt *jump = *j;
+				// assert( jump != 0 );
+				// jump->set_target( finalLabel );
 			} // for
 		} // for
 
-		// reverse table
+		// create a table where each label maps to its defining statement
 		std::map< Label, Statement * > *ret = new std::map< Label, Statement * >();
-		for ( std::map< Statement *, Entry * >::iterator i = def_us.begin(); i != def_us.end(); i++ ) 
+		for ( std::map< Statement *, Entry * >::iterator i = def_us.begin(); i != def_us.end(); ++i ) {
 			(*ret)[ (*i).second->get_label() ] = (*i).first;
+		}
 
 		return ret;
Index: src/ControlStruct/LabelFixer.h
===================================================================
--- src/ControlStruct/LabelFixer.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/ControlStruct/LabelFixer.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 15:31:55 2015
-// Update Count     : 3
+// Last Modified By : Rob Schluntz
+// Last Modified On : Tue Jun 23 15:47:25 2015
+// Update Count     : 28
 //
 
@@ -53,12 +53,23 @@
 		virtual void visit( DeclStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
 		virtual void visit( BranchStmt *branchStmt );
+		virtual void visit( UntypedExpr *untyped );
 
 		Label setLabelsDef( std::list< Label > &, Statement *definition );
-		Label setLabelsUsg( Label, Statement *usage = 0 );
+		template< typename UsageNode >
+		void setLabelsUsg( Label, UsageNode *usage = 0 );
 
 	  private:
 		class Entry {
-		  public:
-			Entry( Statement *to = 0, Statement *from = 0 );
+			public:
+			union UsageLoc {
+				Statement * stmt;
+				Expression * expr;
+
+				void accept( Visitor &visitor );
+			};
+
+			Entry( Statement *to ) : definition( to ) {}
+			Entry( Statement *to, Statement *from );
+			Entry( Statement *to, Expression *from );
 			bool used() { return ( usage.empty() ); }
 			bool defined() { return ( definition != 0 ); }
@@ -66,21 +77,31 @@
 
 			Label get_label() const { return label; }
+			void set_label( Label lab ) { label = lab; }
+
 			Statement *get_definition() const { return definition; }
-			std::list< Statement *> &get_uses() { return usage; }
-
-			void add_use ( Statement *use ) { usage.push_back( use ); }
-			void add_uses ( std::list<Statement *> uses ) { usage.insert( usage.end(), uses.begin(), uses.end() ); }
 			void set_definition( Statement *def ) { definition = def; }
 
-			void set_label( Label lab ) { label = lab; }
-			Label gset_label() const { return label; }
+			std::list< UsageLoc > &get_uses() { return usage; }
+			void add_use( Statement *use ) {
+				UsageLoc loc;
+				loc.stmt = use;
+				usage.push_back( loc ); 
+			}
+			void add_use( Expression *use ) {
+				UsageLoc loc;
+				loc.expr = use;
+				usage.push_back( loc ); 				
+			}
+
+			void add_uses ( Entry &other ) { usage.insert( usage.end(), other.usage.begin(), usage.end() ); }
 		  private:
 			Label label;  
 			Statement *definition;
-			std::list<Statement *> usage;
+			std::list<UsageLoc> usage;
 		};
 	          
 		std::map < Label, Entry *> labelTable;
 		LabelGenerator *generator;
+		Statement * currentStatement;
 	};
 } // namespace ControlStruct
Index: src/ControlStruct/LabelGenerator.cc
===================================================================
--- src/ControlStruct/LabelGenerator.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/ControlStruct/LabelGenerator.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,10 +10,10 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 15:32:04 2015
-// Update Count     : 2
+// Last Modified On : Tue Jun 23 12:18:34 2015
+// Update Count     : 13
 //
 
 #include <iostream>
-#include <strstream>
+#include <sstream>
 
 #include "LabelGenerator.h"
@@ -29,9 +29,8 @@
 	}
 
-	Label LabelGenerator::newLabel() {
-		std::ostrstream os;
-		os << "__L" << current++ << "__";// << std::ends;
-		os.freeze( false );
-		std::string ret = std::string (os.str(), os.pcount());
+	Label LabelGenerator::newLabel( std::string suffix ) {
+		std::ostringstream os;
+		os << "__L" << current++ << "__" << suffix;
+		std::string ret = os.str();
 		return Label( ret );
 	}
Index: src/ControlStruct/LabelGenerator.h
===================================================================
--- src/ControlStruct/LabelGenerator.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/ControlStruct/LabelGenerator.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 15:33:20 2015
-// Update Count     : 3
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Jun 03 14:16:26 2015
+// Update Count     : 5
 //
 
@@ -18,4 +18,5 @@
 
 #include "SynTree/SynTree.h"
+#include <string>
 
 namespace ControlStruct {
@@ -23,5 +24,5 @@
 	  public:
 		static LabelGenerator *getGenerator();
-		Label newLabel();
+		Label newLabel(std::string suffix = "");
 		void reset() { current = 0; }
 		void rewind() { current--; }
Index: src/ControlStruct/LabelTypeChecker.cc
===================================================================
--- src/ControlStruct/LabelTypeChecker.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/ControlStruct/LabelTypeChecker.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 15:32:15 2015
-// Update Count     : 2
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Jun 24 16:24:48 2015
+// Update Count     : 3
 //
 
@@ -29,5 +29,5 @@
 		NameExpr *fname;
 		if ( ((fname = dynamic_cast<NameExpr *>(untypedExpr->get_function())) != 0) 
-			 && fname->get_name() == std::string("LabAddress") )
+			 && fname->get_name() == std::string("&&") )
 			std::cerr << "Taking the label of an address." << std::endl;
 		else {
Index: src/ControlStruct/MLEMutator.cc
===================================================================
--- src/ControlStruct/MLEMutator.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/ControlStruct/MLEMutator.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 15:32:26 2015
-// Update Count     : 2
+// Last Modified By : Rob Schluntz
+// Last Modified On : Thu Jun 04 15:12:33 2015
+// Update Count     : 173
 //
 
@@ -19,4 +19,5 @@
 #include "MLEMutator.h"
 #include "SynTree/Statement.h"
+#include "SynTree/Expression.h"
 
 namespace ControlStruct {
@@ -26,69 +27,124 @@
 	}
 
-	CompoundStmt* MLEMutator::mutate( CompoundStmt *cmpndStmt ) {
-		bool labeledBlock = false;
-		if ( !((cmpndStmt->get_labels()).empty()) ) {
-			labeledBlock = true;
-			enclosingBlocks.push_back( Entry( cmpndStmt ) );
-		} // if
-
-		std::list< Statement * > &kids = cmpndStmt->get_kids();
+	// break labels have to come after the statement they break out of, 
+	// so mutate a statement, then if they inform us through the breakLabel field
+	// tha they need a place to jump to on a break statement, add the break label 
+	// to the body of statements
+	void MLEMutator::fixBlock( std::list< Statement * > &kids ) {
 		for ( std::list< Statement * >::iterator k = kids.begin(); k != kids.end(); k++ ) {
 			*k = (*k)->acceptMutator(*this);
 
 			if ( ! get_breakLabel().empty() ) {
-				std::list< Statement * >::iterator next = k; next++;
+				std::list< Statement * >::iterator next = k+1;
 				if ( next == kids.end() ) {
 					std::list<Label> ls; ls.push_back( get_breakLabel() );
 					kids.push_back( new NullStmt( ls ) );
-				} else
+				} else {
 					(*next)->get_labels().push_back( get_breakLabel() );
+				}
 
 				set_breakLabel("");
 			} // if
 		} // for
+	}
+
+	CompoundStmt* MLEMutator::mutate( CompoundStmt *cmpndStmt ) {
+		bool labeledBlock = !(cmpndStmt->get_labels().empty());
+		if ( labeledBlock ) {
+			Label brkLabel = generator->newLabel("blockBreak");
+			enclosingBlocks.push_back( Entry( cmpndStmt, brkLabel ) );
+		} // if
+
+		// a child statement may set the break label
+		// - if they do, attach it to the next statement
+		std::list< Statement * > &kids = cmpndStmt->get_kids();
+		fixBlock( kids );
 
 		if ( labeledBlock ) {
 			assert( ! enclosingBlocks.empty() );
-			if ( ! enclosingBlocks.back().get_breakExit().empty() )
-				set_breakLabel( enclosingBlocks.back().get_breakExit() );
+			if ( ! enclosingBlocks.back().useBreakExit().empty() ) {
+				set_breakLabel( enclosingBlocks.back().useBreakExit() );
+			}
 			enclosingBlocks.pop_back();
 		} // if
 
-		//mutateAll( cmpndStmt->get_kids(), *this );
 		return cmpndStmt;
 	}
 
-	Statement *MLEMutator::mutate( WhileStmt *whileStmt ) {
-		enclosingLoops.push_back( Entry( whileStmt ) );
-		whileStmt->set_body ( whileStmt->get_body()->acceptMutator( *this ) );
-
+	template< typename LoopClass >
+	Statement *MLEMutator::handleLoopStmt( LoopClass *loopStmt ) {
+		// remember this as the most recent enclosing loop, then mutate 
+		// the body of the loop -- this will determine whether brkLabel
+		// and contLabel are used with branch statements
+		// and will recursively do the same to nested loops
+		Label brkLabel = generator->newLabel("loopBreak");
+		Label contLabel = generator->newLabel("loopContinue");
+		enclosingLoops.push_back( Entry( loopStmt, brkLabel, contLabel ) );
+		loopStmt->set_body ( loopStmt->get_body()->acceptMutator( *this ) );
+
+		// sanity check that the enclosing loops have been popped correctly
 		Entry &e = enclosingLoops.back();
-		assert ( e == whileStmt );
-		whileStmt->set_body( mutateLoop( whileStmt->get_body(), e ) );
+		assert ( e == loopStmt );
+
+		// this will take the necessary steps to add definitions of the previous
+		// two labels, if they are used.
+		loopStmt->set_body( mutateLoop( loopStmt->get_body(), e ) );
 		enclosingLoops.pop_back();
 
-		return whileStmt;
-	}
-
-	Statement *MLEMutator::mutate( ForStmt *forStmt ) {
-		enclosingLoops.push_back( Entry( forStmt ) );
-		maybeMutate( forStmt->get_body(), *this );
-
-		Entry &e = enclosingLoops.back();
-		assert ( e == forStmt );
-		forStmt->set_body( mutateLoop( forStmt->get_body(), e ) );
-		enclosingLoops.pop_back();
-
-		return forStmt;
+		return loopStmt;
+	}
+
+	Statement *MLEMutator::mutate( CaseStmt *caseStmt ) {
+		caseStmt->set_condition( maybeMutate( caseStmt->get_condition(), *this ) );
+		fixBlock( caseStmt->get_statements() );
+
+		return caseStmt;
+	}
+
+	template< typename SwitchClass >
+	Statement *MLEMutator::handleSwitchStmt( SwitchClass *switchStmt ) {
+		// generate a label for breaking out of a labeled switch 
+		Label brkLabel = generator->newLabel("switchBreak");
+		enclosingSwitches.push_back( Entry(switchStmt, brkLabel) );
+		mutateAll( switchStmt->get_branches(), *this ); 
+
+		Entry &e = enclosingSwitches.back();
+		assert ( e == switchStmt );
+
+		// only generate break label if labeled break is used
+		if (e.isBreakUsed()) {
+			// for the purposes of keeping switch statements uniform (i.e. all statements that are 
+			// direct children of a switch should be CastStmts), append the exit label + break to the 
+			// last case statement; create a default case if there are no cases
+			std::list< Statement * > &branches = switchStmt->get_branches();
+			if ( branches.empty() ) {
+				branches.push_back( CaseStmt::makeDefault() );
+			}
+
+			if ( CaseStmt * c = dynamic_cast< CaseStmt * >( branches.back() ) ) {
+				std::list<Label> temp; temp.push_back( brkLabel );
+				c->get_statements().push_back( new BranchStmt( temp, Label(""), BranchStmt::Break ) );
+			} else assert(0); // as of this point, all branches of a switch are still CaseStmts
+		}
+
+		assert ( enclosingSwitches.back() == switchStmt );
+		enclosingSwitches.pop_back();
+		return switchStmt;
 	}
 
 	Statement *MLEMutator::mutate( BranchStmt *branchStmt ) throw ( SemanticError ) {
+		std::string originalTarget = branchStmt->get_originalTarget();
+
 		if ( branchStmt->get_type() == BranchStmt::Goto )
 			return branchStmt;
 
 		// test if continue target is a loop
-		if ( branchStmt->get_type() == BranchStmt::Continue && enclosingLoops.empty() )
-			throw SemanticError( "'continue' outside a loop" );
+		if ( branchStmt->get_type() == BranchStmt::Continue) {
+			if ( enclosingLoops.empty() ) {
+				throw SemanticError( "'continue' outside a loop" );
+			} else if ( std::find( enclosingLoops.begin(), enclosingLoops.end(), (*targetTable)[branchStmt->get_target()] ) == enclosingLoops.end() ) {
+				throw SemanticError( "'continue' target label must be an enclosing loop: " + originalTarget );
+			}
+		}
 
 		if ( branchStmt->get_type() == BranchStmt::Break && (enclosingLoops.empty() && enclosingSwitches.empty() && enclosingBlocks.empty() ) )
@@ -98,5 +154,5 @@
 
 		if ( targetTable->find( branchStmt->get_target() ) == targetTable->end() )
-			throw SemanticError("The label defined in the exit loop statement does not exist." );  // shouldn't happen (since that's already checked)
+			throw SemanticError("The label defined in the exit loop statement does not exist: " + originalTarget );  // shouldn't happen (since that's already checked)
 
 		std::list< Entry >::iterator check;
@@ -106,62 +162,30 @@
 				// neither in loop nor in block, checking if in switch/choose
 				if ( (check = std::find( enclosingSwitches.begin(), enclosingSwitches.end(), (*targetTable)[branchStmt->get_target()] )) == enclosingSwitches.end() )
-					throw SemanticError("The target specified in the exit loop statement does not correspond to an enclosing loop.");
-
+					throw SemanticError("The target specified in the exit loop statement does not correspond to an enclosing control structure: " + originalTarget );
+
+		// what about exiting innermost block or switch???
 		if ( enclosingLoops.back() == (*check) )
 			return branchStmt;				// exit the innermost loop (labels unnecessary)
 
-		Label newLabel;
+		// branch error checks, get the appropriate label name and create a goto
+		Label exitLabel;
 		switch ( branchStmt->get_type() ) {
 		  case BranchStmt::Break:
-			if ( check->get_breakExit() != "" )
-				newLabel = check->get_breakExit();
-			else {
-				newLabel = generator->newLabel();
-				check->set_breakExit( newLabel );
-			} // if
-			break;
+				assert( check->useBreakExit() != "");
+				exitLabel = check->useBreakExit();
+				break;
 		  case BranchStmt::Continue:
-			if ( check->get_contExit() != "" )
-				newLabel = check->get_contExit();
-			else {
-				newLabel = generator->newLabel();
-				check->set_contExit( newLabel );
-			} // if
-			break;
+				assert( check->useContExit() != "");
+				exitLabel = check->useContExit();
+				break;
 		  default:
-			return 0;					// shouldn't be here
+				assert(0);					// shouldn't be here
 		} // switch
 
-		return new BranchStmt( std::list<Label>(), newLabel, BranchStmt::Goto );
-	}
-
-
-	Statement *MLEMutator::mutate( SwitchStmt *switchStmt ) {
-		Label brkLabel = generator->newLabel();
-		enclosingSwitches.push_back( Entry(switchStmt, "", brkLabel) );
-		mutateAll( switchStmt->get_branches(), *this ); {
-			// check if this is necessary (if there is a break to this point, otherwise do not generate
-			std::list<Label> temp; temp.push_back( brkLabel );
-			switchStmt->get_branches().push_back( new BranchStmt( temp, Label(""), BranchStmt::Break ) );
-		}
-		assert ( enclosingSwitches.back() == switchStmt );
-		enclosingSwitches.pop_back();
-		return switchStmt;
-	}
-
-	Statement *MLEMutator::mutate( ChooseStmt *switchStmt ) {
-		Label brkLabel = generator->newLabel();
-		enclosingSwitches.push_back( Entry(switchStmt,"", brkLabel) );
-		mutateAll( switchStmt->get_branches(), *this ); {
-			// check if this is necessary (if there is a break to this point, otherwise do not generate
-			std::list<Label> temp; temp.push_back( brkLabel );
-			switchStmt->get_branches().push_back( new BranchStmt( temp, Label(""), BranchStmt::Break ) );
-		}
-		assert ( enclosingSwitches.back() == switchStmt );
-		enclosingSwitches.pop_back();
-		return switchStmt;
+		return new BranchStmt( std::list<Label>(), exitLabel, BranchStmt::Goto );
 	}
 
 	Statement *MLEMutator::mutateLoop( Statement *bodyLoop, Entry &e ) {
+		// ensure loop body is a block
 		CompoundStmt *newBody;
 		if ( ! (newBody = dynamic_cast<CompoundStmt *>( bodyLoop )) ) {
@@ -170,39 +194,37 @@
 		} // if
 
-		Label endLabel = e.get_contExit();
-
-		if ( e.get_breakExit() != "" ) {
-			if ( endLabel == "" ) endLabel = generator->newLabel();
-			// check for whether this label is used or not, so as to not generate extraneous gotos
-			if (e.breakExitUsed)
-				newBody->get_kids().push_back( new BranchStmt( std::list< Label >(), endLabel, BranchStmt::Goto ) );
-			// xxx
-			//std::list< Label > ls; ls.push_back( e.get_breakExit() );
-			set_breakLabel( e.get_breakExit() );
-			//newBody->get_kids().push_back( new BranchStmt( ls, "", BranchStmt::Break ) );
-		} // if
-
-		if ( e.get_breakExit() != "" || e.get_contExit() != "" ) {
-			if (dynamic_cast< NullStmt *>( newBody->get_kids().back() ))
-				newBody->get_kids().back()->get_labels().push_back( endLabel );
-			else {
-				std::list < Label > ls; ls.push_back( endLabel );
-				newBody->get_kids().push_back( new NullStmt( ls ) );
-			} // if
-		} // if
+		// only generate these when needed
+
+		if ( e.isContUsed() ) {
+			// continue label goes in the body as the last statement
+			std::list< Label > labels; labels.push_back( e.useContExit() );
+			newBody->get_kids().push_back( new NullStmt( labels ) );			
+		}
+
+		if ( e.isBreakUsed() ) {
+			// break label goes after the loop -- it'll get set by the 
+			// outer mutator if we do this
+			set_breakLabel( e.useBreakExit() );			
+		}
 
 		return newBody;
 	}
 
-	//*** Entry's methods
-	void MLEMutator::Entry::set_contExit( Label l ) {
-		assert ( contExit == "" || contExit == l );
-		contExit = l;
-	}
-
-	void MLEMutator::Entry::set_breakExit( Label l ) {
-		assert ( breakExit == "" || breakExit == l );
-		breakExit = l;
-	}
+	Statement *MLEMutator::mutate( WhileStmt *whileStmt ) {
+		return handleLoopStmt( whileStmt );
+	}
+
+	Statement *MLEMutator::mutate( ForStmt *forStmt ) {
+		return handleLoopStmt( forStmt );
+	}
+
+	Statement *MLEMutator::mutate( SwitchStmt *switchStmt ) {
+		return handleSwitchStmt( switchStmt );
+	}
+
+	Statement *MLEMutator::mutate( ChooseStmt *switchStmt ) {
+		return handleSwitchStmt( switchStmt );		
+	}
+
 } // namespace ControlStruct
 
Index: src/ControlStruct/MLEMutator.h
===================================================================
--- src/ControlStruct/MLEMutator.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/ControlStruct/MLEMutator.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 15:32:39 2015
-// Update Count     : 3
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Jun 03 15:06:36 2015
+// Update Count     : 25
 //
 
@@ -38,4 +38,5 @@
 		Statement *mutate( BranchStmt *branchStmt ) throw ( SemanticError );
 
+		Statement *mutate( CaseStmt *caseStmt ); 
 		Statement *mutate( SwitchStmt *switchStmt );
 		Statement *mutate( ChooseStmt *switchStmt );
@@ -48,6 +49,6 @@
 		class Entry {
 		  public:
-			explicit Entry( Statement *_loop = 0, Label _contExit = Label(""), Label _breakExit = Label("") ) :
-				loop( _loop ), contExit( _contExit ), breakExit( _breakExit ), contExitUsed( false ), breakExitUsed( false ) {}
+			explicit Entry( Statement *_loop, Label _breakExit, Label _contExit = Label("") ) :
+				loop( _loop ), breakExit( _breakExit ), contExit( _contExit ), breakUsed(false), contUsed(false) {}
 
 			bool operator==( const Statement *stmt ) { return ( loop == stmt ); }
@@ -58,15 +59,14 @@
 			Statement *get_loop() const { return loop; }
 
-			Label get_contExit() const { return contExit; }
-			void set_contExit( Label );
+			Label useContExit() { contUsed = true; return contExit; }
+			Label useBreakExit() { breakUsed = true; return breakExit; }
 
-			Label get_breakExit() const { return breakExit; }
-			void set_breakExit( Label );
+			bool isContUsed() const { return contUsed; }
+			bool isBreakUsed() const { return breakUsed; }
 
 		  private:
 			Statement *loop;
-			Label contExit, breakExit;
-		  public: // hack, provide proper [sg]etters
-			bool contExitUsed, breakExitUsed;
+			Label breakExit, contExit;
+			bool breakUsed, contUsed;
 		};
 
@@ -75,4 +75,12 @@
 		Label breakLabel;
 		LabelGenerator *generator;
+
+		template< typename LoopClass >
+		Statement *handleLoopStmt( LoopClass *loopStmt );
+
+		template< typename SwitchClass > 
+		Statement *handleSwitchStmt( SwitchClass *switchStmt );
+
+		void fixBlock( std::list< Statement * > &kids );
 	};
 } // namespace ControlStruct
Index: src/ControlStruct/Mutate.cc
===================================================================
--- src/ControlStruct/Mutate.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/ControlStruct/Mutate.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 15:32:52 2015
-// Update Count     : 2
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Jun 03 23:08:43 2015
+// Update Count     : 5
 //
 
@@ -37,7 +37,15 @@
 	void mutate( std::list< Declaration * > translationUnit ) {
 		// ForExprMutator formut;
+
+		// normalizes label definitions and generates multi-level
+		// exit labels
 		LabelFixer lfix;
+
+		// transform choose statements into switch statements
 		ChooseMutator chmut;
+
+		// expand case ranges and turn fallthru into a null statement
 		CaseRangeMutator ranges;  // has to run after ChooseMutator
+
 		//ExceptMutator exc;
 		// LabelTypeChecker lbl;
Index: src/ControlStruct/module.mk
===================================================================
--- src/ControlStruct/module.mk	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/ControlStruct/module.mk	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,4 +1,20 @@
+######################### -*- Mode: Makefile-Gmake -*- ########################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## module.mk -- 
+##
+## Author           : Richard C. Bilson
+## Created On       : Mon Jun  1 17:49:17 2015
+## Last Modified By : Peter A. Buhr
+## Last Modified On : Mon Jun  1 17:51:45 2015
+## Update Count     : 1
+###############################################################################
+
 SRC +=  ControlStruct/LabelGenerator.cc \
-        ControlStruct/LabelFixer.cc \
+	ControlStruct/LabelFixer.cc \
         ControlStruct/MLEMutator.cc \
 	ControlStruct/CaseRangeMutator.cc \
@@ -6,5 +22,4 @@
 	ControlStruct/ChooseMutator.cc \
 	ControlStruct/ForExprMutator.cc \
-	ControlStruct/LabelTypeChecker.cc \
-	$(NULL)
+	ControlStruct/LabelTypeChecker.cc
 
Index: src/Designators/module.mk
===================================================================
--- src/Designators/module.mk	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Designators/module.mk	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,2 +1,17 @@
-SRC +=  Designators/Processor.cc \
-	$(NULL)
+######################### -*- Mode: Makefile-Gmake -*- ########################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## module.mk -- 
+##
+## Author           : Richard C. Bilson
+## Created On       : Mon Jun  1 17:49:17 2015
+## Last Modified By : Peter A. Buhr
+## Last Modified On : Mon Jun  1 17:52:06 2015
+## Update Count     : 1
+###############################################################################
+
+SRC += Designators/Processor.cc
Index: src/GenPoly/Box.cc
===================================================================
--- src/GenPoly/Box.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/GenPoly/Box.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 07:31:41 2015
-// Update Count     : 1
+// Last Modified On : Sat Jun 13 09:12:19 2015
+// Update Count     : 4
 //
 
@@ -26,5 +26,6 @@
 #include "ScrubTyVars.h"
 
-#include "SynTree/Declaration.h"
+#include "Parser/ParseNode.h"
+
 #include "SynTree/Type.h"
 #include "SynTree/Expression.h"
@@ -32,5 +33,7 @@
 #include "SynTree/Statement.h"
 #include "SynTree/Mutator.h"
+
 #include "ResolvExpr/TypeEnvironment.h"
+
 #include "SymTab/Mangler.h"
 
@@ -282,5 +285,5 @@
 
 		ObjectDecl *Pass1::makeTemporary( Type *type ) {
-			ObjectDecl *newObj = new ObjectDecl( tempNamer.newName(), Declaration::NoStorageClass, LinkageSpec::C, 0, type, 0 );
+			ObjectDecl *newObj = new ObjectDecl( tempNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, type, 0 );
 			stmtsToAdd.push_back( new DeclStmt( noLabels, newObj ) );
 			return newObj;
@@ -362,5 +365,5 @@
 					arg = new AddressExpr( arg );
 				} else {
-					ObjectDecl *newObj = new ObjectDecl( tempNamer.newName(), Declaration::NoStorageClass, LinkageSpec::C, 0, arg->get_results().front()->clone(), 0 );
+					ObjectDecl *newObj = new ObjectDecl( tempNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, arg->get_results().front()->clone(), 0 );
 					newObj->get_type()->get_qualifiers() = Type::Qualifiers();
 					stmtsToAdd.push_back( new DeclStmt( noLabels, newObj ) );
@@ -433,5 +436,5 @@
 				makeRetParm( adapter );
 			} // if
-			adapter->get_parameters().push_front( new ObjectDecl( "", Declaration::NoStorageClass, LinkageSpec::C, 0, new PointerType( Type::Qualifiers(), new FunctionType( Type::Qualifiers(), true ) ), 0 ) );
+			adapter->get_parameters().push_front( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::C, 0, new PointerType( Type::Qualifiers(), new FunctionType( Type::Qualifiers(), true ) ), 0 ) );
 			return adapter;
 		}
@@ -521,5 +524,5 @@
 			adapterBody->get_kids().push_back( bodyStmt );
 			std::string adapterName = makeAdapterName( mangleName );
-			return new FunctionDecl( adapterName, Declaration::NoStorageClass, LinkageSpec::C, adapterType, adapterBody, false );
+			return new FunctionDecl( adapterName, DeclarationNode::NoStorageClass, LinkageSpec::C, adapterType, adapterBody, false, false );
 		}
 
@@ -902,5 +905,5 @@
 				if ( adaptersDone.find( mangleName ) == adaptersDone.end() ) {
 					std::string adapterName = makeAdapterName( mangleName );
-					paramList.push_front( new ObjectDecl( adapterName, Declaration::NoStorageClass, LinkageSpec::C, 0, new PointerType( Type::Qualifiers(), makeAdapterType( *funType, scopeTyVars ) ), 0 ) );
+					paramList.push_front( new ObjectDecl( adapterName, DeclarationNode::NoStorageClass, LinkageSpec::C, 0, new PointerType( Type::Qualifiers(), makeAdapterType( *funType, scopeTyVars ) ), 0 ) );
 					adaptersDone.insert( adaptersDone.begin(), mangleName );
 				}
@@ -961,6 +964,6 @@
 			std::list< DeclarationWithType *>::iterator last = funcType->get_parameters().begin();
 			std::list< DeclarationWithType *> inferredParams;
-			ObjectDecl *newObj = new ObjectDecl( "", Declaration::NoStorageClass, LinkageSpec::C, 0, new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), 0 );
-///   ObjectDecl *newFunPtr = new ObjectDecl( "", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new FunctionType( Type::Qualifiers(), true ) ), 0 );
+			ObjectDecl *newObj = new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::C, 0, new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), 0 );
+///   ObjectDecl *newFunPtr = new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new FunctionType( Type::Qualifiers(), true ) ), 0 );
 			for ( std::list< TypeDecl *>::const_iterator tyParm = funcType->get_forall().begin(); tyParm != funcType->get_forall().end(); ++tyParm ) {
 				ObjectDecl *thisParm;
Index: src/GenPoly/Specialize.cc
===================================================================
--- src/GenPoly/Specialize.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/GenPoly/Specialize.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 07:55:09 2015
-// Update Count     : 4
+// Last Modified On : Sat Jun 13 15:54:07 2015
+// Update Count     : 6
 //
 
@@ -19,7 +19,8 @@
 #include "PolyMutator.h"
 
-#include "SynTree/Declaration.h"
+#include "Parser/ParseNode.h"
+
+#include "SynTree/Expression.h"
 #include "SynTree/Statement.h"
-#include "SynTree/Expression.h"
 #include "SynTree/Type.h"
 #include "SynTree/TypeSubstitution.h"
@@ -96,5 +97,5 @@
 					newEnv.applyFree( newType );
 				} // if
-				FunctionDecl *thunkFunc = new FunctionDecl( thunkNamer.newName(), Declaration::NoStorageClass, LinkageSpec::C, newType, new CompoundStmt( std::list< std::string >() ), false );
+				FunctionDecl *thunkFunc = new FunctionDecl( thunkNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, newType, new CompoundStmt( std::list< std::string >() ), false, false );
 				thunkFunc->fixUniqueId();
 
Index: src/GenPoly/module.mk
===================================================================
--- src/GenPoly/module.mk	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/GenPoly/module.mk	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,2 +1,18 @@
+######################### -*- Mode: Makefile-Gmake -*- ########################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## module.mk -- 
+##
+## Author           : Richard C. Bilson
+## Created On       : Mon Jun  1 17:49:17 2015
+## Last Modified By : Peter A. Buhr
+## Last Modified On : Mon Jun  1 17:52:30 2015
+## Update Count     : 1
+###############################################################################
+
 SRC += GenPoly/Box.cc \
        GenPoly/GenPoly.cc \
@@ -7,3 +23,2 @@
        GenPoly/CopyParams.cc \
        GenPoly/FindFunction.cc
-       
Index: src/InitTweak/module.mk
===================================================================
--- src/InitTweak/module.mk	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/InitTweak/module.mk	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,7 +1,22 @@
+######################### -*- Mode: Makefile-Gmake -*- ########################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## module.mk -- 
+##
+## Author           : Richard C. Bilson
+## Created On       : Mon Jun  1 17:49:17 2015
+## Last Modified By : Peter A. Buhr
+## Last Modified On : Mon Jun  1 17:52:49 2015
+## Update Count     : 1
+###############################################################################
+
 SRC += InitTweak/InitModel.cc \
        InitTweak/InitExpander.cc \
-       InitTweak/Mutate.cc     \
-       InitTweak/Association.cc     \
-       InitTweak/RemoveInit.cc     \
-	$(NULL)
+       InitTweak/Mutate.cc \
+       InitTweak/Association.cc \
+       InitTweak/RemoveInit.cc
 
Index: src/Makefile.am
===================================================================
--- src/Makefile.am	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Makefile.am	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,43 @@
+######################## -*- Mode: Makefile-Automake -*- ######################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## Makefile.am -- 
+##
+## Author           : Peter A. Buhr
+## Created On       : Sun May 31 08:51:46 2015
+## Last Modified By : Peter A. Buhr
+## Last Modified On : Sat Jun 13 08:22:14 2015
+## Update Count     : 17
+###############################################################################
+
+# create object files in directory with source files
+AUTOMAKE_OPTIONS = subdir-objects
+
+SRC = main.cc MakeLibCfa.cc
+
+# Is there a way to use a variable for the directory names?
+include ArgTweak/module.mk
+include CodeGen/module.mk
+include Common/module.mk
+include ControlStruct/module.mk
+include Designators/module.mk
+include GenPoly/module.mk
+include InitTweak/module.mk
+include Parser/module.mk
+include ResolvExpr/module.mk
+include SymTab/module.mk
+include SynTree/module.mk
+include Tuples/module.mk
+
+# put into lib for now
+cfa_cpplibdir = ${libdir}
+cfa_cpplib_PROGRAMS = cfa-cpp
+cfa_cpp_SOURCES = ${SRC}
+# need files Common/utility.h
+cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${srcdir}/Common
+
+CXXFLAGS = -g	# remove default -O2 to allow better debugging
Index: src/Makefile.in
===================================================================
--- src/Makefile.in	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Makefile.in	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,68 +1,2697 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+######################## -*- Mode: Makefile-Automake -*- ######################
+###############################################################################
+
 ######################### -*- Mode: Makefile-Gmake -*- ########################
-##
-## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-##
-## The contents of this file are covered under the licence agreement in the
-## file "LICENCE" distributed with Cforall.
-##
-## Makefile.in -- 
-##
-## Author           : Richard C. Bilson
-## Created On       : Sat May 16 08:37:37 2015
-## Last Modified By : Peter A. Buhr
-## Last Modified On : Thu May 21 21:17:32 2015
-## Update Count     : 3
 ###############################################################################
 
-# This makefile is adapted from Peter Miller's article "Recursive Make Considered Harmful"
-
-MODULES := Common Parser SynTree SymTab ResolvExpr CodeGen ControlStruct GenPoly Tuples InitTweak Designators # Try ArgTweak Explain
-TARGET := cfa-cpp
-
-all: ${TARGET}
-
-# look for include files in each of the modules
-CXX := @CXX@
-CXXFLAGS += -Wno-deprecated -Wall -g -DDEBUG_ALL -I. -I Common -MMD
-INSTALL=@INSTALL@
-
-# this is the back-end compiler, used to compile libcfa & builtins to link with user code
-BACKEND_CC := @BACKEND_CC@
-
-# extra libraries if required
-LIBS :=
-
-# each module will add to this
-SRC := main.cc MakeLibCfa.cc
-
-# other things that ought to be cleaned up
-EXTRA_OUTPUT := core
-
-# include the description for each module
-include ${patsubst %,%/module.mk,${MODULES}}
-
-# determine the object files
-OBJ := ${patsubst %.cc,%.o,${filter %.cc,${SRC}}} \
-       ${patsubst %.y,%.tab.o,${filter %.y,${SRC}}} \
-       ${patsubst %.l,%.yy.o,${filter %.l,${SRC}}}
-
-# include the C include dependencies
-DEPS := ${OBJ:.o=.d}
--include ${DEPS}
-
-# link the program
-${TARGET}: ${OBJ}
-	${PURIFY} ${CXX} -o $@ ${OBJ} ${LIBS}
-
-#installing
-install: ${TARGET}
-	${INSTALL} -d @CFA_LIBDIR@
-	${INSTALL} ${TARGET} @CFA_LIBDIR@
-
-# clean-up rule
-clean:
-	rm -f ${OBJ} ${DEPS} ${TARGET} tags ${EXTRA_OUTPUT}
-	find . -name "Expected*" -prune -o \( -name "*.tst" -o -name "report" \) -print | xargs rm -f
-	find . -name "core*" -print | xargs rm -f
-
-distclean: clean
+######################### -*- Mode: Makefile-Gmake -*- ########################
+###############################################################################
+
+#SRC +=  ArgTweak/Rewriter.cc \
+#	ArgTweak/Mutate.cc
+
+######################### -*- Mode: Makefile-Gmake -*- ########################
+###############################################################################
+
+######################### -*- Mode: Makefile-Gmake -*- ########################
+###############################################################################
+
+######################### -*- Mode: Makefile-Gmake -*- ########################
+###############################################################################
+
+######################### -*- Mode: Makefile-Gmake -*- ########################
+###############################################################################
+
+######################### -*- Mode: Makefile-Gmake -*- ########################
+###############################################################################
+
+######################### -*- Mode: Makefile-Gmake -*- ########################
+###############################################################################
+
+######################### -*- Mode: Makefile-Gmake -*- ########################
+###############################################################################
+
+######################### -*- Mode: Makefile-Gmake -*- ########################
+###############################################################################
+
+######################### -*- Mode: Makefile-Gmake -*- ########################
+###############################################################################
+
+######################### -*- Mode: Makefile-Gmake -*- ########################
+###############################################################################
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+DIST_COMMON = $(srcdir)/ArgTweak/module.mk $(srcdir)/CodeGen/module.mk \
+	$(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk \
+	$(srcdir)/Designators/module.mk $(srcdir)/GenPoly/module.mk \
+	$(srcdir)/InitTweak/module.mk $(srcdir)/Makefile.am \
+	$(srcdir)/Makefile.in $(srcdir)/Parser/module.mk \
+	$(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk \
+	$(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk \
+	Parser/lex.cc Parser/parser.cc Parser/parser.h
+cfa_cpplib_PROGRAMS = cfa-cpp$(EXEEXT)
+subdir = src
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(cfa_cpplibdir)"
+PROGRAMS = $(cfa_cpplib_PROGRAMS)
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_1 = cfa_cpp-main.$(OBJEXT) cfa_cpp-MakeLibCfa.$(OBJEXT) \
+	CodeGen/cfa_cpp-Generate.$(OBJEXT) \
+	CodeGen/cfa_cpp-CodeGenerator.$(OBJEXT) \
+	CodeGen/cfa_cpp-GenType.$(OBJEXT) \
+	CodeGen/cfa_cpp-FixNames.$(OBJEXT) \
+	CodeGen/cfa_cpp-OperatorTable.$(OBJEXT) \
+	Common/cfa_cpp-SemanticError.$(OBJEXT) \
+	Common/cfa_cpp-UniqueName.$(OBJEXT) \
+	ControlStruct/cfa_cpp-LabelGenerator.$(OBJEXT) \
+	ControlStruct/cfa_cpp-LabelFixer.$(OBJEXT) \
+	ControlStruct/cfa_cpp-MLEMutator.$(OBJEXT) \
+	ControlStruct/cfa_cpp-CaseRangeMutator.$(OBJEXT) \
+	ControlStruct/cfa_cpp-Mutate.$(OBJEXT) \
+	ControlStruct/cfa_cpp-ChooseMutator.$(OBJEXT) \
+	ControlStruct/cfa_cpp-ForExprMutator.$(OBJEXT) \
+	ControlStruct/cfa_cpp-LabelTypeChecker.$(OBJEXT) \
+	Designators/cfa_cpp-Processor.$(OBJEXT) \
+	GenPoly/cfa_cpp-Box.$(OBJEXT) \
+	GenPoly/cfa_cpp-GenPoly.$(OBJEXT) \
+	GenPoly/cfa_cpp-PolyMutator.$(OBJEXT) \
+	GenPoly/cfa_cpp-ScrubTyVars.$(OBJEXT) \
+	GenPoly/cfa_cpp-Lvalue.$(OBJEXT) \
+	GenPoly/cfa_cpp-Specialize.$(OBJEXT) \
+	GenPoly/cfa_cpp-CopyParams.$(OBJEXT) \
+	GenPoly/cfa_cpp-FindFunction.$(OBJEXT) \
+	InitTweak/cfa_cpp-InitModel.$(OBJEXT) \
+	InitTweak/cfa_cpp-InitExpander.$(OBJEXT) \
+	InitTweak/cfa_cpp-Mutate.$(OBJEXT) \
+	InitTweak/cfa_cpp-Association.$(OBJEXT) \
+	InitTweak/cfa_cpp-RemoveInit.$(OBJEXT) \
+	Parser/cfa_cpp-parser.$(OBJEXT) Parser/cfa_cpp-lex.$(OBJEXT) \
+	Parser/cfa_cpp-TypedefTable.$(OBJEXT) \
+	Parser/cfa_cpp-ParseNode.$(OBJEXT) \
+	Parser/cfa_cpp-DeclarationNode.$(OBJEXT) \
+	Parser/cfa_cpp-ExpressionNode.$(OBJEXT) \
+	Parser/cfa_cpp-StatementNode.$(OBJEXT) \
+	Parser/cfa_cpp-InitializerNode.$(OBJEXT) \
+	Parser/cfa_cpp-TypeData.$(OBJEXT) \
+	Parser/cfa_cpp-LinkageSpec.$(OBJEXT) \
+	Parser/cfa_cpp-parseutility.$(OBJEXT) \
+	Parser/cfa_cpp-Parser.$(OBJEXT) \
+	ResolvExpr/cfa_cpp-AlternativeFinder.$(OBJEXT) \
+	ResolvExpr/cfa_cpp-Alternative.$(OBJEXT) \
+	ResolvExpr/cfa_cpp-Unify.$(OBJEXT) \
+	ResolvExpr/cfa_cpp-PtrsAssignable.$(OBJEXT) \
+	ResolvExpr/cfa_cpp-CommonType.$(OBJEXT) \
+	ResolvExpr/cfa_cpp-ConversionCost.$(OBJEXT) \
+	ResolvExpr/cfa_cpp-CastCost.$(OBJEXT) \
+	ResolvExpr/cfa_cpp-PtrsCastable.$(OBJEXT) \
+	ResolvExpr/cfa_cpp-AdjustExprType.$(OBJEXT) \
+	ResolvExpr/cfa_cpp-AlternativePrinter.$(OBJEXT) \
+	ResolvExpr/cfa_cpp-Resolver.$(OBJEXT) \
+	ResolvExpr/cfa_cpp-ResolveTypeof.$(OBJEXT) \
+	ResolvExpr/cfa_cpp-RenameVars.$(OBJEXT) \
+	ResolvExpr/cfa_cpp-FindOpenVars.$(OBJEXT) \
+	ResolvExpr/cfa_cpp-PolyCost.$(OBJEXT) \
+	ResolvExpr/cfa_cpp-Occurs.$(OBJEXT) \
+	ResolvExpr/cfa_cpp-TypeEnvironment.$(OBJEXT) \
+	SymTab/cfa_cpp-IdTable.$(OBJEXT) \
+	SymTab/cfa_cpp-Indexer.$(OBJEXT) \
+	SymTab/cfa_cpp-Mangler.$(OBJEXT) \
+	SymTab/cfa_cpp-Validate.$(OBJEXT) \
+	SymTab/cfa_cpp-FixFunction.$(OBJEXT) \
+	SymTab/cfa_cpp-ImplementationType.$(OBJEXT) \
+	SynTree/cfa_cpp-Type.$(OBJEXT) \
+	SynTree/cfa_cpp-VoidType.$(OBJEXT) \
+	SynTree/cfa_cpp-BasicType.$(OBJEXT) \
+	SynTree/cfa_cpp-PointerType.$(OBJEXT) \
+	SynTree/cfa_cpp-ArrayType.$(OBJEXT) \
+	SynTree/cfa_cpp-FunctionType.$(OBJEXT) \
+	SynTree/cfa_cpp-ReferenceToType.$(OBJEXT) \
+	SynTree/cfa_cpp-TupleType.$(OBJEXT) \
+	SynTree/cfa_cpp-TypeofType.$(OBJEXT) \
+	SynTree/cfa_cpp-AttrType.$(OBJEXT) \
+	SynTree/cfa_cpp-Constant.$(OBJEXT) \
+	SynTree/cfa_cpp-Expression.$(OBJEXT) \
+	SynTree/cfa_cpp-TupleExpr.$(OBJEXT) \
+	SynTree/cfa_cpp-CommaExpr.$(OBJEXT) \
+	SynTree/cfa_cpp-TypeExpr.$(OBJEXT) \
+	SynTree/cfa_cpp-ApplicationExpr.$(OBJEXT) \
+	SynTree/cfa_cpp-AddressExpr.$(OBJEXT) \
+	SynTree/cfa_cpp-Statement.$(OBJEXT) \
+	SynTree/cfa_cpp-CompoundStmt.$(OBJEXT) \
+	SynTree/cfa_cpp-DeclStmt.$(OBJEXT) \
+	SynTree/cfa_cpp-Declaration.$(OBJEXT) \
+	SynTree/cfa_cpp-DeclarationWithType.$(OBJEXT) \
+	SynTree/cfa_cpp-ObjectDecl.$(OBJEXT) \
+	SynTree/cfa_cpp-FunctionDecl.$(OBJEXT) \
+	SynTree/cfa_cpp-AggregateDecl.$(OBJEXT) \
+	SynTree/cfa_cpp-NamedTypeDecl.$(OBJEXT) \
+	SynTree/cfa_cpp-TypeDecl.$(OBJEXT) \
+	SynTree/cfa_cpp-Initializer.$(OBJEXT) \
+	SynTree/cfa_cpp-Visitor.$(OBJEXT) \
+	SynTree/cfa_cpp-Mutator.$(OBJEXT) \
+	SynTree/cfa_cpp-CodeGenVisitor.$(OBJEXT) \
+	SynTree/cfa_cpp-TypeSubstitution.$(OBJEXT) \
+	Tuples/cfa_cpp-Mutate.$(OBJEXT) \
+	Tuples/cfa_cpp-AssignExpand.$(OBJEXT) \
+	Tuples/cfa_cpp-FunctionFixer.$(OBJEXT) \
+	Tuples/cfa_cpp-TupleAssignment.$(OBJEXT) \
+	Tuples/cfa_cpp-FunctionChecker.$(OBJEXT) \
+	Tuples/cfa_cpp-NameMatcher.$(OBJEXT)
+am_cfa_cpp_OBJECTS = $(am__objects_1)
+cfa_cpp_OBJECTS = $(am_cfa_cpp_OBJECTS)
+am__DEPENDENCIES_1 =
+cfa_cpp_DEPENDENCIES = $(am__DEPENDENCIES_1)
+cfa_cpp_LINK = $(CXXLD) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/automake/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
+@MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ ||
+LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS)
+YLWRAP = $(top_srcdir)/automake/ylwrap
+@MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ ||
+YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS)
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(cfa_cpp_SOURCES)
+DIST_SOURCES = $(cfa_cpp_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BACKEND_CC = @BACKEND_CC@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFA_BINDIR = @CFA_BINDIR@
+CFA_INCDIR = @CFA_INCDIR@
+CFA_LIBDIR = @CFA_LIBDIR@
+CFA_PREFIX = @CFA_PREFIX@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = -g	# remove default -O2 to allow better debugging
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GCC_PATH = @GCC_PATH@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# create object files in directory with source files
+AUTOMAKE_OPTIONS = subdir-objects
+SRC = main.cc MakeLibCfa.cc CodeGen/Generate.cc \
+	CodeGen/CodeGenerator.cc CodeGen/GenType.cc \
+	CodeGen/FixNames.cc CodeGen/OperatorTable.cc \
+	Common/SemanticError.cc Common/UniqueName.cc \
+	ControlStruct/LabelGenerator.cc ControlStruct/LabelFixer.cc \
+	ControlStruct/MLEMutator.cc ControlStruct/CaseRangeMutator.cc \
+	ControlStruct/Mutate.cc ControlStruct/ChooseMutator.cc \
+	ControlStruct/ForExprMutator.cc \
+	ControlStruct/LabelTypeChecker.cc Designators/Processor.cc \
+	GenPoly/Box.cc GenPoly/GenPoly.cc GenPoly/PolyMutator.cc \
+	GenPoly/ScrubTyVars.cc GenPoly/Lvalue.cc GenPoly/Specialize.cc \
+	GenPoly/CopyParams.cc GenPoly/FindFunction.cc \
+	InitTweak/InitModel.cc InitTweak/InitExpander.cc \
+	InitTweak/Mutate.cc InitTweak/Association.cc \
+	InitTweak/RemoveInit.cc Parser/parser.yy Parser/lex.ll \
+	Parser/TypedefTable.cc Parser/ParseNode.cc \
+	Parser/DeclarationNode.cc Parser/ExpressionNode.cc \
+	Parser/StatementNode.cc Parser/InitializerNode.cc \
+	Parser/TypeData.cc Parser/LinkageSpec.cc \
+	Parser/parseutility.cc Parser/Parser.cc \
+	ResolvExpr/AlternativeFinder.cc ResolvExpr/Alternative.cc \
+	ResolvExpr/Unify.cc ResolvExpr/PtrsAssignable.cc \
+	ResolvExpr/CommonType.cc ResolvExpr/ConversionCost.cc \
+	ResolvExpr/CastCost.cc ResolvExpr/PtrsCastable.cc \
+	ResolvExpr/AdjustExprType.cc ResolvExpr/AlternativePrinter.cc \
+	ResolvExpr/Resolver.cc ResolvExpr/ResolveTypeof.cc \
+	ResolvExpr/RenameVars.cc ResolvExpr/FindOpenVars.cc \
+	ResolvExpr/PolyCost.cc ResolvExpr/Occurs.cc \
+	ResolvExpr/TypeEnvironment.cc SymTab/IdTable.cc \
+	SymTab/Indexer.cc SymTab/Mangler.cc SymTab/Validate.cc \
+	SymTab/FixFunction.cc SymTab/ImplementationType.cc \
+	SynTree/Type.cc SynTree/VoidType.cc SynTree/BasicType.cc \
+	SynTree/PointerType.cc SynTree/ArrayType.cc \
+	SynTree/FunctionType.cc SynTree/ReferenceToType.cc \
+	SynTree/TupleType.cc SynTree/TypeofType.cc SynTree/AttrType.cc \
+	SynTree/Constant.cc SynTree/Expression.cc SynTree/TupleExpr.cc \
+	SynTree/CommaExpr.cc SynTree/TypeExpr.cc \
+	SynTree/ApplicationExpr.cc SynTree/AddressExpr.cc \
+	SynTree/Statement.cc SynTree/CompoundStmt.cc \
+	SynTree/DeclStmt.cc SynTree/Declaration.cc \
+	SynTree/DeclarationWithType.cc SynTree/ObjectDecl.cc \
+	SynTree/FunctionDecl.cc SynTree/AggregateDecl.cc \
+	SynTree/NamedTypeDecl.cc SynTree/TypeDecl.cc \
+	SynTree/Initializer.cc SynTree/Visitor.cc SynTree/Mutator.cc \
+	SynTree/CodeGenVisitor.cc SynTree/TypeSubstitution.cc \
+	Tuples/Mutate.cc Tuples/AssignExpand.cc \
+	Tuples/FunctionFixer.cc Tuples/TupleAssignment.cc \
+	Tuples/FunctionChecker.cc Tuples/NameMatcher.cc
+BUILT_SOURCES = Parser/parser.h
+AM_YFLAGS = -d -t -v
+cfa_cpp_LDADD = ${LEXLIB}	# yywrap
+MAINTAINERCLEANFILES = Parser/parser.output
+
+# Is there a way to use a variable for the directory names?
+
+# put into lib for now
+cfa_cpplibdir = ${libdir}
+cfa_cpp_SOURCES = ${SRC}
+# need files Common/utility.h
+cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${srcdir}/Common
+all: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .cc .ll .o .obj .yy
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/ArgTweak/module.mk $(srcdir)/CodeGen/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/Designators/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+$(srcdir)/ArgTweak/module.mk $(srcdir)/CodeGen/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/Designators/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk:
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-cfa_cpplibPROGRAMS: $(cfa_cpplib_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	test -z "$(cfa_cpplibdir)" || $(MKDIR_P) "$(DESTDIR)$(cfa_cpplibdir)"
+	@list='$(cfa_cpplib_PROGRAMS)'; test -n "$(cfa_cpplibdir)" || list=; \
+	for p in $$list; do echo "$$p $$p"; done | \
+	sed 's/$(EXEEXT)$$//' | \
+	while read p p1; do if test -f $$p; \
+	  then echo "$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+	sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+	    else { print "f", $$3 "/" $$4, $$1; } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	    test -z "$$files" || { \
+	      echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(cfa_cpplibdir)$$dir'"; \
+	      $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(cfa_cpplibdir)$$dir" || exit $$?; \
+	    } \
+	; done
+
+uninstall-cfa_cpplibPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(cfa_cpplib_PROGRAMS)'; test -n "$(cfa_cpplibdir)" || list=; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+	      -e 's/$$/$(EXEEXT)/' `; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(cfa_cpplibdir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(cfa_cpplibdir)" && rm -f $$files
+
+clean-cfa_cpplibPROGRAMS:
+	-test -z "$(cfa_cpplib_PROGRAMS)" || rm -f $(cfa_cpplib_PROGRAMS)
+CodeGen/$(am__dirstamp):
+	@$(MKDIR_P) CodeGen
+	@: > CodeGen/$(am__dirstamp)
+CodeGen/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) CodeGen/$(DEPDIR)
+	@: > CodeGen/$(DEPDIR)/$(am__dirstamp)
+CodeGen/cfa_cpp-Generate.$(OBJEXT): CodeGen/$(am__dirstamp) \
+	CodeGen/$(DEPDIR)/$(am__dirstamp)
+CodeGen/cfa_cpp-CodeGenerator.$(OBJEXT): CodeGen/$(am__dirstamp) \
+	CodeGen/$(DEPDIR)/$(am__dirstamp)
+CodeGen/cfa_cpp-GenType.$(OBJEXT): CodeGen/$(am__dirstamp) \
+	CodeGen/$(DEPDIR)/$(am__dirstamp)
+CodeGen/cfa_cpp-FixNames.$(OBJEXT): CodeGen/$(am__dirstamp) \
+	CodeGen/$(DEPDIR)/$(am__dirstamp)
+CodeGen/cfa_cpp-OperatorTable.$(OBJEXT): CodeGen/$(am__dirstamp) \
+	CodeGen/$(DEPDIR)/$(am__dirstamp)
+Common/$(am__dirstamp):
+	@$(MKDIR_P) Common
+	@: > Common/$(am__dirstamp)
+Common/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) Common/$(DEPDIR)
+	@: > Common/$(DEPDIR)/$(am__dirstamp)
+Common/cfa_cpp-SemanticError.$(OBJEXT): Common/$(am__dirstamp) \
+	Common/$(DEPDIR)/$(am__dirstamp)
+Common/cfa_cpp-UniqueName.$(OBJEXT): Common/$(am__dirstamp) \
+	Common/$(DEPDIR)/$(am__dirstamp)
+ControlStruct/$(am__dirstamp):
+	@$(MKDIR_P) ControlStruct
+	@: > ControlStruct/$(am__dirstamp)
+ControlStruct/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) ControlStruct/$(DEPDIR)
+	@: > ControlStruct/$(DEPDIR)/$(am__dirstamp)
+ControlStruct/cfa_cpp-LabelGenerator.$(OBJEXT):  \
+	ControlStruct/$(am__dirstamp) \
+	ControlStruct/$(DEPDIR)/$(am__dirstamp)
+ControlStruct/cfa_cpp-LabelFixer.$(OBJEXT):  \
+	ControlStruct/$(am__dirstamp) \
+	ControlStruct/$(DEPDIR)/$(am__dirstamp)
+ControlStruct/cfa_cpp-MLEMutator.$(OBJEXT):  \
+	ControlStruct/$(am__dirstamp) \
+	ControlStruct/$(DEPDIR)/$(am__dirstamp)
+ControlStruct/cfa_cpp-CaseRangeMutator.$(OBJEXT):  \
+	ControlStruct/$(am__dirstamp) \
+	ControlStruct/$(DEPDIR)/$(am__dirstamp)
+ControlStruct/cfa_cpp-Mutate.$(OBJEXT): ControlStruct/$(am__dirstamp) \
+	ControlStruct/$(DEPDIR)/$(am__dirstamp)
+ControlStruct/cfa_cpp-ChooseMutator.$(OBJEXT):  \
+	ControlStruct/$(am__dirstamp) \
+	ControlStruct/$(DEPDIR)/$(am__dirstamp)
+ControlStruct/cfa_cpp-ForExprMutator.$(OBJEXT):  \
+	ControlStruct/$(am__dirstamp) \
+	ControlStruct/$(DEPDIR)/$(am__dirstamp)
+ControlStruct/cfa_cpp-LabelTypeChecker.$(OBJEXT):  \
+	ControlStruct/$(am__dirstamp) \
+	ControlStruct/$(DEPDIR)/$(am__dirstamp)
+Designators/$(am__dirstamp):
+	@$(MKDIR_P) Designators
+	@: > Designators/$(am__dirstamp)
+Designators/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) Designators/$(DEPDIR)
+	@: > Designators/$(DEPDIR)/$(am__dirstamp)
+Designators/cfa_cpp-Processor.$(OBJEXT): Designators/$(am__dirstamp) \
+	Designators/$(DEPDIR)/$(am__dirstamp)
+GenPoly/$(am__dirstamp):
+	@$(MKDIR_P) GenPoly
+	@: > GenPoly/$(am__dirstamp)
+GenPoly/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) GenPoly/$(DEPDIR)
+	@: > GenPoly/$(DEPDIR)/$(am__dirstamp)
+GenPoly/cfa_cpp-Box.$(OBJEXT): GenPoly/$(am__dirstamp) \
+	GenPoly/$(DEPDIR)/$(am__dirstamp)
+GenPoly/cfa_cpp-GenPoly.$(OBJEXT): GenPoly/$(am__dirstamp) \
+	GenPoly/$(DEPDIR)/$(am__dirstamp)
+GenPoly/cfa_cpp-PolyMutator.$(OBJEXT): GenPoly/$(am__dirstamp) \
+	GenPoly/$(DEPDIR)/$(am__dirstamp)
+GenPoly/cfa_cpp-ScrubTyVars.$(OBJEXT): GenPoly/$(am__dirstamp) \
+	GenPoly/$(DEPDIR)/$(am__dirstamp)
+GenPoly/cfa_cpp-Lvalue.$(OBJEXT): GenPoly/$(am__dirstamp) \
+	GenPoly/$(DEPDIR)/$(am__dirstamp)
+GenPoly/cfa_cpp-Specialize.$(OBJEXT): GenPoly/$(am__dirstamp) \
+	GenPoly/$(DEPDIR)/$(am__dirstamp)
+GenPoly/cfa_cpp-CopyParams.$(OBJEXT): GenPoly/$(am__dirstamp) \
+	GenPoly/$(DEPDIR)/$(am__dirstamp)
+GenPoly/cfa_cpp-FindFunction.$(OBJEXT): GenPoly/$(am__dirstamp) \
+	GenPoly/$(DEPDIR)/$(am__dirstamp)
+InitTweak/$(am__dirstamp):
+	@$(MKDIR_P) InitTweak
+	@: > InitTweak/$(am__dirstamp)
+InitTweak/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) InitTweak/$(DEPDIR)
+	@: > InitTweak/$(DEPDIR)/$(am__dirstamp)
+InitTweak/cfa_cpp-InitModel.$(OBJEXT): InitTweak/$(am__dirstamp) \
+	InitTweak/$(DEPDIR)/$(am__dirstamp)
+InitTweak/cfa_cpp-InitExpander.$(OBJEXT): InitTweak/$(am__dirstamp) \
+	InitTweak/$(DEPDIR)/$(am__dirstamp)
+InitTweak/cfa_cpp-Mutate.$(OBJEXT): InitTweak/$(am__dirstamp) \
+	InitTweak/$(DEPDIR)/$(am__dirstamp)
+InitTweak/cfa_cpp-Association.$(OBJEXT): InitTweak/$(am__dirstamp) \
+	InitTweak/$(DEPDIR)/$(am__dirstamp)
+InitTweak/cfa_cpp-RemoveInit.$(OBJEXT): InitTweak/$(am__dirstamp) \
+	InitTweak/$(DEPDIR)/$(am__dirstamp)
+Parser/parser.h: Parser/parser.cc
+	@if test ! -f $@; then rm -f Parser/parser.cc; else :; fi
+	@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) Parser/parser.cc; else :; fi
+Parser/$(am__dirstamp):
+	@$(MKDIR_P) Parser
+	@: > Parser/$(am__dirstamp)
+Parser/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) Parser/$(DEPDIR)
+	@: > Parser/$(DEPDIR)/$(am__dirstamp)
+Parser/cfa_cpp-parser.$(OBJEXT): Parser/$(am__dirstamp) \
+	Parser/$(DEPDIR)/$(am__dirstamp)
+Parser/cfa_cpp-lex.$(OBJEXT): Parser/$(am__dirstamp) \
+	Parser/$(DEPDIR)/$(am__dirstamp)
+Parser/cfa_cpp-TypedefTable.$(OBJEXT): Parser/$(am__dirstamp) \
+	Parser/$(DEPDIR)/$(am__dirstamp)
+Parser/cfa_cpp-ParseNode.$(OBJEXT): Parser/$(am__dirstamp) \
+	Parser/$(DEPDIR)/$(am__dirstamp)
+Parser/cfa_cpp-DeclarationNode.$(OBJEXT): Parser/$(am__dirstamp) \
+	Parser/$(DEPDIR)/$(am__dirstamp)
+Parser/cfa_cpp-ExpressionNode.$(OBJEXT): Parser/$(am__dirstamp) \
+	Parser/$(DEPDIR)/$(am__dirstamp)
+Parser/cfa_cpp-StatementNode.$(OBJEXT): Parser/$(am__dirstamp) \
+	Parser/$(DEPDIR)/$(am__dirstamp)
+Parser/cfa_cpp-InitializerNode.$(OBJEXT): Parser/$(am__dirstamp) \
+	Parser/$(DEPDIR)/$(am__dirstamp)
+Parser/cfa_cpp-TypeData.$(OBJEXT): Parser/$(am__dirstamp) \
+	Parser/$(DEPDIR)/$(am__dirstamp)
+Parser/cfa_cpp-LinkageSpec.$(OBJEXT): Parser/$(am__dirstamp) \
+	Parser/$(DEPDIR)/$(am__dirstamp)
+Parser/cfa_cpp-parseutility.$(OBJEXT): Parser/$(am__dirstamp) \
+	Parser/$(DEPDIR)/$(am__dirstamp)
+Parser/cfa_cpp-Parser.$(OBJEXT): Parser/$(am__dirstamp) \
+	Parser/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/$(am__dirstamp):
+	@$(MKDIR_P) ResolvExpr
+	@: > ResolvExpr/$(am__dirstamp)
+ResolvExpr/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) ResolvExpr/$(DEPDIR)
+	@: > ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/cfa_cpp-AlternativeFinder.$(OBJEXT):  \
+	ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/cfa_cpp-Alternative.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/cfa_cpp-Unify.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/cfa_cpp-PtrsAssignable.$(OBJEXT):  \
+	ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/cfa_cpp-CommonType.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/cfa_cpp-ConversionCost.$(OBJEXT):  \
+	ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/cfa_cpp-CastCost.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/cfa_cpp-PtrsCastable.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/cfa_cpp-AdjustExprType.$(OBJEXT):  \
+	ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/cfa_cpp-AlternativePrinter.$(OBJEXT):  \
+	ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/cfa_cpp-Resolver.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/cfa_cpp-ResolveTypeof.$(OBJEXT):  \
+	ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/cfa_cpp-RenameVars.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/cfa_cpp-FindOpenVars.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/cfa_cpp-PolyCost.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/cfa_cpp-Occurs.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+ResolvExpr/cfa_cpp-TypeEnvironment.$(OBJEXT):  \
+	ResolvExpr/$(am__dirstamp) \
+	ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+SymTab/$(am__dirstamp):
+	@$(MKDIR_P) SymTab
+	@: > SymTab/$(am__dirstamp)
+SymTab/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) SymTab/$(DEPDIR)
+	@: > SymTab/$(DEPDIR)/$(am__dirstamp)
+SymTab/cfa_cpp-IdTable.$(OBJEXT): SymTab/$(am__dirstamp) \
+	SymTab/$(DEPDIR)/$(am__dirstamp)
+SymTab/cfa_cpp-Indexer.$(OBJEXT): SymTab/$(am__dirstamp) \
+	SymTab/$(DEPDIR)/$(am__dirstamp)
+SymTab/cfa_cpp-Mangler.$(OBJEXT): SymTab/$(am__dirstamp) \
+	SymTab/$(DEPDIR)/$(am__dirstamp)
+SymTab/cfa_cpp-Validate.$(OBJEXT): SymTab/$(am__dirstamp) \
+	SymTab/$(DEPDIR)/$(am__dirstamp)
+SymTab/cfa_cpp-FixFunction.$(OBJEXT): SymTab/$(am__dirstamp) \
+	SymTab/$(DEPDIR)/$(am__dirstamp)
+SymTab/cfa_cpp-ImplementationType.$(OBJEXT): SymTab/$(am__dirstamp) \
+	SymTab/$(DEPDIR)/$(am__dirstamp)
+SynTree/$(am__dirstamp):
+	@$(MKDIR_P) SynTree
+	@: > SynTree/$(am__dirstamp)
+SynTree/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) SynTree/$(DEPDIR)
+	@: > SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-Type.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-VoidType.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-BasicType.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-PointerType.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-ArrayType.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-FunctionType.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-ReferenceToType.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-TupleType.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-TypeofType.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-AttrType.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-Constant.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-Expression.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-TupleExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-CommaExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-TypeExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-ApplicationExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-AddressExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-Statement.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-CompoundStmt.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-DeclStmt.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-Declaration.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-DeclarationWithType.$(OBJEXT):  \
+	SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-ObjectDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-FunctionDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-AggregateDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-NamedTypeDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-TypeDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-Initializer.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-Visitor.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-Mutator.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-CodeGenVisitor.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+SynTree/cfa_cpp-TypeSubstitution.$(OBJEXT): SynTree/$(am__dirstamp) \
+	SynTree/$(DEPDIR)/$(am__dirstamp)
+Tuples/$(am__dirstamp):
+	@$(MKDIR_P) Tuples
+	@: > Tuples/$(am__dirstamp)
+Tuples/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) Tuples/$(DEPDIR)
+	@: > Tuples/$(DEPDIR)/$(am__dirstamp)
+Tuples/cfa_cpp-Mutate.$(OBJEXT): Tuples/$(am__dirstamp) \
+	Tuples/$(DEPDIR)/$(am__dirstamp)
+Tuples/cfa_cpp-AssignExpand.$(OBJEXT): Tuples/$(am__dirstamp) \
+	Tuples/$(DEPDIR)/$(am__dirstamp)
+Tuples/cfa_cpp-FunctionFixer.$(OBJEXT): Tuples/$(am__dirstamp) \
+	Tuples/$(DEPDIR)/$(am__dirstamp)
+Tuples/cfa_cpp-TupleAssignment.$(OBJEXT): Tuples/$(am__dirstamp) \
+	Tuples/$(DEPDIR)/$(am__dirstamp)
+Tuples/cfa_cpp-FunctionChecker.$(OBJEXT): Tuples/$(am__dirstamp) \
+	Tuples/$(DEPDIR)/$(am__dirstamp)
+Tuples/cfa_cpp-NameMatcher.$(OBJEXT): Tuples/$(am__dirstamp) \
+	Tuples/$(DEPDIR)/$(am__dirstamp)
+cfa-cpp$(EXEEXT): $(cfa_cpp_OBJECTS) $(cfa_cpp_DEPENDENCIES) $(EXTRA_cfa_cpp_DEPENDENCIES) 
+	@rm -f cfa-cpp$(EXEEXT)
+	$(cfa_cpp_LINK) $(cfa_cpp_OBJECTS) $(cfa_cpp_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+	-rm -f CodeGen/cfa_cpp-CodeGenerator.$(OBJEXT)
+	-rm -f CodeGen/cfa_cpp-FixNames.$(OBJEXT)
+	-rm -f CodeGen/cfa_cpp-GenType.$(OBJEXT)
+	-rm -f CodeGen/cfa_cpp-Generate.$(OBJEXT)
+	-rm -f CodeGen/cfa_cpp-OperatorTable.$(OBJEXT)
+	-rm -f Common/cfa_cpp-SemanticError.$(OBJEXT)
+	-rm -f Common/cfa_cpp-UniqueName.$(OBJEXT)
+	-rm -f ControlStruct/cfa_cpp-CaseRangeMutator.$(OBJEXT)
+	-rm -f ControlStruct/cfa_cpp-ChooseMutator.$(OBJEXT)
+	-rm -f ControlStruct/cfa_cpp-ForExprMutator.$(OBJEXT)
+	-rm -f ControlStruct/cfa_cpp-LabelFixer.$(OBJEXT)
+	-rm -f ControlStruct/cfa_cpp-LabelGenerator.$(OBJEXT)
+	-rm -f ControlStruct/cfa_cpp-LabelTypeChecker.$(OBJEXT)
+	-rm -f ControlStruct/cfa_cpp-MLEMutator.$(OBJEXT)
+	-rm -f ControlStruct/cfa_cpp-Mutate.$(OBJEXT)
+	-rm -f Designators/cfa_cpp-Processor.$(OBJEXT)
+	-rm -f GenPoly/cfa_cpp-Box.$(OBJEXT)
+	-rm -f GenPoly/cfa_cpp-CopyParams.$(OBJEXT)
+	-rm -f GenPoly/cfa_cpp-FindFunction.$(OBJEXT)
+	-rm -f GenPoly/cfa_cpp-GenPoly.$(OBJEXT)
+	-rm -f GenPoly/cfa_cpp-Lvalue.$(OBJEXT)
+	-rm -f GenPoly/cfa_cpp-PolyMutator.$(OBJEXT)
+	-rm -f GenPoly/cfa_cpp-ScrubTyVars.$(OBJEXT)
+	-rm -f GenPoly/cfa_cpp-Specialize.$(OBJEXT)
+	-rm -f InitTweak/cfa_cpp-Association.$(OBJEXT)
+	-rm -f InitTweak/cfa_cpp-InitExpander.$(OBJEXT)
+	-rm -f InitTweak/cfa_cpp-InitModel.$(OBJEXT)
+	-rm -f InitTweak/cfa_cpp-Mutate.$(OBJEXT)
+	-rm -f InitTweak/cfa_cpp-RemoveInit.$(OBJEXT)
+	-rm -f Parser/cfa_cpp-DeclarationNode.$(OBJEXT)
+	-rm -f Parser/cfa_cpp-ExpressionNode.$(OBJEXT)
+	-rm -f Parser/cfa_cpp-InitializerNode.$(OBJEXT)
+	-rm -f Parser/cfa_cpp-LinkageSpec.$(OBJEXT)
+	-rm -f Parser/cfa_cpp-ParseNode.$(OBJEXT)
+	-rm -f Parser/cfa_cpp-Parser.$(OBJEXT)
+	-rm -f Parser/cfa_cpp-StatementNode.$(OBJEXT)
+	-rm -f Parser/cfa_cpp-TypeData.$(OBJEXT)
+	-rm -f Parser/cfa_cpp-TypedefTable.$(OBJEXT)
+	-rm -f Parser/cfa_cpp-lex.$(OBJEXT)
+	-rm -f Parser/cfa_cpp-parser.$(OBJEXT)
+	-rm -f Parser/cfa_cpp-parseutility.$(OBJEXT)
+	-rm -f ResolvExpr/cfa_cpp-AdjustExprType.$(OBJEXT)
+	-rm -f ResolvExpr/cfa_cpp-Alternative.$(OBJEXT)
+	-rm -f ResolvExpr/cfa_cpp-AlternativeFinder.$(OBJEXT)
+	-rm -f ResolvExpr/cfa_cpp-AlternativePrinter.$(OBJEXT)
+	-rm -f ResolvExpr/cfa_cpp-CastCost.$(OBJEXT)
+	-rm -f ResolvExpr/cfa_cpp-CommonType.$(OBJEXT)
+	-rm -f ResolvExpr/cfa_cpp-ConversionCost.$(OBJEXT)
+	-rm -f ResolvExpr/cfa_cpp-FindOpenVars.$(OBJEXT)
+	-rm -f ResolvExpr/cfa_cpp-Occurs.$(OBJEXT)
+	-rm -f ResolvExpr/cfa_cpp-PolyCost.$(OBJEXT)
+	-rm -f ResolvExpr/cfa_cpp-PtrsAssignable.$(OBJEXT)
+	-rm -f ResolvExpr/cfa_cpp-PtrsCastable.$(OBJEXT)
+	-rm -f ResolvExpr/cfa_cpp-RenameVars.$(OBJEXT)
+	-rm -f ResolvExpr/cfa_cpp-ResolveTypeof.$(OBJEXT)
+	-rm -f ResolvExpr/cfa_cpp-Resolver.$(OBJEXT)
+	-rm -f ResolvExpr/cfa_cpp-TypeEnvironment.$(OBJEXT)
+	-rm -f ResolvExpr/cfa_cpp-Unify.$(OBJEXT)
+	-rm -f SymTab/cfa_cpp-FixFunction.$(OBJEXT)
+	-rm -f SymTab/cfa_cpp-IdTable.$(OBJEXT)
+	-rm -f SymTab/cfa_cpp-ImplementationType.$(OBJEXT)
+	-rm -f SymTab/cfa_cpp-Indexer.$(OBJEXT)
+	-rm -f SymTab/cfa_cpp-Mangler.$(OBJEXT)
+	-rm -f SymTab/cfa_cpp-Validate.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-AddressExpr.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-AggregateDecl.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-ApplicationExpr.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-ArrayType.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-AttrType.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-BasicType.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-CodeGenVisitor.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-CommaExpr.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-CompoundStmt.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-Constant.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-DeclStmt.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-Declaration.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-DeclarationWithType.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-Expression.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-FunctionDecl.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-FunctionType.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-Initializer.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-Mutator.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-NamedTypeDecl.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-ObjectDecl.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-PointerType.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-ReferenceToType.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-Statement.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-TupleExpr.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-TupleType.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-Type.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-TypeDecl.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-TypeExpr.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-TypeSubstitution.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-TypeofType.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-Visitor.$(OBJEXT)
+	-rm -f SynTree/cfa_cpp-VoidType.$(OBJEXT)
+	-rm -f Tuples/cfa_cpp-AssignExpand.$(OBJEXT)
+	-rm -f Tuples/cfa_cpp-FunctionChecker.$(OBJEXT)
+	-rm -f Tuples/cfa_cpp-FunctionFixer.$(OBJEXT)
+	-rm -f Tuples/cfa_cpp-Mutate.$(OBJEXT)
+	-rm -f Tuples/cfa_cpp-NameMatcher.$(OBJEXT)
+	-rm -f Tuples/cfa_cpp-TupleAssignment.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfa_cpp-MakeLibCfa.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfa_cpp-main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/cfa_cpp-FixNames.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/cfa_cpp-GenType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/cfa_cpp-Generate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/cfa_cpp-OperatorTable.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/cfa_cpp-SemanticError.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/cfa_cpp-UniqueName.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/cfa_cpp-CaseRangeMutator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/cfa_cpp-ChooseMutator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/cfa_cpp-ForExprMutator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/cfa_cpp-LabelFixer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/cfa_cpp-LabelGenerator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/cfa_cpp-LabelTypeChecker.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/cfa_cpp-MLEMutator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/cfa_cpp-Mutate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Designators/$(DEPDIR)/cfa_cpp-Processor.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/cfa_cpp-Box.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/cfa_cpp-CopyParams.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/cfa_cpp-FindFunction.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/cfa_cpp-GenPoly.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/cfa_cpp-Lvalue.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/cfa_cpp-PolyMutator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/cfa_cpp-ScrubTyVars.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/cfa_cpp-Specialize.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/cfa_cpp-Association.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/cfa_cpp-InitExpander.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/cfa_cpp-InitModel.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/cfa_cpp-Mutate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/cfa_cpp-RemoveInit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-DeclarationNode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-ExpressionNode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-InitializerNode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-LinkageSpec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-ParseNode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-Parser.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-StatementNode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-TypeData.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-TypedefTable.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-lex.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-parser.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-parseutility.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-AdjustExprType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-Alternative.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativeFinder.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativePrinter.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-CastCost.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-CommonType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-ConversionCost.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-FindOpenVars.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-Occurs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-PolyCost.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsAssignable.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsCastable.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-RenameVars.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-ResolveTypeof.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-Resolver.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-TypeEnvironment.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-Unify.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/cfa_cpp-FixFunction.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/cfa_cpp-IdTable.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/cfa_cpp-ImplementationType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/cfa_cpp-Indexer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/cfa_cpp-Mangler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/cfa_cpp-Validate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-AddressExpr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-AggregateDecl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-ApplicationExpr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-ArrayType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-AttrType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-BasicType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-CodeGenVisitor.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-CommaExpr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-CompoundStmt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-Constant.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-DeclStmt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-Declaration.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-DeclarationWithType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-Expression.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-FunctionDecl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-FunctionType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-Initializer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-Mutator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-NamedTypeDecl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-ObjectDecl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-PointerType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-ReferenceToType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-Statement.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-TupleExpr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-TupleType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-Type.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-TypeDecl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-TypeExpr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-TypeSubstitution.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-TypeofType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-Visitor.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-VoidType.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/cfa_cpp-AssignExpand.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/cfa_cpp-FunctionChecker.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/cfa_cpp-FunctionFixer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/cfa_cpp-Mutate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/cfa_cpp-NameMatcher.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/cfa_cpp-TupleAssignment.Po@am__quote@
+
+.cc.o:
+@am__fastdepCXX_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+@am__fastdepCXX_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+cfa_cpp-main.o: main.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT cfa_cpp-main.o -MD -MP -MF $(DEPDIR)/cfa_cpp-main.Tpo -c -o cfa_cpp-main.o `test -f 'main.cc' || echo '$(srcdir)/'`main.cc
+@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/cfa_cpp-main.Tpo $(DEPDIR)/cfa_cpp-main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='main.cc' object='cfa_cpp-main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o cfa_cpp-main.o `test -f 'main.cc' || echo '$(srcdir)/'`main.cc
+
+cfa_cpp-main.obj: main.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT cfa_cpp-main.obj -MD -MP -MF $(DEPDIR)/cfa_cpp-main.Tpo -c -o cfa_cpp-main.obj `if test -f 'main.cc'; then $(CYGPATH_W) 'main.cc'; else $(CYGPATH_W) '$(srcdir)/main.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/cfa_cpp-main.Tpo $(DEPDIR)/cfa_cpp-main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='main.cc' object='cfa_cpp-main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o cfa_cpp-main.obj `if test -f 'main.cc'; then $(CYGPATH_W) 'main.cc'; else $(CYGPATH_W) '$(srcdir)/main.cc'; fi`
+
+cfa_cpp-MakeLibCfa.o: MakeLibCfa.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT cfa_cpp-MakeLibCfa.o -MD -MP -MF $(DEPDIR)/cfa_cpp-MakeLibCfa.Tpo -c -o cfa_cpp-MakeLibCfa.o `test -f 'MakeLibCfa.cc' || echo '$(srcdir)/'`MakeLibCfa.cc
+@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/cfa_cpp-MakeLibCfa.Tpo $(DEPDIR)/cfa_cpp-MakeLibCfa.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='MakeLibCfa.cc' object='cfa_cpp-MakeLibCfa.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o cfa_cpp-MakeLibCfa.o `test -f 'MakeLibCfa.cc' || echo '$(srcdir)/'`MakeLibCfa.cc
+
+cfa_cpp-MakeLibCfa.obj: MakeLibCfa.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT cfa_cpp-MakeLibCfa.obj -MD -MP -MF $(DEPDIR)/cfa_cpp-MakeLibCfa.Tpo -c -o cfa_cpp-MakeLibCfa.obj `if test -f 'MakeLibCfa.cc'; then $(CYGPATH_W) 'MakeLibCfa.cc'; else $(CYGPATH_W) '$(srcdir)/MakeLibCfa.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/cfa_cpp-MakeLibCfa.Tpo $(DEPDIR)/cfa_cpp-MakeLibCfa.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='MakeLibCfa.cc' object='cfa_cpp-MakeLibCfa.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o cfa_cpp-MakeLibCfa.obj `if test -f 'MakeLibCfa.cc'; then $(CYGPATH_W) 'MakeLibCfa.cc'; else $(CYGPATH_W) '$(srcdir)/MakeLibCfa.cc'; fi`
+
+CodeGen/cfa_cpp-Generate.o: CodeGen/Generate.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-Generate.o -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-Generate.Tpo -c -o CodeGen/cfa_cpp-Generate.o `test -f 'CodeGen/Generate.cc' || echo '$(srcdir)/'`CodeGen/Generate.cc
+@am__fastdepCXX_TRUE@	$(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-Generate.Tpo CodeGen/$(DEPDIR)/cfa_cpp-Generate.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='CodeGen/Generate.cc' object='CodeGen/cfa_cpp-Generate.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-Generate.o `test -f 'CodeGen/Generate.cc' || echo '$(srcdir)/'`CodeGen/Generate.cc
+
+CodeGen/cfa_cpp-Generate.obj: CodeGen/Generate.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-Generate.obj -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-Generate.Tpo -c -o CodeGen/cfa_cpp-Generate.obj `if test -f 'CodeGen/Generate.cc'; then $(CYGPATH_W) 'CodeGen/Generate.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/Generate.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-Generate.Tpo CodeGen/$(DEPDIR)/cfa_cpp-Generate.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='CodeGen/Generate.cc' object='CodeGen/cfa_cpp-Generate.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-Generate.obj `if test -f 'CodeGen/Generate.cc'; then $(CYGPATH_W) 'CodeGen/Generate.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/Generate.cc'; fi`
+
+CodeGen/cfa_cpp-CodeGenerator.o: CodeGen/CodeGenerator.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-CodeGenerator.o -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator.Tpo -c -o CodeGen/cfa_cpp-CodeGenerator.o `test -f 'CodeGen/CodeGenerator.cc' || echo '$(srcdir)/'`CodeGen/CodeGenerator.cc
+@am__fastdepCXX_TRUE@	$(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator.Tpo CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='CodeGen/CodeGenerator.cc' object='CodeGen/cfa_cpp-CodeGenerator.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-CodeGenerator.o `test -f 'CodeGen/CodeGenerator.cc' || echo '$(srcdir)/'`CodeGen/CodeGenerator.cc
+
+CodeGen/cfa_cpp-CodeGenerator.obj: CodeGen/CodeGenerator.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-CodeGenerator.obj -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator.Tpo -c -o CodeGen/cfa_cpp-CodeGenerator.obj `if test -f 'CodeGen/CodeGenerator.cc'; then $(CYGPATH_W) 'CodeGen/CodeGenerator.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/CodeGenerator.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator.Tpo CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='CodeGen/CodeGenerator.cc' object='CodeGen/cfa_cpp-CodeGenerator.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-CodeGenerator.obj `if test -f 'CodeGen/CodeGenerator.cc'; then $(CYGPATH_W) 'CodeGen/CodeGenerator.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/CodeGenerator.cc'; fi`
+
+CodeGen/cfa_cpp-GenType.o: CodeGen/GenType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-GenType.o -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-GenType.Tpo -c -o CodeGen/cfa_cpp-GenType.o `test -f 'CodeGen/GenType.cc' || echo '$(srcdir)/'`CodeGen/GenType.cc
+@am__fastdepCXX_TRUE@	$(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-GenType.Tpo CodeGen/$(DEPDIR)/cfa_cpp-GenType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='CodeGen/GenType.cc' object='CodeGen/cfa_cpp-GenType.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-GenType.o `test -f 'CodeGen/GenType.cc' || echo '$(srcdir)/'`CodeGen/GenType.cc
+
+CodeGen/cfa_cpp-GenType.obj: CodeGen/GenType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-GenType.obj -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-GenType.Tpo -c -o CodeGen/cfa_cpp-GenType.obj `if test -f 'CodeGen/GenType.cc'; then $(CYGPATH_W) 'CodeGen/GenType.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/GenType.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-GenType.Tpo CodeGen/$(DEPDIR)/cfa_cpp-GenType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='CodeGen/GenType.cc' object='CodeGen/cfa_cpp-GenType.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-GenType.obj `if test -f 'CodeGen/GenType.cc'; then $(CYGPATH_W) 'CodeGen/GenType.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/GenType.cc'; fi`
+
+CodeGen/cfa_cpp-FixNames.o: CodeGen/FixNames.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-FixNames.o -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-FixNames.Tpo -c -o CodeGen/cfa_cpp-FixNames.o `test -f 'CodeGen/FixNames.cc' || echo '$(srcdir)/'`CodeGen/FixNames.cc
+@am__fastdepCXX_TRUE@	$(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-FixNames.Tpo CodeGen/$(DEPDIR)/cfa_cpp-FixNames.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='CodeGen/FixNames.cc' object='CodeGen/cfa_cpp-FixNames.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-FixNames.o `test -f 'CodeGen/FixNames.cc' || echo '$(srcdir)/'`CodeGen/FixNames.cc
+
+CodeGen/cfa_cpp-FixNames.obj: CodeGen/FixNames.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-FixNames.obj -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-FixNames.Tpo -c -o CodeGen/cfa_cpp-FixNames.obj `if test -f 'CodeGen/FixNames.cc'; then $(CYGPATH_W) 'CodeGen/FixNames.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/FixNames.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-FixNames.Tpo CodeGen/$(DEPDIR)/cfa_cpp-FixNames.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='CodeGen/FixNames.cc' object='CodeGen/cfa_cpp-FixNames.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-FixNames.obj `if test -f 'CodeGen/FixNames.cc'; then $(CYGPATH_W) 'CodeGen/FixNames.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/FixNames.cc'; fi`
+
+CodeGen/cfa_cpp-OperatorTable.o: CodeGen/OperatorTable.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-OperatorTable.o -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-OperatorTable.Tpo -c -o CodeGen/cfa_cpp-OperatorTable.o `test -f 'CodeGen/OperatorTable.cc' || echo '$(srcdir)/'`CodeGen/OperatorTable.cc
+@am__fastdepCXX_TRUE@	$(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-OperatorTable.Tpo CodeGen/$(DEPDIR)/cfa_cpp-OperatorTable.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='CodeGen/OperatorTable.cc' object='CodeGen/cfa_cpp-OperatorTable.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-OperatorTable.o `test -f 'CodeGen/OperatorTable.cc' || echo '$(srcdir)/'`CodeGen/OperatorTable.cc
+
+CodeGen/cfa_cpp-OperatorTable.obj: CodeGen/OperatorTable.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-OperatorTable.obj -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-OperatorTable.Tpo -c -o CodeGen/cfa_cpp-OperatorTable.obj `if test -f 'CodeGen/OperatorTable.cc'; then $(CYGPATH_W) 'CodeGen/OperatorTable.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/OperatorTable.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-OperatorTable.Tpo CodeGen/$(DEPDIR)/cfa_cpp-OperatorTable.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='CodeGen/OperatorTable.cc' object='CodeGen/cfa_cpp-OperatorTable.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-OperatorTable.obj `if test -f 'CodeGen/OperatorTable.cc'; then $(CYGPATH_W) 'CodeGen/OperatorTable.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/OperatorTable.cc'; fi`
+
+Common/cfa_cpp-SemanticError.o: Common/SemanticError.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/cfa_cpp-SemanticError.o -MD -MP -MF Common/$(DEPDIR)/cfa_cpp-SemanticError.Tpo -c -o Common/cfa_cpp-SemanticError.o `test -f 'Common/SemanticError.cc' || echo '$(srcdir)/'`Common/SemanticError.cc
+@am__fastdepCXX_TRUE@	$(am__mv) Common/$(DEPDIR)/cfa_cpp-SemanticError.Tpo Common/$(DEPDIR)/cfa_cpp-SemanticError.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Common/SemanticError.cc' object='Common/cfa_cpp-SemanticError.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/cfa_cpp-SemanticError.o `test -f 'Common/SemanticError.cc' || echo '$(srcdir)/'`Common/SemanticError.cc
+
+Common/cfa_cpp-SemanticError.obj: Common/SemanticError.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/cfa_cpp-SemanticError.obj -MD -MP -MF Common/$(DEPDIR)/cfa_cpp-SemanticError.Tpo -c -o Common/cfa_cpp-SemanticError.obj `if test -f 'Common/SemanticError.cc'; then $(CYGPATH_W) 'Common/SemanticError.cc'; else $(CYGPATH_W) '$(srcdir)/Common/SemanticError.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) Common/$(DEPDIR)/cfa_cpp-SemanticError.Tpo Common/$(DEPDIR)/cfa_cpp-SemanticError.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Common/SemanticError.cc' object='Common/cfa_cpp-SemanticError.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/cfa_cpp-SemanticError.obj `if test -f 'Common/SemanticError.cc'; then $(CYGPATH_W) 'Common/SemanticError.cc'; else $(CYGPATH_W) '$(srcdir)/Common/SemanticError.cc'; fi`
+
+Common/cfa_cpp-UniqueName.o: Common/UniqueName.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/cfa_cpp-UniqueName.o -MD -MP -MF Common/$(DEPDIR)/cfa_cpp-UniqueName.Tpo -c -o Common/cfa_cpp-UniqueName.o `test -f 'Common/UniqueName.cc' || echo '$(srcdir)/'`Common/UniqueName.cc
+@am__fastdepCXX_TRUE@	$(am__mv) Common/$(DEPDIR)/cfa_cpp-UniqueName.Tpo Common/$(DEPDIR)/cfa_cpp-UniqueName.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Common/UniqueName.cc' object='Common/cfa_cpp-UniqueName.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/cfa_cpp-UniqueName.o `test -f 'Common/UniqueName.cc' || echo '$(srcdir)/'`Common/UniqueName.cc
+
+Common/cfa_cpp-UniqueName.obj: Common/UniqueName.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/cfa_cpp-UniqueName.obj -MD -MP -MF Common/$(DEPDIR)/cfa_cpp-UniqueName.Tpo -c -o Common/cfa_cpp-UniqueName.obj `if test -f 'Common/UniqueName.cc'; then $(CYGPATH_W) 'Common/UniqueName.cc'; else $(CYGPATH_W) '$(srcdir)/Common/UniqueName.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) Common/$(DEPDIR)/cfa_cpp-UniqueName.Tpo Common/$(DEPDIR)/cfa_cpp-UniqueName.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Common/UniqueName.cc' object='Common/cfa_cpp-UniqueName.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/cfa_cpp-UniqueName.obj `if test -f 'Common/UniqueName.cc'; then $(CYGPATH_W) 'Common/UniqueName.cc'; else $(CYGPATH_W) '$(srcdir)/Common/UniqueName.cc'; fi`
+
+ControlStruct/cfa_cpp-LabelGenerator.o: ControlStruct/LabelGenerator.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-LabelGenerator.o -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-LabelGenerator.Tpo -c -o ControlStruct/cfa_cpp-LabelGenerator.o `test -f 'ControlStruct/LabelGenerator.cc' || echo '$(srcdir)/'`ControlStruct/LabelGenerator.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-LabelGenerator.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-LabelGenerator.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ControlStruct/LabelGenerator.cc' object='ControlStruct/cfa_cpp-LabelGenerator.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-LabelGenerator.o `test -f 'ControlStruct/LabelGenerator.cc' || echo '$(srcdir)/'`ControlStruct/LabelGenerator.cc
+
+ControlStruct/cfa_cpp-LabelGenerator.obj: ControlStruct/LabelGenerator.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-LabelGenerator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-LabelGenerator.Tpo -c -o ControlStruct/cfa_cpp-LabelGenerator.obj `if test -f 'ControlStruct/LabelGenerator.cc'; then $(CYGPATH_W) 'ControlStruct/LabelGenerator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelGenerator.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-LabelGenerator.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-LabelGenerator.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ControlStruct/LabelGenerator.cc' object='ControlStruct/cfa_cpp-LabelGenerator.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-LabelGenerator.obj `if test -f 'ControlStruct/LabelGenerator.cc'; then $(CYGPATH_W) 'ControlStruct/LabelGenerator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelGenerator.cc'; fi`
+
+ControlStruct/cfa_cpp-LabelFixer.o: ControlStruct/LabelFixer.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-LabelFixer.o -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-LabelFixer.Tpo -c -o ControlStruct/cfa_cpp-LabelFixer.o `test -f 'ControlStruct/LabelFixer.cc' || echo '$(srcdir)/'`ControlStruct/LabelFixer.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-LabelFixer.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-LabelFixer.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ControlStruct/LabelFixer.cc' object='ControlStruct/cfa_cpp-LabelFixer.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-LabelFixer.o `test -f 'ControlStruct/LabelFixer.cc' || echo '$(srcdir)/'`ControlStruct/LabelFixer.cc
+
+ControlStruct/cfa_cpp-LabelFixer.obj: ControlStruct/LabelFixer.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-LabelFixer.obj -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-LabelFixer.Tpo -c -o ControlStruct/cfa_cpp-LabelFixer.obj `if test -f 'ControlStruct/LabelFixer.cc'; then $(CYGPATH_W) 'ControlStruct/LabelFixer.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelFixer.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-LabelFixer.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-LabelFixer.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ControlStruct/LabelFixer.cc' object='ControlStruct/cfa_cpp-LabelFixer.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-LabelFixer.obj `if test -f 'ControlStruct/LabelFixer.cc'; then $(CYGPATH_W) 'ControlStruct/LabelFixer.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelFixer.cc'; fi`
+
+ControlStruct/cfa_cpp-MLEMutator.o: ControlStruct/MLEMutator.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-MLEMutator.o -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-MLEMutator.Tpo -c -o ControlStruct/cfa_cpp-MLEMutator.o `test -f 'ControlStruct/MLEMutator.cc' || echo '$(srcdir)/'`ControlStruct/MLEMutator.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-MLEMutator.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-MLEMutator.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ControlStruct/MLEMutator.cc' object='ControlStruct/cfa_cpp-MLEMutator.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-MLEMutator.o `test -f 'ControlStruct/MLEMutator.cc' || echo '$(srcdir)/'`ControlStruct/MLEMutator.cc
+
+ControlStruct/cfa_cpp-MLEMutator.obj: ControlStruct/MLEMutator.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-MLEMutator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-MLEMutator.Tpo -c -o ControlStruct/cfa_cpp-MLEMutator.obj `if test -f 'ControlStruct/MLEMutator.cc'; then $(CYGPATH_W) 'ControlStruct/MLEMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/MLEMutator.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-MLEMutator.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-MLEMutator.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ControlStruct/MLEMutator.cc' object='ControlStruct/cfa_cpp-MLEMutator.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-MLEMutator.obj `if test -f 'ControlStruct/MLEMutator.cc'; then $(CYGPATH_W) 'ControlStruct/MLEMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/MLEMutator.cc'; fi`
+
+ControlStruct/cfa_cpp-CaseRangeMutator.o: ControlStruct/CaseRangeMutator.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-CaseRangeMutator.o -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-CaseRangeMutator.Tpo -c -o ControlStruct/cfa_cpp-CaseRangeMutator.o `test -f 'ControlStruct/CaseRangeMutator.cc' || echo '$(srcdir)/'`ControlStruct/CaseRangeMutator.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-CaseRangeMutator.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-CaseRangeMutator.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ControlStruct/CaseRangeMutator.cc' object='ControlStruct/cfa_cpp-CaseRangeMutator.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-CaseRangeMutator.o `test -f 'ControlStruct/CaseRangeMutator.cc' || echo '$(srcdir)/'`ControlStruct/CaseRangeMutator.cc
+
+ControlStruct/cfa_cpp-CaseRangeMutator.obj: ControlStruct/CaseRangeMutator.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-CaseRangeMutator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-CaseRangeMutator.Tpo -c -o ControlStruct/cfa_cpp-CaseRangeMutator.obj `if test -f 'ControlStruct/CaseRangeMutator.cc'; then $(CYGPATH_W) 'ControlStruct/CaseRangeMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/CaseRangeMutator.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-CaseRangeMutator.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-CaseRangeMutator.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ControlStruct/CaseRangeMutator.cc' object='ControlStruct/cfa_cpp-CaseRangeMutator.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-CaseRangeMutator.obj `if test -f 'ControlStruct/CaseRangeMutator.cc'; then $(CYGPATH_W) 'ControlStruct/CaseRangeMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/CaseRangeMutator.cc'; fi`
+
+ControlStruct/cfa_cpp-Mutate.o: ControlStruct/Mutate.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-Mutate.o -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-Mutate.Tpo -c -o ControlStruct/cfa_cpp-Mutate.o `test -f 'ControlStruct/Mutate.cc' || echo '$(srcdir)/'`ControlStruct/Mutate.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-Mutate.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-Mutate.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ControlStruct/Mutate.cc' object='ControlStruct/cfa_cpp-Mutate.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-Mutate.o `test -f 'ControlStruct/Mutate.cc' || echo '$(srcdir)/'`ControlStruct/Mutate.cc
+
+ControlStruct/cfa_cpp-Mutate.obj: ControlStruct/Mutate.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-Mutate.obj -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-Mutate.Tpo -c -o ControlStruct/cfa_cpp-Mutate.obj `if test -f 'ControlStruct/Mutate.cc'; then $(CYGPATH_W) 'ControlStruct/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/Mutate.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-Mutate.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-Mutate.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ControlStruct/Mutate.cc' object='ControlStruct/cfa_cpp-Mutate.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-Mutate.obj `if test -f 'ControlStruct/Mutate.cc'; then $(CYGPATH_W) 'ControlStruct/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/Mutate.cc'; fi`
+
+ControlStruct/cfa_cpp-ChooseMutator.o: ControlStruct/ChooseMutator.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-ChooseMutator.o -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-ChooseMutator.Tpo -c -o ControlStruct/cfa_cpp-ChooseMutator.o `test -f 'ControlStruct/ChooseMutator.cc' || echo '$(srcdir)/'`ControlStruct/ChooseMutator.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-ChooseMutator.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-ChooseMutator.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ControlStruct/ChooseMutator.cc' object='ControlStruct/cfa_cpp-ChooseMutator.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-ChooseMutator.o `test -f 'ControlStruct/ChooseMutator.cc' || echo '$(srcdir)/'`ControlStruct/ChooseMutator.cc
+
+ControlStruct/cfa_cpp-ChooseMutator.obj: ControlStruct/ChooseMutator.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-ChooseMutator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-ChooseMutator.Tpo -c -o ControlStruct/cfa_cpp-ChooseMutator.obj `if test -f 'ControlStruct/ChooseMutator.cc'; then $(CYGPATH_W) 'ControlStruct/ChooseMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/ChooseMutator.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-ChooseMutator.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-ChooseMutator.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ControlStruct/ChooseMutator.cc' object='ControlStruct/cfa_cpp-ChooseMutator.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-ChooseMutator.obj `if test -f 'ControlStruct/ChooseMutator.cc'; then $(CYGPATH_W) 'ControlStruct/ChooseMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/ChooseMutator.cc'; fi`
+
+ControlStruct/cfa_cpp-ForExprMutator.o: ControlStruct/ForExprMutator.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-ForExprMutator.o -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-ForExprMutator.Tpo -c -o ControlStruct/cfa_cpp-ForExprMutator.o `test -f 'ControlStruct/ForExprMutator.cc' || echo '$(srcdir)/'`ControlStruct/ForExprMutator.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-ForExprMutator.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-ForExprMutator.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ControlStruct/ForExprMutator.cc' object='ControlStruct/cfa_cpp-ForExprMutator.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-ForExprMutator.o `test -f 'ControlStruct/ForExprMutator.cc' || echo '$(srcdir)/'`ControlStruct/ForExprMutator.cc
+
+ControlStruct/cfa_cpp-ForExprMutator.obj: ControlStruct/ForExprMutator.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-ForExprMutator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-ForExprMutator.Tpo -c -o ControlStruct/cfa_cpp-ForExprMutator.obj `if test -f 'ControlStruct/ForExprMutator.cc'; then $(CYGPATH_W) 'ControlStruct/ForExprMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/ForExprMutator.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-ForExprMutator.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-ForExprMutator.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ControlStruct/ForExprMutator.cc' object='ControlStruct/cfa_cpp-ForExprMutator.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-ForExprMutator.obj `if test -f 'ControlStruct/ForExprMutator.cc'; then $(CYGPATH_W) 'ControlStruct/ForExprMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/ForExprMutator.cc'; fi`
+
+ControlStruct/cfa_cpp-LabelTypeChecker.o: ControlStruct/LabelTypeChecker.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-LabelTypeChecker.o -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-LabelTypeChecker.Tpo -c -o ControlStruct/cfa_cpp-LabelTypeChecker.o `test -f 'ControlStruct/LabelTypeChecker.cc' || echo '$(srcdir)/'`ControlStruct/LabelTypeChecker.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-LabelTypeChecker.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-LabelTypeChecker.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ControlStruct/LabelTypeChecker.cc' object='ControlStruct/cfa_cpp-LabelTypeChecker.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-LabelTypeChecker.o `test -f 'ControlStruct/LabelTypeChecker.cc' || echo '$(srcdir)/'`ControlStruct/LabelTypeChecker.cc
+
+ControlStruct/cfa_cpp-LabelTypeChecker.obj: ControlStruct/LabelTypeChecker.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-LabelTypeChecker.obj -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-LabelTypeChecker.Tpo -c -o ControlStruct/cfa_cpp-LabelTypeChecker.obj `if test -f 'ControlStruct/LabelTypeChecker.cc'; then $(CYGPATH_W) 'ControlStruct/LabelTypeChecker.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelTypeChecker.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-LabelTypeChecker.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-LabelTypeChecker.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ControlStruct/LabelTypeChecker.cc' object='ControlStruct/cfa_cpp-LabelTypeChecker.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-LabelTypeChecker.obj `if test -f 'ControlStruct/LabelTypeChecker.cc'; then $(CYGPATH_W) 'ControlStruct/LabelTypeChecker.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelTypeChecker.cc'; fi`
+
+Designators/cfa_cpp-Processor.o: Designators/Processor.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Designators/cfa_cpp-Processor.o -MD -MP -MF Designators/$(DEPDIR)/cfa_cpp-Processor.Tpo -c -o Designators/cfa_cpp-Processor.o `test -f 'Designators/Processor.cc' || echo '$(srcdir)/'`Designators/Processor.cc
+@am__fastdepCXX_TRUE@	$(am__mv) Designators/$(DEPDIR)/cfa_cpp-Processor.Tpo Designators/$(DEPDIR)/cfa_cpp-Processor.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Designators/Processor.cc' object='Designators/cfa_cpp-Processor.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Designators/cfa_cpp-Processor.o `test -f 'Designators/Processor.cc' || echo '$(srcdir)/'`Designators/Processor.cc
+
+Designators/cfa_cpp-Processor.obj: Designators/Processor.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Designators/cfa_cpp-Processor.obj -MD -MP -MF Designators/$(DEPDIR)/cfa_cpp-Processor.Tpo -c -o Designators/cfa_cpp-Processor.obj `if test -f 'Designators/Processor.cc'; then $(CYGPATH_W) 'Designators/Processor.cc'; else $(CYGPATH_W) '$(srcdir)/Designators/Processor.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) Designators/$(DEPDIR)/cfa_cpp-Processor.Tpo Designators/$(DEPDIR)/cfa_cpp-Processor.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Designators/Processor.cc' object='Designators/cfa_cpp-Processor.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Designators/cfa_cpp-Processor.obj `if test -f 'Designators/Processor.cc'; then $(CYGPATH_W) 'Designators/Processor.cc'; else $(CYGPATH_W) '$(srcdir)/Designators/Processor.cc'; fi`
+
+GenPoly/cfa_cpp-Box.o: GenPoly/Box.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-Box.o -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-Box.Tpo -c -o GenPoly/cfa_cpp-Box.o `test -f 'GenPoly/Box.cc' || echo '$(srcdir)/'`GenPoly/Box.cc
+@am__fastdepCXX_TRUE@	$(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-Box.Tpo GenPoly/$(DEPDIR)/cfa_cpp-Box.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='GenPoly/Box.cc' object='GenPoly/cfa_cpp-Box.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-Box.o `test -f 'GenPoly/Box.cc' || echo '$(srcdir)/'`GenPoly/Box.cc
+
+GenPoly/cfa_cpp-Box.obj: GenPoly/Box.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-Box.obj -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-Box.Tpo -c -o GenPoly/cfa_cpp-Box.obj `if test -f 'GenPoly/Box.cc'; then $(CYGPATH_W) 'GenPoly/Box.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Box.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-Box.Tpo GenPoly/$(DEPDIR)/cfa_cpp-Box.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='GenPoly/Box.cc' object='GenPoly/cfa_cpp-Box.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-Box.obj `if test -f 'GenPoly/Box.cc'; then $(CYGPATH_W) 'GenPoly/Box.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Box.cc'; fi`
+
+GenPoly/cfa_cpp-GenPoly.o: GenPoly/GenPoly.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-GenPoly.o -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-GenPoly.Tpo -c -o GenPoly/cfa_cpp-GenPoly.o `test -f 'GenPoly/GenPoly.cc' || echo '$(srcdir)/'`GenPoly/GenPoly.cc
+@am__fastdepCXX_TRUE@	$(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-GenPoly.Tpo GenPoly/$(DEPDIR)/cfa_cpp-GenPoly.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='GenPoly/GenPoly.cc' object='GenPoly/cfa_cpp-GenPoly.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-GenPoly.o `test -f 'GenPoly/GenPoly.cc' || echo '$(srcdir)/'`GenPoly/GenPoly.cc
+
+GenPoly/cfa_cpp-GenPoly.obj: GenPoly/GenPoly.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-GenPoly.obj -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-GenPoly.Tpo -c -o GenPoly/cfa_cpp-GenPoly.obj `if test -f 'GenPoly/GenPoly.cc'; then $(CYGPATH_W) 'GenPoly/GenPoly.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/GenPoly.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-GenPoly.Tpo GenPoly/$(DEPDIR)/cfa_cpp-GenPoly.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='GenPoly/GenPoly.cc' object='GenPoly/cfa_cpp-GenPoly.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-GenPoly.obj `if test -f 'GenPoly/GenPoly.cc'; then $(CYGPATH_W) 'GenPoly/GenPoly.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/GenPoly.cc'; fi`
+
+GenPoly/cfa_cpp-PolyMutator.o: GenPoly/PolyMutator.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-PolyMutator.o -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-PolyMutator.Tpo -c -o GenPoly/cfa_cpp-PolyMutator.o `test -f 'GenPoly/PolyMutator.cc' || echo '$(srcdir)/'`GenPoly/PolyMutator.cc
+@am__fastdepCXX_TRUE@	$(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-PolyMutator.Tpo GenPoly/$(DEPDIR)/cfa_cpp-PolyMutator.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='GenPoly/PolyMutator.cc' object='GenPoly/cfa_cpp-PolyMutator.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-PolyMutator.o `test -f 'GenPoly/PolyMutator.cc' || echo '$(srcdir)/'`GenPoly/PolyMutator.cc
+
+GenPoly/cfa_cpp-PolyMutator.obj: GenPoly/PolyMutator.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-PolyMutator.obj -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-PolyMutator.Tpo -c -o GenPoly/cfa_cpp-PolyMutator.obj `if test -f 'GenPoly/PolyMutator.cc'; then $(CYGPATH_W) 'GenPoly/PolyMutator.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/PolyMutator.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-PolyMutator.Tpo GenPoly/$(DEPDIR)/cfa_cpp-PolyMutator.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='GenPoly/PolyMutator.cc' object='GenPoly/cfa_cpp-PolyMutator.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-PolyMutator.obj `if test -f 'GenPoly/PolyMutator.cc'; then $(CYGPATH_W) 'GenPoly/PolyMutator.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/PolyMutator.cc'; fi`
+
+GenPoly/cfa_cpp-ScrubTyVars.o: GenPoly/ScrubTyVars.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-ScrubTyVars.o -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-ScrubTyVars.Tpo -c -o GenPoly/cfa_cpp-ScrubTyVars.o `test -f 'GenPoly/ScrubTyVars.cc' || echo '$(srcdir)/'`GenPoly/ScrubTyVars.cc
+@am__fastdepCXX_TRUE@	$(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-ScrubTyVars.Tpo GenPoly/$(DEPDIR)/cfa_cpp-ScrubTyVars.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='GenPoly/ScrubTyVars.cc' object='GenPoly/cfa_cpp-ScrubTyVars.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-ScrubTyVars.o `test -f 'GenPoly/ScrubTyVars.cc' || echo '$(srcdir)/'`GenPoly/ScrubTyVars.cc
+
+GenPoly/cfa_cpp-ScrubTyVars.obj: GenPoly/ScrubTyVars.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-ScrubTyVars.obj -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-ScrubTyVars.Tpo -c -o GenPoly/cfa_cpp-ScrubTyVars.obj `if test -f 'GenPoly/ScrubTyVars.cc'; then $(CYGPATH_W) 'GenPoly/ScrubTyVars.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/ScrubTyVars.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-ScrubTyVars.Tpo GenPoly/$(DEPDIR)/cfa_cpp-ScrubTyVars.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='GenPoly/ScrubTyVars.cc' object='GenPoly/cfa_cpp-ScrubTyVars.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-ScrubTyVars.obj `if test -f 'GenPoly/ScrubTyVars.cc'; then $(CYGPATH_W) 'GenPoly/ScrubTyVars.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/ScrubTyVars.cc'; fi`
+
+GenPoly/cfa_cpp-Lvalue.o: GenPoly/Lvalue.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-Lvalue.o -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-Lvalue.Tpo -c -o GenPoly/cfa_cpp-Lvalue.o `test -f 'GenPoly/Lvalue.cc' || echo '$(srcdir)/'`GenPoly/Lvalue.cc
+@am__fastdepCXX_TRUE@	$(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-Lvalue.Tpo GenPoly/$(DEPDIR)/cfa_cpp-Lvalue.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='GenPoly/Lvalue.cc' object='GenPoly/cfa_cpp-Lvalue.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-Lvalue.o `test -f 'GenPoly/Lvalue.cc' || echo '$(srcdir)/'`GenPoly/Lvalue.cc
+
+GenPoly/cfa_cpp-Lvalue.obj: GenPoly/Lvalue.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-Lvalue.obj -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-Lvalue.Tpo -c -o GenPoly/cfa_cpp-Lvalue.obj `if test -f 'GenPoly/Lvalue.cc'; then $(CYGPATH_W) 'GenPoly/Lvalue.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Lvalue.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-Lvalue.Tpo GenPoly/$(DEPDIR)/cfa_cpp-Lvalue.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='GenPoly/Lvalue.cc' object='GenPoly/cfa_cpp-Lvalue.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-Lvalue.obj `if test -f 'GenPoly/Lvalue.cc'; then $(CYGPATH_W) 'GenPoly/Lvalue.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Lvalue.cc'; fi`
+
+GenPoly/cfa_cpp-Specialize.o: GenPoly/Specialize.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-Specialize.o -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-Specialize.Tpo -c -o GenPoly/cfa_cpp-Specialize.o `test -f 'GenPoly/Specialize.cc' || echo '$(srcdir)/'`GenPoly/Specialize.cc
+@am__fastdepCXX_TRUE@	$(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-Specialize.Tpo GenPoly/$(DEPDIR)/cfa_cpp-Specialize.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='GenPoly/Specialize.cc' object='GenPoly/cfa_cpp-Specialize.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-Specialize.o `test -f 'GenPoly/Specialize.cc' || echo '$(srcdir)/'`GenPoly/Specialize.cc
+
+GenPoly/cfa_cpp-Specialize.obj: GenPoly/Specialize.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-Specialize.obj -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-Specialize.Tpo -c -o GenPoly/cfa_cpp-Specialize.obj `if test -f 'GenPoly/Specialize.cc'; then $(CYGPATH_W) 'GenPoly/Specialize.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Specialize.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-Specialize.Tpo GenPoly/$(DEPDIR)/cfa_cpp-Specialize.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='GenPoly/Specialize.cc' object='GenPoly/cfa_cpp-Specialize.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-Specialize.obj `if test -f 'GenPoly/Specialize.cc'; then $(CYGPATH_W) 'GenPoly/Specialize.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Specialize.cc'; fi`
+
+GenPoly/cfa_cpp-CopyParams.o: GenPoly/CopyParams.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-CopyParams.o -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-CopyParams.Tpo -c -o GenPoly/cfa_cpp-CopyParams.o `test -f 'GenPoly/CopyParams.cc' || echo '$(srcdir)/'`GenPoly/CopyParams.cc
+@am__fastdepCXX_TRUE@	$(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-CopyParams.Tpo GenPoly/$(DEPDIR)/cfa_cpp-CopyParams.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='GenPoly/CopyParams.cc' object='GenPoly/cfa_cpp-CopyParams.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-CopyParams.o `test -f 'GenPoly/CopyParams.cc' || echo '$(srcdir)/'`GenPoly/CopyParams.cc
+
+GenPoly/cfa_cpp-CopyParams.obj: GenPoly/CopyParams.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-CopyParams.obj -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-CopyParams.Tpo -c -o GenPoly/cfa_cpp-CopyParams.obj `if test -f 'GenPoly/CopyParams.cc'; then $(CYGPATH_W) 'GenPoly/CopyParams.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/CopyParams.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-CopyParams.Tpo GenPoly/$(DEPDIR)/cfa_cpp-CopyParams.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='GenPoly/CopyParams.cc' object='GenPoly/cfa_cpp-CopyParams.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-CopyParams.obj `if test -f 'GenPoly/CopyParams.cc'; then $(CYGPATH_W) 'GenPoly/CopyParams.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/CopyParams.cc'; fi`
+
+GenPoly/cfa_cpp-FindFunction.o: GenPoly/FindFunction.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-FindFunction.o -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-FindFunction.Tpo -c -o GenPoly/cfa_cpp-FindFunction.o `test -f 'GenPoly/FindFunction.cc' || echo '$(srcdir)/'`GenPoly/FindFunction.cc
+@am__fastdepCXX_TRUE@	$(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-FindFunction.Tpo GenPoly/$(DEPDIR)/cfa_cpp-FindFunction.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='GenPoly/FindFunction.cc' object='GenPoly/cfa_cpp-FindFunction.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-FindFunction.o `test -f 'GenPoly/FindFunction.cc' || echo '$(srcdir)/'`GenPoly/FindFunction.cc
+
+GenPoly/cfa_cpp-FindFunction.obj: GenPoly/FindFunction.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-FindFunction.obj -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-FindFunction.Tpo -c -o GenPoly/cfa_cpp-FindFunction.obj `if test -f 'GenPoly/FindFunction.cc'; then $(CYGPATH_W) 'GenPoly/FindFunction.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/FindFunction.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-FindFunction.Tpo GenPoly/$(DEPDIR)/cfa_cpp-FindFunction.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='GenPoly/FindFunction.cc' object='GenPoly/cfa_cpp-FindFunction.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-FindFunction.obj `if test -f 'GenPoly/FindFunction.cc'; then $(CYGPATH_W) 'GenPoly/FindFunction.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/FindFunction.cc'; fi`
+
+InitTweak/cfa_cpp-InitModel.o: InitTweak/InitModel.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/cfa_cpp-InitModel.o -MD -MP -MF InitTweak/$(DEPDIR)/cfa_cpp-InitModel.Tpo -c -o InitTweak/cfa_cpp-InitModel.o `test -f 'InitTweak/InitModel.cc' || echo '$(srcdir)/'`InitTweak/InitModel.cc
+@am__fastdepCXX_TRUE@	$(am__mv) InitTweak/$(DEPDIR)/cfa_cpp-InitModel.Tpo InitTweak/$(DEPDIR)/cfa_cpp-InitModel.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='InitTweak/InitModel.cc' object='InitTweak/cfa_cpp-InitModel.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/cfa_cpp-InitModel.o `test -f 'InitTweak/InitModel.cc' || echo '$(srcdir)/'`InitTweak/InitModel.cc
+
+InitTweak/cfa_cpp-InitModel.obj: InitTweak/InitModel.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/cfa_cpp-InitModel.obj -MD -MP -MF InitTweak/$(DEPDIR)/cfa_cpp-InitModel.Tpo -c -o InitTweak/cfa_cpp-InitModel.obj `if test -f 'InitTweak/InitModel.cc'; then $(CYGPATH_W) 'InitTweak/InitModel.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/InitModel.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) InitTweak/$(DEPDIR)/cfa_cpp-InitModel.Tpo InitTweak/$(DEPDIR)/cfa_cpp-InitModel.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='InitTweak/InitModel.cc' object='InitTweak/cfa_cpp-InitModel.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/cfa_cpp-InitModel.obj `if test -f 'InitTweak/InitModel.cc'; then $(CYGPATH_W) 'InitTweak/InitModel.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/InitModel.cc'; fi`
+
+InitTweak/cfa_cpp-InitExpander.o: InitTweak/InitExpander.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/cfa_cpp-InitExpander.o -MD -MP -MF InitTweak/$(DEPDIR)/cfa_cpp-InitExpander.Tpo -c -o InitTweak/cfa_cpp-InitExpander.o `test -f 'InitTweak/InitExpander.cc' || echo '$(srcdir)/'`InitTweak/InitExpander.cc
+@am__fastdepCXX_TRUE@	$(am__mv) InitTweak/$(DEPDIR)/cfa_cpp-InitExpander.Tpo InitTweak/$(DEPDIR)/cfa_cpp-InitExpander.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='InitTweak/InitExpander.cc' object='InitTweak/cfa_cpp-InitExpander.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/cfa_cpp-InitExpander.o `test -f 'InitTweak/InitExpander.cc' || echo '$(srcdir)/'`InitTweak/InitExpander.cc
+
+InitTweak/cfa_cpp-InitExpander.obj: InitTweak/InitExpander.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/cfa_cpp-InitExpander.obj -MD -MP -MF InitTweak/$(DEPDIR)/cfa_cpp-InitExpander.Tpo -c -o InitTweak/cfa_cpp-InitExpander.obj `if test -f 'InitTweak/InitExpander.cc'; then $(CYGPATH_W) 'InitTweak/InitExpander.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/InitExpander.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) InitTweak/$(DEPDIR)/cfa_cpp-InitExpander.Tpo InitTweak/$(DEPDIR)/cfa_cpp-InitExpander.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='InitTweak/InitExpander.cc' object='InitTweak/cfa_cpp-InitExpander.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/cfa_cpp-InitExpander.obj `if test -f 'InitTweak/InitExpander.cc'; then $(CYGPATH_W) 'InitTweak/InitExpander.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/InitExpander.cc'; fi`
+
+InitTweak/cfa_cpp-Mutate.o: InitTweak/Mutate.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/cfa_cpp-Mutate.o -MD -MP -MF InitTweak/$(DEPDIR)/cfa_cpp-Mutate.Tpo -c -o InitTweak/cfa_cpp-Mutate.o `test -f 'InitTweak/Mutate.cc' || echo '$(srcdir)/'`InitTweak/Mutate.cc
+@am__fastdepCXX_TRUE@	$(am__mv) InitTweak/$(DEPDIR)/cfa_cpp-Mutate.Tpo InitTweak/$(DEPDIR)/cfa_cpp-Mutate.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='InitTweak/Mutate.cc' object='InitTweak/cfa_cpp-Mutate.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/cfa_cpp-Mutate.o `test -f 'InitTweak/Mutate.cc' || echo '$(srcdir)/'`InitTweak/Mutate.cc
+
+InitTweak/cfa_cpp-Mutate.obj: InitTweak/Mutate.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/cfa_cpp-Mutate.obj -MD -MP -MF InitTweak/$(DEPDIR)/cfa_cpp-Mutate.Tpo -c -o InitTweak/cfa_cpp-Mutate.obj `if test -f 'InitTweak/Mutate.cc'; then $(CYGPATH_W) 'InitTweak/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/Mutate.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) InitTweak/$(DEPDIR)/cfa_cpp-Mutate.Tpo InitTweak/$(DEPDIR)/cfa_cpp-Mutate.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='InitTweak/Mutate.cc' object='InitTweak/cfa_cpp-Mutate.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/cfa_cpp-Mutate.obj `if test -f 'InitTweak/Mutate.cc'; then $(CYGPATH_W) 'InitTweak/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/Mutate.cc'; fi`
+
+InitTweak/cfa_cpp-Association.o: InitTweak/Association.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/cfa_cpp-Association.o -MD -MP -MF InitTweak/$(DEPDIR)/cfa_cpp-Association.Tpo -c -o InitTweak/cfa_cpp-Association.o `test -f 'InitTweak/Association.cc' || echo '$(srcdir)/'`InitTweak/Association.cc
+@am__fastdepCXX_TRUE@	$(am__mv) InitTweak/$(DEPDIR)/cfa_cpp-Association.Tpo InitTweak/$(DEPDIR)/cfa_cpp-Association.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='InitTweak/Association.cc' object='InitTweak/cfa_cpp-Association.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/cfa_cpp-Association.o `test -f 'InitTweak/Association.cc' || echo '$(srcdir)/'`InitTweak/Association.cc
+
+InitTweak/cfa_cpp-Association.obj: InitTweak/Association.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/cfa_cpp-Association.obj -MD -MP -MF InitTweak/$(DEPDIR)/cfa_cpp-Association.Tpo -c -o InitTweak/cfa_cpp-Association.obj `if test -f 'InitTweak/Association.cc'; then $(CYGPATH_W) 'InitTweak/Association.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/Association.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) InitTweak/$(DEPDIR)/cfa_cpp-Association.Tpo InitTweak/$(DEPDIR)/cfa_cpp-Association.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='InitTweak/Association.cc' object='InitTweak/cfa_cpp-Association.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/cfa_cpp-Association.obj `if test -f 'InitTweak/Association.cc'; then $(CYGPATH_W) 'InitTweak/Association.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/Association.cc'; fi`
+
+InitTweak/cfa_cpp-RemoveInit.o: InitTweak/RemoveInit.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/cfa_cpp-RemoveInit.o -MD -MP -MF InitTweak/$(DEPDIR)/cfa_cpp-RemoveInit.Tpo -c -o InitTweak/cfa_cpp-RemoveInit.o `test -f 'InitTweak/RemoveInit.cc' || echo '$(srcdir)/'`InitTweak/RemoveInit.cc
+@am__fastdepCXX_TRUE@	$(am__mv) InitTweak/$(DEPDIR)/cfa_cpp-RemoveInit.Tpo InitTweak/$(DEPDIR)/cfa_cpp-RemoveInit.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='InitTweak/RemoveInit.cc' object='InitTweak/cfa_cpp-RemoveInit.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/cfa_cpp-RemoveInit.o `test -f 'InitTweak/RemoveInit.cc' || echo '$(srcdir)/'`InitTweak/RemoveInit.cc
+
+InitTweak/cfa_cpp-RemoveInit.obj: InitTweak/RemoveInit.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/cfa_cpp-RemoveInit.obj -MD -MP -MF InitTweak/$(DEPDIR)/cfa_cpp-RemoveInit.Tpo -c -o InitTweak/cfa_cpp-RemoveInit.obj `if test -f 'InitTweak/RemoveInit.cc'; then $(CYGPATH_W) 'InitTweak/RemoveInit.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/RemoveInit.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) InitTweak/$(DEPDIR)/cfa_cpp-RemoveInit.Tpo InitTweak/$(DEPDIR)/cfa_cpp-RemoveInit.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='InitTweak/RemoveInit.cc' object='InitTweak/cfa_cpp-RemoveInit.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/cfa_cpp-RemoveInit.obj `if test -f 'InitTweak/RemoveInit.cc'; then $(CYGPATH_W) 'InitTweak/RemoveInit.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/RemoveInit.cc'; fi`
+
+Parser/cfa_cpp-parser.o: Parser/parser.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-parser.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-parser.Tpo -c -o Parser/cfa_cpp-parser.o `test -f 'Parser/parser.cc' || echo '$(srcdir)/'`Parser/parser.cc
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-parser.Tpo Parser/$(DEPDIR)/cfa_cpp-parser.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/parser.cc' object='Parser/cfa_cpp-parser.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-parser.o `test -f 'Parser/parser.cc' || echo '$(srcdir)/'`Parser/parser.cc
+
+Parser/cfa_cpp-parser.obj: Parser/parser.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-parser.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-parser.Tpo -c -o Parser/cfa_cpp-parser.obj `if test -f 'Parser/parser.cc'; then $(CYGPATH_W) 'Parser/parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parser.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-parser.Tpo Parser/$(DEPDIR)/cfa_cpp-parser.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/parser.cc' object='Parser/cfa_cpp-parser.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-parser.obj `if test -f 'Parser/parser.cc'; then $(CYGPATH_W) 'Parser/parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parser.cc'; fi`
+
+Parser/cfa_cpp-lex.o: Parser/lex.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-lex.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-lex.Tpo -c -o Parser/cfa_cpp-lex.o `test -f 'Parser/lex.cc' || echo '$(srcdir)/'`Parser/lex.cc
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-lex.Tpo Parser/$(DEPDIR)/cfa_cpp-lex.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/lex.cc' object='Parser/cfa_cpp-lex.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-lex.o `test -f 'Parser/lex.cc' || echo '$(srcdir)/'`Parser/lex.cc
+
+Parser/cfa_cpp-lex.obj: Parser/lex.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-lex.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-lex.Tpo -c -o Parser/cfa_cpp-lex.obj `if test -f 'Parser/lex.cc'; then $(CYGPATH_W) 'Parser/lex.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/lex.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-lex.Tpo Parser/$(DEPDIR)/cfa_cpp-lex.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/lex.cc' object='Parser/cfa_cpp-lex.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-lex.obj `if test -f 'Parser/lex.cc'; then $(CYGPATH_W) 'Parser/lex.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/lex.cc'; fi`
+
+Parser/cfa_cpp-TypedefTable.o: Parser/TypedefTable.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-TypedefTable.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-TypedefTable.Tpo -c -o Parser/cfa_cpp-TypedefTable.o `test -f 'Parser/TypedefTable.cc' || echo '$(srcdir)/'`Parser/TypedefTable.cc
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-TypedefTable.Tpo Parser/$(DEPDIR)/cfa_cpp-TypedefTable.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/TypedefTable.cc' object='Parser/cfa_cpp-TypedefTable.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-TypedefTable.o `test -f 'Parser/TypedefTable.cc' || echo '$(srcdir)/'`Parser/TypedefTable.cc
+
+Parser/cfa_cpp-TypedefTable.obj: Parser/TypedefTable.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-TypedefTable.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-TypedefTable.Tpo -c -o Parser/cfa_cpp-TypedefTable.obj `if test -f 'Parser/TypedefTable.cc'; then $(CYGPATH_W) 'Parser/TypedefTable.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/TypedefTable.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-TypedefTable.Tpo Parser/$(DEPDIR)/cfa_cpp-TypedefTable.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/TypedefTable.cc' object='Parser/cfa_cpp-TypedefTable.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-TypedefTable.obj `if test -f 'Parser/TypedefTable.cc'; then $(CYGPATH_W) 'Parser/TypedefTable.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/TypedefTable.cc'; fi`
+
+Parser/cfa_cpp-ParseNode.o: Parser/ParseNode.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-ParseNode.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-ParseNode.Tpo -c -o Parser/cfa_cpp-ParseNode.o `test -f 'Parser/ParseNode.cc' || echo '$(srcdir)/'`Parser/ParseNode.cc
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-ParseNode.Tpo Parser/$(DEPDIR)/cfa_cpp-ParseNode.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/ParseNode.cc' object='Parser/cfa_cpp-ParseNode.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-ParseNode.o `test -f 'Parser/ParseNode.cc' || echo '$(srcdir)/'`Parser/ParseNode.cc
+
+Parser/cfa_cpp-ParseNode.obj: Parser/ParseNode.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-ParseNode.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-ParseNode.Tpo -c -o Parser/cfa_cpp-ParseNode.obj `if test -f 'Parser/ParseNode.cc'; then $(CYGPATH_W) 'Parser/ParseNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/ParseNode.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-ParseNode.Tpo Parser/$(DEPDIR)/cfa_cpp-ParseNode.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/ParseNode.cc' object='Parser/cfa_cpp-ParseNode.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-ParseNode.obj `if test -f 'Parser/ParseNode.cc'; then $(CYGPATH_W) 'Parser/ParseNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/ParseNode.cc'; fi`
+
+Parser/cfa_cpp-DeclarationNode.o: Parser/DeclarationNode.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-DeclarationNode.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-DeclarationNode.Tpo -c -o Parser/cfa_cpp-DeclarationNode.o `test -f 'Parser/DeclarationNode.cc' || echo '$(srcdir)/'`Parser/DeclarationNode.cc
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-DeclarationNode.Tpo Parser/$(DEPDIR)/cfa_cpp-DeclarationNode.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/DeclarationNode.cc' object='Parser/cfa_cpp-DeclarationNode.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-DeclarationNode.o `test -f 'Parser/DeclarationNode.cc' || echo '$(srcdir)/'`Parser/DeclarationNode.cc
+
+Parser/cfa_cpp-DeclarationNode.obj: Parser/DeclarationNode.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-DeclarationNode.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-DeclarationNode.Tpo -c -o Parser/cfa_cpp-DeclarationNode.obj `if test -f 'Parser/DeclarationNode.cc'; then $(CYGPATH_W) 'Parser/DeclarationNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/DeclarationNode.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-DeclarationNode.Tpo Parser/$(DEPDIR)/cfa_cpp-DeclarationNode.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/DeclarationNode.cc' object='Parser/cfa_cpp-DeclarationNode.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-DeclarationNode.obj `if test -f 'Parser/DeclarationNode.cc'; then $(CYGPATH_W) 'Parser/DeclarationNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/DeclarationNode.cc'; fi`
+
+Parser/cfa_cpp-ExpressionNode.o: Parser/ExpressionNode.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-ExpressionNode.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-ExpressionNode.Tpo -c -o Parser/cfa_cpp-ExpressionNode.o `test -f 'Parser/ExpressionNode.cc' || echo '$(srcdir)/'`Parser/ExpressionNode.cc
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-ExpressionNode.Tpo Parser/$(DEPDIR)/cfa_cpp-ExpressionNode.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/ExpressionNode.cc' object='Parser/cfa_cpp-ExpressionNode.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-ExpressionNode.o `test -f 'Parser/ExpressionNode.cc' || echo '$(srcdir)/'`Parser/ExpressionNode.cc
+
+Parser/cfa_cpp-ExpressionNode.obj: Parser/ExpressionNode.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-ExpressionNode.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-ExpressionNode.Tpo -c -o Parser/cfa_cpp-ExpressionNode.obj `if test -f 'Parser/ExpressionNode.cc'; then $(CYGPATH_W) 'Parser/ExpressionNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/ExpressionNode.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-ExpressionNode.Tpo Parser/$(DEPDIR)/cfa_cpp-ExpressionNode.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/ExpressionNode.cc' object='Parser/cfa_cpp-ExpressionNode.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-ExpressionNode.obj `if test -f 'Parser/ExpressionNode.cc'; then $(CYGPATH_W) 'Parser/ExpressionNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/ExpressionNode.cc'; fi`
+
+Parser/cfa_cpp-StatementNode.o: Parser/StatementNode.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-StatementNode.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-StatementNode.Tpo -c -o Parser/cfa_cpp-StatementNode.o `test -f 'Parser/StatementNode.cc' || echo '$(srcdir)/'`Parser/StatementNode.cc
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-StatementNode.Tpo Parser/$(DEPDIR)/cfa_cpp-StatementNode.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/StatementNode.cc' object='Parser/cfa_cpp-StatementNode.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-StatementNode.o `test -f 'Parser/StatementNode.cc' || echo '$(srcdir)/'`Parser/StatementNode.cc
+
+Parser/cfa_cpp-StatementNode.obj: Parser/StatementNode.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-StatementNode.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-StatementNode.Tpo -c -o Parser/cfa_cpp-StatementNode.obj `if test -f 'Parser/StatementNode.cc'; then $(CYGPATH_W) 'Parser/StatementNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/StatementNode.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-StatementNode.Tpo Parser/$(DEPDIR)/cfa_cpp-StatementNode.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/StatementNode.cc' object='Parser/cfa_cpp-StatementNode.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-StatementNode.obj `if test -f 'Parser/StatementNode.cc'; then $(CYGPATH_W) 'Parser/StatementNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/StatementNode.cc'; fi`
+
+Parser/cfa_cpp-InitializerNode.o: Parser/InitializerNode.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-InitializerNode.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-InitializerNode.Tpo -c -o Parser/cfa_cpp-InitializerNode.o `test -f 'Parser/InitializerNode.cc' || echo '$(srcdir)/'`Parser/InitializerNode.cc
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-InitializerNode.Tpo Parser/$(DEPDIR)/cfa_cpp-InitializerNode.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/InitializerNode.cc' object='Parser/cfa_cpp-InitializerNode.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-InitializerNode.o `test -f 'Parser/InitializerNode.cc' || echo '$(srcdir)/'`Parser/InitializerNode.cc
+
+Parser/cfa_cpp-InitializerNode.obj: Parser/InitializerNode.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-InitializerNode.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-InitializerNode.Tpo -c -o Parser/cfa_cpp-InitializerNode.obj `if test -f 'Parser/InitializerNode.cc'; then $(CYGPATH_W) 'Parser/InitializerNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/InitializerNode.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-InitializerNode.Tpo Parser/$(DEPDIR)/cfa_cpp-InitializerNode.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/InitializerNode.cc' object='Parser/cfa_cpp-InitializerNode.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-InitializerNode.obj `if test -f 'Parser/InitializerNode.cc'; then $(CYGPATH_W) 'Parser/InitializerNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/InitializerNode.cc'; fi`
+
+Parser/cfa_cpp-TypeData.o: Parser/TypeData.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-TypeData.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-TypeData.Tpo -c -o Parser/cfa_cpp-TypeData.o `test -f 'Parser/TypeData.cc' || echo '$(srcdir)/'`Parser/TypeData.cc
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-TypeData.Tpo Parser/$(DEPDIR)/cfa_cpp-TypeData.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/TypeData.cc' object='Parser/cfa_cpp-TypeData.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-TypeData.o `test -f 'Parser/TypeData.cc' || echo '$(srcdir)/'`Parser/TypeData.cc
+
+Parser/cfa_cpp-TypeData.obj: Parser/TypeData.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-TypeData.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-TypeData.Tpo -c -o Parser/cfa_cpp-TypeData.obj `if test -f 'Parser/TypeData.cc'; then $(CYGPATH_W) 'Parser/TypeData.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/TypeData.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-TypeData.Tpo Parser/$(DEPDIR)/cfa_cpp-TypeData.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/TypeData.cc' object='Parser/cfa_cpp-TypeData.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-TypeData.obj `if test -f 'Parser/TypeData.cc'; then $(CYGPATH_W) 'Parser/TypeData.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/TypeData.cc'; fi`
+
+Parser/cfa_cpp-LinkageSpec.o: Parser/LinkageSpec.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-LinkageSpec.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-LinkageSpec.Tpo -c -o Parser/cfa_cpp-LinkageSpec.o `test -f 'Parser/LinkageSpec.cc' || echo '$(srcdir)/'`Parser/LinkageSpec.cc
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-LinkageSpec.Tpo Parser/$(DEPDIR)/cfa_cpp-LinkageSpec.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/LinkageSpec.cc' object='Parser/cfa_cpp-LinkageSpec.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-LinkageSpec.o `test -f 'Parser/LinkageSpec.cc' || echo '$(srcdir)/'`Parser/LinkageSpec.cc
+
+Parser/cfa_cpp-LinkageSpec.obj: Parser/LinkageSpec.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-LinkageSpec.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-LinkageSpec.Tpo -c -o Parser/cfa_cpp-LinkageSpec.obj `if test -f 'Parser/LinkageSpec.cc'; then $(CYGPATH_W) 'Parser/LinkageSpec.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/LinkageSpec.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-LinkageSpec.Tpo Parser/$(DEPDIR)/cfa_cpp-LinkageSpec.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/LinkageSpec.cc' object='Parser/cfa_cpp-LinkageSpec.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-LinkageSpec.obj `if test -f 'Parser/LinkageSpec.cc'; then $(CYGPATH_W) 'Parser/LinkageSpec.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/LinkageSpec.cc'; fi`
+
+Parser/cfa_cpp-parseutility.o: Parser/parseutility.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-parseutility.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-parseutility.Tpo -c -o Parser/cfa_cpp-parseutility.o `test -f 'Parser/parseutility.cc' || echo '$(srcdir)/'`Parser/parseutility.cc
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-parseutility.Tpo Parser/$(DEPDIR)/cfa_cpp-parseutility.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/parseutility.cc' object='Parser/cfa_cpp-parseutility.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-parseutility.o `test -f 'Parser/parseutility.cc' || echo '$(srcdir)/'`Parser/parseutility.cc
+
+Parser/cfa_cpp-parseutility.obj: Parser/parseutility.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-parseutility.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-parseutility.Tpo -c -o Parser/cfa_cpp-parseutility.obj `if test -f 'Parser/parseutility.cc'; then $(CYGPATH_W) 'Parser/parseutility.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parseutility.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-parseutility.Tpo Parser/$(DEPDIR)/cfa_cpp-parseutility.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/parseutility.cc' object='Parser/cfa_cpp-parseutility.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-parseutility.obj `if test -f 'Parser/parseutility.cc'; then $(CYGPATH_W) 'Parser/parseutility.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parseutility.cc'; fi`
+
+Parser/cfa_cpp-Parser.o: Parser/Parser.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-Parser.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-Parser.Tpo -c -o Parser/cfa_cpp-Parser.o `test -f 'Parser/Parser.cc' || echo '$(srcdir)/'`Parser/Parser.cc
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-Parser.Tpo Parser/$(DEPDIR)/cfa_cpp-Parser.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/Parser.cc' object='Parser/cfa_cpp-Parser.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-Parser.o `test -f 'Parser/Parser.cc' || echo '$(srcdir)/'`Parser/Parser.cc
+
+Parser/cfa_cpp-Parser.obj: Parser/Parser.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-Parser.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-Parser.Tpo -c -o Parser/cfa_cpp-Parser.obj `if test -f 'Parser/Parser.cc'; then $(CYGPATH_W) 'Parser/Parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/Parser.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) Parser/$(DEPDIR)/cfa_cpp-Parser.Tpo Parser/$(DEPDIR)/cfa_cpp-Parser.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Parser/Parser.cc' object='Parser/cfa_cpp-Parser.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-Parser.obj `if test -f 'Parser/Parser.cc'; then $(CYGPATH_W) 'Parser/Parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/Parser.cc'; fi`
+
+ResolvExpr/cfa_cpp-AlternativeFinder.o: ResolvExpr/AlternativeFinder.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-AlternativeFinder.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativeFinder.Tpo -c -o ResolvExpr/cfa_cpp-AlternativeFinder.o `test -f 'ResolvExpr/AlternativeFinder.cc' || echo '$(srcdir)/'`ResolvExpr/AlternativeFinder.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativeFinder.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativeFinder.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/AlternativeFinder.cc' object='ResolvExpr/cfa_cpp-AlternativeFinder.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-AlternativeFinder.o `test -f 'ResolvExpr/AlternativeFinder.cc' || echo '$(srcdir)/'`ResolvExpr/AlternativeFinder.cc
+
+ResolvExpr/cfa_cpp-AlternativeFinder.obj: ResolvExpr/AlternativeFinder.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-AlternativeFinder.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativeFinder.Tpo -c -o ResolvExpr/cfa_cpp-AlternativeFinder.obj `if test -f 'ResolvExpr/AlternativeFinder.cc'; then $(CYGPATH_W) 'ResolvExpr/AlternativeFinder.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AlternativeFinder.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativeFinder.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativeFinder.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/AlternativeFinder.cc' object='ResolvExpr/cfa_cpp-AlternativeFinder.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-AlternativeFinder.obj `if test -f 'ResolvExpr/AlternativeFinder.cc'; then $(CYGPATH_W) 'ResolvExpr/AlternativeFinder.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AlternativeFinder.cc'; fi`
+
+ResolvExpr/cfa_cpp-Alternative.o: ResolvExpr/Alternative.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-Alternative.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-Alternative.Tpo -c -o ResolvExpr/cfa_cpp-Alternative.o `test -f 'ResolvExpr/Alternative.cc' || echo '$(srcdir)/'`ResolvExpr/Alternative.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-Alternative.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-Alternative.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/Alternative.cc' object='ResolvExpr/cfa_cpp-Alternative.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-Alternative.o `test -f 'ResolvExpr/Alternative.cc' || echo '$(srcdir)/'`ResolvExpr/Alternative.cc
+
+ResolvExpr/cfa_cpp-Alternative.obj: ResolvExpr/Alternative.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-Alternative.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-Alternative.Tpo -c -o ResolvExpr/cfa_cpp-Alternative.obj `if test -f 'ResolvExpr/Alternative.cc'; then $(CYGPATH_W) 'ResolvExpr/Alternative.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Alternative.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-Alternative.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-Alternative.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/Alternative.cc' object='ResolvExpr/cfa_cpp-Alternative.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-Alternative.obj `if test -f 'ResolvExpr/Alternative.cc'; then $(CYGPATH_W) 'ResolvExpr/Alternative.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Alternative.cc'; fi`
+
+ResolvExpr/cfa_cpp-Unify.o: ResolvExpr/Unify.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-Unify.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-Unify.Tpo -c -o ResolvExpr/cfa_cpp-Unify.o `test -f 'ResolvExpr/Unify.cc' || echo '$(srcdir)/'`ResolvExpr/Unify.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-Unify.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-Unify.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/Unify.cc' object='ResolvExpr/cfa_cpp-Unify.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-Unify.o `test -f 'ResolvExpr/Unify.cc' || echo '$(srcdir)/'`ResolvExpr/Unify.cc
+
+ResolvExpr/cfa_cpp-Unify.obj: ResolvExpr/Unify.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-Unify.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-Unify.Tpo -c -o ResolvExpr/cfa_cpp-Unify.obj `if test -f 'ResolvExpr/Unify.cc'; then $(CYGPATH_W) 'ResolvExpr/Unify.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Unify.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-Unify.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-Unify.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/Unify.cc' object='ResolvExpr/cfa_cpp-Unify.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-Unify.obj `if test -f 'ResolvExpr/Unify.cc'; then $(CYGPATH_W) 'ResolvExpr/Unify.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Unify.cc'; fi`
+
+ResolvExpr/cfa_cpp-PtrsAssignable.o: ResolvExpr/PtrsAssignable.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-PtrsAssignable.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsAssignable.Tpo -c -o ResolvExpr/cfa_cpp-PtrsAssignable.o `test -f 'ResolvExpr/PtrsAssignable.cc' || echo '$(srcdir)/'`ResolvExpr/PtrsAssignable.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsAssignable.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsAssignable.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/PtrsAssignable.cc' object='ResolvExpr/cfa_cpp-PtrsAssignable.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-PtrsAssignable.o `test -f 'ResolvExpr/PtrsAssignable.cc' || echo '$(srcdir)/'`ResolvExpr/PtrsAssignable.cc
+
+ResolvExpr/cfa_cpp-PtrsAssignable.obj: ResolvExpr/PtrsAssignable.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-PtrsAssignable.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsAssignable.Tpo -c -o ResolvExpr/cfa_cpp-PtrsAssignable.obj `if test -f 'ResolvExpr/PtrsAssignable.cc'; then $(CYGPATH_W) 'ResolvExpr/PtrsAssignable.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PtrsAssignable.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsAssignable.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsAssignable.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/PtrsAssignable.cc' object='ResolvExpr/cfa_cpp-PtrsAssignable.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-PtrsAssignable.obj `if test -f 'ResolvExpr/PtrsAssignable.cc'; then $(CYGPATH_W) 'ResolvExpr/PtrsAssignable.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PtrsAssignable.cc'; fi`
+
+ResolvExpr/cfa_cpp-CommonType.o: ResolvExpr/CommonType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-CommonType.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-CommonType.Tpo -c -o ResolvExpr/cfa_cpp-CommonType.o `test -f 'ResolvExpr/CommonType.cc' || echo '$(srcdir)/'`ResolvExpr/CommonType.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-CommonType.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-CommonType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/CommonType.cc' object='ResolvExpr/cfa_cpp-CommonType.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-CommonType.o `test -f 'ResolvExpr/CommonType.cc' || echo '$(srcdir)/'`ResolvExpr/CommonType.cc
+
+ResolvExpr/cfa_cpp-CommonType.obj: ResolvExpr/CommonType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-CommonType.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-CommonType.Tpo -c -o ResolvExpr/cfa_cpp-CommonType.obj `if test -f 'ResolvExpr/CommonType.cc'; then $(CYGPATH_W) 'ResolvExpr/CommonType.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/CommonType.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-CommonType.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-CommonType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/CommonType.cc' object='ResolvExpr/cfa_cpp-CommonType.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-CommonType.obj `if test -f 'ResolvExpr/CommonType.cc'; then $(CYGPATH_W) 'ResolvExpr/CommonType.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/CommonType.cc'; fi`
+
+ResolvExpr/cfa_cpp-ConversionCost.o: ResolvExpr/ConversionCost.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-ConversionCost.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-ConversionCost.Tpo -c -o ResolvExpr/cfa_cpp-ConversionCost.o `test -f 'ResolvExpr/ConversionCost.cc' || echo '$(srcdir)/'`ResolvExpr/ConversionCost.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-ConversionCost.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-ConversionCost.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/ConversionCost.cc' object='ResolvExpr/cfa_cpp-ConversionCost.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-ConversionCost.o `test -f 'ResolvExpr/ConversionCost.cc' || echo '$(srcdir)/'`ResolvExpr/ConversionCost.cc
+
+ResolvExpr/cfa_cpp-ConversionCost.obj: ResolvExpr/ConversionCost.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-ConversionCost.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-ConversionCost.Tpo -c -o ResolvExpr/cfa_cpp-ConversionCost.obj `if test -f 'ResolvExpr/ConversionCost.cc'; then $(CYGPATH_W) 'ResolvExpr/ConversionCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/ConversionCost.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-ConversionCost.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-ConversionCost.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/ConversionCost.cc' object='ResolvExpr/cfa_cpp-ConversionCost.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-ConversionCost.obj `if test -f 'ResolvExpr/ConversionCost.cc'; then $(CYGPATH_W) 'ResolvExpr/ConversionCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/ConversionCost.cc'; fi`
+
+ResolvExpr/cfa_cpp-CastCost.o: ResolvExpr/CastCost.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-CastCost.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-CastCost.Tpo -c -o ResolvExpr/cfa_cpp-CastCost.o `test -f 'ResolvExpr/CastCost.cc' || echo '$(srcdir)/'`ResolvExpr/CastCost.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-CastCost.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-CastCost.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/CastCost.cc' object='ResolvExpr/cfa_cpp-CastCost.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-CastCost.o `test -f 'ResolvExpr/CastCost.cc' || echo '$(srcdir)/'`ResolvExpr/CastCost.cc
+
+ResolvExpr/cfa_cpp-CastCost.obj: ResolvExpr/CastCost.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-CastCost.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-CastCost.Tpo -c -o ResolvExpr/cfa_cpp-CastCost.obj `if test -f 'ResolvExpr/CastCost.cc'; then $(CYGPATH_W) 'ResolvExpr/CastCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/CastCost.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-CastCost.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-CastCost.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/CastCost.cc' object='ResolvExpr/cfa_cpp-CastCost.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-CastCost.obj `if test -f 'ResolvExpr/CastCost.cc'; then $(CYGPATH_W) 'ResolvExpr/CastCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/CastCost.cc'; fi`
+
+ResolvExpr/cfa_cpp-PtrsCastable.o: ResolvExpr/PtrsCastable.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-PtrsCastable.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsCastable.Tpo -c -o ResolvExpr/cfa_cpp-PtrsCastable.o `test -f 'ResolvExpr/PtrsCastable.cc' || echo '$(srcdir)/'`ResolvExpr/PtrsCastable.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsCastable.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsCastable.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/PtrsCastable.cc' object='ResolvExpr/cfa_cpp-PtrsCastable.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-PtrsCastable.o `test -f 'ResolvExpr/PtrsCastable.cc' || echo '$(srcdir)/'`ResolvExpr/PtrsCastable.cc
+
+ResolvExpr/cfa_cpp-PtrsCastable.obj: ResolvExpr/PtrsCastable.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-PtrsCastable.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsCastable.Tpo -c -o ResolvExpr/cfa_cpp-PtrsCastable.obj `if test -f 'ResolvExpr/PtrsCastable.cc'; then $(CYGPATH_W) 'ResolvExpr/PtrsCastable.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PtrsCastable.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsCastable.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsCastable.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/PtrsCastable.cc' object='ResolvExpr/cfa_cpp-PtrsCastable.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-PtrsCastable.obj `if test -f 'ResolvExpr/PtrsCastable.cc'; then $(CYGPATH_W) 'ResolvExpr/PtrsCastable.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PtrsCastable.cc'; fi`
+
+ResolvExpr/cfa_cpp-AdjustExprType.o: ResolvExpr/AdjustExprType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-AdjustExprType.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-AdjustExprType.Tpo -c -o ResolvExpr/cfa_cpp-AdjustExprType.o `test -f 'ResolvExpr/AdjustExprType.cc' || echo '$(srcdir)/'`ResolvExpr/AdjustExprType.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-AdjustExprType.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-AdjustExprType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/AdjustExprType.cc' object='ResolvExpr/cfa_cpp-AdjustExprType.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-AdjustExprType.o `test -f 'ResolvExpr/AdjustExprType.cc' || echo '$(srcdir)/'`ResolvExpr/AdjustExprType.cc
+
+ResolvExpr/cfa_cpp-AdjustExprType.obj: ResolvExpr/AdjustExprType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-AdjustExprType.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-AdjustExprType.Tpo -c -o ResolvExpr/cfa_cpp-AdjustExprType.obj `if test -f 'ResolvExpr/AdjustExprType.cc'; then $(CYGPATH_W) 'ResolvExpr/AdjustExprType.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AdjustExprType.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-AdjustExprType.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-AdjustExprType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/AdjustExprType.cc' object='ResolvExpr/cfa_cpp-AdjustExprType.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-AdjustExprType.obj `if test -f 'ResolvExpr/AdjustExprType.cc'; then $(CYGPATH_W) 'ResolvExpr/AdjustExprType.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AdjustExprType.cc'; fi`
+
+ResolvExpr/cfa_cpp-AlternativePrinter.o: ResolvExpr/AlternativePrinter.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-AlternativePrinter.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativePrinter.Tpo -c -o ResolvExpr/cfa_cpp-AlternativePrinter.o `test -f 'ResolvExpr/AlternativePrinter.cc' || echo '$(srcdir)/'`ResolvExpr/AlternativePrinter.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativePrinter.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativePrinter.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/AlternativePrinter.cc' object='ResolvExpr/cfa_cpp-AlternativePrinter.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-AlternativePrinter.o `test -f 'ResolvExpr/AlternativePrinter.cc' || echo '$(srcdir)/'`ResolvExpr/AlternativePrinter.cc
+
+ResolvExpr/cfa_cpp-AlternativePrinter.obj: ResolvExpr/AlternativePrinter.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-AlternativePrinter.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativePrinter.Tpo -c -o ResolvExpr/cfa_cpp-AlternativePrinter.obj `if test -f 'ResolvExpr/AlternativePrinter.cc'; then $(CYGPATH_W) 'ResolvExpr/AlternativePrinter.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AlternativePrinter.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativePrinter.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativePrinter.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/AlternativePrinter.cc' object='ResolvExpr/cfa_cpp-AlternativePrinter.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-AlternativePrinter.obj `if test -f 'ResolvExpr/AlternativePrinter.cc'; then $(CYGPATH_W) 'ResolvExpr/AlternativePrinter.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AlternativePrinter.cc'; fi`
+
+ResolvExpr/cfa_cpp-Resolver.o: ResolvExpr/Resolver.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-Resolver.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-Resolver.Tpo -c -o ResolvExpr/cfa_cpp-Resolver.o `test -f 'ResolvExpr/Resolver.cc' || echo '$(srcdir)/'`ResolvExpr/Resolver.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-Resolver.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-Resolver.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/Resolver.cc' object='ResolvExpr/cfa_cpp-Resolver.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-Resolver.o `test -f 'ResolvExpr/Resolver.cc' || echo '$(srcdir)/'`ResolvExpr/Resolver.cc
+
+ResolvExpr/cfa_cpp-Resolver.obj: ResolvExpr/Resolver.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-Resolver.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-Resolver.Tpo -c -o ResolvExpr/cfa_cpp-Resolver.obj `if test -f 'ResolvExpr/Resolver.cc'; then $(CYGPATH_W) 'ResolvExpr/Resolver.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Resolver.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-Resolver.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-Resolver.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/Resolver.cc' object='ResolvExpr/cfa_cpp-Resolver.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-Resolver.obj `if test -f 'ResolvExpr/Resolver.cc'; then $(CYGPATH_W) 'ResolvExpr/Resolver.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Resolver.cc'; fi`
+
+ResolvExpr/cfa_cpp-ResolveTypeof.o: ResolvExpr/ResolveTypeof.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-ResolveTypeof.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-ResolveTypeof.Tpo -c -o ResolvExpr/cfa_cpp-ResolveTypeof.o `test -f 'ResolvExpr/ResolveTypeof.cc' || echo '$(srcdir)/'`ResolvExpr/ResolveTypeof.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-ResolveTypeof.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-ResolveTypeof.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/ResolveTypeof.cc' object='ResolvExpr/cfa_cpp-ResolveTypeof.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-ResolveTypeof.o `test -f 'ResolvExpr/ResolveTypeof.cc' || echo '$(srcdir)/'`ResolvExpr/ResolveTypeof.cc
+
+ResolvExpr/cfa_cpp-ResolveTypeof.obj: ResolvExpr/ResolveTypeof.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-ResolveTypeof.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-ResolveTypeof.Tpo -c -o ResolvExpr/cfa_cpp-ResolveTypeof.obj `if test -f 'ResolvExpr/ResolveTypeof.cc'; then $(CYGPATH_W) 'ResolvExpr/ResolveTypeof.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/ResolveTypeof.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-ResolveTypeof.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-ResolveTypeof.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/ResolveTypeof.cc' object='ResolvExpr/cfa_cpp-ResolveTypeof.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-ResolveTypeof.obj `if test -f 'ResolvExpr/ResolveTypeof.cc'; then $(CYGPATH_W) 'ResolvExpr/ResolveTypeof.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/ResolveTypeof.cc'; fi`
+
+ResolvExpr/cfa_cpp-RenameVars.o: ResolvExpr/RenameVars.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-RenameVars.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-RenameVars.Tpo -c -o ResolvExpr/cfa_cpp-RenameVars.o `test -f 'ResolvExpr/RenameVars.cc' || echo '$(srcdir)/'`ResolvExpr/RenameVars.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-RenameVars.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-RenameVars.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/RenameVars.cc' object='ResolvExpr/cfa_cpp-RenameVars.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-RenameVars.o `test -f 'ResolvExpr/RenameVars.cc' || echo '$(srcdir)/'`ResolvExpr/RenameVars.cc
+
+ResolvExpr/cfa_cpp-RenameVars.obj: ResolvExpr/RenameVars.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-RenameVars.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-RenameVars.Tpo -c -o ResolvExpr/cfa_cpp-RenameVars.obj `if test -f 'ResolvExpr/RenameVars.cc'; then $(CYGPATH_W) 'ResolvExpr/RenameVars.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/RenameVars.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-RenameVars.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-RenameVars.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/RenameVars.cc' object='ResolvExpr/cfa_cpp-RenameVars.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-RenameVars.obj `if test -f 'ResolvExpr/RenameVars.cc'; then $(CYGPATH_W) 'ResolvExpr/RenameVars.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/RenameVars.cc'; fi`
+
+ResolvExpr/cfa_cpp-FindOpenVars.o: ResolvExpr/FindOpenVars.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-FindOpenVars.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-FindOpenVars.Tpo -c -o ResolvExpr/cfa_cpp-FindOpenVars.o `test -f 'ResolvExpr/FindOpenVars.cc' || echo '$(srcdir)/'`ResolvExpr/FindOpenVars.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-FindOpenVars.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-FindOpenVars.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/FindOpenVars.cc' object='ResolvExpr/cfa_cpp-FindOpenVars.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-FindOpenVars.o `test -f 'ResolvExpr/FindOpenVars.cc' || echo '$(srcdir)/'`ResolvExpr/FindOpenVars.cc
+
+ResolvExpr/cfa_cpp-FindOpenVars.obj: ResolvExpr/FindOpenVars.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-FindOpenVars.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-FindOpenVars.Tpo -c -o ResolvExpr/cfa_cpp-FindOpenVars.obj `if test -f 'ResolvExpr/FindOpenVars.cc'; then $(CYGPATH_W) 'ResolvExpr/FindOpenVars.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/FindOpenVars.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-FindOpenVars.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-FindOpenVars.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/FindOpenVars.cc' object='ResolvExpr/cfa_cpp-FindOpenVars.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-FindOpenVars.obj `if test -f 'ResolvExpr/FindOpenVars.cc'; then $(CYGPATH_W) 'ResolvExpr/FindOpenVars.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/FindOpenVars.cc'; fi`
+
+ResolvExpr/cfa_cpp-PolyCost.o: ResolvExpr/PolyCost.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-PolyCost.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-PolyCost.Tpo -c -o ResolvExpr/cfa_cpp-PolyCost.o `test -f 'ResolvExpr/PolyCost.cc' || echo '$(srcdir)/'`ResolvExpr/PolyCost.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-PolyCost.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-PolyCost.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/PolyCost.cc' object='ResolvExpr/cfa_cpp-PolyCost.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-PolyCost.o `test -f 'ResolvExpr/PolyCost.cc' || echo '$(srcdir)/'`ResolvExpr/PolyCost.cc
+
+ResolvExpr/cfa_cpp-PolyCost.obj: ResolvExpr/PolyCost.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-PolyCost.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-PolyCost.Tpo -c -o ResolvExpr/cfa_cpp-PolyCost.obj `if test -f 'ResolvExpr/PolyCost.cc'; then $(CYGPATH_W) 'ResolvExpr/PolyCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PolyCost.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-PolyCost.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-PolyCost.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/PolyCost.cc' object='ResolvExpr/cfa_cpp-PolyCost.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-PolyCost.obj `if test -f 'ResolvExpr/PolyCost.cc'; then $(CYGPATH_W) 'ResolvExpr/PolyCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PolyCost.cc'; fi`
+
+ResolvExpr/cfa_cpp-Occurs.o: ResolvExpr/Occurs.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-Occurs.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-Occurs.Tpo -c -o ResolvExpr/cfa_cpp-Occurs.o `test -f 'ResolvExpr/Occurs.cc' || echo '$(srcdir)/'`ResolvExpr/Occurs.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-Occurs.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-Occurs.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/Occurs.cc' object='ResolvExpr/cfa_cpp-Occurs.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-Occurs.o `test -f 'ResolvExpr/Occurs.cc' || echo '$(srcdir)/'`ResolvExpr/Occurs.cc
+
+ResolvExpr/cfa_cpp-Occurs.obj: ResolvExpr/Occurs.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-Occurs.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-Occurs.Tpo -c -o ResolvExpr/cfa_cpp-Occurs.obj `if test -f 'ResolvExpr/Occurs.cc'; then $(CYGPATH_W) 'ResolvExpr/Occurs.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Occurs.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-Occurs.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-Occurs.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/Occurs.cc' object='ResolvExpr/cfa_cpp-Occurs.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-Occurs.obj `if test -f 'ResolvExpr/Occurs.cc'; then $(CYGPATH_W) 'ResolvExpr/Occurs.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Occurs.cc'; fi`
+
+ResolvExpr/cfa_cpp-TypeEnvironment.o: ResolvExpr/TypeEnvironment.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-TypeEnvironment.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-TypeEnvironment.Tpo -c -o ResolvExpr/cfa_cpp-TypeEnvironment.o `test -f 'ResolvExpr/TypeEnvironment.cc' || echo '$(srcdir)/'`ResolvExpr/TypeEnvironment.cc
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-TypeEnvironment.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-TypeEnvironment.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/TypeEnvironment.cc' object='ResolvExpr/cfa_cpp-TypeEnvironment.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-TypeEnvironment.o `test -f 'ResolvExpr/TypeEnvironment.cc' || echo '$(srcdir)/'`ResolvExpr/TypeEnvironment.cc
+
+ResolvExpr/cfa_cpp-TypeEnvironment.obj: ResolvExpr/TypeEnvironment.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-TypeEnvironment.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-TypeEnvironment.Tpo -c -o ResolvExpr/cfa_cpp-TypeEnvironment.obj `if test -f 'ResolvExpr/TypeEnvironment.cc'; then $(CYGPATH_W) 'ResolvExpr/TypeEnvironment.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/TypeEnvironment.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-TypeEnvironment.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-TypeEnvironment.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ResolvExpr/TypeEnvironment.cc' object='ResolvExpr/cfa_cpp-TypeEnvironment.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-TypeEnvironment.obj `if test -f 'ResolvExpr/TypeEnvironment.cc'; then $(CYGPATH_W) 'ResolvExpr/TypeEnvironment.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/TypeEnvironment.cc'; fi`
+
+SymTab/cfa_cpp-IdTable.o: SymTab/IdTable.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-IdTable.o -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-IdTable.Tpo -c -o SymTab/cfa_cpp-IdTable.o `test -f 'SymTab/IdTable.cc' || echo '$(srcdir)/'`SymTab/IdTable.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SymTab/$(DEPDIR)/cfa_cpp-IdTable.Tpo SymTab/$(DEPDIR)/cfa_cpp-IdTable.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SymTab/IdTable.cc' object='SymTab/cfa_cpp-IdTable.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-IdTable.o `test -f 'SymTab/IdTable.cc' || echo '$(srcdir)/'`SymTab/IdTable.cc
+
+SymTab/cfa_cpp-IdTable.obj: SymTab/IdTable.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-IdTable.obj -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-IdTable.Tpo -c -o SymTab/cfa_cpp-IdTable.obj `if test -f 'SymTab/IdTable.cc'; then $(CYGPATH_W) 'SymTab/IdTable.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/IdTable.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SymTab/$(DEPDIR)/cfa_cpp-IdTable.Tpo SymTab/$(DEPDIR)/cfa_cpp-IdTable.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SymTab/IdTable.cc' object='SymTab/cfa_cpp-IdTable.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-IdTable.obj `if test -f 'SymTab/IdTable.cc'; then $(CYGPATH_W) 'SymTab/IdTable.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/IdTable.cc'; fi`
+
+SymTab/cfa_cpp-Indexer.o: SymTab/Indexer.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-Indexer.o -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-Indexer.Tpo -c -o SymTab/cfa_cpp-Indexer.o `test -f 'SymTab/Indexer.cc' || echo '$(srcdir)/'`SymTab/Indexer.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SymTab/$(DEPDIR)/cfa_cpp-Indexer.Tpo SymTab/$(DEPDIR)/cfa_cpp-Indexer.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SymTab/Indexer.cc' object='SymTab/cfa_cpp-Indexer.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-Indexer.o `test -f 'SymTab/Indexer.cc' || echo '$(srcdir)/'`SymTab/Indexer.cc
+
+SymTab/cfa_cpp-Indexer.obj: SymTab/Indexer.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-Indexer.obj -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-Indexer.Tpo -c -o SymTab/cfa_cpp-Indexer.obj `if test -f 'SymTab/Indexer.cc'; then $(CYGPATH_W) 'SymTab/Indexer.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Indexer.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SymTab/$(DEPDIR)/cfa_cpp-Indexer.Tpo SymTab/$(DEPDIR)/cfa_cpp-Indexer.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SymTab/Indexer.cc' object='SymTab/cfa_cpp-Indexer.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-Indexer.obj `if test -f 'SymTab/Indexer.cc'; then $(CYGPATH_W) 'SymTab/Indexer.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Indexer.cc'; fi`
+
+SymTab/cfa_cpp-Mangler.o: SymTab/Mangler.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-Mangler.o -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-Mangler.Tpo -c -o SymTab/cfa_cpp-Mangler.o `test -f 'SymTab/Mangler.cc' || echo '$(srcdir)/'`SymTab/Mangler.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SymTab/$(DEPDIR)/cfa_cpp-Mangler.Tpo SymTab/$(DEPDIR)/cfa_cpp-Mangler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SymTab/Mangler.cc' object='SymTab/cfa_cpp-Mangler.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-Mangler.o `test -f 'SymTab/Mangler.cc' || echo '$(srcdir)/'`SymTab/Mangler.cc
+
+SymTab/cfa_cpp-Mangler.obj: SymTab/Mangler.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-Mangler.obj -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-Mangler.Tpo -c -o SymTab/cfa_cpp-Mangler.obj `if test -f 'SymTab/Mangler.cc'; then $(CYGPATH_W) 'SymTab/Mangler.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Mangler.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SymTab/$(DEPDIR)/cfa_cpp-Mangler.Tpo SymTab/$(DEPDIR)/cfa_cpp-Mangler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SymTab/Mangler.cc' object='SymTab/cfa_cpp-Mangler.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-Mangler.obj `if test -f 'SymTab/Mangler.cc'; then $(CYGPATH_W) 'SymTab/Mangler.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Mangler.cc'; fi`
+
+SymTab/cfa_cpp-Validate.o: SymTab/Validate.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-Validate.o -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-Validate.Tpo -c -o SymTab/cfa_cpp-Validate.o `test -f 'SymTab/Validate.cc' || echo '$(srcdir)/'`SymTab/Validate.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SymTab/$(DEPDIR)/cfa_cpp-Validate.Tpo SymTab/$(DEPDIR)/cfa_cpp-Validate.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SymTab/Validate.cc' object='SymTab/cfa_cpp-Validate.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-Validate.o `test -f 'SymTab/Validate.cc' || echo '$(srcdir)/'`SymTab/Validate.cc
+
+SymTab/cfa_cpp-Validate.obj: SymTab/Validate.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-Validate.obj -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-Validate.Tpo -c -o SymTab/cfa_cpp-Validate.obj `if test -f 'SymTab/Validate.cc'; then $(CYGPATH_W) 'SymTab/Validate.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Validate.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SymTab/$(DEPDIR)/cfa_cpp-Validate.Tpo SymTab/$(DEPDIR)/cfa_cpp-Validate.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SymTab/Validate.cc' object='SymTab/cfa_cpp-Validate.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-Validate.obj `if test -f 'SymTab/Validate.cc'; then $(CYGPATH_W) 'SymTab/Validate.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Validate.cc'; fi`
+
+SymTab/cfa_cpp-FixFunction.o: SymTab/FixFunction.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-FixFunction.o -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-FixFunction.Tpo -c -o SymTab/cfa_cpp-FixFunction.o `test -f 'SymTab/FixFunction.cc' || echo '$(srcdir)/'`SymTab/FixFunction.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SymTab/$(DEPDIR)/cfa_cpp-FixFunction.Tpo SymTab/$(DEPDIR)/cfa_cpp-FixFunction.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SymTab/FixFunction.cc' object='SymTab/cfa_cpp-FixFunction.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-FixFunction.o `test -f 'SymTab/FixFunction.cc' || echo '$(srcdir)/'`SymTab/FixFunction.cc
+
+SymTab/cfa_cpp-FixFunction.obj: SymTab/FixFunction.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-FixFunction.obj -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-FixFunction.Tpo -c -o SymTab/cfa_cpp-FixFunction.obj `if test -f 'SymTab/FixFunction.cc'; then $(CYGPATH_W) 'SymTab/FixFunction.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/FixFunction.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SymTab/$(DEPDIR)/cfa_cpp-FixFunction.Tpo SymTab/$(DEPDIR)/cfa_cpp-FixFunction.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SymTab/FixFunction.cc' object='SymTab/cfa_cpp-FixFunction.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-FixFunction.obj `if test -f 'SymTab/FixFunction.cc'; then $(CYGPATH_W) 'SymTab/FixFunction.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/FixFunction.cc'; fi`
+
+SymTab/cfa_cpp-ImplementationType.o: SymTab/ImplementationType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-ImplementationType.o -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-ImplementationType.Tpo -c -o SymTab/cfa_cpp-ImplementationType.o `test -f 'SymTab/ImplementationType.cc' || echo '$(srcdir)/'`SymTab/ImplementationType.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SymTab/$(DEPDIR)/cfa_cpp-ImplementationType.Tpo SymTab/$(DEPDIR)/cfa_cpp-ImplementationType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SymTab/ImplementationType.cc' object='SymTab/cfa_cpp-ImplementationType.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-ImplementationType.o `test -f 'SymTab/ImplementationType.cc' || echo '$(srcdir)/'`SymTab/ImplementationType.cc
+
+SymTab/cfa_cpp-ImplementationType.obj: SymTab/ImplementationType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-ImplementationType.obj -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-ImplementationType.Tpo -c -o SymTab/cfa_cpp-ImplementationType.obj `if test -f 'SymTab/ImplementationType.cc'; then $(CYGPATH_W) 'SymTab/ImplementationType.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/ImplementationType.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SymTab/$(DEPDIR)/cfa_cpp-ImplementationType.Tpo SymTab/$(DEPDIR)/cfa_cpp-ImplementationType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SymTab/ImplementationType.cc' object='SymTab/cfa_cpp-ImplementationType.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-ImplementationType.obj `if test -f 'SymTab/ImplementationType.cc'; then $(CYGPATH_W) 'SymTab/ImplementationType.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/ImplementationType.cc'; fi`
+
+SynTree/cfa_cpp-Type.o: SynTree/Type.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Type.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Type.Tpo -c -o SynTree/cfa_cpp-Type.o `test -f 'SynTree/Type.cc' || echo '$(srcdir)/'`SynTree/Type.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Type.Tpo SynTree/$(DEPDIR)/cfa_cpp-Type.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/Type.cc' object='SynTree/cfa_cpp-Type.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Type.o `test -f 'SynTree/Type.cc' || echo '$(srcdir)/'`SynTree/Type.cc
+
+SynTree/cfa_cpp-Type.obj: SynTree/Type.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Type.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Type.Tpo -c -o SynTree/cfa_cpp-Type.obj `if test -f 'SynTree/Type.cc'; then $(CYGPATH_W) 'SynTree/Type.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Type.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Type.Tpo SynTree/$(DEPDIR)/cfa_cpp-Type.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/Type.cc' object='SynTree/cfa_cpp-Type.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Type.obj `if test -f 'SynTree/Type.cc'; then $(CYGPATH_W) 'SynTree/Type.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Type.cc'; fi`
+
+SynTree/cfa_cpp-VoidType.o: SynTree/VoidType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-VoidType.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-VoidType.Tpo -c -o SynTree/cfa_cpp-VoidType.o `test -f 'SynTree/VoidType.cc' || echo '$(srcdir)/'`SynTree/VoidType.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-VoidType.Tpo SynTree/$(DEPDIR)/cfa_cpp-VoidType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/VoidType.cc' object='SynTree/cfa_cpp-VoidType.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-VoidType.o `test -f 'SynTree/VoidType.cc' || echo '$(srcdir)/'`SynTree/VoidType.cc
+
+SynTree/cfa_cpp-VoidType.obj: SynTree/VoidType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-VoidType.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-VoidType.Tpo -c -o SynTree/cfa_cpp-VoidType.obj `if test -f 'SynTree/VoidType.cc'; then $(CYGPATH_W) 'SynTree/VoidType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/VoidType.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-VoidType.Tpo SynTree/$(DEPDIR)/cfa_cpp-VoidType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/VoidType.cc' object='SynTree/cfa_cpp-VoidType.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-VoidType.obj `if test -f 'SynTree/VoidType.cc'; then $(CYGPATH_W) 'SynTree/VoidType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/VoidType.cc'; fi`
+
+SynTree/cfa_cpp-BasicType.o: SynTree/BasicType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-BasicType.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-BasicType.Tpo -c -o SynTree/cfa_cpp-BasicType.o `test -f 'SynTree/BasicType.cc' || echo '$(srcdir)/'`SynTree/BasicType.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-BasicType.Tpo SynTree/$(DEPDIR)/cfa_cpp-BasicType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/BasicType.cc' object='SynTree/cfa_cpp-BasicType.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-BasicType.o `test -f 'SynTree/BasicType.cc' || echo '$(srcdir)/'`SynTree/BasicType.cc
+
+SynTree/cfa_cpp-BasicType.obj: SynTree/BasicType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-BasicType.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-BasicType.Tpo -c -o SynTree/cfa_cpp-BasicType.obj `if test -f 'SynTree/BasicType.cc'; then $(CYGPATH_W) 'SynTree/BasicType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/BasicType.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-BasicType.Tpo SynTree/$(DEPDIR)/cfa_cpp-BasicType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/BasicType.cc' object='SynTree/cfa_cpp-BasicType.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-BasicType.obj `if test -f 'SynTree/BasicType.cc'; then $(CYGPATH_W) 'SynTree/BasicType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/BasicType.cc'; fi`
+
+SynTree/cfa_cpp-PointerType.o: SynTree/PointerType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-PointerType.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-PointerType.Tpo -c -o SynTree/cfa_cpp-PointerType.o `test -f 'SynTree/PointerType.cc' || echo '$(srcdir)/'`SynTree/PointerType.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-PointerType.Tpo SynTree/$(DEPDIR)/cfa_cpp-PointerType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/PointerType.cc' object='SynTree/cfa_cpp-PointerType.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-PointerType.o `test -f 'SynTree/PointerType.cc' || echo '$(srcdir)/'`SynTree/PointerType.cc
+
+SynTree/cfa_cpp-PointerType.obj: SynTree/PointerType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-PointerType.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-PointerType.Tpo -c -o SynTree/cfa_cpp-PointerType.obj `if test -f 'SynTree/PointerType.cc'; then $(CYGPATH_W) 'SynTree/PointerType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/PointerType.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-PointerType.Tpo SynTree/$(DEPDIR)/cfa_cpp-PointerType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/PointerType.cc' object='SynTree/cfa_cpp-PointerType.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-PointerType.obj `if test -f 'SynTree/PointerType.cc'; then $(CYGPATH_W) 'SynTree/PointerType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/PointerType.cc'; fi`
+
+SynTree/cfa_cpp-ArrayType.o: SynTree/ArrayType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-ArrayType.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-ArrayType.Tpo -c -o SynTree/cfa_cpp-ArrayType.o `test -f 'SynTree/ArrayType.cc' || echo '$(srcdir)/'`SynTree/ArrayType.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-ArrayType.Tpo SynTree/$(DEPDIR)/cfa_cpp-ArrayType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/ArrayType.cc' object='SynTree/cfa_cpp-ArrayType.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-ArrayType.o `test -f 'SynTree/ArrayType.cc' || echo '$(srcdir)/'`SynTree/ArrayType.cc
+
+SynTree/cfa_cpp-ArrayType.obj: SynTree/ArrayType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-ArrayType.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-ArrayType.Tpo -c -o SynTree/cfa_cpp-ArrayType.obj `if test -f 'SynTree/ArrayType.cc'; then $(CYGPATH_W) 'SynTree/ArrayType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ArrayType.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-ArrayType.Tpo SynTree/$(DEPDIR)/cfa_cpp-ArrayType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/ArrayType.cc' object='SynTree/cfa_cpp-ArrayType.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-ArrayType.obj `if test -f 'SynTree/ArrayType.cc'; then $(CYGPATH_W) 'SynTree/ArrayType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ArrayType.cc'; fi`
+
+SynTree/cfa_cpp-FunctionType.o: SynTree/FunctionType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-FunctionType.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-FunctionType.Tpo -c -o SynTree/cfa_cpp-FunctionType.o `test -f 'SynTree/FunctionType.cc' || echo '$(srcdir)/'`SynTree/FunctionType.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-FunctionType.Tpo SynTree/$(DEPDIR)/cfa_cpp-FunctionType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/FunctionType.cc' object='SynTree/cfa_cpp-FunctionType.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-FunctionType.o `test -f 'SynTree/FunctionType.cc' || echo '$(srcdir)/'`SynTree/FunctionType.cc
+
+SynTree/cfa_cpp-FunctionType.obj: SynTree/FunctionType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-FunctionType.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-FunctionType.Tpo -c -o SynTree/cfa_cpp-FunctionType.obj `if test -f 'SynTree/FunctionType.cc'; then $(CYGPATH_W) 'SynTree/FunctionType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/FunctionType.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-FunctionType.Tpo SynTree/$(DEPDIR)/cfa_cpp-FunctionType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/FunctionType.cc' object='SynTree/cfa_cpp-FunctionType.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-FunctionType.obj `if test -f 'SynTree/FunctionType.cc'; then $(CYGPATH_W) 'SynTree/FunctionType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/FunctionType.cc'; fi`
+
+SynTree/cfa_cpp-ReferenceToType.o: SynTree/ReferenceToType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-ReferenceToType.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-ReferenceToType.Tpo -c -o SynTree/cfa_cpp-ReferenceToType.o `test -f 'SynTree/ReferenceToType.cc' || echo '$(srcdir)/'`SynTree/ReferenceToType.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-ReferenceToType.Tpo SynTree/$(DEPDIR)/cfa_cpp-ReferenceToType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/ReferenceToType.cc' object='SynTree/cfa_cpp-ReferenceToType.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-ReferenceToType.o `test -f 'SynTree/ReferenceToType.cc' || echo '$(srcdir)/'`SynTree/ReferenceToType.cc
+
+SynTree/cfa_cpp-ReferenceToType.obj: SynTree/ReferenceToType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-ReferenceToType.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-ReferenceToType.Tpo -c -o SynTree/cfa_cpp-ReferenceToType.obj `if test -f 'SynTree/ReferenceToType.cc'; then $(CYGPATH_W) 'SynTree/ReferenceToType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ReferenceToType.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-ReferenceToType.Tpo SynTree/$(DEPDIR)/cfa_cpp-ReferenceToType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/ReferenceToType.cc' object='SynTree/cfa_cpp-ReferenceToType.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-ReferenceToType.obj `if test -f 'SynTree/ReferenceToType.cc'; then $(CYGPATH_W) 'SynTree/ReferenceToType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ReferenceToType.cc'; fi`
+
+SynTree/cfa_cpp-TupleType.o: SynTree/TupleType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TupleType.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TupleType.Tpo -c -o SynTree/cfa_cpp-TupleType.o `test -f 'SynTree/TupleType.cc' || echo '$(srcdir)/'`SynTree/TupleType.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TupleType.Tpo SynTree/$(DEPDIR)/cfa_cpp-TupleType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/TupleType.cc' object='SynTree/cfa_cpp-TupleType.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TupleType.o `test -f 'SynTree/TupleType.cc' || echo '$(srcdir)/'`SynTree/TupleType.cc
+
+SynTree/cfa_cpp-TupleType.obj: SynTree/TupleType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TupleType.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TupleType.Tpo -c -o SynTree/cfa_cpp-TupleType.obj `if test -f 'SynTree/TupleType.cc'; then $(CYGPATH_W) 'SynTree/TupleType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TupleType.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TupleType.Tpo SynTree/$(DEPDIR)/cfa_cpp-TupleType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/TupleType.cc' object='SynTree/cfa_cpp-TupleType.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TupleType.obj `if test -f 'SynTree/TupleType.cc'; then $(CYGPATH_W) 'SynTree/TupleType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TupleType.cc'; fi`
+
+SynTree/cfa_cpp-TypeofType.o: SynTree/TypeofType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TypeofType.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TypeofType.Tpo -c -o SynTree/cfa_cpp-TypeofType.o `test -f 'SynTree/TypeofType.cc' || echo '$(srcdir)/'`SynTree/TypeofType.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TypeofType.Tpo SynTree/$(DEPDIR)/cfa_cpp-TypeofType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/TypeofType.cc' object='SynTree/cfa_cpp-TypeofType.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TypeofType.o `test -f 'SynTree/TypeofType.cc' || echo '$(srcdir)/'`SynTree/TypeofType.cc
+
+SynTree/cfa_cpp-TypeofType.obj: SynTree/TypeofType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TypeofType.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TypeofType.Tpo -c -o SynTree/cfa_cpp-TypeofType.obj `if test -f 'SynTree/TypeofType.cc'; then $(CYGPATH_W) 'SynTree/TypeofType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeofType.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TypeofType.Tpo SynTree/$(DEPDIR)/cfa_cpp-TypeofType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/TypeofType.cc' object='SynTree/cfa_cpp-TypeofType.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TypeofType.obj `if test -f 'SynTree/TypeofType.cc'; then $(CYGPATH_W) 'SynTree/TypeofType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeofType.cc'; fi`
+
+SynTree/cfa_cpp-AttrType.o: SynTree/AttrType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-AttrType.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-AttrType.Tpo -c -o SynTree/cfa_cpp-AttrType.o `test -f 'SynTree/AttrType.cc' || echo '$(srcdir)/'`SynTree/AttrType.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-AttrType.Tpo SynTree/$(DEPDIR)/cfa_cpp-AttrType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/AttrType.cc' object='SynTree/cfa_cpp-AttrType.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-AttrType.o `test -f 'SynTree/AttrType.cc' || echo '$(srcdir)/'`SynTree/AttrType.cc
+
+SynTree/cfa_cpp-AttrType.obj: SynTree/AttrType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-AttrType.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-AttrType.Tpo -c -o SynTree/cfa_cpp-AttrType.obj `if test -f 'SynTree/AttrType.cc'; then $(CYGPATH_W) 'SynTree/AttrType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AttrType.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-AttrType.Tpo SynTree/$(DEPDIR)/cfa_cpp-AttrType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/AttrType.cc' object='SynTree/cfa_cpp-AttrType.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-AttrType.obj `if test -f 'SynTree/AttrType.cc'; then $(CYGPATH_W) 'SynTree/AttrType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AttrType.cc'; fi`
+
+SynTree/cfa_cpp-Constant.o: SynTree/Constant.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Constant.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Constant.Tpo -c -o SynTree/cfa_cpp-Constant.o `test -f 'SynTree/Constant.cc' || echo '$(srcdir)/'`SynTree/Constant.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Constant.Tpo SynTree/$(DEPDIR)/cfa_cpp-Constant.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/Constant.cc' object='SynTree/cfa_cpp-Constant.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Constant.o `test -f 'SynTree/Constant.cc' || echo '$(srcdir)/'`SynTree/Constant.cc
+
+SynTree/cfa_cpp-Constant.obj: SynTree/Constant.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Constant.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Constant.Tpo -c -o SynTree/cfa_cpp-Constant.obj `if test -f 'SynTree/Constant.cc'; then $(CYGPATH_W) 'SynTree/Constant.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Constant.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Constant.Tpo SynTree/$(DEPDIR)/cfa_cpp-Constant.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/Constant.cc' object='SynTree/cfa_cpp-Constant.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Constant.obj `if test -f 'SynTree/Constant.cc'; then $(CYGPATH_W) 'SynTree/Constant.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Constant.cc'; fi`
+
+SynTree/cfa_cpp-Expression.o: SynTree/Expression.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Expression.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Expression.Tpo -c -o SynTree/cfa_cpp-Expression.o `test -f 'SynTree/Expression.cc' || echo '$(srcdir)/'`SynTree/Expression.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Expression.Tpo SynTree/$(DEPDIR)/cfa_cpp-Expression.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/Expression.cc' object='SynTree/cfa_cpp-Expression.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Expression.o `test -f 'SynTree/Expression.cc' || echo '$(srcdir)/'`SynTree/Expression.cc
+
+SynTree/cfa_cpp-Expression.obj: SynTree/Expression.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Expression.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Expression.Tpo -c -o SynTree/cfa_cpp-Expression.obj `if test -f 'SynTree/Expression.cc'; then $(CYGPATH_W) 'SynTree/Expression.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Expression.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Expression.Tpo SynTree/$(DEPDIR)/cfa_cpp-Expression.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/Expression.cc' object='SynTree/cfa_cpp-Expression.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Expression.obj `if test -f 'SynTree/Expression.cc'; then $(CYGPATH_W) 'SynTree/Expression.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Expression.cc'; fi`
+
+SynTree/cfa_cpp-TupleExpr.o: SynTree/TupleExpr.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TupleExpr.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TupleExpr.Tpo -c -o SynTree/cfa_cpp-TupleExpr.o `test -f 'SynTree/TupleExpr.cc' || echo '$(srcdir)/'`SynTree/TupleExpr.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TupleExpr.Tpo SynTree/$(DEPDIR)/cfa_cpp-TupleExpr.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/TupleExpr.cc' object='SynTree/cfa_cpp-TupleExpr.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TupleExpr.o `test -f 'SynTree/TupleExpr.cc' || echo '$(srcdir)/'`SynTree/TupleExpr.cc
+
+SynTree/cfa_cpp-TupleExpr.obj: SynTree/TupleExpr.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TupleExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TupleExpr.Tpo -c -o SynTree/cfa_cpp-TupleExpr.obj `if test -f 'SynTree/TupleExpr.cc'; then $(CYGPATH_W) 'SynTree/TupleExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TupleExpr.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TupleExpr.Tpo SynTree/$(DEPDIR)/cfa_cpp-TupleExpr.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/TupleExpr.cc' object='SynTree/cfa_cpp-TupleExpr.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TupleExpr.obj `if test -f 'SynTree/TupleExpr.cc'; then $(CYGPATH_W) 'SynTree/TupleExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TupleExpr.cc'; fi`
+
+SynTree/cfa_cpp-CommaExpr.o: SynTree/CommaExpr.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-CommaExpr.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-CommaExpr.Tpo -c -o SynTree/cfa_cpp-CommaExpr.o `test -f 'SynTree/CommaExpr.cc' || echo '$(srcdir)/'`SynTree/CommaExpr.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-CommaExpr.Tpo SynTree/$(DEPDIR)/cfa_cpp-CommaExpr.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/CommaExpr.cc' object='SynTree/cfa_cpp-CommaExpr.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-CommaExpr.o `test -f 'SynTree/CommaExpr.cc' || echo '$(srcdir)/'`SynTree/CommaExpr.cc
+
+SynTree/cfa_cpp-CommaExpr.obj: SynTree/CommaExpr.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-CommaExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-CommaExpr.Tpo -c -o SynTree/cfa_cpp-CommaExpr.obj `if test -f 'SynTree/CommaExpr.cc'; then $(CYGPATH_W) 'SynTree/CommaExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CommaExpr.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-CommaExpr.Tpo SynTree/$(DEPDIR)/cfa_cpp-CommaExpr.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/CommaExpr.cc' object='SynTree/cfa_cpp-CommaExpr.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-CommaExpr.obj `if test -f 'SynTree/CommaExpr.cc'; then $(CYGPATH_W) 'SynTree/CommaExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CommaExpr.cc'; fi`
+
+SynTree/cfa_cpp-TypeExpr.o: SynTree/TypeExpr.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TypeExpr.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TypeExpr.Tpo -c -o SynTree/cfa_cpp-TypeExpr.o `test -f 'SynTree/TypeExpr.cc' || echo '$(srcdir)/'`SynTree/TypeExpr.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TypeExpr.Tpo SynTree/$(DEPDIR)/cfa_cpp-TypeExpr.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/TypeExpr.cc' object='SynTree/cfa_cpp-TypeExpr.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TypeExpr.o `test -f 'SynTree/TypeExpr.cc' || echo '$(srcdir)/'`SynTree/TypeExpr.cc
+
+SynTree/cfa_cpp-TypeExpr.obj: SynTree/TypeExpr.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TypeExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TypeExpr.Tpo -c -o SynTree/cfa_cpp-TypeExpr.obj `if test -f 'SynTree/TypeExpr.cc'; then $(CYGPATH_W) 'SynTree/TypeExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeExpr.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TypeExpr.Tpo SynTree/$(DEPDIR)/cfa_cpp-TypeExpr.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/TypeExpr.cc' object='SynTree/cfa_cpp-TypeExpr.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TypeExpr.obj `if test -f 'SynTree/TypeExpr.cc'; then $(CYGPATH_W) 'SynTree/TypeExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeExpr.cc'; fi`
+
+SynTree/cfa_cpp-ApplicationExpr.o: SynTree/ApplicationExpr.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-ApplicationExpr.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-ApplicationExpr.Tpo -c -o SynTree/cfa_cpp-ApplicationExpr.o `test -f 'SynTree/ApplicationExpr.cc' || echo '$(srcdir)/'`SynTree/ApplicationExpr.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-ApplicationExpr.Tpo SynTree/$(DEPDIR)/cfa_cpp-ApplicationExpr.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/ApplicationExpr.cc' object='SynTree/cfa_cpp-ApplicationExpr.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-ApplicationExpr.o `test -f 'SynTree/ApplicationExpr.cc' || echo '$(srcdir)/'`SynTree/ApplicationExpr.cc
+
+SynTree/cfa_cpp-ApplicationExpr.obj: SynTree/ApplicationExpr.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-ApplicationExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-ApplicationExpr.Tpo -c -o SynTree/cfa_cpp-ApplicationExpr.obj `if test -f 'SynTree/ApplicationExpr.cc'; then $(CYGPATH_W) 'SynTree/ApplicationExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ApplicationExpr.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-ApplicationExpr.Tpo SynTree/$(DEPDIR)/cfa_cpp-ApplicationExpr.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/ApplicationExpr.cc' object='SynTree/cfa_cpp-ApplicationExpr.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-ApplicationExpr.obj `if test -f 'SynTree/ApplicationExpr.cc'; then $(CYGPATH_W) 'SynTree/ApplicationExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ApplicationExpr.cc'; fi`
+
+SynTree/cfa_cpp-AddressExpr.o: SynTree/AddressExpr.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-AddressExpr.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-AddressExpr.Tpo -c -o SynTree/cfa_cpp-AddressExpr.o `test -f 'SynTree/AddressExpr.cc' || echo '$(srcdir)/'`SynTree/AddressExpr.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-AddressExpr.Tpo SynTree/$(DEPDIR)/cfa_cpp-AddressExpr.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/AddressExpr.cc' object='SynTree/cfa_cpp-AddressExpr.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-AddressExpr.o `test -f 'SynTree/AddressExpr.cc' || echo '$(srcdir)/'`SynTree/AddressExpr.cc
+
+SynTree/cfa_cpp-AddressExpr.obj: SynTree/AddressExpr.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-AddressExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-AddressExpr.Tpo -c -o SynTree/cfa_cpp-AddressExpr.obj `if test -f 'SynTree/AddressExpr.cc'; then $(CYGPATH_W) 'SynTree/AddressExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AddressExpr.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-AddressExpr.Tpo SynTree/$(DEPDIR)/cfa_cpp-AddressExpr.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/AddressExpr.cc' object='SynTree/cfa_cpp-AddressExpr.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-AddressExpr.obj `if test -f 'SynTree/AddressExpr.cc'; then $(CYGPATH_W) 'SynTree/AddressExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AddressExpr.cc'; fi`
+
+SynTree/cfa_cpp-Statement.o: SynTree/Statement.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Statement.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Statement.Tpo -c -o SynTree/cfa_cpp-Statement.o `test -f 'SynTree/Statement.cc' || echo '$(srcdir)/'`SynTree/Statement.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Statement.Tpo SynTree/$(DEPDIR)/cfa_cpp-Statement.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/Statement.cc' object='SynTree/cfa_cpp-Statement.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Statement.o `test -f 'SynTree/Statement.cc' || echo '$(srcdir)/'`SynTree/Statement.cc
+
+SynTree/cfa_cpp-Statement.obj: SynTree/Statement.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Statement.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Statement.Tpo -c -o SynTree/cfa_cpp-Statement.obj `if test -f 'SynTree/Statement.cc'; then $(CYGPATH_W) 'SynTree/Statement.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Statement.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Statement.Tpo SynTree/$(DEPDIR)/cfa_cpp-Statement.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/Statement.cc' object='SynTree/cfa_cpp-Statement.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Statement.obj `if test -f 'SynTree/Statement.cc'; then $(CYGPATH_W) 'SynTree/Statement.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Statement.cc'; fi`
+
+SynTree/cfa_cpp-CompoundStmt.o: SynTree/CompoundStmt.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-CompoundStmt.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-CompoundStmt.Tpo -c -o SynTree/cfa_cpp-CompoundStmt.o `test -f 'SynTree/CompoundStmt.cc' || echo '$(srcdir)/'`SynTree/CompoundStmt.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-CompoundStmt.Tpo SynTree/$(DEPDIR)/cfa_cpp-CompoundStmt.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/CompoundStmt.cc' object='SynTree/cfa_cpp-CompoundStmt.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-CompoundStmt.o `test -f 'SynTree/CompoundStmt.cc' || echo '$(srcdir)/'`SynTree/CompoundStmt.cc
+
+SynTree/cfa_cpp-CompoundStmt.obj: SynTree/CompoundStmt.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-CompoundStmt.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-CompoundStmt.Tpo -c -o SynTree/cfa_cpp-CompoundStmt.obj `if test -f 'SynTree/CompoundStmt.cc'; then $(CYGPATH_W) 'SynTree/CompoundStmt.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CompoundStmt.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-CompoundStmt.Tpo SynTree/$(DEPDIR)/cfa_cpp-CompoundStmt.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/CompoundStmt.cc' object='SynTree/cfa_cpp-CompoundStmt.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-CompoundStmt.obj `if test -f 'SynTree/CompoundStmt.cc'; then $(CYGPATH_W) 'SynTree/CompoundStmt.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CompoundStmt.cc'; fi`
+
+SynTree/cfa_cpp-DeclStmt.o: SynTree/DeclStmt.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-DeclStmt.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-DeclStmt.Tpo -c -o SynTree/cfa_cpp-DeclStmt.o `test -f 'SynTree/DeclStmt.cc' || echo '$(srcdir)/'`SynTree/DeclStmt.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-DeclStmt.Tpo SynTree/$(DEPDIR)/cfa_cpp-DeclStmt.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/DeclStmt.cc' object='SynTree/cfa_cpp-DeclStmt.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-DeclStmt.o `test -f 'SynTree/DeclStmt.cc' || echo '$(srcdir)/'`SynTree/DeclStmt.cc
+
+SynTree/cfa_cpp-DeclStmt.obj: SynTree/DeclStmt.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-DeclStmt.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-DeclStmt.Tpo -c -o SynTree/cfa_cpp-DeclStmt.obj `if test -f 'SynTree/DeclStmt.cc'; then $(CYGPATH_W) 'SynTree/DeclStmt.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclStmt.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-DeclStmt.Tpo SynTree/$(DEPDIR)/cfa_cpp-DeclStmt.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/DeclStmt.cc' object='SynTree/cfa_cpp-DeclStmt.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-DeclStmt.obj `if test -f 'SynTree/DeclStmt.cc'; then $(CYGPATH_W) 'SynTree/DeclStmt.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclStmt.cc'; fi`
+
+SynTree/cfa_cpp-Declaration.o: SynTree/Declaration.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Declaration.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Declaration.Tpo -c -o SynTree/cfa_cpp-Declaration.o `test -f 'SynTree/Declaration.cc' || echo '$(srcdir)/'`SynTree/Declaration.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Declaration.Tpo SynTree/$(DEPDIR)/cfa_cpp-Declaration.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/Declaration.cc' object='SynTree/cfa_cpp-Declaration.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Declaration.o `test -f 'SynTree/Declaration.cc' || echo '$(srcdir)/'`SynTree/Declaration.cc
+
+SynTree/cfa_cpp-Declaration.obj: SynTree/Declaration.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Declaration.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Declaration.Tpo -c -o SynTree/cfa_cpp-Declaration.obj `if test -f 'SynTree/Declaration.cc'; then $(CYGPATH_W) 'SynTree/Declaration.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Declaration.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Declaration.Tpo SynTree/$(DEPDIR)/cfa_cpp-Declaration.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/Declaration.cc' object='SynTree/cfa_cpp-Declaration.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Declaration.obj `if test -f 'SynTree/Declaration.cc'; then $(CYGPATH_W) 'SynTree/Declaration.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Declaration.cc'; fi`
+
+SynTree/cfa_cpp-DeclarationWithType.o: SynTree/DeclarationWithType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-DeclarationWithType.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-DeclarationWithType.Tpo -c -o SynTree/cfa_cpp-DeclarationWithType.o `test -f 'SynTree/DeclarationWithType.cc' || echo '$(srcdir)/'`SynTree/DeclarationWithType.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-DeclarationWithType.Tpo SynTree/$(DEPDIR)/cfa_cpp-DeclarationWithType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/DeclarationWithType.cc' object='SynTree/cfa_cpp-DeclarationWithType.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-DeclarationWithType.o `test -f 'SynTree/DeclarationWithType.cc' || echo '$(srcdir)/'`SynTree/DeclarationWithType.cc
+
+SynTree/cfa_cpp-DeclarationWithType.obj: SynTree/DeclarationWithType.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-DeclarationWithType.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-DeclarationWithType.Tpo -c -o SynTree/cfa_cpp-DeclarationWithType.obj `if test -f 'SynTree/DeclarationWithType.cc'; then $(CYGPATH_W) 'SynTree/DeclarationWithType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclarationWithType.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-DeclarationWithType.Tpo SynTree/$(DEPDIR)/cfa_cpp-DeclarationWithType.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/DeclarationWithType.cc' object='SynTree/cfa_cpp-DeclarationWithType.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-DeclarationWithType.obj `if test -f 'SynTree/DeclarationWithType.cc'; then $(CYGPATH_W) 'SynTree/DeclarationWithType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclarationWithType.cc'; fi`
+
+SynTree/cfa_cpp-ObjectDecl.o: SynTree/ObjectDecl.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-ObjectDecl.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-ObjectDecl.Tpo -c -o SynTree/cfa_cpp-ObjectDecl.o `test -f 'SynTree/ObjectDecl.cc' || echo '$(srcdir)/'`SynTree/ObjectDecl.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-ObjectDecl.Tpo SynTree/$(DEPDIR)/cfa_cpp-ObjectDecl.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/ObjectDecl.cc' object='SynTree/cfa_cpp-ObjectDecl.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-ObjectDecl.o `test -f 'SynTree/ObjectDecl.cc' || echo '$(srcdir)/'`SynTree/ObjectDecl.cc
+
+SynTree/cfa_cpp-ObjectDecl.obj: SynTree/ObjectDecl.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-ObjectDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-ObjectDecl.Tpo -c -o SynTree/cfa_cpp-ObjectDecl.obj `if test -f 'SynTree/ObjectDecl.cc'; then $(CYGPATH_W) 'SynTree/ObjectDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ObjectDecl.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-ObjectDecl.Tpo SynTree/$(DEPDIR)/cfa_cpp-ObjectDecl.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/ObjectDecl.cc' object='SynTree/cfa_cpp-ObjectDecl.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-ObjectDecl.obj `if test -f 'SynTree/ObjectDecl.cc'; then $(CYGPATH_W) 'SynTree/ObjectDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ObjectDecl.cc'; fi`
+
+SynTree/cfa_cpp-FunctionDecl.o: SynTree/FunctionDecl.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-FunctionDecl.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-FunctionDecl.Tpo -c -o SynTree/cfa_cpp-FunctionDecl.o `test -f 'SynTree/FunctionDecl.cc' || echo '$(srcdir)/'`SynTree/FunctionDecl.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-FunctionDecl.Tpo SynTree/$(DEPDIR)/cfa_cpp-FunctionDecl.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/FunctionDecl.cc' object='SynTree/cfa_cpp-FunctionDecl.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-FunctionDecl.o `test -f 'SynTree/FunctionDecl.cc' || echo '$(srcdir)/'`SynTree/FunctionDecl.cc
+
+SynTree/cfa_cpp-FunctionDecl.obj: SynTree/FunctionDecl.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-FunctionDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-FunctionDecl.Tpo -c -o SynTree/cfa_cpp-FunctionDecl.obj `if test -f 'SynTree/FunctionDecl.cc'; then $(CYGPATH_W) 'SynTree/FunctionDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/FunctionDecl.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-FunctionDecl.Tpo SynTree/$(DEPDIR)/cfa_cpp-FunctionDecl.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/FunctionDecl.cc' object='SynTree/cfa_cpp-FunctionDecl.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-FunctionDecl.obj `if test -f 'SynTree/FunctionDecl.cc'; then $(CYGPATH_W) 'SynTree/FunctionDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/FunctionDecl.cc'; fi`
+
+SynTree/cfa_cpp-AggregateDecl.o: SynTree/AggregateDecl.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-AggregateDecl.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-AggregateDecl.Tpo -c -o SynTree/cfa_cpp-AggregateDecl.o `test -f 'SynTree/AggregateDecl.cc' || echo '$(srcdir)/'`SynTree/AggregateDecl.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-AggregateDecl.Tpo SynTree/$(DEPDIR)/cfa_cpp-AggregateDecl.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/AggregateDecl.cc' object='SynTree/cfa_cpp-AggregateDecl.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-AggregateDecl.o `test -f 'SynTree/AggregateDecl.cc' || echo '$(srcdir)/'`SynTree/AggregateDecl.cc
+
+SynTree/cfa_cpp-AggregateDecl.obj: SynTree/AggregateDecl.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-AggregateDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-AggregateDecl.Tpo -c -o SynTree/cfa_cpp-AggregateDecl.obj `if test -f 'SynTree/AggregateDecl.cc'; then $(CYGPATH_W) 'SynTree/AggregateDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AggregateDecl.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-AggregateDecl.Tpo SynTree/$(DEPDIR)/cfa_cpp-AggregateDecl.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/AggregateDecl.cc' object='SynTree/cfa_cpp-AggregateDecl.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-AggregateDecl.obj `if test -f 'SynTree/AggregateDecl.cc'; then $(CYGPATH_W) 'SynTree/AggregateDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AggregateDecl.cc'; fi`
+
+SynTree/cfa_cpp-NamedTypeDecl.o: SynTree/NamedTypeDecl.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-NamedTypeDecl.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-NamedTypeDecl.Tpo -c -o SynTree/cfa_cpp-NamedTypeDecl.o `test -f 'SynTree/NamedTypeDecl.cc' || echo '$(srcdir)/'`SynTree/NamedTypeDecl.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-NamedTypeDecl.Tpo SynTree/$(DEPDIR)/cfa_cpp-NamedTypeDecl.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/NamedTypeDecl.cc' object='SynTree/cfa_cpp-NamedTypeDecl.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-NamedTypeDecl.o `test -f 'SynTree/NamedTypeDecl.cc' || echo '$(srcdir)/'`SynTree/NamedTypeDecl.cc
+
+SynTree/cfa_cpp-NamedTypeDecl.obj: SynTree/NamedTypeDecl.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-NamedTypeDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-NamedTypeDecl.Tpo -c -o SynTree/cfa_cpp-NamedTypeDecl.obj `if test -f 'SynTree/NamedTypeDecl.cc'; then $(CYGPATH_W) 'SynTree/NamedTypeDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/NamedTypeDecl.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-NamedTypeDecl.Tpo SynTree/$(DEPDIR)/cfa_cpp-NamedTypeDecl.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/NamedTypeDecl.cc' object='SynTree/cfa_cpp-NamedTypeDecl.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-NamedTypeDecl.obj `if test -f 'SynTree/NamedTypeDecl.cc'; then $(CYGPATH_W) 'SynTree/NamedTypeDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/NamedTypeDecl.cc'; fi`
+
+SynTree/cfa_cpp-TypeDecl.o: SynTree/TypeDecl.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TypeDecl.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TypeDecl.Tpo -c -o SynTree/cfa_cpp-TypeDecl.o `test -f 'SynTree/TypeDecl.cc' || echo '$(srcdir)/'`SynTree/TypeDecl.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TypeDecl.Tpo SynTree/$(DEPDIR)/cfa_cpp-TypeDecl.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/TypeDecl.cc' object='SynTree/cfa_cpp-TypeDecl.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TypeDecl.o `test -f 'SynTree/TypeDecl.cc' || echo '$(srcdir)/'`SynTree/TypeDecl.cc
+
+SynTree/cfa_cpp-TypeDecl.obj: SynTree/TypeDecl.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TypeDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TypeDecl.Tpo -c -o SynTree/cfa_cpp-TypeDecl.obj `if test -f 'SynTree/TypeDecl.cc'; then $(CYGPATH_W) 'SynTree/TypeDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeDecl.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TypeDecl.Tpo SynTree/$(DEPDIR)/cfa_cpp-TypeDecl.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/TypeDecl.cc' object='SynTree/cfa_cpp-TypeDecl.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TypeDecl.obj `if test -f 'SynTree/TypeDecl.cc'; then $(CYGPATH_W) 'SynTree/TypeDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeDecl.cc'; fi`
+
+SynTree/cfa_cpp-Initializer.o: SynTree/Initializer.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Initializer.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Initializer.Tpo -c -o SynTree/cfa_cpp-Initializer.o `test -f 'SynTree/Initializer.cc' || echo '$(srcdir)/'`SynTree/Initializer.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Initializer.Tpo SynTree/$(DEPDIR)/cfa_cpp-Initializer.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/Initializer.cc' object='SynTree/cfa_cpp-Initializer.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Initializer.o `test -f 'SynTree/Initializer.cc' || echo '$(srcdir)/'`SynTree/Initializer.cc
+
+SynTree/cfa_cpp-Initializer.obj: SynTree/Initializer.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Initializer.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Initializer.Tpo -c -o SynTree/cfa_cpp-Initializer.obj `if test -f 'SynTree/Initializer.cc'; then $(CYGPATH_W) 'SynTree/Initializer.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Initializer.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Initializer.Tpo SynTree/$(DEPDIR)/cfa_cpp-Initializer.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/Initializer.cc' object='SynTree/cfa_cpp-Initializer.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Initializer.obj `if test -f 'SynTree/Initializer.cc'; then $(CYGPATH_W) 'SynTree/Initializer.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Initializer.cc'; fi`
+
+SynTree/cfa_cpp-Visitor.o: SynTree/Visitor.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Visitor.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Visitor.Tpo -c -o SynTree/cfa_cpp-Visitor.o `test -f 'SynTree/Visitor.cc' || echo '$(srcdir)/'`SynTree/Visitor.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Visitor.Tpo SynTree/$(DEPDIR)/cfa_cpp-Visitor.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/Visitor.cc' object='SynTree/cfa_cpp-Visitor.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Visitor.o `test -f 'SynTree/Visitor.cc' || echo '$(srcdir)/'`SynTree/Visitor.cc
+
+SynTree/cfa_cpp-Visitor.obj: SynTree/Visitor.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Visitor.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Visitor.Tpo -c -o SynTree/cfa_cpp-Visitor.obj `if test -f 'SynTree/Visitor.cc'; then $(CYGPATH_W) 'SynTree/Visitor.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Visitor.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Visitor.Tpo SynTree/$(DEPDIR)/cfa_cpp-Visitor.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/Visitor.cc' object='SynTree/cfa_cpp-Visitor.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Visitor.obj `if test -f 'SynTree/Visitor.cc'; then $(CYGPATH_W) 'SynTree/Visitor.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Visitor.cc'; fi`
+
+SynTree/cfa_cpp-Mutator.o: SynTree/Mutator.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Mutator.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Mutator.Tpo -c -o SynTree/cfa_cpp-Mutator.o `test -f 'SynTree/Mutator.cc' || echo '$(srcdir)/'`SynTree/Mutator.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Mutator.Tpo SynTree/$(DEPDIR)/cfa_cpp-Mutator.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/Mutator.cc' object='SynTree/cfa_cpp-Mutator.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Mutator.o `test -f 'SynTree/Mutator.cc' || echo '$(srcdir)/'`SynTree/Mutator.cc
+
+SynTree/cfa_cpp-Mutator.obj: SynTree/Mutator.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Mutator.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Mutator.Tpo -c -o SynTree/cfa_cpp-Mutator.obj `if test -f 'SynTree/Mutator.cc'; then $(CYGPATH_W) 'SynTree/Mutator.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Mutator.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Mutator.Tpo SynTree/$(DEPDIR)/cfa_cpp-Mutator.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/Mutator.cc' object='SynTree/cfa_cpp-Mutator.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Mutator.obj `if test -f 'SynTree/Mutator.cc'; then $(CYGPATH_W) 'SynTree/Mutator.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Mutator.cc'; fi`
+
+SynTree/cfa_cpp-CodeGenVisitor.o: SynTree/CodeGenVisitor.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-CodeGenVisitor.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-CodeGenVisitor.Tpo -c -o SynTree/cfa_cpp-CodeGenVisitor.o `test -f 'SynTree/CodeGenVisitor.cc' || echo '$(srcdir)/'`SynTree/CodeGenVisitor.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-CodeGenVisitor.Tpo SynTree/$(DEPDIR)/cfa_cpp-CodeGenVisitor.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/CodeGenVisitor.cc' object='SynTree/cfa_cpp-CodeGenVisitor.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-CodeGenVisitor.o `test -f 'SynTree/CodeGenVisitor.cc' || echo '$(srcdir)/'`SynTree/CodeGenVisitor.cc
+
+SynTree/cfa_cpp-CodeGenVisitor.obj: SynTree/CodeGenVisitor.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-CodeGenVisitor.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-CodeGenVisitor.Tpo -c -o SynTree/cfa_cpp-CodeGenVisitor.obj `if test -f 'SynTree/CodeGenVisitor.cc'; then $(CYGPATH_W) 'SynTree/CodeGenVisitor.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CodeGenVisitor.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-CodeGenVisitor.Tpo SynTree/$(DEPDIR)/cfa_cpp-CodeGenVisitor.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/CodeGenVisitor.cc' object='SynTree/cfa_cpp-CodeGenVisitor.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-CodeGenVisitor.obj `if test -f 'SynTree/CodeGenVisitor.cc'; then $(CYGPATH_W) 'SynTree/CodeGenVisitor.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CodeGenVisitor.cc'; fi`
+
+SynTree/cfa_cpp-TypeSubstitution.o: SynTree/TypeSubstitution.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TypeSubstitution.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TypeSubstitution.Tpo -c -o SynTree/cfa_cpp-TypeSubstitution.o `test -f 'SynTree/TypeSubstitution.cc' || echo '$(srcdir)/'`SynTree/TypeSubstitution.cc
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TypeSubstitution.Tpo SynTree/$(DEPDIR)/cfa_cpp-TypeSubstitution.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/TypeSubstitution.cc' object='SynTree/cfa_cpp-TypeSubstitution.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TypeSubstitution.o `test -f 'SynTree/TypeSubstitution.cc' || echo '$(srcdir)/'`SynTree/TypeSubstitution.cc
+
+SynTree/cfa_cpp-TypeSubstitution.obj: SynTree/TypeSubstitution.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TypeSubstitution.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TypeSubstitution.Tpo -c -o SynTree/cfa_cpp-TypeSubstitution.obj `if test -f 'SynTree/TypeSubstitution.cc'; then $(CYGPATH_W) 'SynTree/TypeSubstitution.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeSubstitution.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TypeSubstitution.Tpo SynTree/$(DEPDIR)/cfa_cpp-TypeSubstitution.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='SynTree/TypeSubstitution.cc' object='SynTree/cfa_cpp-TypeSubstitution.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TypeSubstitution.obj `if test -f 'SynTree/TypeSubstitution.cc'; then $(CYGPATH_W) 'SynTree/TypeSubstitution.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeSubstitution.cc'; fi`
+
+Tuples/cfa_cpp-Mutate.o: Tuples/Mutate.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-Mutate.o -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-Mutate.Tpo -c -o Tuples/cfa_cpp-Mutate.o `test -f 'Tuples/Mutate.cc' || echo '$(srcdir)/'`Tuples/Mutate.cc
+@am__fastdepCXX_TRUE@	$(am__mv) Tuples/$(DEPDIR)/cfa_cpp-Mutate.Tpo Tuples/$(DEPDIR)/cfa_cpp-Mutate.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Tuples/Mutate.cc' object='Tuples/cfa_cpp-Mutate.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-Mutate.o `test -f 'Tuples/Mutate.cc' || echo '$(srcdir)/'`Tuples/Mutate.cc
+
+Tuples/cfa_cpp-Mutate.obj: Tuples/Mutate.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-Mutate.obj -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-Mutate.Tpo -c -o Tuples/cfa_cpp-Mutate.obj `if test -f 'Tuples/Mutate.cc'; then $(CYGPATH_W) 'Tuples/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/Mutate.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) Tuples/$(DEPDIR)/cfa_cpp-Mutate.Tpo Tuples/$(DEPDIR)/cfa_cpp-Mutate.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Tuples/Mutate.cc' object='Tuples/cfa_cpp-Mutate.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-Mutate.obj `if test -f 'Tuples/Mutate.cc'; then $(CYGPATH_W) 'Tuples/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/Mutate.cc'; fi`
+
+Tuples/cfa_cpp-AssignExpand.o: Tuples/AssignExpand.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-AssignExpand.o -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-AssignExpand.Tpo -c -o Tuples/cfa_cpp-AssignExpand.o `test -f 'Tuples/AssignExpand.cc' || echo '$(srcdir)/'`Tuples/AssignExpand.cc
+@am__fastdepCXX_TRUE@	$(am__mv) Tuples/$(DEPDIR)/cfa_cpp-AssignExpand.Tpo Tuples/$(DEPDIR)/cfa_cpp-AssignExpand.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Tuples/AssignExpand.cc' object='Tuples/cfa_cpp-AssignExpand.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-AssignExpand.o `test -f 'Tuples/AssignExpand.cc' || echo '$(srcdir)/'`Tuples/AssignExpand.cc
+
+Tuples/cfa_cpp-AssignExpand.obj: Tuples/AssignExpand.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-AssignExpand.obj -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-AssignExpand.Tpo -c -o Tuples/cfa_cpp-AssignExpand.obj `if test -f 'Tuples/AssignExpand.cc'; then $(CYGPATH_W) 'Tuples/AssignExpand.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/AssignExpand.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) Tuples/$(DEPDIR)/cfa_cpp-AssignExpand.Tpo Tuples/$(DEPDIR)/cfa_cpp-AssignExpand.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Tuples/AssignExpand.cc' object='Tuples/cfa_cpp-AssignExpand.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-AssignExpand.obj `if test -f 'Tuples/AssignExpand.cc'; then $(CYGPATH_W) 'Tuples/AssignExpand.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/AssignExpand.cc'; fi`
+
+Tuples/cfa_cpp-FunctionFixer.o: Tuples/FunctionFixer.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-FunctionFixer.o -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-FunctionFixer.Tpo -c -o Tuples/cfa_cpp-FunctionFixer.o `test -f 'Tuples/FunctionFixer.cc' || echo '$(srcdir)/'`Tuples/FunctionFixer.cc
+@am__fastdepCXX_TRUE@	$(am__mv) Tuples/$(DEPDIR)/cfa_cpp-FunctionFixer.Tpo Tuples/$(DEPDIR)/cfa_cpp-FunctionFixer.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Tuples/FunctionFixer.cc' object='Tuples/cfa_cpp-FunctionFixer.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-FunctionFixer.o `test -f 'Tuples/FunctionFixer.cc' || echo '$(srcdir)/'`Tuples/FunctionFixer.cc
+
+Tuples/cfa_cpp-FunctionFixer.obj: Tuples/FunctionFixer.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-FunctionFixer.obj -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-FunctionFixer.Tpo -c -o Tuples/cfa_cpp-FunctionFixer.obj `if test -f 'Tuples/FunctionFixer.cc'; then $(CYGPATH_W) 'Tuples/FunctionFixer.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/FunctionFixer.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) Tuples/$(DEPDIR)/cfa_cpp-FunctionFixer.Tpo Tuples/$(DEPDIR)/cfa_cpp-FunctionFixer.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Tuples/FunctionFixer.cc' object='Tuples/cfa_cpp-FunctionFixer.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-FunctionFixer.obj `if test -f 'Tuples/FunctionFixer.cc'; then $(CYGPATH_W) 'Tuples/FunctionFixer.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/FunctionFixer.cc'; fi`
+
+Tuples/cfa_cpp-TupleAssignment.o: Tuples/TupleAssignment.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-TupleAssignment.o -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-TupleAssignment.Tpo -c -o Tuples/cfa_cpp-TupleAssignment.o `test -f 'Tuples/TupleAssignment.cc' || echo '$(srcdir)/'`Tuples/TupleAssignment.cc
+@am__fastdepCXX_TRUE@	$(am__mv) Tuples/$(DEPDIR)/cfa_cpp-TupleAssignment.Tpo Tuples/$(DEPDIR)/cfa_cpp-TupleAssignment.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Tuples/TupleAssignment.cc' object='Tuples/cfa_cpp-TupleAssignment.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-TupleAssignment.o `test -f 'Tuples/TupleAssignment.cc' || echo '$(srcdir)/'`Tuples/TupleAssignment.cc
+
+Tuples/cfa_cpp-TupleAssignment.obj: Tuples/TupleAssignment.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-TupleAssignment.obj -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-TupleAssignment.Tpo -c -o Tuples/cfa_cpp-TupleAssignment.obj `if test -f 'Tuples/TupleAssignment.cc'; then $(CYGPATH_W) 'Tuples/TupleAssignment.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/TupleAssignment.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) Tuples/$(DEPDIR)/cfa_cpp-TupleAssignment.Tpo Tuples/$(DEPDIR)/cfa_cpp-TupleAssignment.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Tuples/TupleAssignment.cc' object='Tuples/cfa_cpp-TupleAssignment.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-TupleAssignment.obj `if test -f 'Tuples/TupleAssignment.cc'; then $(CYGPATH_W) 'Tuples/TupleAssignment.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/TupleAssignment.cc'; fi`
+
+Tuples/cfa_cpp-FunctionChecker.o: Tuples/FunctionChecker.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-FunctionChecker.o -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-FunctionChecker.Tpo -c -o Tuples/cfa_cpp-FunctionChecker.o `test -f 'Tuples/FunctionChecker.cc' || echo '$(srcdir)/'`Tuples/FunctionChecker.cc
+@am__fastdepCXX_TRUE@	$(am__mv) Tuples/$(DEPDIR)/cfa_cpp-FunctionChecker.Tpo Tuples/$(DEPDIR)/cfa_cpp-FunctionChecker.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Tuples/FunctionChecker.cc' object='Tuples/cfa_cpp-FunctionChecker.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-FunctionChecker.o `test -f 'Tuples/FunctionChecker.cc' || echo '$(srcdir)/'`Tuples/FunctionChecker.cc
+
+Tuples/cfa_cpp-FunctionChecker.obj: Tuples/FunctionChecker.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-FunctionChecker.obj -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-FunctionChecker.Tpo -c -o Tuples/cfa_cpp-FunctionChecker.obj `if test -f 'Tuples/FunctionChecker.cc'; then $(CYGPATH_W) 'Tuples/FunctionChecker.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/FunctionChecker.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) Tuples/$(DEPDIR)/cfa_cpp-FunctionChecker.Tpo Tuples/$(DEPDIR)/cfa_cpp-FunctionChecker.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Tuples/FunctionChecker.cc' object='Tuples/cfa_cpp-FunctionChecker.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-FunctionChecker.obj `if test -f 'Tuples/FunctionChecker.cc'; then $(CYGPATH_W) 'Tuples/FunctionChecker.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/FunctionChecker.cc'; fi`
+
+Tuples/cfa_cpp-NameMatcher.o: Tuples/NameMatcher.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-NameMatcher.o -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-NameMatcher.Tpo -c -o Tuples/cfa_cpp-NameMatcher.o `test -f 'Tuples/NameMatcher.cc' || echo '$(srcdir)/'`Tuples/NameMatcher.cc
+@am__fastdepCXX_TRUE@	$(am__mv) Tuples/$(DEPDIR)/cfa_cpp-NameMatcher.Tpo Tuples/$(DEPDIR)/cfa_cpp-NameMatcher.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Tuples/NameMatcher.cc' object='Tuples/cfa_cpp-NameMatcher.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-NameMatcher.o `test -f 'Tuples/NameMatcher.cc' || echo '$(srcdir)/'`Tuples/NameMatcher.cc
+
+Tuples/cfa_cpp-NameMatcher.obj: Tuples/NameMatcher.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-NameMatcher.obj -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-NameMatcher.Tpo -c -o Tuples/cfa_cpp-NameMatcher.obj `if test -f 'Tuples/NameMatcher.cc'; then $(CYGPATH_W) 'Tuples/NameMatcher.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/NameMatcher.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) Tuples/$(DEPDIR)/cfa_cpp-NameMatcher.Tpo Tuples/$(DEPDIR)/cfa_cpp-NameMatcher.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='Tuples/NameMatcher.cc' object='Tuples/cfa_cpp-NameMatcher.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-NameMatcher.obj `if test -f 'Tuples/NameMatcher.cc'; then $(CYGPATH_W) 'Tuples/NameMatcher.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/NameMatcher.cc'; fi`
+
+.ll.cc:
+	$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
+
+.yy.cc:
+	$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+	for dir in "$(DESTDIR)$(cfa_cpplibdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f CodeGen/$(DEPDIR)/$(am__dirstamp)
+	-rm -f CodeGen/$(am__dirstamp)
+	-rm -f Common/$(DEPDIR)/$(am__dirstamp)
+	-rm -f Common/$(am__dirstamp)
+	-rm -f ControlStruct/$(DEPDIR)/$(am__dirstamp)
+	-rm -f ControlStruct/$(am__dirstamp)
+	-rm -f Designators/$(DEPDIR)/$(am__dirstamp)
+	-rm -f Designators/$(am__dirstamp)
+	-rm -f GenPoly/$(DEPDIR)/$(am__dirstamp)
+	-rm -f GenPoly/$(am__dirstamp)
+	-rm -f InitTweak/$(DEPDIR)/$(am__dirstamp)
+	-rm -f InitTweak/$(am__dirstamp)
+	-rm -f Parser/$(DEPDIR)/$(am__dirstamp)
+	-rm -f Parser/$(am__dirstamp)
+	-rm -f ResolvExpr/$(DEPDIR)/$(am__dirstamp)
+	-rm -f ResolvExpr/$(am__dirstamp)
+	-rm -f SymTab/$(DEPDIR)/$(am__dirstamp)
+	-rm -f SymTab/$(am__dirstamp)
+	-rm -f SynTree/$(DEPDIR)/$(am__dirstamp)
+	-rm -f SynTree/$(am__dirstamp)
+	-rm -f Tuples/$(DEPDIR)/$(am__dirstamp)
+	-rm -f Tuples/$(am__dirstamp)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-rm -f Parser/lex.cc
+	-rm -f Parser/parser.cc
+	-rm -f Parser/parser.h
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-cfa_cpplibPROGRAMS clean-generic mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR) CodeGen/$(DEPDIR) Common/$(DEPDIR) ControlStruct/$(DEPDIR) Designators/$(DEPDIR) GenPoly/$(DEPDIR) InitTweak/$(DEPDIR) Parser/$(DEPDIR) ResolvExpr/$(DEPDIR) SymTab/$(DEPDIR) SynTree/$(DEPDIR) Tuples/$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-cfa_cpplibPROGRAMS
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR) CodeGen/$(DEPDIR) Common/$(DEPDIR) ControlStruct/$(DEPDIR) Designators/$(DEPDIR) GenPoly/$(DEPDIR) InitTweak/$(DEPDIR) Parser/$(DEPDIR) ResolvExpr/$(DEPDIR) SymTab/$(DEPDIR) SynTree/$(DEPDIR) Tuples/$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-cfa_cpplibPROGRAMS
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean \
+	clean-cfa_cpplibPROGRAMS clean-generic ctags distclean \
+	distclean-compile distclean-generic distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-cfa_cpplibPROGRAMS install-data install-data-am \
+	install-dvi install-dvi-am install-exec install-exec-am \
+	install-html install-html-am install-info install-info-am \
+	install-man install-pdf install-pdf-am install-ps \
+	install-ps-am install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
+	ps ps-am tags uninstall uninstall-am \
+	uninstall-cfa_cpplibPROGRAMS
+
+
+#SRC +=  ArgTweak/Rewriter.cc \
+#	ArgTweak/Mutate.cc
+
+#	Tuples/MultipleAssign.cc \
+#	Tuples/FlattenTuple.cc \
+#	Tuples/MultRet.cc \
+#	Tuples/FixReturn.cc \
+#	Tuples/MassAssignment.cc \
+#	Tuples/TupleFixer.cc
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Parser/DeclarationNode.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 12:34:05 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu May 21 09:28:54 2015
-// Update Count     : 13
+// Last Modified On : Wed Jun 24 15:29:19 2015
+// Update Count     : 86
 //
 
@@ -21,14 +21,20 @@
 
 #include "TypeData.h"
+
+#include "SynTree/Declaration.h"
 #include "SynTree/Expression.h"
 
+#include "Parser.h"
+#include "TypedefTable.h"
+extern TypedefTable typedefTable;
 
 using namespace std;
 
 // These must remain in the same order as the corresponding DeclarationNode enumerations.
+const char *DeclarationNode::storageName[] = { "extern", "static", "auto", "register", "inline", "fortran", "_Noreturn", "_Thread_local", "" };
 const char *DeclarationNode::qualifierName[] = { "const", "restrict", "volatile", "lvalue", "_Atomic" };
 const char *DeclarationNode::basicTypeName[] = { "char", "int", "float", "double", "void", "_Bool", "_Complex", "_Imaginary" };
-const char *DeclarationNode::modifierName[] = { "signed", "unsigned", "short", "long" };
-const char *DeclarationNode::tyConName[] = { "struct", "union", "context" };
+const char *DeclarationNode::modifierName[]  = { "signed", "unsigned", "short", "long" };
+const char *DeclarationNode::aggregateName[] = { "struct", "union", "context" };
 const char *DeclarationNode::typeClassName[] = { "type", "dtype", "ftype" };
 
@@ -63,42 +69,32 @@
 }
 
-const char *storageClassName[] = {
-	// order must correspond with DeclarationNode::StorageClass
-	"extern",
-	"static",
-	"auto",
-	"register",
-	"inline",
-	"fortran",
-};
-
 void DeclarationNode::print( std::ostream &os, int indent ) const {
-	os << string(indent, ' ' );
+	os << string( indent, ' ' );
 	if ( name == "" ) {
 		os << "unnamed: ";
 	} else {
 		os << name << ": ";
-	}
+	} // if
 
 	if ( linkage != LinkageSpec::Cforall ) {
 		os << LinkageSpec::toString( linkage ) << " ";
-	}
-
-	printEnums( storageClasses.begin(), storageClasses.end(), storageClassName, os );
+	} // if
+
+	printEnums( storageClasses.begin(), storageClasses.end(), DeclarationNode::storageName, os );
 	if ( type ) {
 		type->print( os, indent );
 	} else {
 		os << "untyped entity ";
-	}
+	} // if
 
 	if ( bitfieldWidth ) {
-		os << endl << string(indent+2,  ' ') << "with bitfield width ";
+		os << endl << string( indent + 2, ' ' ) << "with bitfield width ";
 		bitfieldWidth->printOneLine( os );
-	}
+	} // if
 
 	if ( initializer != 0 ) {
-		os << endl << string(indent+2,  ' ') << "with initializer ";
+		os << endl << string( indent + 2, ' ' ) << "with initializer ";
 		initializer->printOneLine( os );
-	}
+	} // if
 
 	os << endl;
@@ -109,5 +105,5 @@
 	if ( hasEllipsis ) {
 		os << string( indent, ' ' )  << "and a variable number of other arguments" << endl;
-	}
+	} // if
 }
 
@@ -123,5 +119,5 @@
 	if ( body ) {
 		newnode->type->function->hasBody = true;
-	}
+	} // if
 
 	if ( ret ) {
@@ -129,5 +125,5 @@
 		ret->type = 0;
 		delete ret;
-	}
+	} // if
 
 	return newnode;
@@ -141,5 +137,5 @@
 }
 
-DeclarationNode *DeclarationNode::newStorageClass( StorageClass sc ) {
+DeclarationNode *DeclarationNode::newStorageClass( DeclarationNode::StorageClass sc ) {
 	DeclarationNode *newnode = new DeclarationNode;
 	newnode->storageClasses.push_back( sc );
@@ -161,5 +157,5 @@
 }
 
-DeclarationNode *DeclarationNode::newForall( DeclarationNode* forall ) {
+DeclarationNode *DeclarationNode::newForall( DeclarationNode *forall ) {
 	DeclarationNode *newnode = new DeclarationNode;
 	newnode->type = new TypeData( TypeData::Unknown );
@@ -168,5 +164,5 @@
 }
 
-DeclarationNode *DeclarationNode::newFromTypedef( std::string* name ) {
+DeclarationNode *DeclarationNode::newFromTypedef( std::string *name ) {
 	DeclarationNode *newnode = new DeclarationNode;
 	newnode->type = new TypeData( TypeData::SymbolicInst );
@@ -177,5 +173,5 @@
 }
 
-DeclarationNode *DeclarationNode::newAggregate( TyCon kind, std::string* name, DeclarationNode *formals, ExpressionNode *actuals, DeclarationNode *fields ) {
+DeclarationNode *DeclarationNode::newAggregate( Aggregate kind, std::string *name, DeclarationNode *formals, ExpressionNode *actuals, DeclarationNode *fields ) {
 	DeclarationNode *newnode = new DeclarationNode;
 	newnode->type = new TypeData( TypeData::Aggregate );
@@ -184,5 +180,13 @@
 	if ( newnode->type->aggregate->name == "" ) {
 		newnode->type->aggregate->name = DeclarationNode::anonymous.newName();
-	}
+	} // if
+
+	// SKULLDUGGERY: generate a typedef for the aggregate name so that the aggregate does not have to be qualified by
+	// "struct"
+	typedefTable.addToEnclosingScope( newnode->type->aggregate->name, TypedefTable::TD );
+	DeclarationNode *typedf = new DeclarationNode;
+	typedf->name = newnode->type->aggregate->name;
+	newnode->appendList( typedf->addType( newnode->clone() )->addTypedef() );
+
 	newnode->type->aggregate->params = formals;
 	newnode->type->aggregate->actuals = actuals;
@@ -198,10 +202,18 @@
 	if ( newnode->type->enumeration->name == "" ) {
 		newnode->type->enumeration->name = DeclarationNode::anonymous.newName();
-	}
+	} // if
+
+	// SKULLDUGGERY: generate a typedef for the enumeration name so that the enumeration does not have to be qualified
+	// by "enum"
+	typedefTable.addToEnclosingScope( newnode->type->enumeration->name, TypedefTable::TD );
+	DeclarationNode *typedf = new DeclarationNode;
+	typedf->name = newnode->type->enumeration->name;
+	newnode->appendList( typedf->addType( newnode->clone() )->addTypedef() );
+
 	newnode->type->enumeration->constants = constants;
 	return newnode;
 }
 
-DeclarationNode *DeclarationNode::newEnumConstant( std::string* name, ExpressionNode *constant ) {
+DeclarationNode *DeclarationNode::newEnumConstant( std::string *name, ExpressionNode *constant ) {
 	DeclarationNode *newnode = new DeclarationNode;
 	newnode->name = assign_strptr( name );
@@ -210,5 +222,5 @@
 }
 
-DeclarationNode *DeclarationNode::newName( std::string* name ) {
+DeclarationNode *DeclarationNode::newName( std::string *name ) {
 	DeclarationNode *newnode = new DeclarationNode;
 	newnode->name = assign_strptr( name );
@@ -216,5 +228,5 @@
 }
 
-DeclarationNode *DeclarationNode::newFromTypeGen( std::string* name, ExpressionNode *params ) {
+DeclarationNode *DeclarationNode::newFromTypeGen( std::string *name, ExpressionNode *params ) {
 	DeclarationNode *newnode = new DeclarationNode;
 	newnode->type = new TypeData( TypeData::SymbolicInst );
@@ -225,5 +237,5 @@
 }
 
-DeclarationNode *DeclarationNode::newTypeParam( TypeClass tc, std::string* name ) {
+DeclarationNode *DeclarationNode::newTypeParam( TypeClass tc, std::string *name ) {
 	DeclarationNode *newnode = new DeclarationNode;
 	newnode->name = assign_strptr( name );
@@ -331,7 +343,7 @@
 			} else {
 				dst->forall = src->forall;
-			}
+			} // if
 			src->forall = 0;
-		}
+		} // if
 		if ( dst->base ) {
 			addQualifiersToType( src, dst->base );
@@ -341,6 +353,6 @@
 		} else {
 			dst->qualifiers.splice( dst->qualifiers.end(), src->qualifiers );
-		}
-	}
+		} // if
+	} // if
 }
 	  
@@ -351,5 +363,5 @@
 			if ( ! type ) {
 				type = new TypeData;
-			}
+			} // if
 			addQualifiersToType( q->type, type );
 			if ( q->type && q->type->forall ) {
@@ -357,10 +369,14 @@
 					type->forall->appendList( q->type->forall );
 				} else {
-					type->forall = q->type->forall;
-				}
+					if ( type->kind == TypeData::Aggregate ) {
+						type->aggregate->params = q->type->forall;
+					} else {
+						type->forall = q->type->forall;
+					} // if
+				} // if
 				q->type->forall = 0;
-			}
-		}
-	}
+			} // if
+		} // if
+	} // if
 	delete q;
 	return this;
@@ -379,7 +395,7 @@
 			} else {
 				dst->forall = src->forall;
-			}
+			} // if
 			src->forall = 0;
-		}
+		} // if
 		if ( dst->base ) {
 			addTypeToType( src, dst->base );
@@ -398,5 +414,5 @@
 					dst->basic->modifiers.splice( dst->basic->modifiers.end(), src->basic->modifiers );
 					dst->basic->typeSpec.splice( dst->basic->typeSpec.end(), src->basic->typeSpec );
-				}
+				} // if
 				break;
 
@@ -409,5 +425,5 @@
 					if ( src->kind == TypeData::Aggregate ) {
 						dst->base->aggInst->params = maybeClone( src->aggregate->actuals );
-					}
+					} // if
 					dst->base->qualifiers.splice( dst->base->qualifiers.end(), src->qualifiers );
 					src = 0;
@@ -419,12 +435,12 @@
 					} else {
 						dst->forall = src->forall;
-					}
+					} // if
 					src->forall = 0;
 					dst->base = src;
 					src = 0;
-				}
-			}
-		}
-	}
+				} // switch
+			} // switch
+		} // if
+	} // if
 }
 
@@ -439,18 +455,18 @@
 					if ( o->type->kind == TypeData::Aggregate ) {
 						type->aggInst->params = maybeClone( o->type->aggregate->actuals );
-					}
+					} // if
 					type->qualifiers.splice( type->qualifiers.end(), o->type->qualifiers );
 				} else {
 					type = o->type;
-				}
+				} // if
 				o->type = 0;
 			} else {
 				addTypeToType( o->type, type );
-			}
-		}
+			} // if
+		} // if
 		if ( o->bitfieldWidth ) {
 			bitfieldWidth = o->bitfieldWidth;
-		}
-	}
+		} // if
+	} // if
 	delete o;
 	return this;
@@ -467,5 +483,5 @@
 }
 
-DeclarationNode *DeclarationNode::addAssertions( DeclarationNode* assertions ) {
+DeclarationNode *DeclarationNode::addAssertions( DeclarationNode *assertions ) {
 	assert( type );
 	switch ( type->kind ) {
@@ -475,7 +491,6 @@
 		} else {
 			type->symbolic->assertions = assertions;
-		}
+		} // if
 		break;
-	
 	  case TypeData::Variable:
 		if ( type->variable->assertions ) {
@@ -483,15 +498,14 @@
 		} else {
 			type->variable->assertions = assertions;
-		}
+		} // if
 		break;
-	
 	  default:
 		assert( false );
-	}
+	} // switch
 	
 	return this;
 }
 
-DeclarationNode *DeclarationNode::addName( std::string* newname ) {
+DeclarationNode *DeclarationNode::addName( std::string *newname ) {
 	name = assign_strptr( newname );
 	return this;
@@ -526,6 +540,5 @@
 }
 
-static void
-setBase( TypeData *&type, TypeData *newType ) {
+static void setBase( TypeData *&type, TypeData *newType ) {
 	if ( type ) {
 		TypeData *prevBase = type;
@@ -534,9 +547,9 @@
 			prevBase = curBase;
 			curBase = curBase->base;
-		}
+		} // while
 		prevBase->base = newType;
 	} else {
 		type = newType;
-	}
+	} // if
 }
 
@@ -547,5 +560,5 @@
 		p->type = 0;
 		delete p;
-	}
+	} // if
 	return this;
 }
@@ -557,5 +570,5 @@
 		a->type = 0;
 		delete a;
-	}
+	} // if
 	return this;
 }
@@ -572,5 +585,5 @@
 				if ( type->kind == TypeData::Aggregate ) {
 					p->type->base->aggInst->params = maybeClone( type->aggregate->actuals );
-				}
+				} // if
 				p->type->base->qualifiers.splice( p->type->base->qualifiers.end(), type->qualifiers );
 				break;
@@ -578,12 +591,12 @@
 			  default:
 				p->type->base = type;
-			}
+			} // switch
 			type = 0;
-		}
+		} // if
 		delete this;
 		return p;
 	} else {
 		return this;
-	}
+	} // if
 }
 
@@ -593,5 +606,5 @@
 	while ( cur->base ) {
 		cur = cur->base;
-	}
+	} // while
 	return cur;
 }
@@ -609,17 +622,17 @@
 				if ( type->kind == TypeData::Aggregate ) {
 					lastArray->base->aggInst->params = maybeClone( type->aggregate->actuals );
-				}
+				} // if
 				lastArray->base->qualifiers.splice( lastArray->base->qualifiers.end(), type->qualifiers );
 				break;
 			  default:
 				lastArray->base = type;
-			}
+			} // switch
 			type = 0;
-		}
+		} // if
 		delete this;
 		return a;
 	} else {
 		return this;
-	}
+	} // if
 }
 
@@ -637,5 +650,5 @@
 		} else {
 			type->function->idList = ids;
-		}
+		} // if
 		return type;
 	} else {
@@ -643,5 +656,5 @@
 		newtype->function->idList = ids;
 		return newtype;
-	}
+	} // if
 }
 	
@@ -662,5 +675,5 @@
 	while ( srcType->base ) {
 		srcType = srcType->base;
-	}
+	} // while
 	newnode->type = maybeClone( srcType );
 	if ( newnode->type->kind == TypeData::AggregateInst ) {
@@ -673,6 +686,6 @@
 			delete newnode->type->aggInst->aggregate->aggregate->members;
 			newnode->type->aggInst->aggregate->aggregate->members = 0;
-		}
-	}
+		} // if
+	} // if
 	newnode->type->forall = maybeClone( type->forall );
 	newnode->storageClasses = storageClasses;
@@ -688,5 +701,5 @@
 			while ( srcType->base ) {
 				srcType = srcType->base;
-			}
+			} // while
 			TypeData *newType = srcType->clone();
 			if ( newType->kind == TypeData::AggregateInst ) {
@@ -699,6 +712,6 @@
 					delete newType->aggInst->aggregate->aggregate->members;
 					newType->aggInst->aggregate->aggregate->members = 0;
-				}
-			}
+				} // if
+			} // if
 			newType->forall = maybeClone( type->forall );
 			if ( ! o->type ) {
@@ -707,7 +720,7 @@
 				addTypeToType( newType, o->type );
 				delete newType;
-			}
-		}
-	}
+			} // if
+		} // if
+	} // if
 	return o;
 }
@@ -731,7 +744,7 @@
 				addTypeToType( newType, o->type );
 				delete newType;
-			}
-		}
-	}
+			} // if
+		} // if
+	} // if
 	return o;
 }
@@ -740,5 +753,5 @@
 	if ( node != 0 ) {
 		set_link( node );
-	}
+	} // if
 	return this;
 }
@@ -756,7 +769,7 @@
 }
 
-void buildList( const DeclarationNode *firstNode, std::list< Declaration* > &outputList ) {
+void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList ) {
 	SemanticError errors;
-	std::back_insert_iterator< std::list< Declaration* > > out( outputList );
+	std::back_insert_iterator< std::list< Declaration *> > out( outputList );
 	const DeclarationNode *cur = firstNode;
 	while ( cur ) {
@@ -776,5 +789,5 @@
 			errors.append( e );
 		} // try
-		cur = dynamic_cast< DeclarationNode* >( cur->get_link() );
+		cur = dynamic_cast< DeclarationNode *>( cur->get_link() );
 	} // while
 	if ( ! errors.isEmpty() ) {
@@ -783,7 +796,7 @@
 }
 
-void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType* > &outputList ) {
+void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType *> &outputList ) {
 	SemanticError errors;
-	std::back_insert_iterator< std::list< DeclarationWithType* > > out( outputList );
+	std::back_insert_iterator< std::list< DeclarationWithType *> > out( outputList );
 	const DeclarationNode *cur = firstNode;
 	while ( cur ) {
@@ -799,13 +812,13 @@
 			Declaration *decl = cur->build();
 			if ( decl ) {
-				if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType* >( decl ) ) {
+				if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType *>( decl ) ) {
 					*out++ = dwt;
-				} else if ( StructDecl *agg = dynamic_cast< StructDecl* >( decl ) ) {
+				} else if ( StructDecl *agg = dynamic_cast< StructDecl *>( decl ) ) {
 					StructInstType *inst = new StructInstType( Type::Qualifiers(), agg->get_name() );
-					*out++ = new ObjectDecl( "", Declaration::NoStorageClass, linkage, 0, inst, 0 );
+					*out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 );
 					delete agg;
-				} else if ( UnionDecl *agg = dynamic_cast< UnionDecl* >( decl ) ) {
+				} else if ( UnionDecl *agg = dynamic_cast< UnionDecl *>( decl ) ) {
 					UnionInstType *inst = new UnionInstType( Type::Qualifiers(), agg->get_name() );
-					*out++ = new ObjectDecl( "", Declaration::NoStorageClass, linkage, 0, inst, 0 );
+					*out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 );
 				} // if
 			} // if
@@ -813,5 +826,5 @@
 			errors.append( e );
 		} // try
-		cur = dynamic_cast< DeclarationNode* >( cur->get_link() );
+		cur = dynamic_cast< DeclarationNode *>( cur->get_link() );
 	} // while
 	if ( ! errors.isEmpty() ) {
@@ -820,7 +833,7 @@
 }
 
-void buildTypeList( const DeclarationNode *firstNode, std::list< Type* > &outputList ) {
+void buildTypeList( const DeclarationNode *firstNode, std::list< Type *> &outputList ) {
 	SemanticError errors;
-	std::back_insert_iterator< std::list< Type* > > out( outputList );
+	std::back_insert_iterator< std::list< Type *> > out( outputList );
 	const DeclarationNode *cur = firstNode;
 	while ( cur ) {
@@ -830,5 +843,5 @@
 			errors.append( e );
 		} // try
-		cur = dynamic_cast< DeclarationNode* >( cur->get_link() );
+		cur = dynamic_cast< DeclarationNode *>( cur->get_link() );
 	} // while
 	if ( ! errors.isEmpty() ) {
@@ -839,11 +852,11 @@
 Declaration *DeclarationNode::build() const {
 	if ( type ) {
-		Declaration *newDecl = type->buildDecl( name, buildStorageClass(), maybeBuild< Expression >( bitfieldWidth ), buildInline(), linkage, maybeBuild< Initializer >(initializer) );
+		Declaration *newDecl = type->buildDecl( name, buildStorageClass(), maybeBuild< Expression >( bitfieldWidth ), buildFuncSpecifier( Inline ), buildFuncSpecifier( Noreturn ), linkage, maybeBuild< Initializer >(initializer) );
 		return newDecl;
 	} // if
-	if ( ! buildInline() ) {
+	if ( ! buildFuncSpecifier( Inline ) && ! buildFuncSpecifier( Noreturn ) ) {
 		return new ObjectDecl( name, buildStorageClass(), linkage, maybeBuild< Expression >( bitfieldWidth ), 0, maybeBuild< Initializer >( initializer ) );
 	} // if
-	throw SemanticError( "invalid inline specification in declaration of ", this );
+	throw SemanticError( "invalid function specifier in declaration of ", this );
 }
 
@@ -882,32 +895,22 @@
 }
 
-Declaration::StorageClass DeclarationNode::buildStorageClass() const {
-	static const Declaration::StorageClass scMap[] = {  
-		Declaration::Extern,
-		Declaration::Static,
-		Declaration::Auto,
-		Declaration::Register,
-		Declaration::Inline,
-		Declaration::Fortran
-	};  
-  
-	Declaration::StorageClass ret = Declaration::NoStorageClass;
-	for ( std::list< StorageClass >::const_iterator i = storageClasses.begin(); i != storageClasses.end(); ++i ) {
-		assert( unsigned( *i ) < sizeof( scMap ) / sizeof( scMap[0] ) );
-	  if ( *i == Inline ) continue;
-	  if ( ret != Declaration::NoStorageClass ) {
+DeclarationNode::StorageClass DeclarationNode::buildStorageClass() const {
+	DeclarationNode::StorageClass ret = DeclarationNode::NoStorageClass;
+	for ( std::list< DeclarationNode::StorageClass >::const_iterator i = storageClasses.begin(); i != storageClasses.end(); ++i ) {
+	  if ( *i == DeclarationNode::Inline || *i == DeclarationNode::Noreturn ) continue; // ignore function specifiers
+	  if ( ret != DeclarationNode::NoStorageClass ) {	// already have a valid storage class ?
 			throw SemanticError( "invalid combination of storage classes in declaration of ", this );
-		}
-		ret = scMap[ *i ];
-	}
+		} // if
+		ret = *i;
+	} // for
 	return ret;
 }
 
-bool DeclarationNode::buildInline() const {
-	std::list< StorageClass >::const_iterator first = std::find( storageClasses.begin(), storageClasses.end(), Inline );
-  if ( first == storageClasses.end() ) return false;
-	std::list< StorageClass >::const_iterator next = std::find( ++first, storageClasses.end(), Inline );
-  if ( next == storageClasses.end() ) return true;
-	throw SemanticError( "duplicate inline specification in declaration of ", this );
+bool DeclarationNode::buildFuncSpecifier( DeclarationNode::StorageClass key ) const {
+	std::list< DeclarationNode::StorageClass >::const_iterator first = std::find( storageClasses.begin(), storageClasses.end(), key );
+  if ( first == storageClasses.end() ) return false;	// not found
+	first = std::find( ++first, storageClasses.end(), key ); // found
+  if ( first == storageClasses.end() ) return true;		// not found again
+	throw SemanticError( "duplicate function specifier in declaration of ", this );
 }
 
Index: src/Parser/ExpressionNode.cc
===================================================================
--- src/Parser/ExpressionNode.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Parser/ExpressionNode.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Sat May 16 13:17:07 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May 16 13:19:35 2015
-// Update Count     : 2
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Jun 24 16:20:00 2015
+// Update Count     : 158
 // 
 
@@ -17,10 +17,11 @@
 #include <cctype>
 #include <algorithm>
+#include <sstream>
+#include <cstdio>
+#include <climits>
 
 #include "ParseNode.h"
-#include "SynTree/Type.h"
 #include "SynTree/Constant.h"
 #include "SynTree/Expression.h"
-#include "SynTree/Declaration.h"
 #include "UnimplementedError.h"
 #include "parseutility.h"
@@ -31,7 +32,5 @@
 ExpressionNode::ExpressionNode() : ParseNode(), argName( 0 ) {}
 
-ExpressionNode::ExpressionNode( string *name_) : ParseNode( *name_ ), argName( 0 ) {
-	delete name_;
-}
+ExpressionNode::ExpressionNode( const string *name_ ) : ParseNode( name_ ), argName( 0 ) {}
 
 ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ) {
@@ -43,5 +42,5 @@
 }
 
-ExpressionNode * ExpressionNode::set_asArgName( std::string *aName ) {
+ExpressionNode * ExpressionNode::set_asArgName( const std::string *aName ) {
 	argName = new VarRefNode( aName );
 	return this;
@@ -55,5 +54,5 @@
 void ExpressionNode::printDesignation( std::ostream &os, int indent ) const {
 	if ( argName ) {
-		os << string(' ', indent ) << "(designated by:  ";
+		os << string( indent, ' ' ) << "(designated by:  ";
 		argName->printOneLine( os, indent );
 		os << ")" << std::endl;
@@ -61,4 +60,6 @@
 }
 
+//##############################################################################
+
 NullExprNode::NullExprNode() {}
 
@@ -85,115 +86,151 @@
 }
 
-//  enum ConstantNode::Type =  { Integer, Float, Character, String, Range }
-
-ConstantNode::ConstantNode( void ) : ExpressionNode(), sign( true ), longs(0), size(0) {}
-
-ConstantNode::ConstantNode( string *name_) : ExpressionNode( name_), sign( true ), longs(0), size(0) {}
-
-ConstantNode::ConstantNode( Type t, string *inVal ) : type( t ), sign( true ), longs(0), size(0) {
-	if ( inVal ) {
-		value = *inVal;
-		delete inVal;
-	} else {
-		value = "";
-	} // if
-
-	classify( value );
-}
-
-ConstantNode::ConstantNode( const ConstantNode &other ) : ExpressionNode( other ), type( other.type ), value( other.value ), sign( other.sign ),
-														  base( other.base ), longs( other.longs ), size( other.size ) {
-}
-
-// for some reason, std::tolower doesn't work as an argument to std::transform in g++ 3.1
-inline char tolower_hack( char c ) {
-	return std::tolower( c );
-}
-
-void ConstantNode::classify( std::string &str ) {
+//##############################################################################
+
+static inline bool checkU( char c ) { return c == 'u' || c == 'U'; }
+static inline bool checkL( char c ) { return c == 'l' || c == 'L'; }
+static inline bool checkF( char c ) { return c == 'f' || c == 'F'; }
+static inline bool checkX( char c ) { return c == 'x' || c == 'X'; }
+
+// Difficult to separate extra parts of constants during lexing because actions are not allow in the middle of patterns:
+//
+//		prefix action constant action suffix
+//
+// Alternatively, breaking a pattern using BEGIN does not work if the following pattern can be empty:
+//
+//		constant BEGIN CONT ...
+//		<CONT>(...)? BEGIN 0 ... // possible empty suffix
+//
+// because the CONT rule is NOT triggered if the pattern is empty. Hence, constants are reparsed here to determine their
+// type.
+
+ConstantNode::ConstantNode( Type t, string *inVal ) : type( t ), value( *inVal ) {
+	// lexing divides constants into 4 kinds
+	switch ( type ) {
+	  case Integer:
+		{
+			static const BasicType::Kind kind[2][3] = {
+				{ BasicType::SignedInt, BasicType::LongSignedInt, BasicType::LongLongSignedInt },
+				{ BasicType::UnsignedInt, BasicType::LongUnsignedInt, BasicType::LongLongUnsignedInt },
+			};
+			size_t last = value.length() - 1;			// last character of constant
+			unsigned long long v;						// converted integral value
+			bool dec = true, Unsigned = false;			// decimal, unsigned constant
+			int size;									// 0 => int, 1 => long, 2 => long long
+
+			if ( value[0] == '0' ) {					// octal constant ?
+				dec = false;
+				if ( last != 0 && checkX( value[1] ) ) { // hex constant ?
+					sscanf( (char *)value.c_str(), "%llx", &v );
+					//printf( "%llx %llu\n", v, v );
+				} else {
+					sscanf( (char *)value.c_str(), "%llo", &v );
+					//printf( "%llo %llu\n", v, v );
+				} // if
+			} else {									// decimal constant ?
+				sscanf( (char *)value.c_str(), "%llu", &v );
+				//printf( "%llu %llu\n", v, v );
+			} // if
+
+			if ( v <= INT_MAX ) {						// signed int
+				size = 0;
+			} else if ( v <= UINT_MAX && ! dec ) {		// unsigned int
+				size = 0;
+				Unsigned = true;						// unsigned
+			} else if ( v <= LONG_MAX ) {				// signed long int
+				size = 1;
+			} else if ( v <= ULONG_MAX && ( ! dec || LONG_MAX == LLONG_MAX ) ) { // signed long int
+				size = 1;
+				Unsigned = true;						// unsigned long int
+			} else if ( v <= LLONG_MAX ) {				// signed long long int
+				size = 2;
+			} else {									// unsigned long long int
+				size = 2;
+				Unsigned = true;						// unsigned long long int
+			} // if
+
+			if ( checkU( value[last] ) ) {				// suffix 'u' ?
+				Unsigned = true;
+				if ( last > 0 && checkL( value[ last - 1 ] ) ) { // suffix 'l' ?
+					size = 1;
+					if ( last > 1 && checkL( value[ last - 2 ] ) ) { // suffix 'll' ?
+						size = 2;
+					} // if
+				} // if
+			} else if ( checkL( value[ last ] ) ) {		// suffix 'l' ?
+				size = 1;
+				if ( last > 0 && checkL( value[ last - 1 ] ) ) { // suffix 'll' ?
+					size = 2;
+					if ( last > 1 && checkU( value[ last - 2 ] ) ) { // suffix 'u' ?
+						Unsigned = true;
+					} // if
+				} else {
+					if ( last > 0 && checkU( value[ last - 1 ] ) ) { // suffix 'u' ?
+						Unsigned = true;
+					} // if
+				} // if
+			} // if
+			btype = kind[Unsigned][size];				// lookup constant type
+			break;
+		}
+	  case Float:
+		{
+			size_t len = value.length() - 1;
+
+			btype = BasicType::Double;					// default
+			if ( checkF( value[len] ) ) {				// float ?
+				btype = BasicType::Float;
+			} // if
+			if ( checkL( value[len] ) ) {				// long double ?
+				btype = BasicType::LongDouble;
+			} // if
+			break;
+		}
+	  case Character:
+		btype = BasicType::Char;						// default
+		if ( string( "LUu" ).find( value[0] ) != string::npos ) {
+			// ???
+		} // if
+		break;
+	  case String:
+		// array of char
+		if ( string( "LUu" ).find( value[0] ) != string::npos ) {
+			if ( value[0] == 'u' && value[1] == '8' ) {
+				// ???
+			} else {
+				// ???
+			} // if
+		} // if
+		break;
+	} // switch
+} // ConstantNode::ConstantNode
+
+ConstantNode *ConstantNode::appendstr( const std::string *newValue ) {
+	assert( newValue != 0 );
+	assert( type == String );
+
+	// "abc" "def" "ghi" => "abcdefghi", so remove new text from quotes and insert before last quote in old string.
+	value.insert( value.length() - 1, newValue->substr( 1, newValue->length() - 2 ) );
+	
+	delete newValue;									// allocated by lexer
+	return this;
+}
+
+void ConstantNode::printOneLine( std::ostream &os, int indent ) const {
+	os << string( indent, ' ' );
+	printDesignation( os );
+
 	switch ( type ) {
 	  case Integer:
 	  case Float:
-		{
-			std::string sfx("");
-			char c;
-			int i = str.length() - 1;
-
-			while ( i >= 0 && ! isxdigit( c = str.at( i--)) )
-				sfx += c;
-
-			value = str.substr( 0, i + 2 );
-
-			// get rid of underscores
-			value.erase( remove( value.begin(), value.end(), '_'), value.end());
-
-			std::transform( sfx.begin(), sfx.end(), sfx.begin(), tolower_hack );
-
-			if ( sfx.find("ll") != string::npos ) {
-				longs = 2;
-			} else if ( sfx.find("l") != string::npos ) {
-				longs = 1;
-			} // if
-
-			assert(( longs >= 0) && ( longs <= 2));
-
-			if ( sfx.find("u") != string::npos )
-				sign = false;
-
-			break;
-		}
-	  case Character:
-		{
-			// remove underscores from hex and oct escapes
-			if ( str.substr(1,2) == "\\x")
-				value.erase( remove( value.begin(), value.end(), '_'), value.end());
-
-			break;
-		}
-	  default:
-		// shouldn't be here
-		;
-	}
-}
-
-ConstantNode::Type ConstantNode::get_type( void ) const {
-	return type;
-}
-
-ConstantNode *ConstantNode::append( std::string *newValue ) {
-	if ( newValue ) {
-		if ( type == String ) {
-			std::string temp = *newValue;
-			value.resize( value.size() - 1 );
-			value += newValue->substr(1, newValue->size());
-		} else
-			value += *newValue;
-
-		delete newValue;
-	} // if
-	return this;
-}
-
-void ConstantNode::printOneLine( std::ostream &os, int indent ) const {
-	os << string( indent, ' ');
-	printDesignation( os );
-
-	switch ( type ) {
-		/* integers */
-	  case Integer:
 		os << value ;
 		break;
-	  case Float:
-		os << value ;
-		break;
-
 	  case Character:
 		os << "'" << value << "'";
 		break;
-
 	  case String:
 		os << '"' << value << '"';
 		break;
-	}
+	} // switch
 
 	os << ' ';
@@ -206,35 +243,27 @@
 
 Expression *ConstantNode::build() const {
-	::Type::Qualifiers q;
-	BasicType *bt;
-
-	switch ( get_type()) {
-	  case Integer:
-		/* Cfr. standard 6.4.4.1 */
-		//bt.set_kind( BasicType::SignedInt );
-		bt = new BasicType( q, BasicType::SignedInt );
-		break;
-	  case Float:
-		bt = new BasicType( q, BasicType::Float );
-		break;
-	  case Character:
-		bt = new BasicType( q, BasicType::Char );
-		break;
+	::Type::Qualifiers q;								// no qualifiers on constants
+
+	switch ( get_type() ) {
 	  case String:
-		// string should probably be a primitive type
-		ArrayType *at;
-		std::string value = get_value();
-		at = new ArrayType( q, new BasicType( q, BasicType::Char ),
-							new ConstantExpr( Constant( new BasicType( q, BasicType::SignedInt ),
-														toString( value.size() - 1 ) ) ),  // account for '\0'
-							false, false );
-		return new ConstantExpr( Constant( at, value ), maybeBuild< Expression >( get_argName() ) );
+		{
+			// string should probably be a primitive type
+			ArrayType *at = new ArrayType( q, new BasicType( q, BasicType::Char ),
+										   new ConstantExpr(
+											   Constant( new BasicType( q, BasicType::UnsignedInt ),
+														 toString( value.size()+1-2 ) ) ),  // +1 for '\0' and -2 for '"'
+										   false, false );
+			return new ConstantExpr( Constant( at, value ), maybeBuild< Expression >( get_argName() ) );
+		}
+	  default:
+		return new ConstantExpr( Constant( new BasicType( q, btype ), get_value() ), maybeBuild< Expression >( get_argName() ) );
 	}
-	return new ConstantExpr(  Constant( bt, get_value()),  maybeBuild< Expression >( get_argName() ) );
-}
+}
+
+//##############################################################################
 
 VarRefNode::VarRefNode() : isLabel( false ) {}
 
-VarRefNode::VarRefNode( string *name_, bool labelp ) : ExpressionNode( name_), isLabel( labelp ) {}
+VarRefNode::VarRefNode( const string *name_, bool labelp ) : ExpressionNode( name_ ), isLabel( labelp ) {}
 
 VarRefNode::VarRefNode( const VarRefNode &other ) : ExpressionNode( other ), isLabel( other.isLabel ) {
@@ -252,9 +281,11 @@
 void VarRefNode::print( std::ostream &os, int indent ) const {
 	printDesignation( os );
-	os << '\r' << string( indent, ' ') << "Referencing: ";
+	os << string( indent, ' ' ) << "Referencing: ";
 	os << "Variable: " << get_name();
 	os << endl;
 }
 
+//##############################################################################
+
 OperatorNode::OperatorNode( Type t ) : type( t ) {}
 
@@ -275,10 +306,10 @@
 void OperatorNode::print( std::ostream &os, int indent ) const{
 	printDesignation( os );
-	os << '\r' << string( indent, ' ') << "Operator: " << OpName[type] << endl;
+	os << string( indent, ' ' ) << "Operator: " << OpName[type] << endl;
 	return;
 }
 
-std::string OperatorNode::get_typename( void ) const{
-	return string( OpName[ type ]);
+const char *OperatorNode::get_typename( void ) const{
+	return OpName[ type ];
 }
 
@@ -288,5 +319,5 @@
 	"Cond",   "NCond",
 	// diadic
-	"SizeOf",      "AlignOf", "Attr", "CompLit", "Plus",    "Minus",   "Mul",     "Div",     "Mod",      "Or",
+	"SizeOf",     "AlignOf", "Attr", "CompLit", "Plus",    "Minus",   "Mul",     "Div",     "Mod",      "Or",
 	"And",       "BitOr",   "BitAnd",  "Xor",     "Cast",    "LShift",  "RShift",  "LThan",   "GThan",
 	"LEThan",    "GEThan", "Eq",      "Neq",     "Assign",  "MulAssn", "DivAssn", "ModAssn", "PlusAssn",
@@ -297,8 +328,10 @@
 };
 
+//##############################################################################
+
 CompositeExprNode::CompositeExprNode( void ) : ExpressionNode(), function( 0 ), arguments( 0 ) {
 }
 
-CompositeExprNode::CompositeExprNode( string *name_) : ExpressionNode( name_), function( 0 ), arguments( 0 ) {
+CompositeExprNode::CompositeExprNode( const string *name_ ) : ExpressionNode( name_ ), function( 0 ), arguments( 0 ) {
 }
 
@@ -331,13 +364,13 @@
 // the names that users use to define operator functions
 static const char *opFuncName[] = {
-	"",  "", "",
-	"",   "",
-	// diadic
-	"",   "", "", "", "?+?",    "?-?",   "?*?",     "?/?",     "?%?",     "",       "",
-	"?|?",  "?&?",  "?^?",     "",    "?<<?",  "?>>?",  "?<?",   "?>?",    "?<=?",
-	"?>=?", "?==?",      "?!=?",     "?=?",  "?*=?", "?/=?", "?%=?", "?+=?", "?-=?",
-	"?<<=?", "?>>=?",  "?&=?", "?^=?",  "?|=?",  "?[?]",   "","","Range",
-	// monadic
-	"+?", "-?", "", "*?", "!?", "~?", "++?", "?++", "--?", "?--", "LabAddress"
+	"",		"",		"",
+	"",		"",
+	//diadic
+	"",		"",		"",		"",		"?+?",		"?-?",	"?*?",	"?/?",	"?%?",	"",		 "",
+	"?|?",		"?&?",		"?^?",	"",		"?<<?",	"?>>?",	"?<?",	"?>?",	"?<=?",
+	"?>=?",		"?==?",		"?!=?",	"?=?",	"?*=?",	"?/=?",	"?%=?",	"?+=?",	"?-=?",
+	"?<<=?",	"?>>=?",	"?&=?",	"?^=?",	"?|=?",	"?[?]",	"",		"",		"Range",
+	//monadic
+	"+?",		"-?",		"",		"*?",	"!?",	"~?",	"++?",	"?++",	"--?",	"?--",	"&&"
 };
 
@@ -350,192 +383,191 @@
 	buildList( get_args(), args );
 
-	if ( ! ( op = dynamic_cast<OperatorNode *>( function )) ) {
-		// a function as opposed to an operator
+	if ( ! ( op = dynamic_cast<OperatorNode *>( function ) ) ) { // function as opposed to operator
 		return new UntypedExpr( function->build(), args, maybeBuild< Expression >( get_argName() ));
-	} else {
-		switch ( op->get_type()) {
-		  case OperatorNode::Incr:
-		  case OperatorNode::Decr:
-		  case OperatorNode::IncrPost:
-		  case OperatorNode::DecrPost:
-		  case OperatorNode::Assign:
-		  case OperatorNode::MulAssn:
-		  case OperatorNode::DivAssn:
-		  case OperatorNode::ModAssn:
-		  case OperatorNode::PlusAssn:
-		  case OperatorNode::MinusAssn:
-		  case OperatorNode::LSAssn:
-		  case OperatorNode::RSAssn:
-		  case OperatorNode::AndAssn:
-		  case OperatorNode::ERAssn:
-		  case OperatorNode::OrAssn:
-			// the rewrite rules for these expressions specify that the first argument has its address taken
-			assert( ! args.empty() );
-			args.front() = new AddressExpr( args.front() );
-			break;
-		  default:
-			/* do nothing */
-			;
-		}
-
-		switch ( op->get_type() ) {
-		  case OperatorNode::Incr:
-		  case OperatorNode::Decr:
-		  case OperatorNode::IncrPost:
-		  case OperatorNode::DecrPost:
-		  case OperatorNode::Assign:
-		  case OperatorNode::MulAssn:
-		  case OperatorNode::DivAssn:
-		  case OperatorNode::ModAssn:
-		  case OperatorNode::PlusAssn:
-		  case OperatorNode::MinusAssn:
-		  case OperatorNode::LSAssn:
-		  case OperatorNode::RSAssn:
-		  case OperatorNode::AndAssn:
-		  case OperatorNode::ERAssn:
-		  case OperatorNode::OrAssn:
-		  case OperatorNode::Plus:
-		  case OperatorNode::Minus:
-		  case OperatorNode::Mul:
-		  case OperatorNode::Div:
-		  case OperatorNode::Mod:
-		  case OperatorNode::BitOr:
-		  case OperatorNode::BitAnd:
-		  case OperatorNode::Xor:
-		  case OperatorNode::LShift:
-		  case OperatorNode::RShift:
-		  case OperatorNode::LThan:
-		  case OperatorNode::GThan:
-		  case OperatorNode::LEThan:
-		  case OperatorNode::GEThan:
-		  case OperatorNode::Eq:
-		  case OperatorNode::Neq:
-		  case OperatorNode::Index:
-		  case OperatorNode::Range:
-		  case OperatorNode::UnPlus:
-		  case OperatorNode::UnMinus:
-		  case OperatorNode::PointTo:
-		  case OperatorNode::Neg:
-		  case OperatorNode::BitNeg:
-		  case OperatorNode::LabelAddress:
-			return new UntypedExpr( new NameExpr( opFuncName[ op->get_type() ] ), args );
-		  case OperatorNode::AddressOf:
-			assert( args.size() == 1 );
-			assert( args.front() );
-
-			return new AddressExpr( args.front() );
-		  case OperatorNode::Cast:
-			{
-				TypeValueNode * arg = dynamic_cast<TypeValueNode *>( get_args());
-				assert( arg );
-
-				DeclarationNode *decl_node = arg->get_decl();
-				ExpressionNode *expr_node = dynamic_cast<ExpressionNode *>( arg->get_link());
-
-				Type *targetType = decl_node->buildType();
-				if ( dynamic_cast< VoidType* >( targetType ) ) {
-					delete targetType;
-					return new CastExpr( expr_node->build(), maybeBuild< Expression >( get_argName() ) );
-				} else {
-					return new CastExpr( expr_node->build(),targetType, maybeBuild< Expression >( get_argName() ) );
-				} // if
-			}
-		  case OperatorNode::FieldSel:
-			{
-				assert( args.size() == 2 );
-
-				NameExpr *member = dynamic_cast<NameExpr *>( args.back());
-				// TupleExpr *memberTup = dynamic_cast<TupleExpr *>( args.back());
-
-				if ( member != 0 ) {
-					UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), args.front());
-					delete member;
-					return ret;
-					/* else if ( memberTup != 0 )
-					   {
-					   UntypedMemberExpr *ret = new UntypedMemberExpr( memberTup->get_name(), args.front());
-					   delete member;
-					   return ret;
-					   } */
-				} else
-					assert( false );
-			}
-		  case OperatorNode::PFieldSel:
-			{
-				assert( args.size() == 2 );
-
-				NameExpr *member = dynamic_cast<NameExpr *>( args.back());  // modify for Tuples   xxx
-				assert( member != 0 );
-
-				UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
-				deref->get_args().push_back( args.front() );
-
-				UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), deref );
+	} // if
+
+	switch ( op->get_type()) {
+	  case OperatorNode::Incr:
+	  case OperatorNode::Decr:
+	  case OperatorNode::IncrPost:
+	  case OperatorNode::DecrPost:
+	  case OperatorNode::Assign:
+	  case OperatorNode::MulAssn:
+	  case OperatorNode::DivAssn:
+	  case OperatorNode::ModAssn:
+	  case OperatorNode::PlusAssn:
+	  case OperatorNode::MinusAssn:
+	  case OperatorNode::LSAssn:
+	  case OperatorNode::RSAssn:
+	  case OperatorNode::AndAssn:
+	  case OperatorNode::ERAssn:
+	  case OperatorNode::OrAssn:
+		// the rewrite rules for these expressions specify that the first argument has its address taken
+		assert( ! args.empty() );
+		args.front() = new AddressExpr( args.front() );
+		break;
+	  default:
+		/* do nothing */
+		;
+	}
+
+	switch ( op->get_type() ) {
+	  case OperatorNode::Incr:
+	  case OperatorNode::Decr:
+	  case OperatorNode::IncrPost:
+	  case OperatorNode::DecrPost:
+	  case OperatorNode::Assign:
+	  case OperatorNode::MulAssn:
+	  case OperatorNode::DivAssn:
+	  case OperatorNode::ModAssn:
+	  case OperatorNode::PlusAssn:
+	  case OperatorNode::MinusAssn:
+	  case OperatorNode::LSAssn:
+	  case OperatorNode::RSAssn:
+	  case OperatorNode::AndAssn:
+	  case OperatorNode::ERAssn:
+	  case OperatorNode::OrAssn:
+	  case OperatorNode::Plus:
+	  case OperatorNode::Minus:
+	  case OperatorNode::Mul:
+	  case OperatorNode::Div:
+	  case OperatorNode::Mod:
+	  case OperatorNode::BitOr:
+	  case OperatorNode::BitAnd:
+	  case OperatorNode::Xor:
+	  case OperatorNode::LShift:
+	  case OperatorNode::RShift:
+	  case OperatorNode::LThan:
+	  case OperatorNode::GThan:
+	  case OperatorNode::LEThan:
+	  case OperatorNode::GEThan:
+	  case OperatorNode::Eq:
+	  case OperatorNode::Neq:
+	  case OperatorNode::Index:
+	  case OperatorNode::Range:
+	  case OperatorNode::UnPlus:
+	  case OperatorNode::UnMinus:
+	  case OperatorNode::PointTo:
+	  case OperatorNode::Neg:
+	  case OperatorNode::BitNeg:
+	  case OperatorNode::LabelAddress:
+		return new UntypedExpr( new NameExpr( opFuncName[ op->get_type() ] ), args );
+	  case OperatorNode::AddressOf:
+		assert( args.size() == 1 );
+		assert( args.front() );
+
+		return new AddressExpr( args.front() );
+	  case OperatorNode::Cast:
+		{
+			TypeValueNode * arg = dynamic_cast<TypeValueNode *>( get_args());
+			assert( arg );
+
+			DeclarationNode *decl_node = arg->get_decl();
+			ExpressionNode *expr_node = dynamic_cast<ExpressionNode *>( arg->get_link());
+
+			Type *targetType = decl_node->buildType();
+			if ( dynamic_cast< VoidType* >( targetType ) ) {
+				delete targetType;
+				return new CastExpr( expr_node->build(), maybeBuild< Expression >( get_argName() ) );
+			} else {
+				return new CastExpr( expr_node->build(),targetType, maybeBuild< Expression >( get_argName() ) );
+			} // if
+		}
+	  case OperatorNode::FieldSel:
+		{
+			assert( args.size() == 2 );
+
+			NameExpr *member = dynamic_cast<NameExpr *>( args.back());
+			// TupleExpr *memberTup = dynamic_cast<TupleExpr *>( args.back());
+
+			if ( member != 0 ) {
+				UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), args.front());
 				delete member;
 				return ret;
+				/* else if ( memberTup != 0 )
+				   {
+				   UntypedMemberExpr *ret = new UntypedMemberExpr( memberTup->get_name(), args.front());
+				   delete member;
+				   return ret;
+				   } */
+			} else
+				assert( false );
+		}
+	  case OperatorNode::PFieldSel:
+		{
+			assert( args.size() == 2 );
+
+			NameExpr *member = dynamic_cast<NameExpr *>( args.back());  // modify for Tuples   xxx
+			assert( member != 0 );
+
+			UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
+			deref->get_args().push_back( args.front() );
+
+			UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), deref );
+			delete member;
+			return ret;
+		}
+	  case OperatorNode::AlignOf:
+	  case OperatorNode::SizeOf:
+		{
+/// 	bool isSizeOf = ( op->get_type() == OperatorNode::SizeOf );
+
+			if ( TypeValueNode * arg = dynamic_cast<TypeValueNode *>( get_args()) ) {
+				return new SizeofExpr( arg->get_decl()->buildType());
+			} else {
+				return new SizeofExpr( args.front());
+			} // if
+		}
+	  case OperatorNode::Attr:
+		{
+			VarRefNode *var = dynamic_cast<VarRefNode *>( get_args());
+			assert( var );
+			if ( ! get_args()->get_link() ) {
+				return new AttrExpr( var->build(), ( Expression*)0);
+			} else if ( TypeValueNode * arg = dynamic_cast<TypeValueNode *>( get_args()->get_link()) ) {
+				return new AttrExpr( var->build(), arg->get_decl()->buildType());
+			} else {
+				return new AttrExpr( var->build(), args.back());
+			} // if
+		}
+	  case OperatorNode::CompLit:
+		throw UnimplementedError( "C99 compound literals" );
+		// the short-circuited operators
+	  case OperatorNode::Or:
+	  case OperatorNode::And:
+		assert( args.size() == 2);
+		return new LogicalExpr( notZeroExpr( args.front() ), notZeroExpr( args.back() ), ( op->get_type() == OperatorNode::And ) );
+	  case OperatorNode::Cond:
+		{
+			assert( args.size() == 3);
+			std::list< Expression* >::const_iterator i = args.begin();
+			Expression *arg1 = notZeroExpr( *i++ );
+			Expression *arg2 = *i++;
+			Expression *arg3 = *i++;
+			return new ConditionalExpr( arg1, arg2, arg3 );
+		}
+	  case OperatorNode::NCond:
+		throw UnimplementedError( "GNU 2-argument conditional expression" );
+	  case OperatorNode::Comma:
+		{
+			assert( args.size() == 2);
+			std::list< Expression* >::const_iterator i = args.begin();
+			Expression *ret = *i++;
+			while ( i != args.end() ) {
+				ret = new CommaExpr( ret, *i++ );
 			}
-		  case OperatorNode::AlignOf:
-		  case OperatorNode::SizeOf:
-			{
-/// 	bool isSizeOf = ( op->get_type() == OperatorNode::SizeOf );
-
-				if ( TypeValueNode * arg = dynamic_cast<TypeValueNode *>( get_args()) ) {
-					return new SizeofExpr( arg->get_decl()->buildType());
-				} else {
-					return new SizeofExpr( args.front());
-				} // if
-			}
-		  case OperatorNode::Attr:
-			{
-				VarRefNode *var = dynamic_cast<VarRefNode *>( get_args());
-				assert( var );
-				if ( ! get_args()->get_link() ) {
-					return new AttrExpr( var->build(), ( Expression*)0);
-				} else if ( TypeValueNode * arg = dynamic_cast<TypeValueNode *>( get_args()->get_link()) ) {
-					return new AttrExpr( var->build(), arg->get_decl()->buildType());
-				} else {
-					return new AttrExpr( var->build(), args.back());
-				} // if
-			}
-		  case OperatorNode::CompLit:
-			throw UnimplementedError( "C99 compound literals" );
-			// the short-circuited operators
-		  case OperatorNode::Or:
-		  case OperatorNode::And:
-			assert( args.size() == 2);
-			return new LogicalExpr( notZeroExpr( args.front() ), notZeroExpr( args.back() ), ( op->get_type() == OperatorNode::And ) );
-		  case OperatorNode::Cond:
-			{
-				assert( args.size() == 3);
-				std::list< Expression* >::const_iterator i = args.begin();
-				Expression *arg1 = notZeroExpr( *i++ );
-				Expression *arg2 = *i++;
-				Expression *arg3 = *i++;
-				return new ConditionalExpr( arg1, arg2, arg3 );
-			}
-		  case OperatorNode::NCond:
-			throw UnimplementedError( "GNU 2-argument conditional expression" );
-		  case OperatorNode::Comma:
-			{
-				assert( args.size() == 2);
-				std::list< Expression* >::const_iterator i = args.begin();
-				Expression *ret = *i++;
-				while ( i != args.end() ) {
-					ret = new CommaExpr( ret, *i++ );
-				}
-				return ret;
-			}
-			// Tuples
-		  case OperatorNode::TupleC:
-			{
-				TupleExpr *ret = new TupleExpr();
-				std::copy( args.begin(), args.end(), back_inserter( ret->get_exprs() ) );
-				return ret;
-			}
-		  default:
-			// shouldn't happen
-			return 0;
-		}
-	}
+			return ret;
+		}
+		// Tuples
+	  case OperatorNode::TupleC:
+		{
+			TupleExpr *ret = new TupleExpr();
+			std::copy( args.begin(), args.end(), back_inserter( ret->get_exprs() ) );
+			return ret;
+		}
+	  default:
+		// shouldn't happen
+		return 0;
+	} // switch
 }
 
@@ -552,8 +584,8 @@
 void CompositeExprNode::print( std::ostream &os, int indent ) const {
 	printDesignation( os );
-	os << '\r' << string( indent, ' ') << "Application of: " << endl;
+	os << string( indent, ' ' ) << "Application of: " << endl;
 	function->print( os, indent + ParseNode::indent_by );
 
-	os << '\r' << string( indent, ' ') ;
+	os << string( indent, ' ' ) ;
 	if ( arguments ) {
 		os << "... on arguments: " << endl;
@@ -586,4 +618,6 @@
 }
 
+//##############################################################################
+
 CommaExprNode::CommaExprNode(): CompositeExprNode( new OperatorNode( OperatorNode::Comma )) {}
 
@@ -603,4 +637,6 @@
 }
 
+//##############################################################################
+
 ValofExprNode::ValofExprNode( StatementNode *s ): body( s ) {}
 
@@ -614,5 +650,5 @@
 void ValofExprNode::print( std::ostream &os, int indent ) const {
 	printDesignation( os );
-	os << string( indent, ' ') << "Valof Expression:" << std::endl;
+	os << string( indent, ' ' ) << "Valof Expression:" << std::endl;
 	get_body()->print( os, indent + 4);
 }
@@ -625,4 +661,6 @@
 	return new UntypedValofExpr ( get_body()->build(), maybeBuild< Expression >( get_argName() ) );
 }
+
+//##############################################################################
 
 ForCtlExprNode::ForCtlExprNode( ParseNode *init_, ExpressionNode *cond, ExpressionNode *incr ) throw ( SemanticError ) : condition( cond ), change( incr ) {
@@ -633,5 +671,5 @@
 		ExpressionNode *exp;
 
-		if (( decl = dynamic_cast<DeclarationNode *>( init_)) != 0)
+		if (( decl = dynamic_cast<DeclarationNode *>(init_) ) != 0)
 			init = new StatementNode( decl );
 		else if (( exp = dynamic_cast<ExpressionNode *>( init_)) != 0)
@@ -659,16 +697,16 @@
 
 void ForCtlExprNode::print( std::ostream &os, int indent ) const{
-	os << string( indent,' ') << "For Control Expression -- : " << endl;
-
-	os << "\r" << string( indent + 2,' ') << "initialization: ";
-	if ( init != 0)
-		init->print( os, indent + 4);
-
-	os << "\n\r" << string( indent + 2,' ') << "condition: ";
-	if ( condition != 0)
-		condition->print( os, indent + 4);
-	os << "\n\r" << string( indent + 2,' ') << "increment: ";
-	if ( change != 0)
-		change->print( os, indent + 4);
+	os << string( indent,' ' ) << "For Control Expression -- :" << endl;
+
+	os << string( indent + 2, ' ' ) << "initialization:" << endl;
+	if ( init != 0 )
+		init->printList( os, indent + 4 );
+
+	os << string( indent + 2, ' ' ) << "condition: " << endl;
+	if ( condition != 0 )
+		condition->print( os, indent + 4 );
+	os << string( indent + 2, ' ' ) << "increment: " << endl;
+	if ( change != 0 )
+		change->print( os, indent + 4 );
 }
 
@@ -677,10 +715,10 @@
 }
 
-TypeValueNode::TypeValueNode( DeclarationNode *decl )
-	: decl( decl ) {
-}
-
-TypeValueNode::TypeValueNode( const TypeValueNode &other )
-	: ExpressionNode( other ), decl( maybeClone( other.decl ) ) {
+//##############################################################################
+
+TypeValueNode::TypeValueNode( DeclarationNode *decl ) : decl( decl ) {
+}
+
+TypeValueNode::TypeValueNode( const TypeValueNode &other ) : ExpressionNode( other ), decl( maybeClone( other.decl ) ) {
 }
 
@@ -700,14 +738,12 @@
 
 ExpressionNode *flattenCommas( ExpressionNode *list ) {
-	if ( CompositeExprNode *composite = dynamic_cast< CompositeExprNode * >( list ) )
-		{
-			OperatorNode *op;
-			if ( ( op = dynamic_cast< OperatorNode * >( composite->get_function() )) && ( op->get_type() == OperatorNode::Comma ) )
-				{
-					if ( ExpressionNode *next = dynamic_cast< ExpressionNode * >( list->get_link() ) )
-						composite->add_arg( next );
-					return flattenCommas( composite->get_args() );
-				}
-		}
+	if ( CompositeExprNode *composite = dynamic_cast< CompositeExprNode * >( list ) ) {
+		OperatorNode *op;
+		if ( ( op = dynamic_cast< OperatorNode * >( composite->get_function() )) && ( op->get_type() == OperatorNode::Comma ) ) {
+			if ( ExpressionNode *next = dynamic_cast< ExpressionNode * >( list->get_link() ) )
+				composite->add_arg( next );
+			return flattenCommas( composite->get_args() );
+		} // if
+	} // if
 
 	if ( ExpressionNode *next = dynamic_cast< ExpressionNode * >( list->get_link() ) )
@@ -722,5 +758,5 @@
 		if ( ( op = dynamic_cast< OperatorNode * >( composite->get_function() )) && ( op->get_type() == OperatorNode::TupleC ) )
 			return composite->get_args();
-	}
+	} // if
 	return tuple;
 }
Index: src/Parser/InitializerNode.cc
===================================================================
--- src/Parser/InitializerNode.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Parser/InitializerNode.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:20:24 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May 16 13:21:40 2015
-// Update Count     : 2
+// Last Modified On : Sat Jun  6 15:49:42 2015
+// Update Count     : 3
 // 
 
@@ -48,5 +48,5 @@
 
 void InitializerNode::print( std::ostream &os, int indent ) const {
-	os << std::string(indent, ' ') << "Initializer expression" << std::endl;
+	os << std::string( indent, ' ' ) << "Initializer expression" << std::endl;
 }
 
Index: src/Parser/ParseNode.cc
===================================================================
--- src/Parser/ParseNode.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Parser/ParseNode.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:26:29 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 16:48:30 2015
-// Update Count     : 3
+// Last Modified On : Sat Jun  6 20:17:58 2015
+// Update Count     : 23
 // 
 
@@ -20,32 +20,16 @@
 int ParseNode::indent_by = 4;
 
-ParseNode::ParseNode( void ) : next( 0 ) {};
-ParseNode::ParseNode( string _name ) : name( _name ), next( 0 ) {}
+ParseNode::ParseNode() : name( 0 ), next( 0 ) {};
+ParseNode::ParseNode( const string *name_ ) : name( name_ ), next( 0 ) {}
 
-ParseNode *ParseNode::set_name( string _name ) {
-	name = _name;
-	return this;
-}
-
-ParseNode *ParseNode::set_name( string *_name ) {
-	name = *_name; // deep copy
-	delete _name;
-
-	return this;
-}
-
-ParseNode::~ParseNode( void ) {
+ParseNode::~ParseNode() {
 	delete next;
 };
 
-string ParseNode::get_name( void ) {
-	return name;
-}
-
-ParseNode *ParseNode::get_link( void ) const {
+ParseNode *ParseNode::get_link() const {
 	return next;
 }
 
-ParseNode *ParseNode::get_last(void) {
+ParseNode *ParseNode::get_last() {
 	ParseNode *current = this;
 
@@ -56,20 +40,16 @@
 }
 
-ParseNode *ParseNode::set_link(ParseNode *_next) {
+ParseNode *ParseNode::set_link( ParseNode *next_ ) {
 	ParseNode *follow;
 
-	if ( _next == 0 ) return this;
+	if ( next_ == 0 ) return this;
 
 	for ( follow = this; follow->next != 0; follow = follow->next );
-	follow->next = _next;
+	follow->next = next_;
 
 	return this;
 }
 
-const string ParseNode::get_name(void) const {
-	return name;
-}
-
-void ParseNode::print(std::ostream &os, int indent) const {}
+void ParseNode::print( std::ostream &os, int indent ) const {}
 
 
@@ -78,6 +58,6 @@
 
 	if ( next ) {
-	next->printList( os, indent );
-	}
+		next->printList( os, indent );
+	} // if
 }
 
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Parser/ParseNode.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:28:16 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May 16 13:30:24 2015
-// Update Count     : 3
+// Last Modified On : Wed Jun 24 14:09:51 2015
+// Update Count     : 81
 //
 
@@ -22,5 +22,7 @@
 
 #include "utility.h"
-#include "SynTree/Declaration.h"
+#include "Parser/LinkageSpec.h"
+#include "SynTree/Type.h"
+//#include "SynTree/Declaration.h"
 #include "UniqueName.h"
 
@@ -36,15 +38,10 @@
 class ParseNode {
   public:
-	ParseNode( void );
-	ParseNode ( std::string );
-	virtual ~ParseNode( void );
-
-	ParseNode *set_name ( std::string ) ;
-	ParseNode *set_name ( std::string * ) ;
-
-	std::string get_name( void );
-
-	ParseNode *get_link( void ) const;
-	ParseNode *get_last( void );
+	ParseNode();
+	ParseNode( const std::string * );
+	virtual ~ParseNode();
+
+	ParseNode *get_link() const;
+	ParseNode *get_last();
 	ParseNode *set_link( ParseNode * );
 	void set_next( ParseNode *newlink ) { next = newlink; }
@@ -52,5 +49,5 @@
 	virtual ParseNode *clone() const { return 0; };
 
-	const std::string get_name( void ) const;
+	const std::string &get_name() const { return *name; }
 	virtual void print( std::ostream &, int indent = 0 ) const;
 	virtual void printList( std::ostream &, int indent = 0 ) const;
@@ -58,5 +55,5 @@
 	ParseNode &operator,( ParseNode &);
   protected:
-	std::string name;
+	const std::string *name;
 	ParseNode *next;
 	static int indent_by;
@@ -68,5 +65,5 @@
   public:
 	ExpressionNode();
-	ExpressionNode( std::string * );
+	ExpressionNode( const std::string * );
 	ExpressionNode( const ExpressionNode &other );
 	virtual ~ExpressionNode() {} // cannot delete asArgName because it might be referenced elsewhere
@@ -77,5 +74,5 @@
 
 	ExpressionNode *get_argName() const { return argName; }
-	ExpressionNode *set_asArgName( std::string *aName );
+	ExpressionNode *set_asArgName( const std::string *aName );
 	ExpressionNode *set_asArgName( ExpressionNode *aDesignator );
 
@@ -105,30 +102,21 @@
 class ConstantNode : public ExpressionNode {
   public:
-	enum Type {
-		Integer, Float, Character, String /* , Range, EnumConstant  */
-	};
-
-	ConstantNode( void );
-	ConstantNode( std::string * );
+	enum Type { Integer, Float, Character, String };
+
 	ConstantNode( Type, std::string * );
-	ConstantNode( const ConstantNode &other );
 
 	virtual ConstantNode *clone() const { return new ConstantNode( *this ); }
-
-	Type get_type( void ) const ;
+	Type get_type( void ) const { return type; }
 	virtual void print( std::ostream &, int indent = 0) const;
 	virtual void printOneLine( std::ostream &, int indent = 0) const;
 
-	std::string get_value() const { return value; }
-	ConstantNode *append( std::string *newValue );
+	const std::string &get_value() const { return value; }
+	ConstantNode *appendstr( const std::string *newValue );
 
 	Expression *build() const;
   private:
-	void classify( std::string &);
 	Type type;
-	std::string value;
-	bool sign;
-	short base;
-	int longs, size;
+	BasicType::Kind btype;
+	std::string &value;
 };
 
@@ -136,5 +124,5 @@
   public:
 	VarRefNode();
-	VarRefNode( std::string *, bool isLabel = false );
+	VarRefNode( const std::string *, bool isLabel = false );
 	VarRefNode( const VarRefNode &other );
 
@@ -143,6 +131,6 @@
 	virtual VarRefNode *clone() const { return new VarRefNode( *this ); }
 
-	virtual void print( std::ostream &, int indent = 0) const;
-	virtual void printOneLine( std::ostream &, int indent = 0) const;
+	virtual void print( std::ostream &, int indent = 0 ) const;
+	virtual void printOneLine( std::ostream &, int indent = 0 ) const;
   private:
 	bool isLabel;
@@ -183,6 +171,6 @@
 	virtual OperatorNode *clone() const { return new OperatorNode( *this ); }
 
-	Type get_type( void ) const;
-	std::string get_typename( void ) const;
+	Type get_type() const;
+	const char *get_typename() const;
 
 	virtual void print( std::ostream &, int indent = 0) const;
@@ -198,6 +186,6 @@
 class CompositeExprNode : public ExpressionNode {
   public:
-	CompositeExprNode( void );
-	CompositeExprNode( std::string * );
+	CompositeExprNode();
+	CompositeExprNode( const std::string * );
 	CompositeExprNode( ExpressionNode *f, ExpressionNode *args = 0 );
 	CompositeExprNode( ExpressionNode *f, ExpressionNode *arg1, ExpressionNode *arg2 );
@@ -278,14 +266,15 @@
   public:
 	enum Qualifier { Const, Restrict, Volatile, Lvalue, Atomic, Attribute };
-	enum StorageClass { Extern, Static, Auto, Register, Inline, Fortran };
+	enum StorageClass { Extern, Static, Auto, Register, Inline, Fortran, Noreturn, Threadlocal, NoStorageClass, };
 	enum BasicType { Char, Int, Float, Double, Void, Bool, Complex, Imaginary };
-	enum Modifier { Signed, Unsigned, Short, Long };
-	enum TyCon { Struct, Union, Context };
+	enum Modifier  { Signed, Unsigned, Short, Long };
+	enum Aggregate { Struct, Union, Context };
 	enum TypeClass { Type, Dtype, Ftype };
 
+	static const char *storageName[];  
 	static const char *qualifierName[];
 	static const char *basicTypeName[];
 	static const char *modifierName[];
-	static const char *tyConName[];
+	static const char *aggregateName[];
 	static const char *typeClassName[];
 
@@ -298,9 +287,9 @@
 	static DeclarationNode *newForall( DeclarationNode *);
 	static DeclarationNode *newFromTypedef( std::string *);
-	static DeclarationNode *newAggregate( TyCon kind, std::string *name, DeclarationNode *formals, ExpressionNode *actuals, DeclarationNode *fields );
+	static DeclarationNode *newAggregate( Aggregate kind, std::string *name, DeclarationNode *formals, ExpressionNode *actuals, DeclarationNode *fields );
 	static DeclarationNode *newEnum( std::string *name, DeclarationNode *constants );
 	static DeclarationNode *newEnumConstant( std::string *name, ExpressionNode *constant );
 	static DeclarationNode *newName( std::string *);
-	static DeclarationNode *newFromTypeGen( std::string*, ExpressionNode *params );
+	static DeclarationNode *newFromTypeGen( std::string *, ExpressionNode *params );
 	static DeclarationNode *newTypeParam( TypeClass, std::string *);
 	static DeclarationNode *newContext( std::string *name, DeclarationNode *params, DeclarationNode *asserts );
@@ -313,6 +302,6 @@
 	static DeclarationNode *newTuple( DeclarationNode *members );
 	static DeclarationNode *newTypeof( ExpressionNode *expr );
-	static DeclarationNode *newAttr( std::string*, ExpressionNode *expr );
-	static DeclarationNode *newAttr( std::string*, DeclarationNode *type );
+	static DeclarationNode *newAttr( std::string *, ExpressionNode *expr );
+	static DeclarationNode *newAttr( std::string *, DeclarationNode *type );
 
 	DeclarationNode *addQualifiers( DeclarationNode *);
@@ -340,5 +329,5 @@
 	DeclarationNode *cloneBaseType( DeclarationNode *newdecl );
 
-	DeclarationNode *appendList( DeclarationNode  *);
+	DeclarationNode *appendList( DeclarationNode * );
 
 	DeclarationNode *clone() const;
@@ -350,5 +339,5 @@
 
 	bool get_hasEllipsis() const;
-	std::string get_name() const { return name; }
+	const std::string &get_name() const { return name; }
 	LinkageSpec::Type get_linkage() const { return linkage; }
 	DeclarationNode *extractAggregate() const;
@@ -357,6 +346,6 @@
 	~DeclarationNode();
   private:
-	Declaration::StorageClass buildStorageClass() const;
-	bool buildInline() const;
+	StorageClass buildStorageClass() const;
+	bool buildFuncSpecifier( StorageClass key ) const;
 
 	TypeData *type;
@@ -380,6 +369,6 @@
 	};
 
-	StatementNode( void );
-	StatementNode( std::string );
+	StatementNode();
+	StatementNode( const std::string * );
 	StatementNode( Type, ExpressionNode *e = 0, StatementNode *s = 0 );
 	StatementNode( Type, std::string *target );
@@ -387,7 +376,7 @@
 
 
-	~StatementNode( void );
-
-	static StatementNode  *newCatchStmt( DeclarationNode *d = 0, StatementNode *s = 0, bool catchRestP = false );
+	~StatementNode();
+
+	static StatementNode *newCatchStmt( DeclarationNode *d = 0, StatementNode *s = 0, bool catchRestP = false );
 
 	void set_control( ExpressionNode * );
@@ -396,7 +385,7 @@
 	ExpressionNode *get_control() const ;
 	StatementNode *get_block() const;
-	StatementNode::Type get_type( void ) const;
-
-	StatementNode *add_label( std::string * );
+	StatementNode::Type get_type() const;
+
+	StatementNode *add_label( const std::string * );
 	std::list<std::string> *get_labels() const;
 
@@ -429,6 +418,6 @@
 class CompoundStmtNode : public StatementNode {
   public:
-	CompoundStmtNode( void );
-	CompoundStmtNode( std::string * );
+	CompoundStmtNode();
+	CompoundStmtNode( const std::string * );
 	CompoundStmtNode( StatementNode * );
 	~CompoundStmtNode();
@@ -499,7 +488,7 @@
 
 // in DeclarationNode.cc
-void buildList( const DeclarationNode *firstNode, std::list< Declaration *> &outputList );
+void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList );
 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType *> &outputList );
-void buildTypeList( const DeclarationNode *firstNode, std::list< Type *> &outputList );
+void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList );
 
 // in ExpressionNode.cc
Index: src/Parser/Parser.cc
===================================================================
--- src/Parser/Parser.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Parser/Parser.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 14:54:28 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May 16 14:55:59 2015
-// Update Count     : 2
+// Last Modified On : Sun May 31 23:45:19 2015
+// Update Count     : 4
 // 
 
@@ -17,5 +17,5 @@
 #include "TypedefTable.h"
 #include "lex.h"
-#include "cfa.tab.h"
+#include "parser.h"
 
 // global variables in cfa.y
Index: src/Parser/StatementNode.cc
===================================================================
--- src/Parser/StatementNode.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Parser/StatementNode.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 14:59:41 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May 16 15:10:45 2015
-// Update Count     : 7
+// Last Modified On : Sat Jun  6 23:25:41 2015
+// Update Count     : 19
 //
 
@@ -36,5 +36,5 @@
 StatementNode::StatementNode() : ParseNode(), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {}
 
-StatementNode::StatementNode( string name_) : ParseNode( name_), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {}
+StatementNode::StatementNode( const string *name_ ) : ParseNode( name_ ), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {}
 
 StatementNode::StatementNode( DeclarationNode *decl ) : type( Decl ), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), isCatchRest ( false ) {
@@ -49,13 +49,13 @@
 				next->set_next( new StatementNode( dynamic_cast< DeclarationNode* >( decl->get_link() ) ) );
 				decl->set_next( 0 );
-			}
+			} // if
 		} else {
 			if ( decl->get_link() ) {
 				next = new StatementNode( dynamic_cast< DeclarationNode* >( decl->get_link() ) );
 				decl->set_next( 0 );
-			}
+			} // if
 			this->decl = decl;
-		}
-	}
+		} // if
+	} // if
 }
 
@@ -67,5 +67,5 @@
 
 StatementNode::StatementNode( Type t, string *_target ) :
-		type( t ), control( 0 ), block( 0 ),   labels( 0 ), target(_target ), decl( 0 ), isCatchRest ( false ) {}
+		type( t ), control( 0 ), block( 0 ), labels( 0 ), target(_target ), decl( 0 ), isCatchRest ( false ) {}
 
 StatementNode::~StatementNode() {
@@ -98,5 +98,5 @@
 	} else {
 		newnode->target = 0;
-	}
+	} // if
 	newnode->decl = maybeClone( decl );
 	return newnode;
@@ -125,5 +125,5 @@
 }
 
-StatementNode *StatementNode::add_label( std::string *l ) {
+StatementNode *StatementNode::add_label( const std::string *l ) {
 	if ( l != 0 ) {
 		if ( labels == 0 )
@@ -132,5 +132,5 @@
 		labels->push_front(*l ); 
 		delete l;
-	}
+	} // if
 	return this;
 }
@@ -151,5 +151,5 @@
 		else
 			block->set_link( stmt );
-	}
+	} // if
 	return this;
 }
@@ -165,18 +165,19 @@
 			else
 				block->set_link( stmt );
-	}
+	} // if
 	return this;
 }
 
 void StatementNode::print( std::ostream &os, int indent ) const {
-	if ( labels != 0 )
+	if ( labels != 0 ) {
 		if ( ! labels->empty()) {
 			std::list<std::string>::const_iterator i;
 
-			os << '\r' << string( indent, ' ');
+			os << string( indent, ' ' );
 			for ( i = labels->begin(); i != labels->end(); i++ )
 				os << *i << ":";
 			os << endl;
-		}
+		} // if
+	} // if
 
 	switch ( type ) {
@@ -193,28 +194,28 @@
 		break;
 	  default:
-		os << '\r' << string( indent, ' ') << StatementNode::StType[type] << endl;
+		os << string( indent, ' ' ) << StatementNode::StType[type] << endl;
 		if ( type == Catch ) {
 			if ( decl ) {
-				os << '\r' << string( indent + ParseNode::indent_by, ' ' ) << "Declaration: " << endl;
+				os << string( indent + ParseNode::indent_by, ' ' ) << "Declaration: " << endl;
 				decl->print( os, indent + 2*ParseNode::indent_by );
 			} else if ( isCatchRest ) {
-				os << '\r' << string( indent + ParseNode::indent_by, ' ' ) << "Catches the rest " << endl;
+				os << string( indent + ParseNode::indent_by, ' ' ) << "Catches the rest " << endl;
 			} else {
 				; // should never reach here
-			}
-		}
+			} // if
+		} // if
 		if ( control ) {
-			os << '\r' << string( indent + ParseNode::indent_by, ' ' ) << "Expression: " << endl;
+			os << string( indent + ParseNode::indent_by, ' ' ) << "Expression: " << endl;
 			control->printList( os, indent + 2*ParseNode::indent_by );
-		}
+		} // if
 		if ( block ) {
-			os << '\r' << string( indent + ParseNode::indent_by, ' ' ) << "Branches of execution: " << endl;
+			os << string( indent + ParseNode::indent_by, ' ' ) << "Branches of execution: " << endl;
 			block->printList( os, indent + 2*ParseNode::indent_by );  
-		}
+		} // if
 		if ( target ) {
-			os << '\r' << string( indent + ParseNode::indent_by, ' ' ) << "Target: " << get_target() << endl;
-		}
+			os << string( indent + ParseNode::indent_by, ' ' ) << "Target: " << get_target() << endl;
+		} // if
 		break;
-	}
+	} // switch
 }
 
@@ -227,5 +228,5 @@
 		std::back_insert_iterator< std::list<Label> > lab_it( labs );
 		copy( labels->begin(), labels->end(), lab_it );
-	}
+	} // if
 
 	// try {
@@ -254,5 +255,5 @@
 				elseb = branches.front();
 				branches.pop_front();
-			}
+			} // if
 			return new IfStmt( labs, notZeroExpr( get_control()->build() ), thenb, elseb );
 		}
@@ -299,5 +300,5 @@
 				assert( get_control() != 0 );
 				return new BranchStmt( labs, get_control()->build(), BranchStmt::Goto );
-			}
+			} // if
 
 			return new BranchStmt( labs, get_target(), BranchStmt::Goto );
@@ -322,5 +323,5 @@
 			if ( ( finallyBlock = dynamic_cast<FinallyStmt *>( branches.back())) ) {
 				branches.pop_back();
-			}
+			} // if
 			return new TryStmt( labs, tryBlock, branches, finallyBlock );
 		}
@@ -342,19 +343,17 @@
 		// shouldn't be here
 		return 0;
-	}
-}
-
-CompoundStmtNode::CompoundStmtNode() : first( 0 ), last( 0 ) {
-}
-
-CompoundStmtNode::CompoundStmtNode( string *name_) : StatementNode(*name_), first( 0 ), last( 0 ) {
-}
-
-CompoundStmtNode::CompoundStmtNode( StatementNode *stmt ): first( stmt ) {
+	} // switch
+}
+
+CompoundStmtNode::CompoundStmtNode() : first( 0 ), last( 0 ) {}
+
+CompoundStmtNode::CompoundStmtNode( const string *name_ ) : StatementNode( name_ ), first( 0 ), last( 0 ) {}
+
+CompoundStmtNode::CompoundStmtNode( StatementNode *stmt ) : first( stmt ) {
 	if ( first ) {
 		last = ( StatementNode *)( stmt->get_last());
 	} else {
 		last = 0;
-	}
+	} // if
 }
 
@@ -367,5 +366,5 @@
 		last->set_link( stmt );
 		last = ( StatementNode *)( stmt->get_link());
-	}
+	} // if
 }
 
@@ -373,5 +372,5 @@
 	if ( first ) {
 		first->printList( os, indent+2 );
-	}
+	} // if
 }
 
@@ -383,5 +382,5 @@
 		std::back_insert_iterator< std::list<Label> > lab_it( labs );
 		copy( labels->begin(), labels->end(), lab_it );
-	}
+	} // if
 
 	CompoundStmt *cs = new CompoundStmt( labs );
@@ -391,5 +390,5 @@
 
 void NullStmtNode::print( ostream &os, int indent ) const {
-	os << "\r" << string( indent, ' ') << "Null Statement:" << endl;
+	os << string( indent, ' ' ) << "Null Statement:" << endl;
 }
 
Index: src/Parser/TypeData.cc
===================================================================
--- src/Parser/TypeData.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Parser/TypeData.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:12:51 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May 16 15:17:56 2015
-// Update Count     : 4
+// Last Modified On : Thu Jun 18 22:06:23 2015
+// Update Count     : 21
 //
 
@@ -89,5 +89,5 @@
 		attr->type = 0;
 		break;
-	}
+	} // switch
 }
 
@@ -155,5 +155,5 @@
 		delete attr;
 		break;
-	}
+	} // switch
 }
 
@@ -225,5 +225,5 @@
 		newtype->attr->type = maybeClone( attr->type );
 		break;
-	}
+	} // switch
 	return newtype;
 }
@@ -238,5 +238,5 @@
 		os << "forall " << endl;
 		forall->printList( os, indent+4 );
-	}
+	} // if
 
 	switch ( kind ) {
@@ -249,5 +249,5 @@
 			os << "to ";
 			base->print( os, indent );
-		}
+		} // if
 		break;
 	  case EnumConstant:
@@ -261,5 +261,5 @@
 		if ( array->isStatic ) {
 			os << "static ";
-		}
+		} // if
 		if ( array->dimension ) {
 			os << "array of ";
@@ -269,8 +269,8 @@
 		} else {
 			os << "open array of ";
-		}
+		} // if
 		if ( base ) {
 			base->print( os, indent );
-		}
+		} // if
 		break;
 	  case Function:
@@ -281,13 +281,13 @@
 		} else {
 			os << string( indent+2, ' ' ) << "with no parameters " << endl;
-		}
+		} // if
 		if ( function->idList ) {
 			os << string( indent+2, ' ' ) << "with old-style identifier list " << endl;
 			function->idList->printList( os, indent+4 );
-		}
+		} // if
 		if ( function->oldDeclList ) {
 			os << string( indent+2, ' ' ) << "with old-style declaration list " << endl;
 			function->oldDeclList->printList( os, indent+4 );
-		}
+		} // if
 		os << string( indent+2, ' ' ) << "returning ";
 		if ( base ) {
@@ -295,23 +295,23 @@
 		} else {
 			os << "nothing ";
-		}
+		} // if
 		os << endl;
 		if ( function->hasBody ) {
 			os << string( indent+2, ' ' ) << "with body " << endl;
-		}
+		} // if
 		if ( function->body ) {
 			function->body->printList( os, indent+2 );
-		}
+		} // if
 		break;
 	  case Aggregate:
-		os << DeclarationNode::tyConName[ aggregate->kind ] << ' ' << aggregate->name << endl;
+		os << DeclarationNode::aggregateName[ aggregate->kind ] << ' ' << aggregate->name << endl;
 		if ( aggregate->params ) {
 			os << string( indent+2, ' ' ) << "with type parameters " << endl;
 			aggregate->params->printList( os, indent+4 );
-		}
+		} // if
 		if ( aggregate->actuals ) {
 			os << string( indent+2, ' ' ) << "instantiated with actual parameters " << endl;
 			aggregate->actuals->printList( os, indent+4 );
-		}
+		} // if
 		if ( aggregate->members ) {
 			os << string( indent+2, ' ' ) << "with members " << endl;
@@ -319,5 +319,5 @@
 ///     } else {
 ///       os << string( indent+2, ' ' ) << "with no members " << endl;
-		}
+		} // if
 		break;
 	  case AggregateInst:
@@ -327,9 +327,9 @@
 		} else {
 			os << "instance of an unspecified aggregate ";
-		}
+		} // if
 		if ( aggInst->params ) {
 			os << string( indent+2, ' ' ) << "with parameters " << endl;
 			aggInst->params->printList( os, indent+2 );
-		}
+		} // if
 		break;
 	  case Enum:
@@ -338,5 +338,5 @@
 			os << "with constants" << endl;
 			enumeration->constants->printList( os, indent+2 );
-		}
+		} // if
 		break;
 	  case SymbolicInst:
@@ -345,5 +345,5 @@
 			os << " with parameters" << endl;
 			symbolic->actuals->printList( os, indent + 2 );
-		}
+		} // if
 		break;
 	  case Symbolic:
@@ -352,18 +352,18 @@
 		} else {
 			os << "type definition ";
-		}
+		} // if
 		if ( symbolic->params ) {
 			os << endl << string( indent+2, ' ' ) << "with parameters" << endl;
 			symbolic->params->printList( os, indent + 2 );
-		}
+		} // if
 		if ( symbolic->assertions ) {
 			os << endl << string( indent+2, ' ' ) << "with assertions" << endl;
 			symbolic->assertions->printList( os, indent + 4 );
 			os << string( indent+2, ' ' );
-		}
+		} // if
 		if ( base ) {
 			os << "for ";
 			base->print( os, indent + 2 );
-		}
+		} // if
 		break;
 	  case Variable:
@@ -373,5 +373,5 @@
 			variable->assertions->printList( os, indent + 4 );
 			os << string( indent+2, ' ' );
-		}
+		} // if
 		break;
 	  case Tuple:
@@ -380,5 +380,5 @@
 			os << "with members " << endl;
 			tuple->members->printList( os, indent + 2 );
-		}
+		} // if
 		break;
 	  case Typeof:
@@ -386,5 +386,5 @@
 		if ( typeexpr->expr ) {
 			typeexpr->expr->print( os, indent + 2 );
-		}
+		} // if
 		break;
 	  case Attr:
@@ -392,10 +392,10 @@
 		if ( attr->expr ) {
 			attr->expr->print( os, indent + 2 );
-		}
+		} // if
 		if ( attr->type ) {
 			attr->type->print( os, indent + 2 );
-		}
-		break;
-	}
+		} // if
+		break;
+	} // switch
 }
 
@@ -408,5 +408,5 @@
 			ret = clone();
 			ret->qualifiers.clear();
-		}
+		} // if
 		break;
 	  case Enum:
@@ -414,16 +414,16 @@
 			ret = clone();
 			ret->qualifiers.clear();
-		}
+		} // if
 		break;
 	  case AggregateInst:
 		if ( aggInst->aggregate ) {
 			ret = aggInst->aggregate->extractAggregate( false );
-		}
+		} // if
 		break;
 	  default:
 		if ( base ) {
 			ret = base->extractAggregate( false );
-		}
-	}
+		} // if
+	} // switch
 	return ret;
 }
@@ -434,13 +434,13 @@
 		if ( (*i)->get_kind() == TypeDecl::Any ) {
 			FunctionType *assignType = new FunctionType( Type::Qualifiers(), false );
-			assignType->get_parameters().push_back( new ObjectDecl( "", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ) ), 0 ) );
-			assignType->get_parameters().push_back( new ObjectDecl( "", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ), 0 ) );
-			assignType->get_returnVals().push_back( new ObjectDecl( "", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ), 0 ) );
-			(*i)->get_assertions().push_front( new FunctionDecl( "?=?", Declaration::NoStorageClass, LinkageSpec::Cforall, assignType, 0, false ) );
-		}
-	}
-}
-
-Declaration *TypeData::buildDecl( std::string name, Declaration::StorageClass sc, Expression *bitfieldWidth, bool isInline, LinkageSpec::Type linkage, Initializer *init ) const {
+			assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ) ), 0 ) );
+			assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ), 0 ) );
+			assignType->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ), 0 ) );
+			(*i)->get_assertions().push_front( new FunctionDecl( "?=?", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, assignType, 0, false, false ) );
+		} // if
+	} // for
+}
+
+Declaration *TypeData::buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Type linkage, Initializer *init ) const {
 	if ( kind == TypeData::Function ) {
 		FunctionDecl *decl;
@@ -450,17 +450,17 @@
 				CompoundStmt *body = dynamic_cast< CompoundStmt* >( stmt );
 				assert( body );
-				decl = new FunctionDecl( name, sc, linkage, buildFunction(), body, isInline );
+				decl = new FunctionDecl( name, sc, linkage, buildFunction(), body, isInline, isNoreturn );
 			} else {
 				// std::list<Label> ls;
-				decl = new FunctionDecl( name, sc, linkage, buildFunction(), new CompoundStmt( std::list<Label>() ), isInline );
-			}
+				decl = new FunctionDecl( name, sc, linkage, buildFunction(), new CompoundStmt( std::list<Label>() ), isInline, isNoreturn );
+			} // if
 		} else {
-			decl = new FunctionDecl( name, sc, linkage, buildFunction(), 0, isInline );
-		}
+			decl = new FunctionDecl( name, sc, linkage, buildFunction(), 0, isInline, isNoreturn );
+		} // if
 		for ( DeclarationNode *cur = function->idList; cur != 0; cur = dynamic_cast< DeclarationNode* >( cur->get_link() ) ) {
 			if ( cur->get_name() != "" ) {
 				decl->get_oldIdents().insert( decl->get_oldIdents().end(), cur->get_name() );
-			}
-		}
+			} // if
+		} // for
 		buildList( function->oldDeclList, decl->get_oldDecls() );
 		return decl;
@@ -474,10 +474,10 @@
 		return buildVariable();
 	} else {
-		if ( isInline ) {
-			throw SemanticError( "invalid inline specification in declaration of ", this );
+		if ( isInline || isNoreturn ) {
+			throw SemanticError( "invalid inline or _Noreturn specification in declaration of ", this );
 		} else {
 			return new ObjectDecl( name, sc, linkage, bitfieldWidth, build(), init );
-		}
-	}
+		} // if
+	} // if
 	return 0;
 }
@@ -514,5 +514,5 @@
 	  case Variable:
 		assert( false );
-	}
+	} // switch
 
 	return 0;
@@ -541,6 +541,6 @@
 			q.isAttribute = true;
 			break;
-		}
-	}
+		} // switch
+	} // for
 	return q;
 }
@@ -563,8 +563,8 @@
 				} else {
 					return new VoidType( buildQualifiers() );
-				}
+				} // if
 			} else {
 				ret = kindMap[ *i ];
-			}
+			} // if
 		} else {
 			switch ( *i ) {
@@ -582,6 +582,6 @@
 					  default:
 						throw SemanticError( "invalid type specifier \"float\" in type: ", this );
-					}
-				}
+					} // switch
+				} // if
 				break;
 			  case DeclarationNode::Double:
@@ -595,8 +595,7 @@
 					  default:
 						throw SemanticError( "invalid type specifier \"double\" in type: ", this );
-					}
-				}
+					} // switch
+				} // if
 				break;
-	
 			  case DeclarationNode::Complex:
 				switch ( ret ) {
@@ -609,5 +608,5 @@
 				  default:
 					throw SemanticError( "invalid type specifier \"_Complex\" in type: ", this );
-				}
+				} // switch
 				break;
 			  case DeclarationNode::Imaginary:
@@ -621,14 +620,14 @@
 				  default:
 					throw SemanticError( "invalid type specifier \"_Imaginary\" in type: ", this );
-				}
+				} // switch
 				break;
 			  default:
 				throw SemanticError( std::string( "invalid type specifier \"" ) + DeclarationNode::basicTypeName[ *i ] + "\" in type: ", this );
-			}
-		}
+			} // switch
+		} // if
 		if ( *i == DeclarationNode::Double ) {
 			sawDouble = true;
-		}
-	}
+		} // if
+	} // for
 
 	for ( std::list< DeclarationNode::Modifier >::const_iterator i = basic->modifiers.begin(); i != basic->modifiers.end(); ++i ) {
@@ -663,6 +662,6 @@
 				  default:
 					throw SemanticError( "invalid type modifier \"long\" in type: ", this );
-				}
-			}
+				} // switch
+			} // if
 			break;
 		  case DeclarationNode::Short:
@@ -680,6 +679,6 @@
 				  default:
 					throw SemanticError( "invalid type modifier \"short\" in type: ", this );
-				}
-			}
+				} // switch
+			} // if
 			break;
 		  case DeclarationNode::Signed:
@@ -691,5 +690,5 @@
 			} else {
 				switch ( ret ) {
-				  case BasicType::LongLongSignedInt:	// PAB
+				  case BasicType::LongLongSignedInt:
 					ret = BasicType::LongLongUnsignedInt;
 					break;
@@ -705,6 +704,6 @@
 				  default:
 					throw SemanticError( "invalid type modifer \"signed\" in type: ", this );
-				}
-			}
+				} // switch
+			} // if
 			break;
 		  case DeclarationNode::Unsigned:
@@ -716,5 +715,5 @@
 			} else {
 				switch ( ret ) {
-				  case BasicType::LongLongSignedInt:	// PAB
+				  case BasicType::LongLongSignedInt:
 					ret = BasicType::LongLongUnsignedInt;
 					break;
@@ -733,13 +732,13 @@
 				  default:
 					throw SemanticError( "invalid type modifer \"unsigned\" in type: ", this );
-				}
-			}
-			break;
-		}
+				} // switch
+			} // if
+			break;
+		} // switch
 
 		if ( *i == DeclarationNode::Signed ) {
 			sawSigned = true;
-		}
-	}
+		} // if
+	} // for
 
 	BasicType *bt;
@@ -748,5 +747,5 @@
 	} else {
 		bt = new BasicType( buildQualifiers(), ret );
-	}
+	} // if
 	buildForall( forall, bt->get_forall() );
 	return bt;
@@ -760,5 +759,5 @@
 	} else {
 		pt = new PointerType( buildQualifiers(), new BasicType( Type::Qualifiers(), BasicType::SignedInt ) );
-	}
+	} // if
 	buildForall( forall, pt->get_forall() );
 	return pt;
@@ -773,5 +772,5 @@
 		at = new ArrayType( buildQualifiers(), new BasicType( Type::Qualifiers(), BasicType::SignedInt ),
 							maybeBuild< Expression >( array->dimension ), array->isVarLen, array->isStatic );
-	}
+	} // if
 	buildForall( forall, at->get_forall() );
 	return at;
@@ -791,9 +790,9 @@
 			break;
 		  default:
-			ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( base->buildDecl( "", Declaration::NoStorageClass, 0, false, LinkageSpec::Cforall ) ) );
-		}
+			ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( base->buildDecl( "", DeclarationNode::NoStorageClass, 0, false, false, LinkageSpec::Cforall ) ) );
+		} // switch
 	} else {
-		ft->get_returnVals().push_back( new ObjectDecl( "", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), 0 ) );
-	}
+		ft->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), 0 ) );
+	} // if
 	return ft;
 }
@@ -806,16 +805,13 @@
 		at = new StructDecl( aggregate->name );
 		break;
-	
 	  case DeclarationNode::Union:
 		at = new UnionDecl( aggregate->name );
 		break;
-	
 	  case DeclarationNode::Context:
 		at = new ContextDecl( aggregate->name );
 		break;
-	
 	  default:
 		assert( false );
-	}
+	} // switch
 	buildList( aggregate->params, at->get_parameters() );
 	buildList( aggregate->members, at->get_members() );
@@ -838,5 +834,4 @@
 ReferenceToType *TypeData::buildAggInst() const {
 	assert( kind == AggregateInst );
-	std::string name;
 
 	ReferenceToType *ret;
@@ -857,6 +852,6 @@
 		  default:
 			assert( false );
-		}
-	}
+		} // switch
+	} // if
 	buildList( aggInst->params, ret->get_parameters() );
 	buildForall( forall, ret->get_forall() );
@@ -864,5 +859,5 @@
 }
 
-NamedTypeDecl *TypeData::buildSymbolic( const std::string &name, Declaration::StorageClass sc ) const {
+NamedTypeDecl *TypeData::buildSymbolic( const std::string &name, DeclarationNode::StorageClass sc ) const {
 	assert( kind == Symbolic );
 	NamedTypeDecl *ret;
@@ -871,5 +866,5 @@
 	} else {
 		ret = new TypeDecl( name, sc, maybeBuild< Type >( base ), TypeDecl::Any );
-	}
+	} // if
 	buildList( symbolic->params, ret->get_parameters() );
 	buildList( symbolic->assertions, ret->get_assertions() );
@@ -881,7 +876,6 @@
 	static const TypeDecl::Kind kindMap[] = { TypeDecl::Any, TypeDecl::Ftype, TypeDecl::Dtype };
 
-	TypeDecl *ret = new TypeDecl( variable->name, Declaration::NoStorageClass, 0, kindMap[ variable->tyClass ] );
+	TypeDecl *ret = new TypeDecl( variable->name, DeclarationNode::NoStorageClass, 0, kindMap[ variable->tyClass ] );
 	buildList( variable->assertions, ret->get_assertions() );
-	
 	return ret;
 }
@@ -891,5 +885,4 @@
 	EnumDecl *ret = new EnumDecl( enumeration->name );
 	buildList( enumeration->constants, ret->get_members() );
-
 	return ret;
 }
@@ -900,5 +893,4 @@
 	buildList( symbolic->actuals, ret->get_parameters() );
 	buildForall( forall, ret->get_forall() );
-
 	return ret;
 }
@@ -909,5 +901,4 @@
 	buildTypeList( tuple->members, ret->get_types() );
 	buildForall( forall, ret->get_forall() );
-
 	return ret;
 }
@@ -918,5 +909,4 @@
 	assert( typeexpr->expr );
 	TypeofType *ret = new TypeofType( buildQualifiers(), typeexpr->expr->build() );
-
 	return ret;
 }
@@ -931,6 +921,5 @@
 		assert( attr->type );
 		ret = new AttrType( buildQualifiers(), attr->name, attr->type->buildType() );
-	}
-
+	} // if
 	return ret;
 }
Index: src/Parser/TypeData.h
===================================================================
--- src/Parser/TypeData.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Parser/TypeData.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:18:36 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May 16 15:20:00 2015
-// Update Count     : 2
+// Last Modified On : Thu Jun 18 21:03:18 2015
+// Update Count     : 7
 //
 
@@ -44,5 +44,5 @@
 
 	struct Aggregate_t {
-		DeclarationNode::TyCon kind;
+		DeclarationNode::Aggregate kind;
 		std::string name;
 		DeclarationNode *params;
@@ -120,13 +120,13 @@
 	TypeData *extractAggregate( bool toplevel = true ) const;
 	// helper function for DeclNodeImpl::build
-	Declaration * buildDecl( std::string name, Declaration::StorageClass sc, Expression *bitfieldWidth, bool isInline, LinkageSpec::Type linkage, Initializer *init = 0 ) const;
+	Declaration * buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Type linkage, Initializer *init = 0 ) const;
 	// helper functions for build()
 	Type::Qualifiers buildQualifiers() const;
-	Type *buildBasicType() const;
+	Type * buildBasicType() const;
 	PointerType * buildPointer() const;
 	ArrayType * buildArray() const;
 	AggregateDecl * buildAggregate() const;
 	ReferenceToType * buildAggInst() const;
-	NamedTypeDecl * buildSymbolic( const std::string &name, Declaration::StorageClass sc ) const;
+	NamedTypeDecl * buildSymbolic( const std::string &name, DeclarationNode::StorageClass sc ) const;
 	TypeDecl* buildVariable() const;
 	EnumDecl* buildEnum() const;
Index: src/Parser/TypedefTable.cc
===================================================================
--- src/Parser/TypedefTable.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Parser/TypedefTable.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:20:13 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May 16 15:24:03 2015
-// Update Count     : 2
+// Last Modified On : Sun Jun 21 11:46:15 2015
+// Update Count     : 7
 //
 
@@ -29,22 +29,22 @@
 TypedefTable::TypedefTable() : currentScope( 0 ) {}
 
-bool TypedefTable::isKind( string identifier, kind_t kind ) const {
+bool TypedefTable::isKind( const string &identifier, kind_t kind ) const {
 	tableType::const_iterator id_pos = table.find( identifier );
-	if ( id_pos == table.end()) {
+	if ( id_pos == table.end() ) {
 		return true;
 	} else {
 		return (*((*id_pos ).second.begin())).kind == kind;
-	}
+	} // if
 }
 
-bool TypedefTable::isIdentifier( string identifier ) const {
+bool TypedefTable::isIdentifier( const string &identifier ) const {
 	return isKind( identifier, ID );
 }
 
-bool TypedefTable::isTypedef( string identifier ) const {
+bool TypedefTable::isTypedef( const string &identifier ) const {
 	return isKind( identifier, TD );
 }
 
-bool TypedefTable::isTypegen( string identifier ) const {
+bool TypedefTable::isTypegen( const string &identifier ) const {
 	return isKind( identifier, TG );
 }
@@ -66,8 +66,8 @@
 			while ( listPos != (*curPos ).second.end() && listPos->scope > scope ) {
 				listPos++;
-			}
+			} // while
 			(*curPos ).second.insert( listPos, newEntry );
-		}
-	}
+		} // if
+	} // if
 }
 
@@ -102,5 +102,5 @@
 }
 
-void TypedefTable::openContext( std::string contextName ) {
+void TypedefTable::openContext( const std::string &contextName ) {
 	map< string, deferListType >::iterator i = contexts.find( contextName );
 	if ( i != contexts.end() ) {
@@ -108,9 +108,9 @@
 		for ( deferListType::iterator i = entries.begin(); i != entries.end(); i++) {
 			addToEnclosingScope( i->identifier, i->kind );
-		}
-	}
+		} // for
+	} // if
 }
 
-void TypedefTable::enterScope( void ) {
+void TypedefTable::enterScope() {
 	currentScope += 1;
 	deferListStack.push( deferListType() );
@@ -119,5 +119,5 @@
 }
 
-void TypedefTable::leaveScope( void ) {
+void TypedefTable::leaveScope() {
 	debugPrint( "Leaving scope " << currentScope << endl );
 	for ( tableType::iterator i = table.begin(); i != table.end(); ) {
@@ -129,9 +129,9 @@
 			table.erase( i++ );
 		} else ++i;
-	}
+	} // for
 	currentScope -= 1;
 	for ( deferListType::iterator i = deferListStack.top().begin(); i != deferListStack.top().end(); i++) {
 		addToCurrentScope( i->identifier, i->kind );
-	}
+	} // for
 	deferListStack.pop();
 	debugPrint( "nextIdentifiers size is " << nextIdentifiers.size() << " top is " << nextIdentifiers.top() << endl );
@@ -139,10 +139,10 @@
 }
 
-void TypedefTable::enterContext( std::string contextName ) {
+void TypedefTable::enterContext( const std::string &contextName ) {
 	currentContext = contextName;
 	contextScope = currentScope;
 }
 
-void TypedefTable::leaveContext( void ) {
+void TypedefTable::leaveContext() {
 	currentContext = "";
 }
@@ -156,5 +156,5 @@
 		}
 		debugPrint( endl );
-	}
+	} // for
 }
 
Index: src/Parser/TypedefTable.h
===================================================================
--- src/Parser/TypedefTable.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Parser/TypedefTable.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:24:36 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May 16 15:25:59 2015
-// Update Count     : 3
+// Last Modified On : Thu Jun 18 21:03:17 2015
+// Update Count     : 7
 //
 
@@ -49,14 +49,14 @@
 	std::stack< std::string > nextIdentifiers;
 
-	bool isKind( std::string identifier, kind_t kind ) const;
+	bool isKind( const std::string &identifier, kind_t kind ) const;
 	void addToScope( const std::string &identifier, kind_t kind, int scope );
   public:
 	TypedefTable();
 
-	bool isIdentifier( std::string identifier ) const;
-	bool isTypedef( std::string identifier ) const;
-	bool isTypegen( std::string identifier ) const;
+	bool isIdentifier( const std::string &identifier ) const;
+	bool isTypedef( const std::string &identifier ) const;
+	bool isTypegen( const std::string &identifier ) const;
 	
-	// "addToCurrentScope" adds the identifier/type pair to the current scope This does less than you think it does,
+	// "addToCurrentScope" adds the identifier/type pair to the current scope. This does less than you think it does,
 	// since each declaration is within its own scope.  Mostly useful for type parameters.
 	void addToCurrentScope( const std::string &identifier, kind_t kind );
@@ -77,9 +77,9 @@
 	
 	// dump the definitions from a pre-defined context into the current scope
-	void openContext( std::string contextName );
+	void openContext( const std::string &contextName );
 	
 	void enterScope();
 	void leaveScope();
-	void enterContext( std::string contextName );
+	void enterContext( const std::string &contextName );
 	void leaveContext();
 
Index: c/Parser/cfa.y
===================================================================
--- src/Parser/cfa.y	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,2735 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// cfa.y -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Sat Sep  1 20:22:55 2001
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May 16 11:55:39 2015
-// Update Count     : 975
-// 
-
-// This grammar is based on the ANSI99/11 C grammar, specifically parts of EXPRESSION and STATEMENTS, and on
-// the C grammar by James A. Roskind, specifically parts of DECLARATIONS and EXTERNAL DEFINITIONS.  While
-// parts have been copied, important changes have been made in all sections; these changes are sufficient to
-// constitute a new grammar.  In particular, this grammar attempts to be more syntactically precise, i.e., it
-// parses less incorrect language syntax that must be subsequently rejected by semantic checks.  Nevertheless,
-// there are still several semantic checks required and many are noted in the grammar. Finally, the grammar is
-// extended with GCC and CFA language extensions.
-
-// Acknowledgments to Richard Bilson, Glen Ditchfield, and Rodolfo Gabriel Esteves who all helped when I got
-// stuck with the grammar.
-
-// The root language for this grammar is ANSI99/11 C. All of ANSI99/11 is parsed, except for:
-//
-// 1. designation with '=' (use ':' instead)
-//
-// Most of the syntactic extensions from ANSI90 to ANSI11 C are marked with the comment "C99/C11". This
-// grammar also has two levels of extensions. The first extensions cover most of the GCC C extensions, except for:
-//
-// 1. nested functions
-// 2. generalized lvalues
-// 3. designation with and without '=' (use ':' instead)
-// 4. attributes not allowed in parenthesis of declarator
-//
-// All of the syntactic extensions for GCC C are marked with the comment "GCC". The second extensions are for
-// Cforall (CFA), which fixes several of C's outstanding problems and extends C with many modern language
-// concepts. All of the syntactic extensions for CFA C are marked with the comment "CFA". As noted above,
-// there is one unreconcileable parsing problem between C99 and CFA with respect to designators; this is
-// discussed in detail before the "designation" grammar rule.
-
-%{
-#define YYDEBUG_LEXER_TEXT (yylval)						// lexer loads this up each time
-#define YYDEBUG 1										// get the pretty debugging code to compile
-
-#undef __GNUC_MINOR__
-
-#include <cstdio>
-#include <stack>
-#include "TypedefTable.h"
-#include "lex.h"
-#include "ParseNode.h"
-#include "LinkageSpec.h"
-
-DeclarationNode *theTree = 0;							// the resulting parse tree
-LinkageSpec::Type linkage = LinkageSpec::Cforall;
-std::stack< LinkageSpec::Type > linkageStack;
-TypedefTable typedefTable;
-%}
-
-//************************* TERMINAL TOKENS ********************************
-
-// keywords
-%token TYPEDEF
-%token AUTO EXTERN REGISTER STATIC
-%token INLINE											// C99
-%token FORTRAN											// C99, extension ISO/IEC 9899:1999 Section J.5.9(1)
-%token CONST VOLATILE
-%token RESTRICT											// C99
-%token FORALL LVALUE									// CFA
-%token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED
-%token BOOL COMPLEX IMAGINARY							// C99
-%token TYPEOF LABEL										// GCC
-%token ENUM STRUCT UNION
-%token TYPE FTYPE DTYPE CONTEXT							// CFA
-%token SIZEOF
-%token ATTRIBUTE EXTENSION								// GCC
-%token IF ELSE SWITCH CASE DEFAULT DO WHILE FOR BREAK CONTINUE GOTO RETURN
-%token CHOOSE FALLTHRU TRY CATCH FINALLY THROW			// CFA
-%token ASM												// C99, extension ISO/IEC 9899:1999 Section J.5.10(1)
-%token ALIGNAS ALIGNOF ATOMIC GENERIC NORETURN STATICASSERT THREADLOCAL // C11
-
-// names and constants: lexer differentiates between identifier and typedef names
-%token<tok> IDENTIFIER			QUOTED_IDENTIFIER		TYPEDEFname				TYPEGENname
-%token<tok> ATTR_IDENTIFIER		ATTR_TYPEDEFname		ATTR_TYPEGENname
-%token<tok> INTEGERconstant		FLOATINGconstant		CHARACTERconstant		STRINGliteral
-%token<tok> ZERO				ONE						// CFA
-
-// multi-character operators
-%token ARROW											// ->
-%token ICR DECR											// ++	--
-%token LS RS											// <<	>>
-%token LE GE EQ NE										// <=	>=	==	!=
-%token ANDAND OROR										// &&	||
-%token ELLIPSIS											// ...
-
-%token MULTassign	DIVassign	MODassign				// *=	/=	%=/
-%token PLUSassign	MINUSassign							// +=	-=
-%token LSassign		RSassign							// <<=	>>=
-%token ANDassign	ERassign	ORassign				// &=	^=	|=
-
-// Types declaration
-%union
-{
-	Token tok;
-	ParseNode *pn;
-	ExpressionNode *en;
-	DeclarationNode *decl;
-	DeclarationNode::TyCon aggKey;
-	DeclarationNode::TypeClass tclass;
-	StatementNode *sn;
-	ConstantNode *constant;
-	InitializerNode *in;
-}
-
-%type<tok> zero_one  identifier  no_attr_identifier  no_01_identifier
-%type<tok> identifier_or_typedef_name  no_attr_identifier_or_typedef_name  no_01_identifier_or_typedef_name
-%type<constant> string_literal_list
-
-// expressions
-%type<constant> constant
-%type<en> tuple							tuple_expression_list
-%type<en> unary_operator				assignment_operator
-%type<en> primary_expression			postfix_expression			unary_expression
-%type<en> cast_expression				multiplicative_expression	additive_expression			shift_expression
-%type<en> relational_expression			equality_expression			AND_expression				exclusive_OR_expression
-%type<en> inclusive_OR_expression		logical_AND_expression		logical_OR_expression		conditional_expression
-%type<en> constant_expression			assignment_expression		assignment_expression_opt
-%type<en> comma_expression				comma_expression_opt
-%type<en> argument_expression_list		argument_expression			for_control_expression		assignment_opt
-%type<en> subrange
-
-// statements
-%type<sn> labeled_statement				compound_statement			expression_statement		selection_statement
-%type<sn> iteration_statement			jump_statement				exception_statement			asm_statement
-%type<sn> fall_through_opt				fall_through
-%type<sn> statement						statement_list
-%type<sn> block_item_list				block_item
-%type<sn> case_clause
-%type<en> case_value					case_value_list
-%type<sn> case_label					case_label_list
-%type<sn> switch_clause_list_opt		switch_clause_list			choose_clause_list_opt		choose_clause_list
-%type<pn> handler_list					handler_clause				finally_clause
-
-// declarations
-%type<decl> abstract_array abstract_declarator abstract_function abstract_parameter_array
-%type<decl> abstract_parameter_declaration abstract_parameter_declarator abstract_parameter_function
-%type<decl> abstract_parameter_ptr abstract_ptr
-
-%type<aggKey> aggregate_key
-%type<decl>  aggregate_name
-
-%type<decl> array_dimension array_parameter_1st_dimension array_parameter_dimension multi_array_dimension
-
-%type<decl> assertion assertion_list_opt
-
-%type<en>   bit_subrange_size_opt bit_subrange_size
-
-%type<decl> basic_declaration_specifier basic_type_name basic_type_specifier direct_type_name indirect_type_name
-
-%type<decl> context_declaration context_declaration_list context_declaring_list context_specifier
-
-%type<decl> declaration declaration_list declaration_list_opt declaration_qualifier_list
-%type<decl> declaration_specifier declarator declaring_list
-
-%type<decl> elaborated_type_name
-
-%type<decl> enumerator_list enum_name
-%type<en> enumerator_value_opt
-
-%type<decl> exception_declaration external_definition external_definition_list external_definition_list_opt
-
-%type<decl> field_declaration field_declaration_list field_declarator field_declaring_list
-%type<en> field field_list
-
-%type<decl> function_array function_declarator function_definition function_no_ptr function_ptr
-
-%type<decl> identifier_parameter_array identifier_parameter_declarator identifier_parameter_function
-%type<decl> identifier_parameter_ptr identifier_list
-
-%type<decl> new_abstract_array new_abstract_declarator_no_tuple new_abstract_declarator_tuple
-%type<decl> new_abstract_function new_abstract_parameter_declaration new_abstract_parameter_list
-%type<decl> new_abstract_ptr new_abstract_tuple
-
-%type<decl> new_array_parameter_1st_dimension
-
-%type<decl> new_context_declaring_list new_declaration new_field_declaring_list
-%type<decl> new_function_declaration new_function_return new_function_specifier
-
-%type<decl> new_identifier_parameter_array new_identifier_parameter_declarator_no_tuple
-%type<decl> new_identifier_parameter_declarator_tuple new_identifier_parameter_ptr
-
-%type<decl> new_parameter_declaration new_parameter_list new_parameter_type_list new_parameter_type_list_opt
-
-%type<decl> new_typedef_declaration new_variable_declaration new_variable_specifier
-
-%type<decl> old_declaration old_declaration_list old_declaration_list_opt old_function_array
-%type<decl> old_function_declarator old_function_no_ptr old_function_ptr
-
-%type<decl> parameter_declaration parameter_list parameter_type_list
-%type<decl> parameter_type_list_opt
-
-%type<decl> paren_identifier paren_typedef
-
-%type<decl> storage_class storage_class_name storage_class_list
-
-%type<decl> sue_declaration_specifier sue_type_specifier
-
-%type<tclass> type_class
-%type<decl> type_declarator type_declarator_name type_declaring_list
-
-%type<decl> typedef typedef_array typedef_declaration typedef_declaration_specifier typedef_expression
-%type<decl> typedef_function typedef_parameter_array typedef_parameter_function typedef_parameter_ptr
-%type<decl> typedef_parameter_redeclarator typedef_ptr typedef_redeclarator typedef_type_specifier
-%type<decl> typegen_declaration_specifier typegen_type_specifier
-
-%type<decl> type_name type_name_no_function
-%type<decl> type_parameter type_parameter_list
-
-%type<en> type_name_list
-
-%type<decl> type_qualifier type_qualifier_name type_qualifier_list type_qualifier_list_opt type_specifier
-
-%type<decl> variable_abstract_array variable_abstract_declarator variable_abstract_function
-%type<decl> variable_abstract_ptr variable_array variable_declarator variable_function variable_ptr
-
-// initializers
-%type<in>  initializer initializer_list initializer_opt
-
-// designators
-%type<en>  designator designator_list designation
-
-
-// Handle single shift/reduce conflict for dangling else by shifting the ELSE token. For example, this string
-// is ambiguous:
-// .---------.				matches IF '(' comma_expression ')' statement
-// if ( C ) S1 else S2
-// `-----------------'		matches IF '(' comma_expression ')' statement ELSE statement */
-
-%nonassoc THEN	// rule precedence for IF '(' comma_expression ')' statement
-%nonassoc ELSE	// token precedence for start of else clause in IF statement
-
-%start translation_unit									// parse-tree root
-
-%%
-//************************* Namespace Management ********************************
-
-// The grammar in the ANSI C standard is not strictly context-free, since it relies upon the distinct terminal
-// symbols "identifier" and "TYPEDEFname" that are lexically identical.  While it is possible to write a
-// purely context-free grammar, such a grammar would obscure the relationship between syntactic and semantic
-// constructs.  Hence, this grammar uses the ANSI style.
-//
-// Cforall compounds this problem by introducing type names local to the scope of a declaration (for instance,
-// those introduced through "forall" qualifiers), and by introducing "type generators" -- parametrized types.
-// This latter type name creates a third class of identifiers that must be distinguished by the scanner.
-//
-// Since the scanner cannot distinguish among the different classes of identifiers without some context
-// information, it accesses a data structure (the TypedefTable) to allow classification of an identifier that
-// it has just read.  Semantic actions during the parser update this data structure when the class of
-// identifiers change.
-//
-// Because the Cforall language is block-scoped, there is the possibility that an identifier can change its
-// class in a local scope; it must revert to its original class at the end of the block.  Since type names can
-// be local to a particular declaration, each declaration is itself a scope.  This requires distinguishing
-// between type names that are local to the current declaration scope and those that persist past the end of
-// the declaration (i.e., names defined in "typedef" or "type" declarations).
-//
-// The non-terminals "push" and "pop" derive the empty string; their only use is to denote the opening and
-// closing of scopes.  Every push must have a matching pop, although it is regrettable the matching pairs do
-// not always occur within the same rule.  These non-terminals may appear in more contexts than strictly
-// necessary from a semantic point of view.  Unfortunately, these extra rules are necessary to prevent parsing
-// conflicts -- the parser may not have enough context and look-ahead information to decide whether a new
-// scope is necessary, so the effect of these extra rules is to open a new scope unconditionally.  As the
-// grammar evolves, it may be neccesary to add or move around "push" and "pop" nonterminals to resolve
-// conflicts of this sort.
-
-push:
-				{
-					typedefTable.enterScope();
-				}
-		;
-
-pop:
-				{
-					typedefTable.leaveScope();
-				}
-		;
-
-//************************* CONSTANTS ********************************
-
-constant:
-				// ENUMERATIONconstant is not included here; it is treated as a variable with type
-				// "enumeration constant".
-		INTEGERconstant									{ $$ = new ConstantNode(ConstantNode::Integer, $1); }
-		| FLOATINGconstant								{ $$ = new ConstantNode(ConstantNode::Float, $1); }
-		| CHARACTERconstant								{ $$ = new ConstantNode(ConstantNode::Character, $1); }
-		;
-
-identifier:
-		IDENTIFIER
-		| ATTR_IDENTIFIER								// CFA
-		| zero_one										// CFA
-		;
-
-no_01_identifier:
-		IDENTIFIER
-		| ATTR_IDENTIFIER								// CFA
-		;
-
-no_attr_identifier:
-		IDENTIFIER
-		;
-
-zero_one:												// CFA
-		ZERO
-		| ONE
-		;
-
-string_literal_list:									// juxtaposed strings are concatenated
-		STRINGliteral									{ $$ = new ConstantNode(ConstantNode::String, $1); }
-		| string_literal_list STRINGliteral				{ $$ = $1->append( $2 ); }
-		;
-
-//************************* EXPRESSIONS ********************************
-
-primary_expression:
-		IDENTIFIER										// typedef name cannot be used as a variable name
-				{ $$ = new VarRefNode($1); }
-		| zero_one
-				{ $$ = new VarRefNode($1); }
-		| constant
-				{ $$ = $1; }
-		| string_literal_list
-				{ $$ = $1; }
-		| '(' comma_expression ')'
-				{ $$ = $2; }
-		| '(' compound_statement ')'					// GCC, lambda expression
-				{ $$ = new ValofExprNode($2); }
-		;
-
-postfix_expression:
-		primary_expression
-		| postfix_expression '[' push assignment_expression pop ']'
-				// CFA, comma_expression disallowed in the context because it results in a commom user error:
-				// subscripting a matrix with x[i,j] instead of x[i][j]. While this change is not backwards
-				// compatible, there seems to be little advantage to this feature and many disadvantages. It
-				// is possible to write x[(i,j)] in CFA, which is equivalent to the old x[i,j].
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Index), $1, $4); }
-		| postfix_expression '(' argument_expression_list ')'
-				{ $$ = new CompositeExprNode($1, $3); }
-		| postfix_expression '.' no_attr_identifier
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::FieldSel), $1, new VarRefNode($3)); }
-		| postfix_expression '.' '[' push field_list pop ']' // CFA, tuple field selector
-		| postfix_expression ARROW no_attr_identifier
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::PFieldSel), $1, new VarRefNode($3)); }
-		| postfix_expression ARROW '[' push field_list pop ']' // CFA, tuple field selector
-		| postfix_expression ICR
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::IncrPost), $1); }
-		| postfix_expression DECR
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::DecrPost), $1); }
-				// GCC has priority: cast_expression
-		| '(' type_name_no_function ')' '{' initializer_list comma_opt '}' // C99
-				{ $$ = 0; }
-		;
-
-argument_expression_list:
-		argument_expression
-		| argument_expression_list ',' argument_expression
-				{ $$ = (ExpressionNode *)($1->set_link($3)); }
-		;
-
-argument_expression:
-		// empty
-				{ $$ = 0; }								// use default argument
-		| assignment_expression
-		| no_attr_identifier ':' assignment_expression
-				{ $$ = $3->set_asArgName($1); }
-				// Only a list of no_attr_identifier_or_typedef_name is allowed in this context. However,
-				// there is insufficient look ahead to distinguish between this list of parameter names and a
-				// tuple, so the tuple form must be used with an appropriate semantic check.
-		| '[' push assignment_expression pop ']' ':' assignment_expression
-				{ $$ = $7->set_asArgName($3); }
-		| '[' push assignment_expression ',' tuple_expression_list pop ']' ':' assignment_expression
-				{ $$ = $9->set_asArgName(new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)$3->set_link( flattenCommas( $5 )))); }
-		;
-
-field_list:												// CFA, tuple field selector
-		field
-		| field_list ',' field							{ $$ = (ExpressionNode *)$1->set_link( $3 ); }
-		;
-
-field:													// CFA, tuple field selector
-		no_attr_identifier
-				{ $$ = new VarRefNode( $1 ); }
-		| no_attr_identifier '.' field
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::FieldSel), new VarRefNode( $1 ), $3); }
-		| no_attr_identifier '.' '[' push field_list pop ']'
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::FieldSel), new VarRefNode( $1 ), $5); }
-		| no_attr_identifier ARROW field
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::PFieldSel), new VarRefNode( $1 ), $3); }
-		| no_attr_identifier ARROW '[' push field_list pop ']'
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::PFieldSel), new VarRefNode( $1 ), $5); }
-		;
-
-unary_expression:
-		postfix_expression
-		| ICR unary_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Incr), $2); }
-		| DECR unary_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Decr), $2); }
-		| EXTENSION cast_expression						// GCC
-				{ $$ = $2; }
-		| unary_operator cast_expression
-				{ $$ = new CompositeExprNode($1, $2); }
-		| '!' cast_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Neg), $2); }
-		| '*' cast_expression							// CFA
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::PointTo), $2); }
-				// '*' is is separated from unary_operator because of shift/reduce conflict in:
-				//		{ * X; } // dereference X
-				//		{ * int X; } // CFA declaration of pointer to int
-				// '&' must be moved here if C++ reference variables are supported.
-		| SIZEOF unary_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::SizeOf), $2); }
-		| SIZEOF '(' type_name_no_function ')'
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::SizeOf), new TypeValueNode($3)); }
-		| ATTR_IDENTIFIER
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Attr), new VarRefNode($1)); }
-		| ATTR_IDENTIFIER '(' type_name ')'
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Attr), new VarRefNode($1), new TypeValueNode($3)); }
-		| ATTR_IDENTIFIER '(' argument_expression ')'
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Attr), new VarRefNode($1), $3); }
-		| ALIGNOF unary_expression						// GCC, variable alignment
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::AlignOf), $2); }
-		| ALIGNOF '(' type_name_no_function ')'			// GCC, type alignment
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::AlignOf), new TypeValueNode($3)); }
-		| ANDAND no_attr_identifier						// GCC, address of label
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::LabelAddress), new VarRefNode($2, true)); }
-		;
-
-unary_operator:
-		'&'												{ $$ = new OperatorNode(OperatorNode::AddressOf); }
-		| '+'											{ $$ = new OperatorNode(OperatorNode::UnPlus); }
-		| '-'											{ $$ = new OperatorNode(OperatorNode::UnMinus); }
-		| '~'											{ $$ = new OperatorNode(OperatorNode::BitNeg); }
-		;
-
-cast_expression:
-		unary_expression
-		| '(' type_name_no_function ')' cast_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Cast), new TypeValueNode($2), $4); }
-		| '(' type_name_no_function ')' tuple
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Cast), new TypeValueNode($2), $4); }
-		;
-
-multiplicative_expression:
-		cast_expression
-		| multiplicative_expression '*' cast_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Mul),$1,$3); }
-		| multiplicative_expression '/' cast_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Div),$1,$3); }
-		| multiplicative_expression '%' cast_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Mod),$1,$3); }
-		;
-
-additive_expression:
-		multiplicative_expression
-		| additive_expression '+' multiplicative_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Plus),$1,$3); }
-		| additive_expression '-' multiplicative_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Minus),$1,$3); }
-		;
-
-shift_expression:
-		additive_expression
-		| shift_expression LS additive_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::LShift),$1,$3); }
-		| shift_expression RS additive_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::RShift),$1,$3); }
-		;
-
-relational_expression:
-		shift_expression
-		| relational_expression '<' shift_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::LThan),$1,$3); }
-		| relational_expression '>' shift_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::GThan),$1,$3); }
-		| relational_expression LE shift_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::LEThan),$1,$3); }
-		| relational_expression GE shift_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::GEThan),$1,$3); }
-		;
-
-equality_expression:
-		relational_expression
-		| equality_expression EQ relational_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Eq), $1, $3); }
-		| equality_expression NE relational_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Neq), $1, $3); }
-		;
-
-AND_expression:
-		equality_expression
-		| AND_expression '&' equality_expression
-				{ $$ =new CompositeExprNode(new OperatorNode(OperatorNode::BitAnd), $1, $3); }
-		;
-
-exclusive_OR_expression:
-		AND_expression
-		| exclusive_OR_expression '^' AND_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Xor), $1, $3); }
-		;
-
-inclusive_OR_expression:
-		exclusive_OR_expression
-		| inclusive_OR_expression '|' exclusive_OR_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::BitOr), $1, $3); }
-		;
-
-logical_AND_expression:
-		inclusive_OR_expression
-		| logical_AND_expression ANDAND inclusive_OR_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::And), $1, $3); }
-		;
-
-logical_OR_expression:
-		logical_AND_expression
-		| logical_OR_expression OROR logical_AND_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Or), $1, $3); }
-		;
-
-conditional_expression:
-		logical_OR_expression
-		| logical_OR_expression '?' comma_expression ':' conditional_expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList((*$1,*$3,*$5))); }
-		| logical_OR_expression '?' /* empty */ ':' conditional_expression // GCC, omitted first operand
-				{ $$=new CompositeExprNode(new OperatorNode(OperatorNode::NCond),$1,$4); }
-		| logical_OR_expression '?' comma_expression ':' tuple // CFA, tuple expression
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList(( *$1, *$3, *$5 ))); }
-		;
-
-constant_expression:
-		conditional_expression
-		;
-
-assignment_expression:
-				// CFA, assignment is separated from assignment_operator to ensure no assignment operations
-				// for tuples
-		conditional_expression
-		| unary_expression '=' assignment_expression
-				{ $$ =new CompositeExprNode(new OperatorNode(OperatorNode::Assign), $1, $3); }
-		| unary_expression assignment_operator assignment_expression
-				{ $$ =new CompositeExprNode($2, $1, $3); }
-		| tuple assignment_opt							// CFA, tuple expression
-				{ $$ = ($2 == 0) ? $1 : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), $1, $2 ); }
-		;
-
-assignment_expression_opt:
-		// empty
-				{ $$ = new NullExprNode; }
-		| assignment_expression
-		;
-
-tuple:													// CFA, tuple
-				// CFA, one assignment_expression is factored out of comma_expression to eliminate a
-				// shift/reduce conflict with comma_expression in new_identifier_parameter_array and
-				// new_abstract_array
-		'[' push pop ']'
-				{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
-		| '[' push assignment_expression pop ']'
-				{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), $3 ); }
-		| '[' push ',' tuple_expression_list pop ']'
-				{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( $4 ) ); }
-		| '[' push assignment_expression ',' tuple_expression_list pop ']'
-				{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)$3->set_link( flattenCommas( $5 ) ) ); }
-		;
-
-tuple_expression_list:
-		assignment_expression_opt
-		| tuple_expression_list ',' assignment_expression_opt
-				{ $$ = (ExpressionNode *)$1->set_link( $3 ); }
-		;
-
-assignment_operator:
-		MULTassign										{ $$ = new OperatorNode(OperatorNode::MulAssn); }
-		| DIVassign										{ $$ = new OperatorNode(OperatorNode::DivAssn); }
-		| MODassign										{ $$ = new OperatorNode(OperatorNode::ModAssn); }
-		| PLUSassign									{ $$ = new OperatorNode(OperatorNode::PlusAssn); }
-		| MINUSassign									{ $$ = new OperatorNode(OperatorNode::MinusAssn); }
-		| LSassign										{ $$ = new OperatorNode(OperatorNode::LSAssn); }
-		| RSassign										{ $$ = new OperatorNode(OperatorNode::RSAssn); }
-		| ANDassign										{ $$ = new OperatorNode(OperatorNode::AndAssn); }
-		| ERassign										{ $$ = new OperatorNode(OperatorNode::ERAssn); }
-		| ORassign										{ $$ = new OperatorNode(OperatorNode::OrAssn); }
-		;
-
-comma_expression:
-		assignment_expression
-		| comma_expression ',' assignment_expression	// { $$ = (ExpressionNode *)$1->add_to_list($3); }
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Comma),$1,$3); }
-		;
-
-comma_expression_opt:
-		// empty
-				{ $$ = 0; }
-		| comma_expression
-		;
-
-//*************************** STATEMENTS *******************************
-
-statement:
-		labeled_statement
-		| compound_statement
-		| expression_statement							{ $$ = $1; }
-		| selection_statement
-		| iteration_statement
-		| jump_statement
-		| exception_statement
-		| asm_statement
-		;
-
-labeled_statement:
-		no_attr_identifier ':' attribute_list_opt statement
-				{ $$ = $4->add_label($1);}
-		;
-
-compound_statement:
-		'{' '}'
-				{ $$ = new CompoundStmtNode( (StatementNode *)0 ); }
-		| '{'
-				// Two scopes are necessary because the block itself has a scope, but every declaration within
-				// the block also requires its own scope
-		  push push
-		  label_declaration_opt							// GCC, local labels
-		  block_item_list pop '}'						// C99, intermix declarations and statements
-				{ $$ = new CompoundStmtNode( $5 ); }
-		;
-
-block_item_list:										// C99
-		block_item
-		| block_item_list push block_item
-				{ if ($1 != 0) { $1->set_link($3); $$ = $1; } }
-		;
-
-block_item:
-		declaration										// CFA, new & old style declarations
-				{ $$ = new StatementNode( $1 ); }
-		| EXTENSION declaration							// GCC
-				{ $$ = new StatementNode( $2 ); }
-		| statement pop
-		;
-
-statement_list:
-		statement
-		| statement_list statement
-				{ if ($1 != 0) { $1->set_link($2); $$ = $1; } }
-		;
-
-expression_statement:
-		comma_expression_opt ';'
-				{ $$ = new StatementNode(StatementNode::Exp, $1, 0); }
-		;
-
-selection_statement:
-		IF '(' comma_expression ')' statement				%prec THEN
-				// explicitly deal with the shift/reduce conflict on if/else
-				{ $$ = new StatementNode(StatementNode::If, $3, $5); }
-		| IF '(' comma_expression ')' statement ELSE statement
-				{ $$ = new StatementNode(StatementNode::If, $3, (StatementNode *)mkList((*$5, *$7)) ); }
-		| SWITCH '(' comma_expression ')' case_clause	// CFA
-				{ $$ = new StatementNode(StatementNode::Switch, $3, $5); }
-		| SWITCH '(' comma_expression ')' '{' push declaration_list_opt switch_clause_list_opt '}' // CFA
-				{ $$ = new StatementNode(StatementNode::Switch, $3, $8); /* xxx */ }
-				// The semantics of the declaration list is changed to include any associated initialization,
-				// which is performed *before* the transfer to the appropriate case clause.  Statements after
-				// the initial declaration list can never be executed, and therefore, are removed from the
-				// grammar even though C allows it.
-		| CHOOSE '(' comma_expression ')' case_clause	// CFA
-				{ $$ = new StatementNode(StatementNode::Choose, $3, $5); }
-		| CHOOSE '(' comma_expression ')' '{' push declaration_list_opt choose_clause_list_opt '}' // CFA
-				{ $$ = new StatementNode(StatementNode::Choose, $3, $8); }
-		;
-
-// CASE and DEFAULT clauses are only allowed in the SWITCH statement, precluding Duff's device. In addition, a
-// case clause allows a list of values and subranges.
-
-case_value:												// CFA
-		constant_expression								{ $$ = $1; }
-		| constant_expression ELLIPSIS constant_expression // GCC, subrange
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Range),$1,$3); }
-		| subrange										// CFA, subrange
-		;
-
-case_value_list:										// CFA
-		case_value
-		| case_value_list ',' case_value
-				{ $$ = new CompositeExprNode(new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents($1))->set_link($3) ); }
-		;
-
-case_label:												// CFA
-		CASE case_value_list ':'						{ $$ = new StatementNode(StatementNode::Case, $2, 0); }
-		| DEFAULT ':'								    { $$ = new StatementNode(StatementNode::Default); }
-				// A semantic check is required to ensure only one default clause per switch/choose statement.
-		;
-
-case_label_list:										// CFA
-		case_label
-		| case_label_list case_label					{ $$ = (StatementNode *)($1->set_link($2)); }
-		;
-
-case_clause:											// CFA
-		case_label_list statement						{ $$ = $1->append_last_case($2); }
-		;
-
-switch_clause_list_opt:									// CFA
-		// empty
-				{ $$ = 0; }
-		| switch_clause_list
-		;
-
-switch_clause_list:										// CFA
-		case_label_list statement_list
-				{ $$ = $1->append_last_case($2); }
-		| switch_clause_list case_label_list statement_list
-				{ $$ = (StatementNode *)($1->set_link($2->append_last_case($3))); }
-		;
-
-choose_clause_list_opt:									// CFA
-		// empty
-				{ $$ = 0; }
-		| choose_clause_list
-		;
-
-choose_clause_list:										// CFA
-		case_label_list fall_through
-				{ $$ = $1->append_last_case($2); }
-		| case_label_list statement_list fall_through_opt
-				{ $$ = $1->append_last_case((StatementNode *)mkList((*$2,*$3))); }
-		| choose_clause_list case_label_list fall_through
-				{ $$ = (StatementNode *)($1->set_link($2->append_last_case($3))); }
-		| choose_clause_list case_label_list statement_list fall_through_opt
-				{ $$ = (StatementNode *)($1->set_link($2->append_last_case((StatementNode *)mkList((*$3,*$4))))); }
-		;
-
-fall_through_opt:										// CFA
-		// empty
-				{ $$ = 0; }
-		| fall_through
-		;
-
-fall_through:											// CFA
-		FALLTHRU										{ $$ = new StatementNode(StatementNode::Fallthru, 0, 0); }
-		| FALLTHRU ';'									{ $$ = new StatementNode(StatementNode::Fallthru, 0, 0); }
-		;
-
-iteration_statement:
-		WHILE '(' comma_expression ')' statement
-				{ $$ = new StatementNode(StatementNode::While, $3, $5); }
-		| DO statement WHILE '(' comma_expression ')' ';'
-				{ $$ = new StatementNode(StatementNode::Do, $5, $2); }
-		| FOR '(' push for_control_expression ')' statement
-				{ $$ = new StatementNode(StatementNode::For, $4, $6); }
-		;
-
-for_control_expression:
-		comma_expression_opt pop ';' comma_expression_opt ';' comma_expression_opt
-				{ $$ = new ForCtlExprNode($1, $4, $6); }
-		| declaration comma_expression_opt ';' comma_expression_opt // C99
-				// Like C++, the loop index can be declared local to the loop.
-				{ $$ = new ForCtlExprNode($1, $2, $4); }
-		;
-
-jump_statement:
-		GOTO no_attr_identifier ';'
-				{ $$ = new StatementNode(StatementNode::Goto, $2); }
-		| GOTO '*' comma_expression ';'				// GCC, computed goto
-				// The syntax for the GCC computed goto violates normal expression precedence, e.g., goto
-				// *i+3; => goto *(i+3); whereas normal operator precedence yields goto (*i)+3;
-				{ $$ = new StatementNode(StatementNode::Goto, $3); }
-		| CONTINUE ';'
-				// A semantic check is required to ensure this statement appears only in the body of an
-				// iteration statement.
-				{ $$ = new StatementNode(StatementNode::Continue, 0, 0); }
-		| CONTINUE no_attr_identifier ';'		// CFA, multi-level continue
-				// A semantic check is required to ensure this statement appears only in the body of an
-				// iteration statement, and the target of the transfer appears only at the start of an
-				// iteration statement.
-				{ $$ = new StatementNode(StatementNode::Continue, $2); }
-		| BREAK ';'
-				// A semantic check is required to ensure this statement appears only in the body of an
-				// iteration statement.
-				{ $$ = new StatementNode(StatementNode::Break, 0, 0); }
-		| BREAK no_attr_identifier ';'				// CFA, multi-level exit
-				// A semantic check is required to ensure this statement appears only in the body of an
-				// iteration statement, and the target of the transfer appears only at the start of an
-				// iteration statement.
-				{ $$ = new StatementNode(StatementNode::Break, $2 ); }
-		| RETURN comma_expression_opt ';'
-				{ $$ = new StatementNode(StatementNode::Return, $2, 0); }
-		| THROW assignment_expression ';'
-				{ $$ = new StatementNode(StatementNode::Throw, $2, 0); }
-		| THROW ';'
-				{ $$ = new StatementNode(StatementNode::Throw, 0, 0); }
-		;
-
-exception_statement:
-		TRY compound_statement handler_list
-				{ $$ = new StatementNode(StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3)))); }
-		| TRY compound_statement finally_clause
-				{ $$ = new StatementNode(StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3)))); }
-		| TRY compound_statement handler_list finally_clause
-				{ 
-					$3->set_link($4);
-					$$ = new StatementNode(StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3))));
-				}
-		;
-
-handler_list:
-				// There must be at least one catch clause
-		handler_clause
-				// ISO/IEC 9899:1999 Section 15.3(6) If present, a "..." handler shall be the last handler for
-				// its try block.
-		| CATCH '(' ELLIPSIS ')' compound_statement
-				{ $$ = StatementNode::newCatchStmt( 0, $5, true ); }
-		| handler_clause CATCH '(' ELLIPSIS ')' compound_statement
-				{ $$ = $1->set_link( StatementNode::newCatchStmt( 0, $6, true ) ); }
-		;
-
-handler_clause:
-		CATCH '(' push push exception_declaration pop ')' compound_statement pop
-				{ $$ = StatementNode::newCatchStmt($5, $8); }
-		| handler_clause CATCH '(' push push exception_declaration pop ')' compound_statement pop
-				{ $$ = $1->set_link( StatementNode::newCatchStmt($6, $9) ); }
-		;
-
-finally_clause:
-		FINALLY compound_statement
-				{ $$ = new StatementNode(StatementNode::Finally, 0, $2);
-					std::cout << "Just created a finally node" << std::endl;
-				}
-		;
-
-exception_declaration:
-				// A semantic check is required to ensure type_specifier does not create a new type, e.g.:
-				//
-				//		catch ( struct { int i; } x ) ...
-				//
-				// This new type cannot catch any thrown type because of name equivalence among types.
-		type_specifier
-		| type_specifier declarator
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::ID );
-					$$ = $2->addType( $1 );
-				}
-		| type_specifier variable_abstract_declarator
-				{ $$ = $2->addType( $1 ); }
-		| new_abstract_declarator_tuple no_attr_identifier // CFA
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::ID );
-					$$ = $1->addName( $2 );
-				}
-		| new_abstract_declarator_tuple					// CFA
-		;
-
-asm_statement:
-		ASM type_qualifier_list_opt '(' constant_expression ')' ';'
-				{ $$ = new StatementNode(StatementNode::Asm, 0, 0); }
-		| ASM type_qualifier_list_opt '(' constant_expression ':' asm_operands_opt ')' ';' // remaining GCC
-				{ $$ = new StatementNode(StatementNode::Asm, 0, 0); }
-		| ASM type_qualifier_list_opt '(' constant_expression ':' asm_operands_opt ':' asm_operands_opt ')' ';'
-				{ $$ = new StatementNode(StatementNode::Asm, 0, 0); }
-		| ASM type_qualifier_list_opt '(' constant_expression ':' asm_operands_opt ':' asm_operands_opt ':'
-						asm_clobbers_list ')' ';'
-				{ $$ = new StatementNode(StatementNode::Asm, 0, 0); }
-		;
-
-asm_operands_opt:										// GCC
-		// empty
-		| asm_operands_list
-		;
-
-asm_operands_list:										// GCC
-		asm_operand
-		| asm_operands_list ',' asm_operand
-		;
-
-asm_operand:											// GCC
-		STRINGliteral '(' constant_expression ')'		{}
-		;
-
-asm_clobbers_list:										// GCC
-		STRINGliteral									{}
-		| asm_clobbers_list ',' STRINGliteral
-		;
-
-//******************************* DECLARATIONS *********************************
-
-declaration_list_opt:									// used at beginning of switch statement
-		pop
-				{ $$ = 0; }
-		| declaration_list
-		;
-
-declaration_list:
-		declaration
-		| declaration_list push declaration
-				{ $$ = $1->appendList( $3 ); }
-		;
-
-old_declaration_list_opt:								// used to declare parameter types in K&R style functions
-		pop
-				{ $$ = 0; }
-		| old_declaration_list
-		;
-
-old_declaration_list:
-		old_declaration
-		| old_declaration_list push old_declaration
-				{ $$ = $1->appendList( $3 ); }
-		;
-
-label_declaration_opt:									// GCC, local label
-		// empty
-		| label_declaration_list
-		;
-
-label_declaration_list:									// GCC, local label
-		LABEL label_list ';'
-		| label_declaration_list LABEL label_list ';'
-		;
-
-label_list:												// GCC, local label
-		no_attr_identifier_or_typedef_name				{}
-		| label_list ',' no_attr_identifier_or_typedef_name {}
-		;
-
-declaration:											// CFA, new & old style declarations
-		new_declaration
-		| old_declaration
-		;
-
-// C declaration syntax is notoriously confusing and error prone. Cforall provides its own type, variable and
-// function declarations. CFA declarations use the same declaration tokens as in C; however, CFA places
-// declaration modifiers to the left of the base type, while C declarations place modifiers to the right of
-// the base type. CFA declaration modifiers are interpreted from left to right and the entire type
-// specification is distributed across all variables in the declaration list (as in Pascal).  ANSI C and the
-// new CFA declarations may appear together in the same program block, but cannot be mixed within a specific
-// declaration.
-//
-//			CFA					C
-//		[10] int x;			int x[10];		// array of 10 integers
-//		[10] * char y;		char *y[10];	// array of 10 pointers to char
-
-new_declaration:										// CFA
-		new_variable_declaration pop ';'
-		| new_typedef_declaration pop ';'
-		| new_function_declaration pop ';'
-		| type_declaring_list pop ';'
-		| context_specifier pop ';'
-		;
-
-new_variable_declaration:								// CFA
-		new_variable_specifier initializer_opt
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::ID );
-					$$ = $1;
-				}
-		| declaration_qualifier_list new_variable_specifier initializer_opt
-				// declaration_qualifier_list also includes type_qualifier_list, so a semantic check is
-				// necessary to preclude them as a type_qualifier cannot appear in that context.
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::ID );
-					$$ = $2->addQualifiers( $1 );
-				}
-		| new_variable_declaration pop ',' push identifier_or_typedef_name initializer_opt
-				{
-					typedefTable.addToEnclosingScope( *$5, TypedefTable::ID );
-					$$ = $1->appendList( $1->cloneType( $5 ) );
-				}
-		;
-
-new_variable_specifier:									// CFA
-				// A semantic check is required to ensure asm_name only appears on declarations with implicit
-				// or explicit static storage-class
-		new_abstract_declarator_no_tuple identifier_or_typedef_name asm_name_opt
-				{
-					typedefTable.setNextIdentifier( *$2 );
-					$$ = $1->addName( $2 );
-				}
-		| new_abstract_tuple identifier_or_typedef_name asm_name_opt
-				{
-					typedefTable.setNextIdentifier( *$2 );
-					$$ = $1->addName( $2 );
-				}
-		| type_qualifier_list new_abstract_tuple identifier_or_typedef_name asm_name_opt
-				{
-					typedefTable.setNextIdentifier( *$3 );
-					$$ = $2->addQualifiers( $1 )->addName( $3 );
-				}
-		;
-
-new_function_declaration:								// CFA
-		new_function_specifier
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::ID );
-					$$ = $1;
-				}
-		| declaration_qualifier_list new_function_specifier
-				// declaration_qualifier_list also includes type_qualifier_list, so a semantic check is
-				// necessary to preclude them as a type_qualifier cannot appear in this context.
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::ID );
-					$$ = $2->addQualifiers( $1 );
-				}
-		| new_function_declaration pop ',' push identifier_or_typedef_name
-				{
-					typedefTable.addToEnclosingScope( *$5, TypedefTable::ID );
-					$$ = $1->appendList( $1->cloneType( $5 ) );
-				}
-		;
-
-new_function_specifier:									// CFA
-		'[' push pop ']' identifier '(' push new_parameter_type_list_opt pop ')'
-				{
-					typedefTable.setNextIdentifier( *($5) );
-					$$ = DeclarationNode::newFunction( $5, DeclarationNode::newTuple( 0 ), $8, 0, true );
-				}
-		| '[' push pop ']' TYPEDEFname '(' push new_parameter_type_list_opt pop ')'
-				{
-					typedefTable.setNextIdentifier( *($5) );
-					$$ = DeclarationNode::newFunction( $5, DeclarationNode::newTuple( 0 ), $8, 0, true );
-				}
-				// identifier_or_typedef_name must be broken apart because of the sequence:
-				//
-				//   '[' ']' identifier_or_typedef_name '(' new_parameter_type_list_opt ')'
-				//   '[' ']' type_specifier
-				//
-				// type_specifier can resolve to just TYPEDEFname (e.g. typedef int T; int f( T );). Therefore
-				// this must be flattened to allow lookahead to the '(' without having to reduce
-				// identifier_or_typedef_name.
-		| new_abstract_tuple identifier_or_typedef_name '(' push new_parameter_type_list_opt pop ')'
-				// To obtain LR(1), this rule must be factored out from function return type (see
-				//   new_abstract_declarator).
-				{
-					$$ = DeclarationNode::newFunction( $2, $1, $5, 0, true );
-				}
-		| new_function_return identifier_or_typedef_name '(' push new_parameter_type_list_opt pop ')'
-				{
-					$$ = DeclarationNode::newFunction( $2, $1, $5, 0, true );
-				}
-		;
-
-new_function_return:									// CFA
-		'[' push new_parameter_list pop ']'
-				{ $$ = DeclarationNode::newTuple( $3 ); }
-		| '[' push new_parameter_list pop ',' push new_abstract_parameter_list pop ']'
-				// To obtain LR(1), the last new_abstract_parameter_list is added into this flattened rule to
-				// lookahead to the ']'.
-				{ $$ = DeclarationNode::newTuple( $3->appendList( $7 ) ); }
-		;
-
-new_typedef_declaration:								// CFA
-		TYPEDEF new_variable_specifier
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::TD);
-					$$ = $2->addTypedef();
-				}
-		| TYPEDEF new_function_specifier
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::TD);
-					$$ = $2->addTypedef();
-				}
-		| new_typedef_declaration pop ',' push no_attr_identifier
-				{
-					typedefTable.addToEnclosingScope( *$5, TypedefTable::TD);
-					$$ = $1->appendList( $1->cloneType( $5 ) );
-				}
-		;
-
-// Traditionally typedef is part of storage-class specifier for syntactic convenience only. Here, it is
-// factored out as a separate form of declaration, which syntactically precludes storage-class specifiers and
-// initialization.
-
-typedef_declaration:
-		TYPEDEF type_specifier declarator
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::TD);
-					$$ = $3->addType( $2 )->addTypedef();
-				}
-		| typedef_declaration pop ',' push declarator
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::TD);
-					$$ = $1->appendList( $1->cloneBaseType( $5 )->addTypedef() );
-				}
-		| type_qualifier_list TYPEDEF type_specifier declarator // remaining OBSOLESCENT (see 2)
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::TD);
-					$$ = $4->addType( $3 )->addQualifiers( $1 )->addTypedef();
-				}
-		| type_specifier TYPEDEF declarator
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::TD);
-					$$ = $3->addType( $1 )->addTypedef();
-				}
-		| type_specifier TYPEDEF type_qualifier_list declarator
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::TD);
-					$$ = $4->addQualifiers($1)->addTypedef()->addType($1);
-				}
-		;
-
-typedef_expression:										// GCC, naming expression type
-		TYPEDEF no_attr_identifier '=' assignment_expression
-				{
-					typedefTable.addToEnclosingScope(*($2), TypedefTable::TD);
-					$$ = DeclarationNode::newName( 0 ); // XXX
-				}
-		| typedef_expression pop ',' push no_attr_identifier '=' assignment_expression
-				{
-					typedefTable.addToEnclosingScope(*($5), TypedefTable::TD);
-					$$ = DeclarationNode::newName( 0 ); // XXX
-				}
-		;
-
-old_declaration:
-		declaring_list pop ';'
-		| typedef_declaration pop ';'
-		| typedef_expression pop ';'					// GCC, naming expression type
-		| sue_declaration_specifier pop ';'
-		;
-
-declaring_list:
-				// A semantic check is required to ensure asm_name only appears on declarations with implicit
-				// or explicit static storage-class
-		declaration_specifier declarator asm_name_opt initializer_opt
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::ID );
-					$$ = ($2->addType( $1 ))->addInitializer($4);
-				}
-		| declaring_list ',' attribute_list_opt declarator asm_name_opt initializer_opt
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::ID );
-					$$ = $1->appendList( $1->cloneBaseType( $4->addInitializer($6) ) );
-				}
-		;
-
-declaration_specifier:									// type specifier + storage class
-		basic_declaration_specifier
-		| sue_declaration_specifier
-		| typedef_declaration_specifier
-		| typegen_declaration_specifier
-		;
-
-type_specifier:											// declaration specifier - storage class
-		basic_type_specifier
-		| sue_type_specifier
-		| typedef_type_specifier
-		| typegen_type_specifier
-		;
-
-type_qualifier_list_opt:								// GCC, used in asm_statement
-		// empty
-				{ $$ = 0; }
-		| type_qualifier_list
-		;
-
-type_qualifier_list:
-				// A semantic check is necessary to ensure a type qualifier is appropriate for the kind of
-				// declaration.
-				//
-				// ISO/IEC 9899:1999 Section 6.7.3(4) : If the same qualifier appears more than once in the
-				// same specifier-qualifier-list, either directly or via one or more typedefs, the behavior is
-				// the same as if it appeared only once.
-		type_qualifier
-		| type_qualifier_list type_qualifier
-				{ $$ = $1->addQualifiers( $2 ); }
-		;
-
-type_qualifier:
-		type_qualifier_name
-		| attribute
-				{ $$ = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
-		;
-
-type_qualifier_name:
-		CONST
-				{ $$ = DeclarationNode::newQualifier( DeclarationNode::Const ); }
-		| RESTRICT
-				{ $$ = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
-		| VOLATILE
-				{ $$ = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
-		| LVALUE										// CFA
-				{ $$ = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
-		| ATOMIC
-				{ $$ = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
-		| FORALL '('
-				{
-					typedefTable.enterScope();
-				}
-		  type_parameter_list ')'						// CFA
-				{
-					typedefTable.leaveScope();
-					$$ = DeclarationNode::newForall( $4 );
-				}
-		;
-
-declaration_qualifier_list:
-		storage_class_list
-		| type_qualifier_list storage_class_list		// remaining OBSOLESCENT (see 2)
-				{ $$ = $1->addQualifiers( $2 ); }
-		| declaration_qualifier_list type_qualifier_list storage_class_list
-				{ $$ = $1->addQualifiers( $2 )->addQualifiers( $3 ); }
-		;
-
-storage_class_list:
-				// A semantic check is necessary to ensure a storage class is appropriate for the kind of
-				// declaration and that only one of each is specified, except for inline, which can appear
-				// with the others.
-				//
-				// ISO/IEC 9899:1999 Section 6.7.1(2) : At most, one storage-class specifier may be given in
-				// the declaration specifiers in a declaration.
-		storage_class
-		| storage_class_list storage_class
-				{ $$ = $1->addQualifiers( $2 ); }
-		;
-
-storage_class:
-		storage_class_name
-		;
-
-storage_class_name:
-		EXTERN
-				{ $$ = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
-		| STATIC
-				{ $$ = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
-		| AUTO
-				{ $$ = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
-		| REGISTER
-				{ $$ = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
-		| INLINE										// C99
-				// INLINE is essentially a storage class specifier for functions, and hence, belongs here.
-				{ $$ = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
-		| FORTRAN										// C99
-				{ $$ = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
-		;
-
-basic_type_name:
-		CHAR
-				{ $$ = DeclarationNode::newBasicType( DeclarationNode::Char ); }
-		| DOUBLE
-				{ $$ = DeclarationNode::newBasicType( DeclarationNode::Double ); }
-		| FLOAT
-				{ $$ = DeclarationNode::newBasicType( DeclarationNode::Float ); }
-		| INT
-				{ $$ = DeclarationNode::newBasicType( DeclarationNode::Int ); }
-		| LONG
-				{ $$ = DeclarationNode::newModifier( DeclarationNode::Long ); }
-		| SHORT
-				{ $$ = DeclarationNode::newModifier( DeclarationNode::Short ); }
-		| SIGNED
-				{ $$ = DeclarationNode::newModifier( DeclarationNode::Signed ); }
-		| UNSIGNED
-				{ $$ = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
-		| VOID
-				{ $$ = DeclarationNode::newBasicType( DeclarationNode::Void ); }
-		| BOOL											// C99
-				{ $$ = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
-		| COMPLEX										// C99
-				{ $$ = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
-		| IMAGINARY										// C99
-				{ $$ = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
-		;
-
-basic_declaration_specifier:
-				// A semantic check is necessary for conflicting storage classes.
-		basic_type_specifier
-		| declaration_qualifier_list basic_type_specifier
-				{ $$ = $2->addQualifiers( $1 ); }
-		| basic_declaration_specifier storage_class		// remaining OBSOLESCENT (see 2)
-				{ $$ = $1->addQualifiers( $2 ); }
-		| basic_declaration_specifier storage_class type_qualifier_list
-				{ $$ = $1->addQualifiers( $2 )->addQualifiers( $3 ); }
-		| basic_declaration_specifier storage_class basic_type_specifier
-				{ $$ = $3->addQualifiers( $2 )->addType( $1 ); }
-		;
-
-basic_type_specifier:
-		direct_type_name
-		| type_qualifier_list_opt indirect_type_name type_qualifier_list_opt
-				{ $$ = $2->addQualifiers( $1 )->addQualifiers( $3 ); }
-		;
-
-direct_type_name:
-				// A semantic check is necessary for conflicting type qualifiers.
-		basic_type_name
-		| type_qualifier_list basic_type_name
-				{ $$ = $2->addQualifiers( $1 ); }
-		| direct_type_name type_qualifier
-				{ $$ = $1->addQualifiers( $2 ); }
-		| direct_type_name basic_type_name
-				{ $$ = $1->addType( $2 ); }
-		;
-
-indirect_type_name:
-		TYPEOF '(' type_name ')'						// GCC: typeof(x) y;
-				{ $$ = $3; }
-		| TYPEOF '(' comma_expression ')'				// GCC: typeof(a+b) y;
-				{ $$ = DeclarationNode::newTypeof( $3 ); }
-		| ATTR_TYPEGENname '(' type_name ')'			// CFA: e.g., @type(x) y;
-				{ $$ = DeclarationNode::newAttr( $1, $3 ); }
-		| ATTR_TYPEGENname '(' comma_expression ')'		// CFA: e.g., @type(a+b) y;
-				{ $$ = DeclarationNode::newAttr( $1, $3 ); }
-		;
-
-sue_declaration_specifier:
-		sue_type_specifier
-		| declaration_qualifier_list sue_type_specifier
-				{ $$ = $2->addQualifiers( $1 ); }
-		| sue_declaration_specifier storage_class		// remaining OBSOLESCENT (see 2)
-				{ $$ = $1->addQualifiers( $2 ); }
-		| sue_declaration_specifier storage_class type_qualifier_list
-				{ $$ = $1->addQualifiers( $2 )->addQualifiers( $3 ); }
-		;
-
-sue_type_specifier:
-		elaborated_type_name							// struct, union, enum
-		| type_qualifier_list elaborated_type_name
-				{ $$ = $2->addQualifiers( $1 ); }
-		| sue_type_specifier type_qualifier
-				{ $$ = $1->addQualifiers( $2 ); }
-		;
-
-typedef_declaration_specifier:
-		typedef_type_specifier
-		| declaration_qualifier_list typedef_type_specifier
-				{ $$ = $2->addQualifiers( $1 ); }
-		| typedef_declaration_specifier storage_class	// remaining OBSOLESCENT (see 2)
-				{ $$ = $1->addQualifiers( $2 ); }
-		| typedef_declaration_specifier storage_class type_qualifier_list
-				{ $$ = $1->addQualifiers( $2 )->addQualifiers( $3 ); }
-		;
-
-typedef_type_specifier:									// typedef types
-		TYPEDEFname
-				{ $$ = DeclarationNode::newFromTypedef( $1 ); }
-		| type_qualifier_list TYPEDEFname
-				{ $$ = DeclarationNode::newFromTypedef( $2 )->addQualifiers( $1 ); }
-		| typedef_type_specifier type_qualifier
-				{ $$ = $1->addQualifiers( $2 ); }
-		;
-
-elaborated_type_name:
-		aggregate_name
-		| enum_name
-		;
-
-aggregate_name:
-		aggregate_key '{' field_declaration_list '}'
-				{ $$ = DeclarationNode::newAggregate( $1, 0, 0, 0, $3 ); }
-		| aggregate_key no_attr_identifier_or_typedef_name
-				{ $$ = DeclarationNode::newAggregate( $1, $2, 0, 0, 0 ); }
-		| aggregate_key no_attr_identifier_or_typedef_name '{' field_declaration_list '}'
-				{ $$ = DeclarationNode::newAggregate( $1, $2, 0, 0, $4 ); }
-		| aggregate_key '(' push type_parameter_list pop ')' '{' field_declaration_list '}' // CFA
-				{ $$ = DeclarationNode::newAggregate( $1, 0, $4, 0, $8 ); }
-		| aggregate_key '(' push type_parameter_list pop ')' no_attr_identifier_or_typedef_name // CFA
-				{ $$ = DeclarationNode::newAggregate( $1, $7, $4, 0, 0 ); }
-		| aggregate_key '(' push type_parameter_list pop ')' no_attr_identifier_or_typedef_name '{' field_declaration_list '}' // CFA
-				{ $$ = DeclarationNode::newAggregate( $1, $7, $4, 0, $9 ); }
-		| aggregate_key '(' push type_parameter_list pop ')' '(' type_name_list ')' '{' field_declaration_list '}' // CFA
-				{ $$ = DeclarationNode::newAggregate( $1, 0, $4, $8, $11 ); }
-		| aggregate_key '(' push type_name_list pop ')' no_attr_identifier_or_typedef_name // CFA
-				// push and pop are only to prevent S/R conflicts
-				{ $$ = DeclarationNode::newAggregate( $1, $7, 0, $4, 0 ); }
-		| aggregate_key '(' push type_parameter_list pop ')' '(' type_name_list ')' no_attr_identifier_or_typedef_name '{' field_declaration_list '}' // CFA
-				{ $$ = DeclarationNode::newAggregate( $1, $10, $4, $8, $12 ); }
-		;
-
-aggregate_key:
-		STRUCT attribute_list_opt
-				{ $$ = DeclarationNode::Struct; }
-		| UNION attribute_list_opt
-				{ $$ = DeclarationNode::Union; }
-		;
-
-field_declaration_list:
-		field_declaration
-				{ $$ = $1; }
-		| field_declaration_list field_declaration
-				{ $$ = $1->appendList( $2 ); }
-		;
-
-field_declaration:
-		new_field_declaring_list ';'					// CFA, new style field declaration
-		| EXTENSION new_field_declaring_list ';'		// GCC
-				{ $$ = $2; }
-		| field_declaring_list ';'
-		| EXTENSION field_declaring_list ';'			// GCC
-				{ $$ = $2; }
-		;
-
-new_field_declaring_list:								// CFA, new style field declaration
-		new_abstract_declarator_tuple					// CFA, no field name
-		| new_abstract_declarator_tuple no_attr_identifier_or_typedef_name
-				{ $$ = $1->addName( $2 ); }
-		| new_field_declaring_list ',' no_attr_identifier_or_typedef_name
-				{ $$ = $1->appendList( $1->cloneType( $3 ) ); }
-		| new_field_declaring_list ','					// CFA, no field name
-				{ $$ = $1->appendList( $1->cloneType( 0 ) ); }
-		;
-
-field_declaring_list:
-		type_specifier field_declarator
-				{ $$ = $2->addType( $1 ); }
-		| field_declaring_list ',' attribute_list_opt field_declarator
-				{ $$ = $1->appendList( $1->cloneBaseType( $4 ) ); }
-		;
-
-field_declarator:
-		// empty
-				{ $$ = DeclarationNode::newName( 0 ); /* XXX */ } // CFA, no field name
-		| bit_subrange_size								// no field name
-				{ $$ = DeclarationNode::newBitfield( $1 ); }
-		| variable_declarator bit_subrange_size_opt
-				// A semantic check is required to ensure bit_subrange only appears on base type int.
-				{ $$ = $1->addBitfield( $2 ); }
-		| typedef_redeclarator bit_subrange_size_opt
-				// A semantic check is required to ensure bit_subrange only appears on base type int.
-				{ $$ = $1->addBitfield( $2 ); }
-		| variable_abstract_declarator					// CFA, no field name
-		;
-
-bit_subrange_size_opt:
-		// empty
-				{ $$ = 0; }
-		| bit_subrange_size
-				{ $$ = $1; }
-		;
-
-bit_subrange_size:
-		':' constant_expression
-				{ $$ = $2; }
-		;
-
-enum_key:
-		ENUM attribute_list_opt
-		;
-
-enum_name:
-		enum_key '{' enumerator_list comma_opt '}'
-				{ $$ = DeclarationNode::newEnum( 0, $3 ); }
-		| enum_key no_attr_identifier_or_typedef_name '{' enumerator_list comma_opt '}'
-				{ $$ = DeclarationNode::newEnum( $2, $4 ); }
-		| enum_key no_attr_identifier_or_typedef_name
-				{ $$ = DeclarationNode::newEnum( $2, 0 ); }
-		;
-
-enumerator_list:
-		no_attr_identifier_or_typedef_name enumerator_value_opt
-				{ $$ = DeclarationNode::newEnumConstant( $1, $2 ); }
-		| enumerator_list ',' no_attr_identifier_or_typedef_name enumerator_value_opt
-				{ $$ = $1->appendList( DeclarationNode::newEnumConstant( $3, $4 ) ); }
-		;
-
-enumerator_value_opt:
-		// empty
-				{ $$ = 0; }
-		| '=' constant_expression
-				{ $$ = $2; }
-		;
-
-// Minimum of one parameter after which ellipsis is allowed only at the end.
-
-new_parameter_type_list_opt:							// CFA
-		// empty
-				{ $$ = 0; }
-		| new_parameter_type_list
-		;
-
-new_parameter_type_list:								// CFA, abstract + real
-		new_abstract_parameter_list
-		| new_parameter_list
-		| new_parameter_list pop ',' push new_abstract_parameter_list
-				{ $$ = $1->appendList( $5 ); }
-		| new_abstract_parameter_list pop ',' push ELLIPSIS
-				{ $$ = $1->addVarArgs(); }
-		| new_parameter_list pop ',' push ELLIPSIS
-				{ $$ = $1->addVarArgs(); }
-		;
-
-new_parameter_list:										// CFA
-				// To obtain LR(1) between new_parameter_list and new_abstract_tuple, the last
-				// new_abstract_parameter_list is factored out from new_parameter_list, flattening the rules
-				// to get lookahead to the ']'.
-		new_parameter_declaration
-		| new_abstract_parameter_list pop ',' push new_parameter_declaration
-				{ $$ = $1->appendList( $5 ); }
-		| new_parameter_list pop ',' push new_parameter_declaration
-				{ $$ = $1->appendList( $5 ); }
-		| new_parameter_list pop ',' push new_abstract_parameter_list pop ',' push new_parameter_declaration
-				{ $$ = $1->appendList( $5 )->appendList( $9 ); }
-		;
-
-new_abstract_parameter_list:							// CFA, new & old style abstract
-		new_abstract_parameter_declaration
-		| new_abstract_parameter_list pop ',' push new_abstract_parameter_declaration
-				{ $$ = $1->appendList( $5 ); }
-		;
-
-parameter_type_list_opt:
-		// empty
-				{ $$ = 0; }
-		| parameter_type_list
-		;
-
-parameter_type_list:
-		parameter_list
-		| parameter_list pop ',' push ELLIPSIS
-				{ $$ = $1->addVarArgs(); }
-		;
-
-parameter_list:											// abstract + real
-		abstract_parameter_declaration
-		| parameter_declaration
-		| parameter_list pop ',' push abstract_parameter_declaration
-				{ $$ = $1->appendList( $5 ); }
-		| parameter_list pop ',' push parameter_declaration
-				{ $$ = $1->appendList( $5 ); }
-		;
-
-// Provides optional identifier names (abstract_declarator/variable_declarator), no initialization, different
-// semantics for typedef name by using typedef_parameter_redeclarator instead of typedef_redeclarator, and
-// function prototypes.
-
-new_parameter_declaration:								// CFA, new & old style parameter declaration
-		parameter_declaration
-		| new_identifier_parameter_declarator_no_tuple identifier_or_typedef_name assignment_opt
-				{ $$ = $1->addName( $2 ); }
-		| new_abstract_tuple identifier_or_typedef_name assignment_opt
-				// To obtain LR(1), these rules must be duplicated here (see new_abstract_declarator).
-				{ $$ = $1->addName( $2 ); }
-		| type_qualifier_list new_abstract_tuple identifier_or_typedef_name assignment_opt
-				{ $$ = $2->addName( $3 )->addQualifiers( $1 ); }
-		| new_function_specifier
-		;
-
-new_abstract_parameter_declaration:						// CFA, new & old style parameter declaration
-		abstract_parameter_declaration
-		| new_identifier_parameter_declarator_no_tuple
-		| new_abstract_tuple
-				// To obtain LR(1), these rules must be duplicated here (see new_abstract_declarator).
-		| type_qualifier_list new_abstract_tuple
-				{ $$ = $2->addQualifiers( $1 ); }
-		| new_abstract_function
-		;
-
-parameter_declaration:
-		declaration_specifier identifier_parameter_declarator assignment_opt
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::ID );
-					$$ = $2->addType( $1 )->addInitializer( new InitializerNode($3) );
-				}
-		| declaration_specifier typedef_parameter_redeclarator assignment_opt
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::ID );
-					$$ = $2->addType( $1 )->addInitializer( new InitializerNode($3) );
-				}
-		;
-
-abstract_parameter_declaration:
-		declaration_specifier
-		| declaration_specifier abstract_parameter_declarator
-				{ $$ = $2->addType( $1 ); }
-		;
-
-// ISO/IEC 9899:1999 Section 6.9.1(6) : "An identifier declared as a typedef name shall not be redeclared as a
-// parameter." Because the scope of the K&R-style parameter-list sees the typedef first, the following is
-// based only on identifiers.  The ANSI-style parameter-list can redefine a typedef name.
-
-identifier_list:										// K&R-style parameter list => no types
-		no_attr_identifier
-				{ $$ = DeclarationNode::newName( $1 ); }
-		| identifier_list ',' no_attr_identifier
-				{ $$ = $1->appendList( DeclarationNode::newName( $3 ) ); }
-		;
-
-identifier_or_typedef_name:
-		identifier
-		| TYPEDEFname
-		| TYPEGENname
-		;
-
-no_01_identifier_or_typedef_name:
-		no_01_identifier
-		| TYPEDEFname
-		| TYPEGENname
-		;
-
-no_attr_identifier_or_typedef_name:
-		no_attr_identifier
-		| TYPEDEFname
-		| TYPEGENname
-		;
-
-type_name_no_function:									// sizeof, alignof, cast (constructor)
-		new_abstract_declarator_tuple					// CFA
-		| type_specifier
-		| type_specifier variable_abstract_declarator
-				{ $$ = $2->addType( $1 ); }
-		;
-
-type_name:												// typeof, assertion
-		new_abstract_declarator_tuple					// CFA
-		| new_abstract_function							// CFA
-		| type_specifier
-		| type_specifier abstract_declarator
-				{ $$ = $2->addType( $1 ); }
-		;
-
-initializer_opt:
-		// empty
-				{ $$ = 0; }
-		| '=' initializer								{ $$ = $2; }
-		;
-
-initializer:
-		assignment_expression							{ $$ = new InitializerNode($1); }
-		| '{' initializer_list comma_opt '}'			{ $$ = new InitializerNode($2, true); }
-		;
-
-initializer_list:
-		initializer
-		| designation initializer						{ $$ = $2->set_designators( $1 ); }
-		| initializer_list ',' initializer				{ $$ = (InitializerNode *)( $1->set_link($3) ); }
-		| initializer_list ',' designation initializer
-				{ $$ = (InitializerNode *)( $1->set_link( $4->set_designators($3) ) ); }
-		;
-
-// There is an unreconcileable parsing problem between C99 and CFA with respect to designators. The problem is
-// use of '=' to separator the designator from the initializer value, as in:
-//
-//		int x[10] = { [1] = 3 };
-//
-// The string "[1] = 3" can be parsed as a designator assignment or a tuple assignment.  To disambiguate this
-// case, CFA changes the syntax from "=" to ":" as the separator between the designator and initializer. GCC
-// does uses ":" for field selection. The optional use of the "=" in GCC, or in this case ":", cannot be
-// supported either due to shift/reduce conflicts
-
-designation:
-		designator_list ':'								// C99, CFA uses ":" instead of "="
-		| no_attr_identifier_or_typedef_name ':'		// GCC, field name
-						{ $$ = new VarRefNode( $1 ); }
-		;
-
-designator_list:										// C99
-		designator
-		| designator_list designator						{ $$ = (ExpressionNode *)($1->set_link( $2 )); }
-		;
-
-designator:
-		'.' no_attr_identifier_or_typedef_name			// C99, field name
-				{ $$ = new VarRefNode( $2 ); }
-		| '[' push assignment_expression pop ']'		// C99, single array element
-				// assignment_expression used instead of constant_expression because of shift/reduce conflicts
-				// with tuple.
-				{ $$ = $3; }
-		| '[' push subrange pop ']'						// CFA, multiple array elements
-				{ $$ = $3; }
-		| '[' push constant_expression ELLIPSIS constant_expression pop ']' // GCC, multiple array elements
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Range), $3, $5); }
-		| '.' '[' push field_list pop ']'				// CFA, tuple field selector
-				{ $$ = $4; }
-		;
-
-// The CFA type system is based on parametric polymorphism, the ability to declare functions with type
-// parameters, rather than an object-oriented type system. This required four groups of extensions:
-//
-// Overloading: function, data, and operator identifiers may be overloaded.
-//
-// Type declarations: "type" is used to generate new types for declaring objects. Similarly, "dtype" is used
-//     for object and incomplete types, and "ftype" is used for function types. Type declarations with
-//     initializers provide definitions of new types. Type declarations with storage class "extern" provide
-//     opaque types.
-//
-// Polymorphic functions: A forall clause declares a type parameter. The corresponding argument is inferred at
-//     the call site. A polymorphic function is not a template; it is a function, with an address and a type.
-//
-// Specifications and Assertions: Specifications are collections of declarations parameterized by one or more
-//     types. They serve many of the purposes of abstract classes, and specification hierarchies resemble
-//     subclass hierarchies. Unlike classes, they can define relationships between types.  Assertions declare
-//     that a type or types provide the operations declared by a specification.  Assertions are normally used
-//     to declare requirements on type arguments of polymorphic functions.
-
-typegen_declaration_specifier:							// CFA
-		typegen_type_specifier
-		| declaration_qualifier_list typegen_type_specifier
-				{ $$ = $2->addQualifiers( $1 ); }
-		| typegen_declaration_specifier storage_class	// remaining OBSOLESCENT (see 2)
-				{ $$ = $1->addQualifiers( $2 ); }
-		| typegen_declaration_specifier storage_class type_qualifier_list
-				{ $$ = $1->addQualifiers( $2 )->addQualifiers( $3 ); }
-		;
-
-typegen_type_specifier:									// CFA
-		TYPEGENname '(' type_name_list ')'
-				{ $$ = DeclarationNode::newFromTypeGen( $1, $3 ); }
-		| type_qualifier_list TYPEGENname '(' type_name_list ')'
-				{ $$ = DeclarationNode::newFromTypeGen( $2, $4 )->addQualifiers( $1 ); }
-		| typegen_type_specifier type_qualifier
-				{ $$ = $1->addQualifiers( $2 ); }
-		;
-
-type_parameter_list:									// CFA
-		type_parameter assignment_opt
-		| type_parameter_list ',' type_parameter assignment_opt
-				{ $$ = $1->appendList( $3 ); }
-		;
-
-type_parameter:											// CFA
-		type_class no_attr_identifier_or_typedef_name
-				{ typedefTable.addToEnclosingScope(*($2), TypedefTable::TD); }
-		  assertion_list_opt
-				{ $$ = DeclarationNode::newTypeParam( $1, $2 )->addAssertions( $4 ); }
-		| type_specifier identifier_parameter_declarator
-		;
-
-type_class:												// CFA
-		TYPE
-				{ $$ = DeclarationNode::Type; }
-		| DTYPE
-				{ $$ = DeclarationNode::Ftype; }
-		| FTYPE
-				{ $$ = DeclarationNode::Dtype; }
-		;
-
-assertion_list_opt:										// CFA
-		// empty
-				{ $$ = 0; }
-		| assertion_list_opt assertion
-				{ $$ = $1 == 0 ? $2 : $1->appendList( $2 ); }
-		;
-
-assertion:												// CFA
-		'|' no_attr_identifier_or_typedef_name '(' type_name_list ')'
-				{
-					typedefTable.openContext( *($2) );
-					$$ = DeclarationNode::newContextUse( $2, $4 );
-				}
-		| '|' '{' push context_declaration_list '}'
-				{ $$ = $4; }
-		| '|' '(' push type_parameter_list pop ')' '{' push context_declaration_list '}' '(' type_name_list ')'
-				{ $$ = 0; }
-		;
-
-type_name_list:											// CFA
-		type_name
-				{ $$ = new TypeValueNode( $1 ); }
-		| assignment_expression
-		| type_name_list ',' type_name
-				{ $$ = (ExpressionNode *)($1->set_link(new TypeValueNode( $3 ))); }
-		| type_name_list ',' assignment_expression
-				{ $$ = (ExpressionNode *)($1->set_link($3)); }
-		;
-
-type_declaring_list:									// CFA
-		TYPE type_declarator
-				{ $$ = $2; }
-		| storage_class_list TYPE type_declarator
-				{ $$ = $3->addQualifiers( $1 ); }
-		| type_declaring_list ',' type_declarator
-				{ $$ = $1->appendList( $3->copyStorageClasses( $1 ) ); }
-		;
-
-type_declarator:										// CFA
-		type_declarator_name assertion_list_opt
-				{ $$ = $1->addAssertions( $2 ); }
-		| type_declarator_name assertion_list_opt '=' type_name
-				{ $$ = $1->addAssertions( $2 )->addType( $4 ); }
-		;
-
-type_declarator_name:									// CFA
-		no_attr_identifier_or_typedef_name
-				{
-					typedefTable.addToEnclosingScope(*($1), TypedefTable::TD);
-					$$ = DeclarationNode::newTypeDecl( $1, 0 );
-				}
-		| no_01_identifier_or_typedef_name '(' push type_parameter_list pop ')'
-				{
-					typedefTable.addToEnclosingScope(*($1), TypedefTable::TG);
-					$$ = DeclarationNode::newTypeDecl( $1, $4 );
-				}
-		;
-
-context_specifier:										// CFA
-		CONTEXT no_attr_identifier_or_typedef_name '(' push type_parameter_list pop ')' '{' '}'
-				{
-					typedefTable.addToEnclosingScope(*($2), TypedefTable::ID );
-					$$ = DeclarationNode::newContext( $2, $5, 0 );
-				}
-		| CONTEXT no_attr_identifier_or_typedef_name '(' push type_parameter_list pop ')' '{'
-				{
-					typedefTable.enterContext( *($2) );
-					typedefTable.enterScope();
-				}
-		  context_declaration_list '}'
-				{
-					typedefTable.leaveContext();
-					typedefTable.addToEnclosingScope(*($2), TypedefTable::ID );
-					$$ = DeclarationNode::newContext( $2, $5, $10 );
-				}
-		;
-
-context_declaration_list:								// CFA
-		context_declaration
-		| context_declaration_list push context_declaration
-				{ $$ = $1->appendList( $3 ); }
-		;
-
-context_declaration:									// CFA
-		new_context_declaring_list pop ';'
-		| context_declaring_list pop ';'
-		;
-
-new_context_declaring_list:								// CFA
-		new_variable_specifier
-				{
-					typedefTable.addToEnclosingScope2( TypedefTable::ID );
-					$$ = $1;
-				}
-		| new_function_specifier
-				{
-					typedefTable.addToEnclosingScope2( TypedefTable::ID );
-					$$ = $1;
-				}
-		| new_context_declaring_list pop ',' push identifier_or_typedef_name
-				{
-					typedefTable.addToEnclosingScope2( *($5), TypedefTable::ID );
-					$$ = $1->appendList( $1->cloneType( $5 ) );
-				}
-		;
-
-context_declaring_list:									// CFA
-		type_specifier declarator
-				{
-					typedefTable.addToEnclosingScope2( TypedefTable::ID );
-					$$ = $2->addType( $1 );
-				}
-		| context_declaring_list pop ',' push declarator
-				{
-					typedefTable.addToEnclosingScope2( TypedefTable::ID );
-					$$ = $1->appendList( $1->cloneBaseType( $5 ) );
-				}
-		;
-
-//***************************** EXTERNAL DEFINITIONS *****************************
-
-translation_unit:
-		// empty
-				{}										// empty input file
-		| external_definition_list
-				{
-					if ( theTree ) {
-						theTree->appendList( $1 );
-					} else {
-						theTree = $1;
-					}
-				}
-		;
-
-external_definition_list:
-		external_definition
-		| external_definition_list push external_definition
-				{ $$ = ($1 != NULL ) ? $1->appendList( $3 ) : $3; }
-		;
-
-external_definition_list_opt:
-		// empty
-				{ $$ = 0; }
-		| external_definition_list
-		;
-
-external_definition:
-		declaration
-		| function_definition
-		| asm_statement									// GCC, global assembler statement
-				{}
-		| EXTERN STRINGliteral
-				{
-					linkageStack.push( linkage );
-					linkage = LinkageSpec::fromString( *$2 );
-				}
-		  '{' external_definition_list_opt '}'			// C++-style linkage specifier
-				{
-					linkage = linkageStack.top();
-					linkageStack.pop();
-					$$ = $5;
-				}
-		| EXTENSION external_definition
-				{ $$ = $2; }
-		;
-
-function_definition:
-		new_function_specifier compound_statement		// CFA
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::ID );
-					typedefTable.leaveScope();
-					$$ = $1->addFunctionBody( $2 );
-				}
-		| declaration_qualifier_list new_function_specifier compound_statement // CFA
-				// declaration_qualifier_list also includes type_qualifier_list, so a semantic check is
-				// necessary to preclude them as a type_qualifier cannot appear in this context.
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::ID );
-					typedefTable.leaveScope();
-					$$ = $2->addFunctionBody( $3 )->addQualifiers( $1 );
-				}
-
-		| declaration_specifier function_declarator compound_statement
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::ID );
-					typedefTable.leaveScope();
-					$$ = $2->addFunctionBody( $3 )->addType( $1 );
-				}
-
-				// These rules are a concession to the "implicit int" type_specifier because there is a
-				// significant amount of code with functions missing a type-specifier on the return type.
-				// Parsing is possible because function_definition does not appear in the context of an
-				// expression (nested functions would preclude this concession). A function prototype
-				// declaration must still have a type_specifier. OBSOLESCENT (see 1)
-		| function_declarator compound_statement
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::ID );
-					typedefTable.leaveScope();
-					$$ = $1->addFunctionBody( $2 );
-				}
-		| type_qualifier_list function_declarator compound_statement
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::ID );
-					typedefTable.leaveScope();
-					$$ = $2->addFunctionBody( $3 )->addQualifiers( $1 );
-				}
-		| declaration_qualifier_list function_declarator compound_statement
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::ID );
-					typedefTable.leaveScope();
-					$$ = $2->addFunctionBody( $3 )->addQualifiers( $1 );
-				}
-		| declaration_qualifier_list type_qualifier_list function_declarator compound_statement
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::ID );
-					typedefTable.leaveScope();
-					$$ = $3->addFunctionBody( $4 )->addQualifiers( $2 )->addQualifiers( $1 );
-				}
-
-				// Old-style K&R function definition, OBSOLESCENT (see 4)
-		| declaration_specifier old_function_declarator push old_declaration_list_opt compound_statement
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::ID );
-					typedefTable.leaveScope();
-					$$ = $2->addOldDeclList( $4 )->addFunctionBody( $5 )->addType( $1 );
-				}
-		| old_function_declarator push old_declaration_list_opt compound_statement
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::ID );
-					typedefTable.leaveScope();
-					$$ = $1->addOldDeclList( $3 )->addFunctionBody( $4 );
-				}
-		| type_qualifier_list old_function_declarator push old_declaration_list_opt compound_statement
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::ID );
-					typedefTable.leaveScope();
-					$$ = $2->addOldDeclList( $4 )->addFunctionBody( $5 )->addQualifiers( $1 );
-				}
-
-				// Old-style K&R function definition with "implicit int" type_specifier, OBSOLESCENT (see 4)
-		| declaration_qualifier_list old_function_declarator push old_declaration_list_opt compound_statement
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::ID );
-					typedefTable.leaveScope();
-					$$ = $2->addOldDeclList( $4 )->addFunctionBody( $5 )->addQualifiers( $1 );
-				}
-		| declaration_qualifier_list type_qualifier_list old_function_declarator push old_declaration_list_opt compound_statement
-				{
-					typedefTable.addToEnclosingScope( TypedefTable::ID );
-					typedefTable.leaveScope();
-					$$ = $3->addOldDeclList( $5 )->addFunctionBody( $6 )->addQualifiers( $2 )->addQualifiers( $1 );
-				}
-		;
-
-declarator:
-		variable_declarator
-		| function_declarator
-		| typedef_redeclarator
-		;
-
-subrange:
-		constant_expression '~' constant_expression		// CFA, integer subrange
-				{ $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Range), $1, $3); }
-		;
-
-asm_name_opt:											// GCC
-		// empty
-		| ASM '(' string_literal_list ')' attribute_list_opt
-		;
-
-attribute_list_opt:										// GCC
-		// empty
-		| attribute_list
-		;
-
-attribute_list:											// GCC
-		attribute
-		| attribute_list attribute
-		;
-
-attribute:												// GCC
-		ATTRIBUTE '(' '(' attribute_parameter_list ')' ')'
-		;
-
-attribute_parameter_list:								// GCC
-		attrib
-		| attribute_parameter_list ',' attrib
-		;
-
-attrib:													// GCC
-		// empty
-		| any_word
-		| any_word '(' comma_expression_opt ')'
-		;
-
-any_word:												// GCC
-		identifier_or_typedef_name {}
-		| storage_class_name {}
-		| basic_type_name {}
-		| type_qualifier {}
-		;
-
-// ============================================================================
-// The following sections are a series of grammar patterns used to parse declarators. Multiple patterns are
-// necessary because the type of an identifier in wrapped around the identifier in the same form as its usage
-// in an expression, as in:
-//
-//		int (*f())[10] { ... };
-//		... (*f())[3] += 1;		// definition mimics usage
-//
-// Because these patterns are highly recursive, changes at a lower level in the recursion require copying some
-// or all of the pattern. Each of these patterns has some subtle variation to ensure correct syntax in a
-// particular context.
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// The set of valid declarators before a compound statement for defining a function is less than the set of
-// declarators to define a variable or function prototype, e.g.:
-//
-//		valid declaration		invalid definition
-//		-----------------		------------------
-//		int f;						int f {}
-//		int *f;						int *f {}
-//		int f[10];				int f[10] {}
-//		int (*f)(int);				int (*f)(int) {}
-//
-// To preclude this syntactic anomaly requires separating the grammar rules for variable and function
-// declarators, hence variable_declarator and function_declarator.
-// ----------------------------------------------------------------------------
-
-// This pattern parses a declaration of a variable that is not redefining a typedef name. The pattern
-// precludes declaring an array of functions versus a pointer to an array of functions.
-
-variable_declarator:
-		paren_identifier attribute_list_opt
-		| variable_ptr
-		| variable_array attribute_list_opt
-		| variable_function attribute_list_opt
-		;
-
-paren_identifier:
-		identifier
-				{
-					typedefTable.setNextIdentifier( *($1) );
-					$$ = DeclarationNode::newName( $1 );
-				}
-		| '(' paren_identifier ')'						// redundant parenthesis
-				{ $$ = $2; }
-		;
-
-variable_ptr:
-		'*' variable_declarator
-				{ $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
-		| '*' type_qualifier_list variable_declarator
-				{ $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
-		| '(' variable_ptr ')'
-				{ $$ = $2; }
-		;
-
-variable_array:
-		paren_identifier array_dimension
-				{ $$ = $1->addArray( $2 ); }
-		| '(' variable_ptr ')' array_dimension
-				{ $$ = $2->addArray( $4 ); }
-		| '(' variable_array ')' multi_array_dimension	// redundant parenthesis
-				{ $$ = $2->addArray( $4 ); }
-		| '(' variable_array ')'						// redundant parenthesis
-				{ $$ = $2; }
-		;
-
-variable_function:
-		'(' variable_ptr ')' '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
-				{ $$ = $2->addParamList( $6 ); }
-		| '(' variable_function ')'						// redundant parenthesis
-				{ $$ = $2; }
-		;
-
-// This pattern parses a function declarator that is not redefining a typedef name. Because functions cannot
-// be nested, there is no context where a function definition can redefine a typedef name. To allow nested
-// functions requires further separation of variable and function declarators in typedef_redeclarator.  The
-// pattern precludes returning arrays and functions versus pointers to arrays and functions.
-
-function_declarator:
-		function_no_ptr attribute_list_opt
-		| function_ptr
-		| function_array attribute_list_opt
-		;
-
-function_no_ptr:
-		paren_identifier '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
-				{ $$ = $1->addParamList( $4 ); }
-		| '(' function_ptr ')' '(' push parameter_type_list_opt pop ')'
-				{ $$ = $2->addParamList( $6 ); }
-		| '(' function_no_ptr ')'						// redundant parenthesis
-				{ $$ = $2; }
-		;
-
-function_ptr:
-		'*' function_declarator
-				{ $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
-		| '*' type_qualifier_list function_declarator
-				{ $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
-		| '(' function_ptr ')'
-				{ $$ = $2; }
-		;
-
-function_array:
-		'(' function_ptr ')' array_dimension
-				{ $$ = $2->addArray( $4 ); }
-		| '(' function_array ')' multi_array_dimension	// redundant parenthesis
-				{ $$ = $2->addArray( $4 ); }
-		| '(' function_array ')'						// redundant parenthesis
-				{ $$ = $2; }
-		;
-
-// This pattern parses an old-style K&R function declarator (OBSOLESCENT, see 4) that is not redefining a
-// typedef name (see function_declarator for additional comments). The pattern precludes returning arrays and
-// functions versus pointers to arrays and functions.
-
-old_function_declarator:
-		old_function_no_ptr
-		| old_function_ptr
-		| old_function_array
-		;
-
-old_function_no_ptr:
-		paren_identifier '(' identifier_list ')'		// function_declarator handles empty parameter
-				{ $$ = $1->addIdList( $3 ); }
-		| '(' old_function_ptr ')' '(' identifier_list ')'
-				{ $$ = $2->addIdList( $5 ); }
-		| '(' old_function_no_ptr ')'					// redundant parenthesis
-				{ $$ = $2; }
-		;
-
-old_function_ptr:
-		'*' old_function_declarator
-				{ $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
-		| '*' type_qualifier_list old_function_declarator
-				{ $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
-		| '(' old_function_ptr ')'
-				{ $$ = $2; }
-		;
-
-old_function_array:
-		'(' old_function_ptr ')' array_dimension
-				{ $$ = $2->addArray( $4 ); }
-		| '(' old_function_array ')' multi_array_dimension // redundant parenthesis
-				{ $$ = $2->addArray( $4 ); }
-		| '(' old_function_array ')'					// redundant parenthesis
-				{ $$ = $2; }
-		;
-
-// This pattern parses a declaration for a variable or function prototype that redefines a typedef name, e.g.:
-//
-//		typedef int foo;
-//		{
-//		   int foo; // redefine typedef name in new scope
-//		}
-//
-// The pattern precludes declaring an array of functions versus a pointer to an array of functions, and
-// returning arrays and functions versus pointers to arrays and functions.
-
-typedef_redeclarator:
-		paren_typedef attribute_list_opt
-		| typedef_ptr
-		| typedef_array attribute_list_opt
-		| typedef_function attribute_list_opt
-		;
-
-paren_typedef:
-		TYPEDEFname
-				{
-				typedefTable.setNextIdentifier( *($1) );
-				$$ = DeclarationNode::newName( $1 );
-				}
-		| '(' paren_typedef ')'
-				{ $$ = $2; }
-		;
-
-typedef_ptr:
-		'*' typedef_redeclarator
-				{ $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
-		| '*' type_qualifier_list typedef_redeclarator
-				{ $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
-		| '(' typedef_ptr ')'
-				{ $$ = $2; }
-		;
-
-typedef_array:
-		paren_typedef array_dimension
-				{ $$ = $1->addArray( $2 ); }
-		| '(' typedef_ptr ')' array_dimension
-				{ $$ = $2->addArray( $4 ); }
-		| '(' typedef_array ')' multi_array_dimension	// redundant parenthesis
-				{ $$ = $2->addArray( $4 ); }
-		| '(' typedef_array ')'							// redundant parenthesis
-				{ $$ = $2; }
-		;
-
-typedef_function:
-		paren_typedef '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
-				{ $$ = $1->addParamList( $4 ); }
-		| '(' typedef_ptr ')' '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
-				{ $$ = $2->addParamList( $6 ); }
-		| '(' typedef_function ')'						// redundant parenthesis
-				{ $$ = $2; }
-		;
-
-// This pattern parses a declaration for a parameter variable or function prototype that is not redefining a
-// typedef name and allows the C99 array options, which can only appear in a parameter list.  The pattern
-// precludes declaring an array of functions versus a pointer to an array of functions, and returning arrays
-// and functions versus pointers to arrays and functions.
-
-identifier_parameter_declarator:
-		paren_identifier attribute_list_opt
-		| identifier_parameter_ptr
-		| identifier_parameter_array attribute_list_opt
-		| identifier_parameter_function attribute_list_opt
-		;
-
-identifier_parameter_ptr:
-		'*' identifier_parameter_declarator
-				{ $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
-		| '*' type_qualifier_list identifier_parameter_declarator
-				{ $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
-		| '(' identifier_parameter_ptr ')'
-				{ $$ = $2; }
-		;
-
-identifier_parameter_array:
-		paren_identifier array_parameter_dimension
-				{ $$ = $1->addArray( $2 ); }
-		| '(' identifier_parameter_ptr ')' array_dimension
-				{ $$ = $2->addArray( $4 ); }
-		| '(' identifier_parameter_array ')' multi_array_dimension // redundant parenthesis
-				{ $$ = $2->addArray( $4 ); }
-		| '(' identifier_parameter_array ')'			// redundant parenthesis
-				{ $$ = $2; }
-		;
-
-identifier_parameter_function:
-		paren_identifier '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
-				{ $$ = $1->addParamList( $4 ); }
-		| '(' identifier_parameter_ptr ')' '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
-				{ $$ = $2->addParamList( $6 ); }
-		| '(' identifier_parameter_function ')'			// redundant parenthesis
-				{ $$ = $2; }
-		;
-
-// This pattern parses a declaration for a parameter variable or function prototype that is redefining a
-// typedef name, e.g.:
-//
-//		typedef int foo;
-//		int f( int foo ); // redefine typedef name in new scope
-//
-// and allows the C99 array options, which can only appear in a parameter list.  In addition, the pattern
-// handles the special meaning of parenthesis around a typedef name:
-//
-//		ISO/IEC 9899:1999 Section 6.7.5.3(11) : "In a parameter declaration, a single typedef name in
-//		parentheses is taken to be an abstract declarator that specifies a function with a single parameter,
-//		not as redundant parentheses around the identifier."
-//
-// which precludes the following cases:
-//
-//		typedef float T;
-//		int f( int ( T [5] ) );						// see abstract_parameter_declarator
-//		int g( int ( T ( int ) ) );				// see abstract_parameter_declarator
-//		int f( int f1( T a[5] ) );				// see identifier_parameter_declarator
-//		int g( int g1( T g2( int p ) ) );		// see identifier_parameter_declarator
-//
-// In essence, a '(' immediately to the left of typedef name, T, is interpreted as starting a parameter type
-// list, and not as redundant parentheses around a redeclaration of T. Finally, the pattern also precludes
-// declaring an array of functions versus a pointer to an array of functions, and returning arrays and
-// functions versus pointers to arrays and functions.
-
-typedef_parameter_redeclarator:
-		typedef attribute_list_opt
-		| typedef_parameter_ptr
-		| typedef_parameter_array attribute_list_opt
-		| typedef_parameter_function attribute_list_opt
-		;
-
-typedef:
-		TYPEDEFname
-				{
-					typedefTable.setNextIdentifier( *($1) );
-					$$ = DeclarationNode::newName( $1 );
-				}
-		;
-
-typedef_parameter_ptr:
-		'*' typedef_parameter_redeclarator
-				{ $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
-		| '*' type_qualifier_list typedef_parameter_redeclarator
-				{ $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
-		| '(' typedef_parameter_ptr ')'
-				{ $$ = $2; }
-		;
-
-typedef_parameter_array:
-		typedef array_parameter_dimension
-				{ $$ = $1->addArray( $2 ); }
-		| '(' typedef_parameter_ptr ')' array_parameter_dimension
-				{ $$ = $2->addArray( $4 ); }
-		;
-
-typedef_parameter_function:
-		typedef '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
-				{ $$ = $1->addParamList( $4 ); }
-		| '(' typedef_parameter_ptr ')' '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
-				{ $$ = $2->addParamList( $6 ); }
-		;
-
-// This pattern parses a declaration of an abstract variable or function prototype, i.e., there is no
-// identifier to which the type applies, e.g.:
-//
-//		sizeof( int );
-//		sizeof( int [10] );
-//
-// The pattern precludes declaring an array of functions versus a pointer to an array of functions, and
-// returning arrays and functions versus pointers to arrays and functions.
-
-abstract_declarator:
-		abstract_ptr
-		| abstract_array attribute_list_opt
-		| abstract_function attribute_list_opt
-		;
-
-abstract_ptr:
-		'*'
-				{ $$ = DeclarationNode::newPointer( 0 ); }
-		| '*' type_qualifier_list
-				{ $$ = DeclarationNode::newPointer( $2 ); }
-		| '*' abstract_declarator
-				{ $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
-		| '*' type_qualifier_list abstract_declarator
-				{ $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
-		| '(' abstract_ptr ')'
-				{ $$ = $2; }
-		;
-
-abstract_array:
-		array_dimension
-		| '(' abstract_ptr ')' array_dimension
-				{ $$ = $2->addArray( $4 ); }
-		| '(' abstract_array ')' multi_array_dimension	// redundant parenthesis
-				{ $$ = $2->addArray( $4 ); }
-		| '(' abstract_array ')'						// redundant parenthesis
-				{ $$ = $2; }
-		;
-
-abstract_function:
-		'(' push parameter_type_list_opt pop ')'		// empty parameter list OBSOLESCENT (see 3)
-				{ $$ = DeclarationNode::newFunction( 0, 0, $3, 0 ); }
-		| '(' abstract_ptr ')' '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
-				{ $$ = $2->addParamList( $6 ); }
-		| '(' abstract_function ')'						// redundant parenthesis
-				{ $$ = $2; }
-		;
-
-array_dimension:
-				// Only the first dimension can be empty.
-		'[' push pop ']'
-				{ $$ = DeclarationNode::newArray( 0, 0, false ); }
-		| '[' push pop ']' multi_array_dimension
-				{ $$ = DeclarationNode::newArray( 0, 0, false )->addArray( $5 ); }
-		| multi_array_dimension
-		;
-
-multi_array_dimension:
-		'[' push assignment_expression pop ']'
-				{ $$ = DeclarationNode::newArray( $3, 0, false ); }
-		| '[' push '*' pop ']'								// C99
-				{ $$ = DeclarationNode::newVarArray( 0 ); }
-		| multi_array_dimension '[' push assignment_expression pop ']'
-				{ $$ = $1->addArray( DeclarationNode::newArray( $4, 0, false ) ); }
-		| multi_array_dimension '[' push '*' pop ']'		// C99
-				{ $$ = $1->addArray( DeclarationNode::newVarArray( 0 ) ); }
-		;
-
-// This pattern parses a declaration of a parameter abstract variable or function prototype, i.e., there is no
-// identifier to which the type applies, e.g.:
-//
-//		int f( int );			// abstract variable parameter; no parameter name specified
-//		int f( int (int) );		// abstract function-prototype parameter; no parameter name specified
-//
-// The pattern precludes declaring an array of functions versus a pointer to an array of functions, and
-// returning arrays and functions versus pointers to arrays and functions.
-
-abstract_parameter_declarator:
-		abstract_parameter_ptr
-		| abstract_parameter_array attribute_list_opt
-		| abstract_parameter_function attribute_list_opt
-		;
-
-abstract_parameter_ptr:
-		'*'
-				{ $$ = DeclarationNode::newPointer( 0 ); }
-		| '*' type_qualifier_list
-				{ $$ = DeclarationNode::newPointer( $2 ); }
-		| '*' abstract_parameter_declarator
-				{ $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
-		| '*' type_qualifier_list abstract_parameter_declarator
-				{ $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
-		| '(' abstract_parameter_ptr ')'
-				{ $$ = $2; }
-		;
-
-abstract_parameter_array:
-		array_parameter_dimension
-		| '(' abstract_parameter_ptr ')' array_parameter_dimension
-				{ $$ = $2->addArray( $4 ); }
-		| '(' abstract_parameter_array ')' multi_array_dimension // redundant parenthesis
-				{ $$ = $2->addArray( $4 ); }
-		| '(' abstract_parameter_array ')'				// redundant parenthesis
-				{ $$ = $2; }
-		;
-
-abstract_parameter_function:
-		'(' push parameter_type_list_opt pop ')'		// empty parameter list OBSOLESCENT (see 3)
-				{ $$ = DeclarationNode::newFunction( 0, 0, $3, 0 ); }
-		| '(' abstract_parameter_ptr ')' '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
-				{ $$ = $2->addParamList( $6 ); }
-		| '(' abstract_parameter_function ')'			// redundant parenthesis
-				{ $$ = $2; }
-		;
-
-array_parameter_dimension:
-				// Only the first dimension can be empty or have qualifiers.
-		array_parameter_1st_dimension
-		| array_parameter_1st_dimension multi_array_dimension
-				{ $$ = $1->addArray( $2 ); }
-		| multi_array_dimension
-		;
-
-// The declaration of an array parameter has additional syntax over arrays in normal variable declarations:
-//
-//		ISO/IEC 9899:1999 Section 6.7.5.2(1) : "The optional type qualifiers and the keyword static shall
-//		appear only in a declaration of a function parameter with an array type, and then only in the
-//		outermost array type derivation."
-
-array_parameter_1st_dimension:
-		'[' push pop ']'
-				{ $$ = DeclarationNode::newArray( 0, 0, false ); }
-		// multi_array_dimension handles the '[' '*' ']' case
-		| '[' push type_qualifier_list '*' pop ']'		// remaining C99
-				{ $$ = DeclarationNode::newVarArray( $3 ); }
-		| '[' push type_qualifier_list pop ']'
-				{ $$ = DeclarationNode::newArray( 0, $3, false ); }
-		// multi_array_dimension handles the '[' assignment_expression ']' case
-		| '[' push type_qualifier_list assignment_expression pop ']'
-				{ $$ = DeclarationNode::newArray( $4, $3, false ); }
-		| '[' push STATIC type_qualifier_list_opt assignment_expression pop ']'
-				{ $$ = DeclarationNode::newArray( $5, $4, true ); }
-		| '[' push type_qualifier_list STATIC assignment_expression pop ']'
-				{ $$ = DeclarationNode::newArray( $5, $3, true ); }
-		;
-
-// This pattern parses a declaration of an abstract variable, i.e., there is no identifier to which the type
-// applies, e.g.:
-//
-//		sizeof( int ); // abstract variable; no identifier name specified
-//
-// The pattern precludes declaring an array of functions versus a pointer to an array of functions, and
-// returning arrays and functions versus pointers to arrays and functions.
-
-variable_abstract_declarator:
-		variable_abstract_ptr
-		| variable_abstract_array attribute_list_opt
-		| variable_abstract_function attribute_list_opt
-		;
-
-variable_abstract_ptr:
-		'*'
-				{ $$ = DeclarationNode::newPointer( 0 ); }
-		| '*' type_qualifier_list
-				{ $$ = DeclarationNode::newPointer( $2 ); }
-		| '*' variable_abstract_declarator
-				{ $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
-		| '*' type_qualifier_list variable_abstract_declarator
-				{ $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
-		| '(' variable_abstract_ptr ')'
-				{ $$ = $2; }
-		;
-
-variable_abstract_array:
-		array_dimension
-		| '(' variable_abstract_ptr ')' array_dimension
-				{ $$ = $2->addArray( $4 ); }
-		| '(' variable_abstract_array ')' multi_array_dimension // redundant parenthesis
-				{ $$ = $2->addArray( $4 ); }
-		| '(' variable_abstract_array ')'				// redundant parenthesis
-				{ $$ = $2; }
-		;
-
-variable_abstract_function:
-		'(' variable_abstract_ptr ')' '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
-				{ $$ = $2->addParamList( $6 ); }
-		| '(' variable_abstract_function ')'			// redundant parenthesis
-				{ $$ = $2; }
-		;
-
-// This pattern parses a new-style declaration for a parameter variable or function prototype that is either
-// an identifier or typedef name and allows the C99 array options, which can only appear in a parameter list.
-
-new_identifier_parameter_declarator_tuple:				// CFA
-		new_identifier_parameter_declarator_no_tuple
-		| new_abstract_tuple
-		| type_qualifier_list new_abstract_tuple
-				{ $$ = $2->addQualifiers( $1 ); }
-		;
-
-new_identifier_parameter_declarator_no_tuple:			// CFA
-		new_identifier_parameter_ptr
-		| new_identifier_parameter_array
-		;
-
-new_identifier_parameter_ptr:							// CFA
-		'*' type_specifier
-				{ $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-		| type_qualifier_list '*' type_specifier
-				{ $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
-		| '*' new_abstract_function
-				{ $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-		| type_qualifier_list '*' new_abstract_function
-				{ $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
-		| '*' new_identifier_parameter_declarator_tuple
-				{ $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-		| type_qualifier_list '*' new_identifier_parameter_declarator_tuple
-				{ $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
-		;
-
-new_identifier_parameter_array:							// CFA
-				// Only the first dimension can be empty or have qualifiers. Empty dimension must be factored
-				// out due to shift/reduce conflict with new-style empty (void) function return type.
-		'[' push pop ']' type_specifier
-				{ $$ = $5->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-		| new_array_parameter_1st_dimension type_specifier
-				{ $$ = $2->addNewArray( $1 ); }
-		| '[' push pop ']' multi_array_dimension type_specifier
-				{ $$ = $6->addNewArray( $5 )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-		| new_array_parameter_1st_dimension multi_array_dimension type_specifier
-				{ $$ = $3->addNewArray( $2 )->addNewArray( $1 ); }
-		| multi_array_dimension type_specifier
-				{ $$ = $2->addNewArray( $1 ); }
-		| '[' push pop ']' new_identifier_parameter_ptr
-				{ $$ = $5->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-		| new_array_parameter_1st_dimension new_identifier_parameter_ptr
-				{ $$ = $2->addNewArray( $1 ); }
-		| '[' push pop ']' multi_array_dimension new_identifier_parameter_ptr
-				{ $$ = $6->addNewArray( $5 )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-		| new_array_parameter_1st_dimension multi_array_dimension new_identifier_parameter_ptr
-				{ $$ = $3->addNewArray( $2 )->addNewArray( $1 ); }
-		| multi_array_dimension new_identifier_parameter_ptr
-				{ $$ = $2->addNewArray( $1 ); }
-		;
-
-new_array_parameter_1st_dimension:
-		'[' push type_qualifier_list '*' pop ']'		// remaining C99
-				{ $$ = DeclarationNode::newVarArray( $3 ); }
-		| '[' push type_qualifier_list assignment_expression pop ']'
-				{ $$ = DeclarationNode::newArray( $4, $3, false ); }
-		| '[' push declaration_qualifier_list assignment_expression pop ']'
-				// declaration_qualifier_list must be used because of shift/reduce conflict with
-				// assignment_expression, so a semantic check is necessary to preclude them as a
-				// type_qualifier cannot appear in this context.
-				{ $$ = DeclarationNode::newArray( $4, $3, true ); }
-		| '[' push declaration_qualifier_list type_qualifier_list assignment_expression pop ']'
-				{ $$ = DeclarationNode::newArray( $5, $4->addQualifiers( $3 ), true ); }
-		;
-
-// This pattern parses a new-style declaration of an abstract variable or function prototype, i.e., there is
-// no identifier to which the type applies, e.g.:
-//
-//		[int] f( int );				// abstract variable parameter; no parameter name specified
-//		[int] f( [int] (int) );		// abstract function-prototype parameter; no parameter name specified
-//
-// These rules need LR(3):
-//
-//		new_abstract_tuple identifier_or_typedef_name
-//		'[' new_parameter_list ']' identifier_or_typedef_name '(' new_parameter_type_list_opt ')'
-//
-// since a function return type can be syntactically identical to a tuple type:
-//
-//		[int, int] t;
-//		[int, int] f( int );
-//
-// Therefore, it is necessary to look at the token after identifier_or_typedef_name to know when to reduce
-// new_abstract_tuple. To make this LR(1), several rules have to be flattened (lengthened) to allow the
-// necessary lookahead. To accomplish this, new_abstract_declarator has an entry point without tuple, and
-// tuple declarations are duplicated when appearing with new_function_specifier.
-
-new_abstract_declarator_tuple:							// CFA
-		new_abstract_tuple
-		| type_qualifier_list new_abstract_tuple
-				{ $$ = $2->addQualifiers( $1 ); }
-		| new_abstract_declarator_no_tuple
-		;
-
-new_abstract_declarator_no_tuple:						// CFA
-		new_abstract_ptr
-		| new_abstract_array
-		;
-
-new_abstract_ptr:										// CFA
-		'*' type_specifier
-				{ $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-		| type_qualifier_list '*' type_specifier
-				{ $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
-		| '*' new_abstract_function
-				{ $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-		| type_qualifier_list '*' new_abstract_function
-				{ $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
-		| '*' new_abstract_declarator_tuple
-				{ $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-		| type_qualifier_list '*' new_abstract_declarator_tuple
-				{ $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
-		;
-
-new_abstract_array:										// CFA
-				// Only the first dimension can be empty. Empty dimension must be factored out due to
-				// shift/reduce conflict with empty (void) function return type.
-		'[' push pop ']' type_specifier
-				{ $$ = $5->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-		| '[' push pop ']' multi_array_dimension type_specifier
-				{ $$ = $6->addNewArray( $5 )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-		| multi_array_dimension type_specifier
-				{ $$ = $2->addNewArray( $1 ); }
-		| '[' push pop ']' new_abstract_ptr
-				{ $$ = $5->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-		| '[' push pop ']' multi_array_dimension new_abstract_ptr
-				{ $$ = $6->addNewArray( $5 )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-		| multi_array_dimension new_abstract_ptr
-				{ $$ = $2->addNewArray( $1 ); }
-		;
-
-new_abstract_tuple:										// CFA
-		'[' push new_abstract_parameter_list pop ']'
-				{ $$ = DeclarationNode::newTuple( $3 ); }
-		;
-
-new_abstract_function:									// CFA
-		'[' push pop ']' '(' new_parameter_type_list_opt ')'
-				{ $$ = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), $6, 0 ); }
-		| new_abstract_tuple '(' push new_parameter_type_list_opt pop ')'
-				{ $$ = DeclarationNode::newFunction( 0, $1, $4, 0 ); }
-		| new_function_return '(' push new_parameter_type_list_opt pop ')'
-				{ $$ = DeclarationNode::newFunction( 0, $1, $4, 0 ); }
-		;
-
-// 1) ISO/IEC 9899:1999 Section 6.7.2(2) : "At least one type specifier shall be given in the declaration
-//    specifiers in each declaration, and in the specifier-qualifier list in each structure declaration and
-//    type name."
-//
-// 2) ISO/IEC 9899:1999 Section 6.11.5(1) : "The placement of a storage-class specifier other than at the
-//    beginning of the declaration specifiers in a declaration is an obsolescent feature."
-//
-// 3) ISO/IEC 9899:1999 Section 6.11.6(1) : "The use of function declarators with empty parentheses (not
-//    prototype-format parameter type declarators) is an obsolescent feature."
-//
-// 4) ISO/IEC 9899:1999 Section 6.11.7(1) : "The use of function definitions with separate parameter
-//    identifier and declaration lists (not prototype-format parameter type and identifier declarators) is an
-//    obsolescent feature.
-
-//************************* MISCELLANEOUS ********************************
-
-comma_opt:												// redundant comma
-		// empty
-		| ','
-		;
-
-assignment_opt:
-		// empty
-				{ $$ = 0; }
-		| '=' assignment_expression
-				{ $$ = $2; }
-		;
-
-%%
-// ----end of grammar----
-
-void yyerror( char *string ) {
-	using std::cout;
-	using std::endl;
-	cout << "Error ";
-	if ( yyfilename ) {
-		cout << "in file " << yyfilename << " ";
-	}
-	cout << "at line " << yylineno << " reading token \"" << *(yylval.tok.str) << "\"" << endl;
-}
-
-// Local Variables: //
-// fill-column: 110 //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: src/Parser/lex.cc
===================================================================
--- src/Parser/lex.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Parser/lex.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,3658 @@
+
+#line 3 "Parser/lex.cc"
+
+#define  YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with  platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types. 
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t; 
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN               (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN              (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN              (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX               (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX              (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX              (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX              (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX             (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX             (4294967295U)
+#endif
+
+#endif /* ! C99 */
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else	/* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif	/* defined (__STDC__) */
+#endif	/* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN (yy_start) = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START (((yy_start) - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE yyrestart(yyin  )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k.
+ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
+ * Ditto for the __ia64__ case accordingly.
+ */
+#define YY_BUF_SIZE 32768
+#else
+#define YY_BUF_SIZE 16384
+#endif /* __ia64__ */
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+extern int yyleng;
+
+extern FILE *yyin, *yyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+    /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
+     *       access to the local variable yy_act. Since yyless() is a macro, it would break
+     *       existing scanners that call yyless() from OUTSIDE yylex. 
+     *       One obvious solution it to make yy_act a global. I tried that, and saw
+     *       a 5% performance hit in a non-yylineno scanner, because yy_act is
+     *       normally declared as a register variable-- so it is not worth it.
+     */
+    #define  YY_LESS_LINENO(n) \
+            do { \
+                int yyl;\
+                for ( yyl = n; yyl < yyleng; ++yyl )\
+                    if ( yytext[yyl] == '\n' )\
+                        --yylineno;\
+            }while(0)
+    
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up yytext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+		*yy_cp = (yy_hold_char); \
+		YY_RESTORE_YY_MORE_OFFSET \
+		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+		} \
+	while ( 0 )
+
+#define unput(c) yyunput( c, (yytext_ptr)  )
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+	{
+	FILE *yy_input_file;
+
+	char *yy_ch_buf;		/* input buffer */
+	char *yy_buf_pos;		/* current position in input buffer */
+
+	/* Size of input buffer in bytes, not including room for EOB
+	 * characters.
+	 */
+	yy_size_t yy_buf_size;
+
+	/* Number of characters read into yy_ch_buf, not including EOB
+	 * characters.
+	 */
+	int yy_n_chars;
+
+	/* Whether we "own" the buffer - i.e., we know we created it,
+	 * and can realloc() it to grow it, and should free() it to
+	 * delete it.
+	 */
+	int yy_is_our_buffer;
+
+	/* Whether this is an "interactive" input source; if so, and
+	 * if we're using stdio for input, then we want to use getc()
+	 * instead of fread(), to make sure we stop fetching input after
+	 * each newline.
+	 */
+	int yy_is_interactive;
+
+	/* Whether we're considered to be at the beginning of a line.
+	 * If so, '^' rules will be active on the next match, otherwise
+	 * not.
+	 */
+	int yy_at_bol;
+
+    int yy_bs_lineno; /**< The line count. */
+    int yy_bs_column; /**< The column count. */
+    
+	/* Whether to try to fill the input buffer when we reach the
+	 * end of it.
+	 */
+	int yy_fill_buffer;
+
+	int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+	/* When an EOF's been seen but there's still some text to process
+	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+	 * shouldn't try reading from the input source any more.  We might
+	 * still have a bunch of tokens to match, though, because of
+	 * possible backing-up.
+	 *
+	 * When we actually see the EOF, we change the status to "new"
+	 * (via yyrestart()), so that the user can continue scanning by
+	 * just pointing yyin at a new input file.
+	 */
+#define YY_BUFFER_EOF_PENDING 2
+
+	};
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* Stack of input buffers. */
+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+                          : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+
+/* yy_hold_char holds the character lost when yytext is formed. */
+static char yy_hold_char;
+static int yy_n_chars;		/* number of characters read into yy_ch_buf */
+int yyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 0;		/* whether we need to initialize */
+static int yy_start = 0;	/* start state number */
+
+/* Flag which is used to allow yywrap()'s to do buffer switches
+ * instead of setting up a fresh yyin.  A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void yyrestart (FILE *input_file  );
+void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
+YY_BUFFER_STATE yy_create_buffer (FILE *file,int size  );
+void yy_delete_buffer (YY_BUFFER_STATE b  );
+void yy_flush_buffer (YY_BUFFER_STATE b  );
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer  );
+void yypop_buffer_state (void );
+
+static void yyensure_buffer_stack (void );
+static void yy_load_buffer_state (void );
+static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
+
+#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
+YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len  );
+
+void *yyalloc (yy_size_t  );
+void *yyrealloc (void *,yy_size_t  );
+void yyfree (void *  );
+
+#define yy_new_buffer yy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+	{ \
+	if ( ! YY_CURRENT_BUFFER ){ \
+        yyensure_buffer_stack (); \
+		YY_CURRENT_BUFFER_LVALUE =    \
+            yy_create_buffer(yyin,YY_BUF_SIZE ); \
+	} \
+	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+	}
+
+#define yy_set_bol(at_bol) \
+	{ \
+	if ( ! YY_CURRENT_BUFFER ){\
+        yyensure_buffer_stack (); \
+		YY_CURRENT_BUFFER_LVALUE =    \
+            yy_create_buffer(yyin,YY_BUF_SIZE ); \
+	} \
+	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+	}
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+/* Begin user sect3 */
+
+typedef unsigned char YY_CHAR;
+
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+
+typedef int yy_state_type;
+
+extern int yylineno;
+
+int yylineno = 1;
+
+extern char *yytext;
+#define yytext_ptr yytext
+
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (yyconst char msg[]  );
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+	(yytext_ptr) = yy_bp; \
+	yyleng = (size_t) (yy_cp - yy_bp); \
+	(yy_hold_char) = *yy_cp; \
+	*yy_cp = '\0'; \
+	(yy_c_buf_p) = yy_cp;
+
+#define YY_NUM_RULES 171
+#define YY_END_OF_BUFFER 172
+/* This struct is not used in this scanner,
+   but its presence is necessary. */
+struct yy_trans_info
+	{
+	flex_int32_t yy_verify;
+	flex_int32_t yy_nxt;
+	};
+static yyconst flex_int16_t yy_accept[826] =
+    {   0,
+        0,    0,    0,    0,    0,    0,  108,  108,  111,  111,
+      172,  170,    7,    9,    8,  131,  110,   95,  136,  139,
+      107,  118,  119,  134,  132,  122,  133,  125,  135,  100,
+      101,  102,  123,  124,  141,  143,  142,  144,  170,   95,
+      116,  170,  117,  137,   95,   97,   95,   95,   95,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
+       95,  120,  140,  121,  138,    7,  170,    4,    4,  171,
+       98,  171,   99,  108,  109,  115,  111,  112,    7,    9,
+        0,    8,  148,  166,   95,    0,  160,  130,  153,  161,
+      158,  145,  156,  146,  157,  155,    0,  105,    3,    0,
+
+      159,  105,  103,    0,    0,  103,  103,    0,    0,  103,
+      102,  102,  102,    0,  102,  128,  129,  127,  149,  151,
+      147,  152,  150,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   96,    0,
+      110,  107,   95,    0,    0,  163,   95,   95,   95,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
+       95,   95,   36,   95,   95,   95,   95,   95,   95,   95,
+       95,   95,   95,   53,   95,   95,   95,   95,   95,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,   95,  162,
+      154,    7,    0,    0,    0,    2,    0,    5,   98,    0,
+
+        0,    0,  108,    0,  114,  113,  113,    0,    0,    0,
+      111,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  126,  105,    0,  105,
+        0,    0,    6,    0,  103,    0,    0,    0,  105,    0,
+      103,  103,  103,  103,    0,  104,    0,    0,  102,  102,
+      102,  102,    0,  164,  165,    0,  168,  167,    0,    0,
+        0,   96,    0,    0,    0,    0,    0,    0,    0,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,   14,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
+
+       95,   95,   95,   95,   95,   47,   95,   95,   95,   60,
+       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
+       95,   95,   82,   95,   95,   95,   95,   95,   95,   95,
+        0,    0,    0,    0,    0,    0,    0,    0,  113,    0,
+        0,    0,    0,    0,  113,    0,    0,  169,    0,    0,
+        0,    0,    0,    0,    0,    0,  105,    0,    0,    0,
+      105,    0,  103,  103,    0,    0,  104,  104,    0,  104,
+        0,  104,  102,  102,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   95,   95,   95,   95,   95,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
+
+       95,   95,   95,   95,   95,   95,   20,   95,   23,   95,
+       25,   95,   95,   95,   95,   95,   95,   39,   40,   95,
+       95,   95,   95,   95,   95,   95,   52,   95,   63,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
+       83,   95,   95,   90,   95,   95,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      113,    0,    0,    0,    0,    0,  105,    0,    0,    0,
+        0,    0,    0,  104,  104,    0,  106,    0,  104,  104,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   95,   95,   21,   95,   95,   95,   95,
+
+       95,   95,   95,   15,   95,   95,   95,   95,   95,   95,
+       95,   95,   95,   95,   95,   95,   95,   22,   24,   95,
+       30,   95,   95,   95,   95,   38,   95,   95,   95,   45,
+       95,   95,   50,   95,   95,   95,   95,   95,   71,   95,
+       95,   95,   95,   95,   81,   95,   95,   88,   95,   95,
+       94,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      106,    0,    0,  104,  106,  106,    0,  104,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   95,    0,
+       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
+
+       95,   95,   95,   95,   95,   55,   95,   95,   95,   95,
+       95,   95,   95,   26,   95,   95,   95,   37,   42,   95,
+       95,   48,   95,   57,   64,   95,   95,   70,   72,   75,
+       76,   78,   79,   95,   85,   95,   95,    0,    1,    0,
+        0,    0,    0,    0,    0,   98,    0,    0,    0,  113,
+        0,    0,    0,    0,  106,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   95,   95,   17,   95,   95,
+       95,   95,   95,   95,   95,   16,   95,   95,   31,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,   95,   33,
+       95,   35,   95,   44,   49,   95,   95,   84,   95,   95,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   10,   11,   27,   51,   95,   95,   95,
+       95,   95,   95,   95,   95,   95,   95,   56,   58,   61,
+       95,   95,   73,   86,   95,   34,   43,   66,   67,   89,
+       91,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   95,   65,   95,   95,   12,   95,   28,
+       32,   95,   95,   95,   62,   95,   95,   95,   95,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   54,   95,   95,   95,   95,   95,   95,   46,
+       59,   68,   74,   87,   92,    0,    0,    0,    0,    0,
+
+        0,    0,    0,   95,   95,   13,   18,   29,   95,   95,
+       95,    0,    0,   95,   95,   95,   95,   69,   93,   95,
+       80,   19,   41,   77,    0
+    } ;
+
+static yyconst flex_int32_t yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        4,    5,    6,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    7,    8,    9,   10,   11,   12,   13,   14,   15,
+       16,   17,   18,   19,   20,   21,   22,   23,   24,   25,
+       26,   26,   26,   26,   26,   27,   28,   29,   30,   31,
+       32,   33,   34,   35,   36,   37,   38,   39,   40,   41,
+       42,   11,   43,   11,   11,   44,   11,   45,   11,   46,
+       11,   11,   47,   48,   49,   11,   11,   50,   11,   11,
+       51,   52,   53,   54,   55,   56,   57,   58,   59,   60,
+
+       61,   62,   63,   64,   65,   11,   66,   67,   68,   69,
+       70,   71,   11,   72,   73,   74,   75,   76,   77,   78,
+       79,   80,   81,   82,   83,   84,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1
+    } ;
+
+static yyconst flex_int32_t yy_meta[85] =
+    {   0,
+        1,    1,    2,    1,    1,    1,    1,    1,    3,    1,
+        4,    1,    1,    5,    1,    1,    1,    1,    1,    1,
+        6,    1,    7,    7,    7,    7,    7,    7,    1,    1,
+        1,    1,    1,    1,    1,    8,    8,    8,    8,    8,
+        8,    4,    4,    9,    4,   10,    4,    4,    9,    4,
+        1,   11,    1,    1,   12,    1,    8,    8,    8,    8,
+        8,    8,    4,    4,    4,    4,    9,    4,    4,    4,
+       10,    4,    4,    4,    9,    4,    4,    4,    4,    4,
+        1,    1,    1,    1
+    } ;
+
+static yyconst flex_int16_t yy_base[999] =
+    {   0,
+        0,   83, 2266, 2265,   93,    0,  175,  176,  177,  178,
+     2281, 2568,  189, 2568,  195,   54, 2568, 2223,   59,  171,
+     2568, 2568, 2568,   55,  186, 2568,  189,  187,  202,  214,
+      272,    0, 2241, 2568,  214, 2241,  150,  340, 2215,  222,
+     2568,  157, 2568, 2234,  277, 2568,  192,  133,  196,  198,
+      204,  271,  155,  218,  181,  200,  266,  238,  337,  224,
+      227, 2568,  223, 2568, 2231,  372,  400, 2568, 2237, 2568,
+     2206,  213, 2568,    0, 2568,  427,    0, 2568,  363, 2568,
+      381,  393, 2568,  498, 2205,  229, 2568, 2568, 2568, 2568,
+     2568, 2217, 2568, 2216, 2568, 2568, 2228,  558, 2568, 2240,
+
+     2568,  603,  385,  443,  419,  259,  239,  280,  399,  406,
+        0,  305,  240,  335,  411, 2568, 2568, 2568, 2210, 2568,
+     2568, 2568, 2209, 2188,  215,  277, 2203,  310,  383,  384,
+      327,  425,  380,  399, 2180,  448, 2130,  458, 2160,  288,
+     2568, 2568,  486, 2151, 2150, 2568,  420,  423,  439,  456,
+      445,  455,  460,  329,  483,  469,  462,  467,  480,  494,
+      396,  471,  472,  487,  470,  513,  489,  506,  508,  509,
+      386,  510,  516, 2152,  520,  522,  518,  541,  526,  543,
+      540,  551,  549,  553,  565,  598,  572,  581,  557, 2568,
+     2568,  669,  659, 2195,  686, 2568,  692, 2568, 2145,  559,
+
+     2141, 2135,    0,  649, 2568, 2568,  679, 2134, 2133, 2127,
+        0, 2149,  535,  606,  607,  674,  635,  625,  646,  664,
+      689, 2146,  692,  693, 2119, 2118, 2568,  712,  723, 2568,
+     2117, 2165, 2568,  714,    0,  555,  705,  759,  765,  776,
+      593, 2568, 2123, 2099,    0,  784, 2141,  787,  632, 2568,
+     2116, 2087,  798, 2568, 2568, 2119, 2568, 2568,  710,  725,
+     2099, 2094,  720, 2090, 2089, 2085,    0, 2084,    0,  712,
+      548,  710,  766,  767,  597,  745,  711,  777,  764,  788,
+      720,  783,  792,  713,  639,  789,  611,  793, 2086,  794,
+      791,  795,  810,  800,  805,  813,  814,  361,  818,  815,
+
+      816,  821,  825,  822,  826,  828,  829,  836,  838, 2080,
+      841,  842,  843,  839,  844,  845,  846,  849,  847,  853,
+      855,  860, 2079,  859,  905,  864,  866,  872,  870,  871,
+      933,  930, 2075, 2069, 2068,    0, 2067,    0,  920,  924,
+     2061,    0, 2060,    0, 2059,    0, 2074, 2568,  919,  920,
+     2054, 2051,    0, 2045,    0,  935,  941,  953,  963,  974,
+      986,  996, 2568, 2568,  960,  961, 1013,  989, 1047,  926,
+     1045,  968, 2568, 2568, 2044, 2043, 2037,    0, 2036,    0,
+     2035,    0, 2014,    0,  874,  873,  987,  903,  931,  932,
+      984,  920,  994,  995,  974,  976, 1009, 1024, 1017,  992,
+
+     1029, 1027,  952, 1030, 1034, 1040, 2016, 1031, 2011, 1047,
+     2010, 1049, 1043, 1054, 1038, 1056, 1057, 2009, 2003, 1052,
+     1058, 1062, 1069, 1073, 1074, 1075, 2002, 1076, 2001, 1078,
+     1079, 1082, 1083, 1085, 1081, 1086, 1092, 1089, 1099,  583,
+     1108, 1095, 1087, 1995, 1097, 1109, 1160, 1991,    0, 1990,
+        0, 1984,    0, 1983,    0, 1149, 1982,    0, 1978,    0,
+     1977, 1976, 1972,    0, 1971,    0, 1156, 1162, 1207, 1121,
+     1218, 1149, 1120, 1144, 2568, 1224, 1230, 1241, 1981, 1954,
+     1959, 1957,    0, 1953,    0, 1951,    0, 1945,    0, 1944,
+        0, 1943,    0, 1125, 1144, 1940, 1146, 1149, 1147, 1153,
+
+     1150, 1218, 1162, 1110, 1156, 1155, 1164, 1211, 1224, 1225,
+     1226,  164, 1228, 1208, 1170, 1232, 1238, 1939, 1938, 1235,
+     1932, 1227, 1231, 1234, 1242, 1931, 1246, 1247, 1250, 1930,
+     1252, 1255, 1924, 1257, 1261, 1254, 1256, 1258, 1923, 1264,
+      709, 1271, 1262, 1268, 1922, 1273, 1277, 1916, 1274, 1279,
+     1915, 1963, 1905,    0, 1904,    0, 1903,    0, 1897,    0,
+     1896,    0, 1895,    0, 1891,    0, 1890,    0, 1322, 1328,
+     1334, 1345, 1889, 2568, 1356, 2568, 1380, 2568, 1885,    0,
+     1884,    0, 1883,    0, 1850,    0,    0,    0, 1852,    0,
+     1342, 1281, 1315, 1322, 1333, 1289, 1283, 1338, 1340, 1336,
+
+     1361, 1343, 1341, 1362, 1364, 1365, 1367, 1397, 1373, 1314,
+     1376, 1375, 1377, 1847, 1378, 1380, 1382, 1846, 1845, 1381,
+     1387, 1839, 1389, 1838, 1837, 1396, 1391, 1833, 1832, 1831,
+     1827, 1826, 1825, 1392, 1818, 1407, 1394, 1846, 2568, 1793,
+        0, 1792,    0,    0,    0, 1791,    0,    0,    0, 2568,
+        0,    0,    0,    0, 1446, 1452, 1497, 1787,    0, 1786,
+        0,    0,    0,    0, 1782, 1408, 1430, 1784, 1410, 1432,
+     1437, 1411, 1412, 1443, 1433, 1783, 1447, 1445, 1457, 1413,
+     1476, 1463, 1450, 1477, 1475, 1474, 1480, 1479, 1481, 1779,
+     1482, 1778, 1483, 1777, 1773, 1464, 1485, 1772, 1490, 1486,
+
+        0,    0, 1768, 1764, 1763, 1762, 1537,    0, 1758, 1757,
+     1756, 1752, 1751, 1753, 1749, 1748, 1747, 1496, 1497, 1499,
+     1502, 1493, 1492, 1501, 1518, 1519, 1547, 1738, 1522, 1737,
+     1523, 1458, 1528, 1530, 1524, 1734, 1733, 1732, 1715, 1707,
+     1706, 1700, 1694, 1691, 1683, 1682, 1663, 1662, 1661, 1653,
+     1652, 1613, 1612, 1529, 1614, 1534, 1535, 1538, 1536, 1542,
+     1613, 1543, 1562, 1546, 1612, 1544, 1548, 1554, 1550, 1608,
+     1607, 1606, 1605, 1604, 1603, 1602, 1601, 1600, 1598, 1597,
+     1567, 1566, 1505, 1552, 1560, 1565, 1563, 1571, 1564, 1286,
+     1285, 1575, 1188, 1158, 1576, 1001,  997,  950,  901,  753,
+
+      752,  642,  556, 1577, 1580,  519, 1584,  475, 1588, 1589,
+     1590,  471,  407, 1582, 1583, 1594, 1596,  353,  298, 1595,
+      274,  234,  233,  165, 2568, 1669, 1681, 1693, 1702, 1711,
+     1723, 1732, 1744, 1756, 1768, 1775, 1784, 1790, 1796, 1802,
+     1808, 1814, 1820, 1826, 1832, 1838, 1850, 1856, 1859, 1866,
+     1868, 1874, 1880, 1886, 1888, 1894, 1899, 1911, 1923, 1929,
+     1935, 1941, 1947, 1949, 1955, 1957, 1963, 1965, 1971, 1973,
+     1979, 1981, 1987, 1989, 1995, 1997, 2003, 2010, 2016, 2022,
+     2028, 2034, 2036, 2042, 2044, 2050, 2052, 2058, 2063, 2075,
+     2081, 2087, 2089, 2095, 2097, 2103, 2105, 2111, 2113, 2119,
+
+     2121, 2127, 2129, 2135, 2141, 2143, 2149, 2151, 2157, 2163,
+     2169, 2171, 2177, 2179, 2185, 2187, 2193, 2195, 2201, 2203,
+     2209, 2214, 2226, 2232, 2238, 2240, 2246, 2248, 2254, 2256,
+     2262, 2264, 2270, 2272, 2278, 2280, 2286, 2288, 2294, 2296,
+     2302, 2308, 2310, 2316, 2318, 2324, 2326, 2332, 2334, 2336,
+     2341, 2347, 2355, 2361, 2367, 2369, 2375, 2377, 2379, 2384,
+     2390, 2392, 2394, 2396, 2398, 2400, 2402, 2404, 2410, 2412,
+     2418, 2420, 2422, 2424, 2426, 2435, 2441, 2443, 2445, 2451,
+     2457, 2463, 2465, 2471, 2477, 2483, 2489, 2495, 2501, 2507,
+     2513, 2519, 2525, 2531, 2537, 2543, 2549, 2555
+
+    } ;
+
+static yyconst flex_int16_t yy_def[999] =
+    {   0,
+      825,    1,  826,  826,  825,    5,  827,  827,  828,  828,
+      825,  825,  825,  825,  825,  825,  825,  829,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,   31,  825,  825,  825,  825,  825,  825,  830,  829,
+      825,  825,  825,  825,  829,  825,  829,  829,  829,  829,
+      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
+      829,  825,  825,  825,  825,  825,  831,  825,  825,  825,
+      832,  825,  825,  833,  825,  825,  834,  825,  825,  825,
+      825,  825,  825,  825,  829,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  835,
+
+      825,  825,   30,  825,  825,  825,  825,  836,   30,  825,
+       31,  825,  825,   31,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  837,  825,
+      825,  825,  829,  838,  839,  825,  829,  829,  829,  829,
+      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
+      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
+      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
+      829,  829,  829,  829,  829,  829,  829,  829,  829,  825,
+      825,  825,  831,  831,  831,  825,  831,  825,  832,  825,
+
+      840,  841,  833,  825,  825,  825,  825,  842,  843,  844,
+      834,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  845,  846,  825,  825,  825,  825,
+      228,  847,  825,  825,  103,  103,  825,  825,  825,  825,
+      825,  825,  825,  825,  848,  849,  850,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  837,  825,  851,  852,  853,  854,  855,  856,  857,
+      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
+      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
+      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
+
+      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
+      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
+      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
+      858,  859,  860,  861,  862,  863,  864,  865,  825,  825,
+      866,  867,  868,  869,  870,  871,  825,  825,  825,  825,
+      825,  872,  873,  874,  875,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  876,  877,  878,  825,  825,  825,
+      878,  825,  825,  825,  879,  880,  881,  882,  883,  884,
+      885,  886,  887,  888,  889,  889,  889,  889,  889,  889,
+      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
+
+      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
+      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
+      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
+      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
+      889,  889,  889,  889,  889,  889,  890,  891,  892,  893,
+      894,  895,  896,  897,  898,  825,  899,  900,  901,  902,
+      903,  903,  904,  905,  906,  907,  825,  825,  825,  908,
+      825,  908,  825,  825,  825,  825,  825,  825,  825,  825,
+      909,  910,  911,  912,  913,  914,  915,  916,  917,  918,
+      919,  920,  921,  922,  922,  922,  922,  922,  922,  922,
+
+      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
+      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
+      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
+      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
+      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
+      922,  923,  924,  925,  926,  927,  928,  929,  930,  931,
+      932,  933,  934,  935,  936,  937,  938,  939,  825,  825,
+      825,  825,  940,  825,  825,  825,  825,  825,  941,  942,
+      943,  944,  945,  946,  947,  948,  949,  950,  951,  952,
+      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
+
+      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
+      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
+      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
+      951,  951,  951,  951,  951,  951,  951,  953,  825,  954,
+      955,  956,  957,  958,  959,  960,  961,  962,  963,  825,
+      964,  965,  966,  967,  825,  825,  825,  968,  969,  970,
+      971,  972,  973,  974,  975,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+
+      977,  978,  956,  979,  980,  981,  825,  982,  968,  970,
+      983,  984,  975,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  985,  986,  979,  987,  980,  988,  981,  989,  990,
+      983,  991,  984,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  992,
+      985,  993,  986,  994,  987,  995,  988,  996,  989,  997,
+      990,  991,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  998,  992,  993,  994,  995,
+
+      970,  996,  997,  976,  976,  976,  976,  976,  976,  976,
+      976,  998,  970,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,    0,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825
+
+    } ;
+
+static yyconst flex_int16_t yy_nxt[2653] =
+    {   0,
+       12,   13,   14,   15,   15,   15,   13,   16,   17,   12,
+       18,   19,   20,   21,   22,   23,   24,   25,   26,   27,
+       28,   29,   30,   31,   32,   32,   32,   32,   33,   34,
+       35,   36,   37,   38,   39,   18,   18,   18,   18,   18,
+       18,   18,   18,   40,   18,   18,   18,   18,   40,   18,
+       41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
+       51,   52,   53,   18,   54,   18,   55,   18,   18,   18,
+       18,   56,   57,   58,   59,   60,   61,   18,   18,   18,
+       62,   63,   64,   65,   66,   83,   91,   84,   84,   66,
+       87,   88,   67,   70,   70,   70,   70,   70,   70,   70,
+
+       70,   70,   70,   71,   70,   70,   70,   70,   70,   70,
+       70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
+       70,   70,   70,   70,   70,   70,   70,   70,   71,   71,
+       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
+       71,   71,   71,   70,   72,   70,   70,   71,   73,   71,
+       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
+       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
+       71,   71,   71,   70,   70,   70,   70,   75,   75,   78,
+       78,  122,  123,   89,   86,   78,   78,  608,   75,   75,
+       79,   80,   81,   81,   81,   79,   81,   80,   82,   82,
+
+       82,   81,   90,   92,  158,  144,   86,   97,   94,   98,
+       98,   98,   98,   98,   98,   86,   86,   93,   99,   84,
+       95,   96,   84,  100,  173,  117,   76,   76,   76,   76,
+      141,  145,   86,  101,  102,  142,  103,  103,  103,  103,
+      104,  104,  118,   86,  119,  120,  256,   86,  257,   86,
+      176,   86,  159,  105,  190,   86,  177,  106,  162,  160,
+      178,  201,  107,  108,  156,  161,  157,  163,  109,   86,
+      165,  164,  166,   86,  105,   86,  143,  225,   86,  174,
+      110,  167,  243,  251,   86,   86,  175,  202,  107,   86,
+      189,  108,  102,  188,  111,  111,  111,  111,  111,  111,
+
+      245,  183,  241,  226,  191,  244,  252,  242,  256,  184,
+      257,  105,  147,  148,  149,  112,  185,   86,  150,  151,
+      113,  152,   86,  153,  154,   86,  114,  168,   86,  179,
+      180,  155,  105,  242,  247,  169,  264,  170,  115,  181,
+      171,  256,  182,  257,  172,  141,  113,  124,  249,   86,
+      142,  125,  126,  250,  127,  825,  128,  129,  256,  130,
+      257,  131,  265,  186,   79,   80,   81,   81,   81,   79,
+      132,  133,  134,  192,   80,   81,   81,   81,  192,  250,
+       86,  193,   81,   80,   81,   81,   81,   81,   86,  253,
+      135,  143,  278,  136,   81,   80,   82,   82,   82,   81,
+
+      258,  195,  196,  258,   86,  187,  195,  235,  235,  235,
+      235,  256,   86,  257,  256,  256,  257,  257,  416,  825,
+      137,  138,  197,  197,  197,  197,  197,  197,  204,  205,
+      256,  260,  257,  204,  825,  206,  238,   86,  238,  236,
+      206,  239,  239,  239,  239,  239,  239,   86,  825,  207,
+      207,  207,  207,  248,  242,  259,  256,  306,  257,  250,
+      206,  825,  825,  102,  296,  104,  104,  104,  104,  104,
+      104,   86,  241,  240,   86,  208,  825,  249,  206,  256,
+      242,  257,  105,  206,  206,  250,  270,  206,  206,  256,
+       86,  257,  272,  271,  141,  206,   86,  237,  206,  142,
+
+      206,  209,  206,  105,  210,  212,   86,   86,  273,  213,
+      214,   86,  275,   86,  215,  216,  274,  217,   86,  218,
+       86,   86,   86,   86,  276,  825,   86,  291,  219,  220,
+      221,   86,  297,  277,   86,  290,  289,   86,   86,  279,
+       86,  280,  300,  281,  282,   86,  298,  283,  222,  284,
+      294,  223,  292,  293,  285,  286,  287,   86,  288,   86,
+       86,   86,  302,  295,   86,  299,  347,   86,  348,   86,
+       86,   86,  303,   86,  312,  825,  304,   86,  305,  224,
+      228,  228,  228,  228,  228,  228,  309,  301,  307,  308,
+      311,   86,   86,  310,   86,  316,  319,  229,  230,   86,
+
+       86,  230,   86,  313,   86,  317,  141,  333,   86,  360,
+      825,  320,  231,  314,  315,  321,   86,  386,  229,  230,
+      322,  330,  318,   86,  230,   98,   98,   98,   98,   98,
+       98,  323,   86,  334,   86,  324,  326,  347,  347,  348,
+      348,  363,  229,  230,  327,  328,  230,  329,   86,   86,
+      204,  205,  325,  390,  348,  204,  347,  234,  348,  545,
+      195,  196,   86,  229,  230,  195,  347,  363,  348,  230,
+      192,   80,   81,   81,   81,  192,  349,  347,  193,  348,
+      373,  197,  197,  197,  197,  197,  197,  195,  196,  405,
+       86,  348,  195,  331,  196,  347,  825,  348,  331,  403,
+
+      332,  339,  339,  339,  339,  347,  373,  348,  197,  197,
+      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
+      347,  350,  348,  347,  347,  348,  348,  104,  104,  104,
+      104,  104,  104,  340,  228,  228,  228,  228,  228,  228,
+      356,  256,  356,  257,  105,  357,  357,  357,  357,  357,
+      357,  229,  230,  229,  230,  230,  256,  230,  257,  248,
+       86,   86,   86,   86,   86,  105,  231,  392,  375,  402,
+      630,   86,  229,  230,  229,  230,  385,  358,  230,  387,
+      230,  239,  239,  239,  239,  239,  239,  361,  361,  361,
+      361,  361,  361,  238,  376,  238,   86,  398,  239,  239,
+
+      239,  239,  239,  239,  366,  230,  813,  825,  230,  104,
+      104,  104,  104,  104,  104,   86,  391,   86,   86,  362,
+      111,  111,  111,  111,  111,  111,  230,  368,   86,  369,
+      394,  230,  370,  388,   86,  389,  395,  396,  371,   86,
+       86,  248,   86,   86,   86,   86,   86,  408,  393,  399,
+      372,   86,  253,  404,  369,  409,   86,  397,  370,  400,
+      401,   86,  406,  407,   86,   86,   86,   86,  410,   86,
+      415,  411,   86,   86,  412,  418,   86,   86,  422,   86,
+       86,  420,  423,  419,  424,  413,  414,   86,  417,   86,
+       86,  421,   86,   86,   86,   86,   86,   86,   86,  426,
+
+       86,  425,  428,  429,   86,  427,   86,  431,  430,  436,
+       86,   86,  432,  141,  435,   86,  434,   86,  433,  441,
+      437,   86,   86,   86,   86,   86,  445,  438,  439,  440,
+      443,  444,  196,  442,  331,  196,  494,  446,  194,  331,
+      495,  332,  206,  206,  206,  206,  339,  339,  339,  339,
+      347,  347,  348,  348,   86,  825,   86,  357,  357,  357,
+      357,  357,  357,  467,  467,  467,  467,  467,  467,  479,
+      356,   86,  356,  497,  456,  357,  357,  357,  357,  357,
+      357,  230,   86,   86,  230,  228,  228,  228,  228,  228,
+      228,  498,  480,  501,  499,  468,  235,  235,  235,  235,
+
+      104,  104,  230,   86,  825,  471,  471,  230,  361,  361,
+      361,  361,  361,  361,  472,  473,  475,  359,  361,  361,
+      361,  361,  361,  361,  514,   86,  230,   86,  360,  230,
+      471,  471,  474,  366,  474,   86,  230,  475,   86,  230,
+      362,  504,  475,   86,  500,   86,   86,  230,  510,  505,
+      469,  825,  230,  496,  502,  812,  368,  230,  369,  503,
+       86,  370,  230,  475,  476,  825,  476,  371,   86,  477,
+      477,  477,  477,  477,  477,   86,  506,  507,   86,  372,
+       86,   86,   86,  369,  513,   86,  509,  370,  368,   86,
+      369,   86,  515,  370,   86,  511,  518,  508,   86,  481,
+
+       86,  478,  512,   86,  516,   86,  517,   86,   86,   86,
+      519,  372,  524,   86,  522,  369,  521,  526,  523,  370,
+       86,  520,  525,  527,   86,   86,   86,   86,  529,   86,
+       86,  528,   86,   86,   86,  533,   86,   86,   86,  531,
+       86,  540,  530,   86,  534,  532,   86,  543,   86,  549,
+       86,  536,  535,  537,  538,  541,  542,  544,  539,   86,
+       86,   86,  196,  548,  600,  471,  471,  546,  552,  551,
+      550,  206,  206,  206,  206,  472,   86,  547,  467,  467,
+      467,  467,  467,  467,  467,  467,  467,  467,  467,  467,
+      471,  471,  574,  591,  471,   86,  230,   86,   86,  230,
+
+       86,   86,  230,  573,   86,  230,   86,   86,  592,   86,
+      468,  595,  593,   86,  597,   86,  569,  230,  574,  471,
+      594,   86,  230,  230,  599,  602,  596,  601,  230,  361,
+      361,  361,  361,  361,  361,  570,  603,  570,  611,   86,
+      571,  571,  571,  571,  571,  571,  477,  477,  477,  477,
+      477,  477,  575,  575,  575,  575,  575,  575,  476,   86,
+      476,  469,   86,  477,  477,  477,  477,  477,  477,   86,
+      576,  604,  572,  576,  598,   86,   86,   86,   86,   86,
+      605,  610,   86,   86,  577,   86,   86,  606,  609,   86,
+      607,  576,  612,   86,  613,  614,  576,   86,   86,  616,
+
+      617,   86,  618,   86,  615,   86,   86,   86,   86,   86,
+      620,  623,   86,   86,  619,   86,  621,  624,  622,   86,
+      627,  625,   86,  629,   86,   86,  628,  626,   86,  631,
+       86,  633,   86,  634,   86,  632,   86,   86,  635,  668,
+       86,  673,  636,  637,  467,  467,  467,  467,  467,  467,
+      571,  571,  571,  571,  571,  571,  655,  655,  655,  655,
+      655,  655,  570,  672,  570,   86,   86,  571,  571,  571,
+      571,  571,  571,   86,  576,  669,  569,  576,  575,  575,
+      575,  575,  575,  575,   86,  686,  670,   86,  656,   86,
+      676,   86,   86,   86,   86,  576,  576,  674,  666,  576,
+
+      576,  671,  575,  575,  575,  575,  575,  575,  675,  678,
+      577,  667,   86,   86,  679,   86,   86,  576,   86,  682,
+      576,  684,  576,  576,   86,  677,   86,   86,   86,   86,
+      680,   86,   86,   86,  657,  683,  687,  681,   86,  685,
+       86,  576,   86,   86,  688,   86,  576,   86,   86,  697,
+      689,  690,  693,  698,  691,  692,  696,  695,   86,   86,
+      700,   86,   86,   86,   86,  694,  720,  699,  655,  655,
+      655,  655,  655,  655,  655,  655,  655,  655,  655,  655,
+      714,   86,  719,   86,   86,  726,  576,  716,   86,  576,
+      717,  715,  576,  718,   86,  576,   86,  721,   86,  727,
+
+      656,   86,  722,  730,  723,  724,  707,  576,   86,   86,
+      729,  725,  576,  576,   86,   86,  766,  728,  576,  575,
+      575,  575,  575,  575,  575,   86,   86,   86,   86,  731,
+       86,   86,   86,   86,   86,  738,   86,   86,  732,  733,
+      734,   86,  736,   86,   86,  735,  741,   86,   86,  740,
+       86,  657,   86,   86,  758,  756,   86,  737,  739,  655,
+      655,  655,  655,  655,  655,  755,  759,  754,  757,   86,
+       86,  763,  761,   86,   86,   86,  764,  765,  760,   86,
+       86,   86,  767,  762,  768,   86,   86,   86,  790,   86,
+      769,  707,  786,   86,   86,   86,  788,   86,   86,   86,
+
+      791,   86,  793,   86,  785,   86,  784,  783,  794,  787,
+      795,   86,  789,   86,   86,   86,   86,  792,  805,  806,
+      825,  825,   86,  807,  804,  808,   86,   86,   86,  810,
+      811,   86,  809,   86,   86,   86,  815,  814,  816,   86,
+       86,   86,  817,  818,  819,   86,   86,   86,  822,  821,
+      823,  803,  825,  820,  802,  825,  800,  825,  799,  825,
+      798,  825,  797,   86,   86,   86,  825,  782,  824,   68,
+       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,   74,   74,   74,   74,   74,   74,   74,   74,   74,
+       74,   74,   74,   77,   77,   77,   77,   77,   77,   77,
+
+       77,   77,   77,   77,   77,   85,  825,  781,   85,   85,
+       85,   85,   85,   85,  139,  779,  825,  777,  139,  139,
+      139,  139,  139,  194,  194,  194,  194,  194,  194,  194,
+      194,  194,  194,  194,  194,  199,  825,  775,  199,  199,
+      199,  199,  199,  199,  203,  825,  203,  203,  773,  203,
+      203,  203,  203,  203,  771,  203,  211,   86,   86,  211,
+      211,  211,  211,  211,  211,  211,   86,  211,  232,  232,
+      232,  232,  232,  232,  232,  232,  232,  232,  232,  232,
+      246,  246,  246,   86,   86,   86,  246,  262,   86,   86,
+      262,  262,  262,  262,  262,  262,  266,  266,   86,   86,
+
+       86,  266,  268,  268,   86,  825,  753,  268,  335,  335,
+      751,  825,  825,  335,  337,  337,  748,  746,  744,  337,
+      341,  341,  825,   86,   86,  341,  343,  343,   86,   86,
+       86,  343,  345,  345,   86,   86,  713,  345,  352,  352,
+      710,  709,  200,  352,  354,  354,  703,  702,  639,  354,
+      232,  232,  232,  232,  232,  232,  232,  232,  232,  232,
+      232,  232,  365,  365,  367,  367,  367,  367,  367,   86,
+      367,  246,  246,  246,  377,  377,   86,   86,   86,  377,
+      379,  379,   86,   86,   86,  379,  381,  381,   86,   86,
+       86,  381,  266,  266,  383,  383,   86,   86,   86,  383,
+
+      268,  268,   85,   86,  664,   85,   85,   85,   85,   85,
+       85,  194,  194,  194,  194,  194,  194,  194,  194,  194,
+      194,  194,  194,  447,  447,  447,  447,  447,  447,  447,
+      447,  447,  447,  447,  447,  448,  448,  663,  661,  659,
+      448,  450,  450,  573,  654,  653,  450,  452,  452,  651,
+      649,  647,  452,  335,  335,  454,  454,  645,  643,  641,
+      454,  337,  337,  457,  457,  639,   86,   86,  457,  341,
+      341,  459,  459,   86,   86,   86,  459,  343,  343,  461,
+      461,   86,   86,   86,  461,  345,  345,  463,  463,   86,
+       86,   86,  463,  352,  352,  465,  465,  590,  588,  586,
+
+      465,  354,  354,  470,  470,  584,  470,  582,  470,  365,
+      365,  580,  365,  481,  365,  367,  367,  367,  367,  367,
+      578,  367,  482,  482,  578,  568,  566,  482,  484,  484,
+      462,  462,  564,  484,  486,  486,  562,  560,  558,  486,
+      377,  377,  488,  488,  556,  554,   86,  488,  379,  379,
+      490,  490,   86,   86,   86,  490,  381,  381,  492,  492,
+       86,   86,   86,  492,  383,  383,   85,   86,  493,   85,
+       85,   85,   85,   85,   85,  447,  447,  447,  447,  447,
+      447,  447,  447,  447,  447,  447,  447,  553,  553,  491,
+      489,  487,  553,  448,  448,  555,  555,  485,  483,  466,
+
+      555,  450,  450,  557,  557,  464,  348,  348,  557,  452,
+      452,  559,  559,  462,  460,  458,  559,  454,  454,  561,
+      561,  455,  453,  451,  561,  457,  457,  563,  563,  449,
+       86,   86,  563,  459,  459,  461,  461,   86,  384,  382,
+      461,  565,  565,  380,  378,  263,  565,  463,  463,  567,
+      567,  258,  257,  374,  567,  465,  465,  470,  470,  374,
+      470,  245,  470,  367,  367,  364,  364,  233,  367,  579,
+      579,  359,  355,  353,  579,  482,  482,  581,  581,  351,
+      347,  346,  581,  484,  484,  583,  583,  344,  342,  338,
+      583,  486,  486,  585,  585,  336,  200,  196,  585,  488,
+
+      488,  587,  587,   86,  269,  267,  587,  490,  490,  589,
+      589,  263,  258,  261,  589,  492,  492,   85,  258,  256,
+       85,   85,   85,   85,   85,   85,  638,  638,  638,  638,
+      638,  638,  638,  638,  638,  638,  638,  638,  640,  640,
+      255,  254,  233,  640,  553,  553,  642,  642,  227,   84,
+       84,  642,  555,  555,  644,  644,   86,  200,  198,  644,
+      557,  557,  646,  646,   84,  146,  140,  646,  559,  559,
+      648,  648,  121,  116,   86,  648,  561,  561,  650,  650,
+      825,   69,   69,  650,  563,  563,  652,  652,  825,  825,
+      825,  652,  565,  565,   85,   85,  825,  825,  825,   85,
+
+      567,  567,  470,  470,  825,  825,  825,  470,  658,  658,
+      825,  825,  825,  658,  579,  579,  660,  660,  825,  825,
+      825,  660,  581,  581,  662,  662,  825,  825,  825,  662,
+      583,  583,  139,  139,  825,  825,  825,  139,  585,  585,
+      665,  665,  587,  587,   85,  825,  825,   85,   85,   85,
+       85,   85,   85,  589,  589,  638,  638,  638,  638,  638,
+      638,  638,  638,  638,  638,  638,  638,  701,  701,  825,
+      825,  825,  701,  640,  640,  199,  199,  825,  825,  825,
+      199,  642,  642,  704,  704,  644,  644,  199,  825,  825,
+      199,  199,  199,  199,  199,  199,  646,  646,  705,  705,
+
+      648,  648,  650,  650,  706,  706,  652,  652,   85,   85,
+      708,  708,  825,  825,  825,  708,  658,  658,  262,  262,
+      825,  825,  825,  262,  660,  660,  711,  711,  662,  662,
+      139,  139,  712,  712,  825,  825,  825,  712,   85,  825,
+      825,   85,   85,   85,   85,   85,   85,  742,  742,  701,
+      701,  743,  743,  825,  825,  825,  743,  745,  745,  825,
+      825,  825,  745,  747,  747,  825,  825,  825,  747,  749,
+      749,  750,  750,  825,  825,  825,  750,  752,  752,  825,
+      825,  825,  752,  770,  770,  825,  825,  825,  770,  772,
+      772,  825,  825,  825,  772,  774,  774,  825,  825,  825,
+
+      774,  776,  776,  825,  825,  825,  776,  778,  778,  825,
+      825,  825,  778,  780,  780,  825,  825,  825,  780,  589,
+      589,  825,  825,  825,  589,  796,  796,  825,  825,  825,
+      796,  646,  646,  825,  825,  825,  646,  650,  650,  825,
+      825,  825,  650,   85,   85,  825,  825,  825,   85,  801,
+      801,  825,  825,  825,  801,  139,  139,  825,  825,  825,
+      139,  199,  199,  825,  825,  825,  199,   11,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825
+    } ;
+
+static yyconst flex_int16_t yy_chk[2653] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    2,   16,   24,   16,   24,    2,
+       19,   19,    2,    5,    5,    5,    5,    5,    5,    5,
+
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    7,    8,    9,
+       10,   37,   37,   20,   48,    9,   10,  512,    7,    8,
+       13,   13,   13,   13,   13,   13,   15,   15,   15,   15,
+
+       15,   15,   20,   25,   48,   42,   53,   28,   27,   28,
+       28,   28,   28,   28,   28,  512,  824,   25,   29,   25,
+       27,   27,   27,   29,   53,   35,    7,    8,    9,   10,
+       40,   42,   55,   29,   30,   40,   30,   30,   30,   30,
+       30,   30,   35,   47,   35,   35,  125,   49,  125,   50,
+       55,   56,   49,   30,   63,   51,   55,   30,   50,   49,
+       56,   72,   30,   30,   47,   49,   47,   50,   30,   54,
+       51,   50,   51,   40,   30,   60,   40,   86,   61,   54,
+       30,   51,  107,  113,  823,  822,   54,   72,   30,   58,
+       61,   30,   31,   60,   31,   31,   31,   31,   31,   31,
+
+      108,   58,  106,   86,   63,  107,  113,  106,  126,   58,
+      126,   31,   45,   45,   45,   31,   58,   57,   45,   45,
+       31,   45,   52,   45,   45,  821,   31,   52,   45,   57,
+       57,   45,   31,  106,  108,   52,  140,   52,   31,   57,
+       52,  128,   57,  128,   52,   59,   31,   38,  112,  819,
+       59,   38,   38,  112,   38,  114,   38,   38,  131,   38,
+      131,   38,  140,   59,   79,   79,   79,   79,   79,   79,
+       38,   38,   38,   66,   66,   66,   66,   66,   66,  112,
+      154,   66,   81,   81,   81,   81,   81,   81,   59,  114,
+       38,   59,  154,   38,   82,   82,   82,   82,   82,   82,
+
+      129,   67,   67,  130,  818,   59,   67,  103,  103,  103,
+      103,  133,  298,  133,  129,  130,  129,  130,  298,  109,
+       38,   38,   67,   67,   67,   67,   67,   67,   76,   76,
+      134,  134,  134,   76,  103,   76,  105,  171,  105,  103,
+       76,  105,  105,  105,  105,  105,  105,  161,  109,   76,
+       76,   76,   76,  109,  110,  132,  132,  171,  132,  115,
+       76,  813,  103,  104,  161,  104,  104,  104,  104,  104,
+      104,  147,  110,  105,  148,   76,  109,  115,   76,  136,
+      110,  136,  104,   76,   76,  115,  147,   76,   76,  138,
+      149,  138,  148,  147,  143,   76,  151,  104,   76,  143,
+
+       76,   76,   76,  104,   76,   84,  152,  150,  149,   84,
+       84,  153,  151,  157,   84,   84,  150,   84,  158,   84,
+      156,  165,  162,  163,  152,  812,  808,  158,   84,   84,
+       84,  159,  162,  153,  155,  157,  156,  143,  164,  155,
+      167,  155,  165,  155,  155,  160,  163,  155,   84,  155,
+      160,   84,  159,  159,  155,  155,  155,  168,  155,  169,
+      170,  172,  167,  160,  166,  164,  213,  173,  213,  177,
+      806,  175,  168,  176,  177,  236,  169,  179,  170,   84,
+       98,   98,   98,   98,   98,   98,  175,  166,  172,  173,
+      176,  181,  178,  175,  180,  179,  181,   98,   98,  271,
+
+      183,   98,  182,  178,  184,  180,  186,  200,  189,  236,
+      803,  181,   98,  178,  178,  182,  185,  271,   98,   98,
+      183,  189,  180,  187,   98,  102,  102,  102,  102,  102,
+      102,  184,  188,  200,  440,  185,  187,  214,  215,  214,
+      215,  241,  102,  102,  187,  188,  102,  188,  275,  186,
+      204,  204,  186,  275,  217,  204,  218,  102,  218,  440,
+      193,  193,  287,  102,  102,  193,  217,  241,  217,  102,
+      192,  192,  192,  192,  192,  192,  219,  219,  192,  219,
+      249,  193,  193,  193,  193,  193,  193,  195,  195,  287,
+      285,  216,  195,  197,  197,  220,  802,  220,  197,  285,
+
+      197,  207,  207,  207,  207,  216,  249,  216,  195,  195,
+      195,  195,  195,  195,  197,  197,  197,  197,  197,  197,
+      221,  221,  221,  223,  224,  223,  224,  237,  237,  237,
+      237,  237,  237,  207,  228,  228,  228,  228,  228,  228,
+      229,  259,  229,  259,  237,  229,  229,  229,  229,  229,
+      229,  228,  228,  234,  234,  228,  260,  234,  260,  237,
+      541,  272,  277,  270,  284,  237,  228,  277,  263,  284,
+      541,  281,  228,  228,  234,  234,  270,  229,  228,  272,
+      234,  238,  238,  238,  238,  238,  238,  239,  239,  239,
+      239,  239,  239,  240,  263,  240,  276,  281,  240,  240,
+
+      240,  240,  240,  240,  246,  239,  801,  800,  239,  248,
+      248,  248,  248,  248,  248,  279,  276,  273,  274,  239,
+      253,  253,  253,  253,  253,  253,  239,  246,  278,  246,
+      279,  239,  246,  273,  282,  274,  279,  279,  246,  280,
+      286,  248,  291,  283,  288,  290,  292,  291,  278,  282,
+      246,  294,  253,  286,  246,  292,  295,  280,  246,  283,
+      283,  293,  288,  290,  296,  297,  300,  301,  293,  299,
+      297,  294,  302,  304,  295,  300,  303,  305,  304,  306,
+      307,  302,  305,  301,  306,  296,  296,  308,  299,  309,
+      314,  303,  311,  312,  313,  315,  316,  317,  319,  307,
+
+      318,  306,  309,  311,  320,  308,  321,  313,  312,  318,
+      324,  322,  314,  325,  317,  326,  316,  327,  315,  324,
+      319,  329,  330,  328,  386,  385,  329,  320,  321,  322,
+      327,  328,  332,  326,  331,  331,  385,  330,  332,  331,
+      386,  331,  339,  339,  339,  339,  340,  340,  340,  340,
+      349,  350,  349,  350,  388,  799,  325,  356,  356,  356,
+      356,  356,  356,  357,  357,  357,  357,  357,  357,  370,
+      358,  392,  358,  388,  339,  358,  358,  358,  358,  358,
+      358,  357,  389,  390,  357,  359,  359,  359,  359,  359,
+      359,  389,  370,  392,  390,  357,  360,  360,  360,  360,
+
+      360,  360,  357,  403,  798,  365,  366,  357,  361,  361,
+      361,  361,  361,  361,  365,  366,  372,  359,  362,  362,
+      362,  362,  362,  362,  403,  395,  361,  396,  360,  361,
+      365,  366,  368,  367,  372,  391,  362,  368,  387,  362,
+      361,  395,  372,  400,  391,  393,  394,  361,  400,  396,
+      362,  797,  361,  387,  393,  796,  367,  362,  367,  394,
+      397,  367,  362,  368,  369,  371,  369,  367,  399,  369,
+      369,  369,  369,  369,  369,  398,  397,  397,  402,  367,
+      401,  404,  408,  367,  402,  405,  399,  367,  371,  415,
+      371,  406,  404,  371,  413,  401,  408,  398,  410,  371,
+
+      412,  369,  401,  420,  405,  414,  406,  416,  417,  421,
+      410,  371,  415,  422,  414,  371,  413,  417,  414,  371,
+      423,  412,  416,  420,  424,  425,  426,  428,  422,  430,
+      431,  421,  435,  432,  433,  426,  434,  436,  443,  424,
+      438,  435,  423,  437,  428,  425,  442,  438,  445,  443,
+      439,  431,  430,  432,  433,  436,  437,  439,  434,  441,
+      446,  504,  447,  442,  504,  473,  470,  441,  447,  446,
+      445,  456,  456,  456,  456,  470,  494,  441,  467,  467,
+      467,  467,  467,  467,  468,  468,  468,  468,  468,  468,
+      473,  470,  474,  494,  472,  495,  467,  497,  499,  467,
+
+      498,  501,  468,  472,  500,  468,  506,  505,  495,  794,
+      467,  499,  497,  503,  501,  507,  468,  467,  474,  472,
+      498,  515,  467,  468,  503,  506,  500,  505,  468,  469,
+      469,  469,  469,  469,  469,  471,  507,  471,  515,  793,
+      471,  471,  471,  471,  471,  471,  476,  476,  476,  476,
+      476,  476,  477,  477,  477,  477,  477,  477,  478,  514,
+      478,  469,  508,  478,  478,  478,  478,  478,  478,  502,
+      477,  508,  471,  477,  502,  509,  510,  511,  522,  513,
+      509,  514,  523,  516,  477,  524,  520,  510,  513,  517,
+      511,  477,  516,  525,  517,  520,  477,  527,  528,  523,
+
+      524,  529,  525,  531,  522,  536,  532,  537,  534,  538,
+      528,  532,  535,  543,  527,  540,  529,  534,  531,  544,
+      537,  535,  542,  540,  546,  549,  538,  536,  547,  542,
+      550,  544,  592,  546,  597,  543,  791,  790,  547,  592,
+      596,  597,  549,  550,  569,  569,  569,  569,  569,  569,
+      570,  570,  570,  570,  570,  570,  571,  571,  571,  571,
+      571,  571,  572,  596,  572,  610,  593,  572,  572,  572,
+      572,  572,  572,  594,  571,  593,  569,  571,  575,  575,
+      575,  575,  575,  575,  595,  610,  594,  600,  571,  598,
+      600,  599,  603,  591,  602,  571,  575,  598,  591,  575,
+
+      571,  595,  577,  577,  577,  577,  577,  577,  599,  602,
+      575,  591,  601,  604,  603,  605,  606,  575,  607,  606,
+      577,  608,  575,  577,  609,  601,  612,  611,  613,  615,
+      604,  616,  620,  617,  577,  607,  611,  605,  621,  609,
+      623,  577,  627,  634,  612,  637,  577,  626,  608,  627,
+      613,  615,  620,  634,  616,  617,  626,  623,  636,  666,
+      637,  669,  672,  673,  680,  621,  673,  636,  655,  655,
+      655,  655,  655,  655,  656,  656,  656,  656,  656,  656,
+      666,  667,  672,  670,  675,  680,  655,  669,  671,  655,
+      670,  667,  656,  671,  674,  656,  678,  674,  677,  681,
+
+      655,  683,  675,  684,  677,  678,  656,  655,  679,  732,
+      683,  679,  655,  656,  682,  696,  732,  682,  656,  657,
+      657,  657,  657,  657,  657,  686,  685,  681,  684,  685,
+      688,  687,  689,  691,  693,  696,  697,  700,  686,  687,
+      688,  699,  691,  723,  722,  689,  700,  718,  719,  699,
+      720,  657,  724,  721,  722,  720,  783,  693,  697,  707,
+      707,  707,  707,  707,  707,  719,  723,  718,  721,  725,
+      726,  727,  725,  729,  731,  735,  729,  731,  724,  733,
+      754,  734,  733,  726,  734,  756,  757,  759,  763,  758,
+      735,  707,  758,  760,  762,  766,  760,  764,  727,  767,
+
+      764,  769,  767,  784,  757,  768,  756,  754,  768,  759,
+      769,  785,  762,  763,  787,  789,  786,  766,  785,  786,
+      782,  781,  788,  787,  784,  788,  792,  795,  804,  792,
+      795,  805,  789,  814,  815,  807,  805,  804,  807,  809,
+      810,  811,  809,  810,  811,  816,  820,  817,  816,  815,
+      817,  780,  779,  814,  778,  777,  776,  775,  774,  773,
+      772,  771,  770,  765,  761,  755,  753,  752,  820,  826,
+      826,  826,  826,  826,  826,  826,  826,  826,  826,  826,
+      826,  827,  827,  827,  827,  827,  827,  827,  827,  827,
+      827,  827,  827,  828,  828,  828,  828,  828,  828,  828,
+
+      828,  828,  828,  828,  828,  829,  751,  750,  829,  829,
+      829,  829,  829,  829,  830,  749,  748,  747,  830,  830,
+      830,  830,  830,  831,  831,  831,  831,  831,  831,  831,
+      831,  831,  831,  831,  831,  832,  746,  745,  832,  832,
+      832,  832,  832,  832,  833,  744,  833,  833,  743,  833,
+      833,  833,  833,  833,  742,  833,  834,  741,  740,  834,
+      834,  834,  834,  834,  834,  834,  739,  834,  835,  835,
+      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
+      836,  836,  836,  738,  737,  736,  836,  837,  730,  728,
+      837,  837,  837,  837,  837,  837,  838,  838,  717,  716,
+
+      715,  838,  839,  839,  714,  713,  712,  839,  840,  840,
+      711,  710,  709,  840,  841,  841,  706,  705,  704,  841,
+      842,  842,  703,  698,  695,  842,  843,  843,  694,  692,
+      690,  843,  844,  844,  676,  668,  665,  844,  845,  845,
+      660,  658,  646,  845,  846,  846,  642,  640,  638,  846,
+      847,  847,  847,  847,  847,  847,  847,  847,  847,  847,
+      847,  847,  848,  848,  849,  849,  849,  849,  849,  635,
+      849,  850,  850,  850,  851,  851,  633,  632,  631,  851,
+      852,  852,  630,  629,  628,  852,  853,  853,  625,  624,
+      622,  853,  854,  854,  855,  855,  619,  618,  614,  855,
+
+      856,  856,  857,  589,  585,  857,  857,  857,  857,  857,
+      857,  858,  858,  858,  858,  858,  858,  858,  858,  858,
+      858,  858,  858,  859,  859,  859,  859,  859,  859,  859,
+      859,  859,  859,  859,  859,  860,  860,  583,  581,  579,
+      860,  861,  861,  573,  567,  565,  861,  862,  862,  563,
+      561,  559,  862,  863,  863,  864,  864,  557,  555,  553,
+      864,  865,  865,  866,  866,  552,  551,  548,  866,  867,
+      867,  868,  868,  545,  539,  533,  868,  869,  869,  870,
+      870,  530,  526,  521,  870,  871,  871,  872,  872,  519,
+      518,  496,  872,  873,  873,  874,  874,  492,  490,  488,
+
+      874,  875,  875,  876,  876,  486,  876,  484,  876,  877,
+      877,  482,  877,  481,  877,  878,  878,  878,  878,  878,
+      480,  878,  879,  879,  479,  465,  463,  879,  880,  880,
+      462,  461,  459,  880,  881,  881,  457,  454,  452,  881,
+      882,  882,  883,  883,  450,  448,  444,  883,  884,  884,
+      885,  885,  429,  427,  419,  885,  886,  886,  887,  887,
+      418,  411,  409,  887,  888,  888,  889,  407,  383,  889,
+      889,  889,  889,  889,  889,  890,  890,  890,  890,  890,
+      890,  890,  890,  890,  890,  890,  890,  891,  891,  381,
+      379,  377,  891,  892,  892,  893,  893,  376,  375,  354,
+
+      893,  894,  894,  895,  895,  352,  351,  347,  895,  896,
+      896,  897,  897,  345,  343,  341,  897,  898,  898,  899,
+      899,  337,  335,  334,  899,  900,  900,  901,  901,  333,
+      323,  310,  901,  902,  902,  903,  903,  289,  268,  266,
+      903,  904,  904,  265,  264,  262,  904,  905,  905,  906,
+      906,  261,  256,  252,  906,  907,  907,  908,  908,  251,
+      908,  247,  908,  909,  909,  244,  243,  232,  909,  910,
+      910,  231,  226,  225,  910,  911,  911,  912,  912,  222,
+      212,  210,  912,  913,  913,  914,  914,  209,  208,  202,
+      914,  915,  915,  916,  916,  201,  199,  194,  916,  917,
+
+      917,  918,  918,  174,  145,  144,  918,  919,  919,  920,
+      920,  139,  137,  135,  920,  921,  921,  922,  127,  124,
+      922,  922,  922,  922,  922,  922,  923,  923,  923,  923,
+      923,  923,  923,  923,  923,  923,  923,  923,  924,  924,
+      123,  119,  100,  924,  925,  925,  926,  926,   97,   94,
+       92,  926,  927,  927,  928,  928,   85,   71,   69,  928,
+      929,  929,  930,  930,   65,   44,   39,  930,  931,  931,
+      932,  932,   36,   33,   18,  932,  933,  933,  934,  934,
+       11,    4,    3,  934,  935,  935,  936,  936,    0,    0,
+        0,  936,  937,  937,  938,  938,    0,    0,    0,  938,
+
+      939,  939,  940,  940,    0,    0,    0,  940,  941,  941,
+        0,    0,    0,  941,  942,  942,  943,  943,    0,    0,
+        0,  943,  944,  944,  945,  945,    0,    0,    0,  945,
+      946,  946,  947,  947,    0,    0,    0,  947,  948,  948,
+      949,  949,  950,  950,  951,    0,    0,  951,  951,  951,
+      951,  951,  951,  952,  952,  953,  953,  953,  953,  953,
+      953,  953,  953,  953,  953,  953,  953,  954,  954,    0,
+        0,    0,  954,  955,  955,  956,  956,    0,    0,    0,
+      956,  957,  957,  958,  958,  959,  959,  960,    0,    0,
+      960,  960,  960,  960,  960,  960,  961,  961,  962,  962,
+
+      963,  963,  964,  964,  965,  965,  966,  966,  967,  967,
+      968,  968,    0,    0,    0,  968,  969,  969,  970,  970,
+        0,    0,    0,  970,  971,  971,  972,  972,  973,  973,
+      974,  974,  975,  975,    0,    0,    0,  975,  976,    0,
+        0,  976,  976,  976,  976,  976,  976,  977,  977,  978,
+      978,  979,  979,    0,    0,    0,  979,  980,  980,    0,
+        0,    0,  980,  981,  981,    0,    0,    0,  981,  982,
+      982,  983,  983,    0,    0,    0,  983,  984,  984,    0,
+        0,    0,  984,  985,  985,    0,    0,    0,  985,  986,
+      986,    0,    0,    0,  986,  987,  987,    0,    0,    0,
+
+      987,  988,  988,    0,    0,    0,  988,  989,  989,    0,
+        0,    0,  989,  990,  990,    0,    0,    0,  990,  991,
+      991,    0,    0,    0,  991,  992,  992,    0,    0,    0,
+      992,  993,  993,    0,    0,    0,  993,  994,  994,    0,
+        0,    0,  994,  995,  995,    0,    0,    0,  995,  996,
+      996,    0,    0,    0,  996,  997,  997,    0,    0,    0,
+      997,  998,  998,    0,    0,    0,  998,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825
+    } ;
+
+/* Table of booleans, true if rule could match eol. */
+static yyconst flex_int32_t yy_rule_can_match_eol[172] =
+    {   0,
+1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     };
+
+static yy_state_type yy_last_accepting_state;
+static char *yy_last_accepting_cpos;
+
+extern int yy_flex_debug;
+int yy_flex_debug = 0;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *yytext;
+#line 1 "lex.ll"
+/*
+ * Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+ *
+ * The contents of this file are covered under the licence agreement in the
+ * file "LICENCE" distributed with Cforall.
+ * 
+ * lex.l -- 
+ * 
+ * Author           : Peter A. Buhr
+ * Created On       : Sat Sep 22 08:58:10 2001
+ * Last Modified By : Peter A. Buhr
+ * Last Modified On : Fri Jun 19 11:10:14 2015
+ * Update Count     : 392
+ */
+#line 20 "lex.ll"
+// This lexer assumes the program has been preprocessed by cpp. Hence, all user level preprocessor directive have been
+// performed and removed from the source. The only exceptions are preprocessor directives passed to the compiler (e.g.,
+// line-number directives) and C/C++ style comments, which are ignored.
+
+//**************************** Includes and Defines ****************************
+
+#include <string>
+
+#include "lex.h"
+#include "ParseNode.h"
+#include "parser.h"										// YACC generated definitions based on C++ grammar
+
+char *yyfilename;
+std::string *strtext;									// accumulate parts of character and string constant value
+
+#define RETURN_LOCN(x)		yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return( x )
+#define RETURN_VAL(x)		yylval.tok.str = new std::string( yytext ); RETURN_LOCN( x )
+#define RETURN_CHAR(x)		yylval.tok.str = NULL; RETURN_LOCN( x )
+#define RETURN_STR(x)		yylval.tok.str = strtext; RETURN_LOCN( x )
+
+#define WHITE_RETURN(x)									// do nothing
+#define NEWLINE_RETURN()	WHITE_RETURN( '\n' )
+#define ASCIIOP_RETURN()	RETURN_CHAR( (int)yytext[0] ) // single character operator
+#define NAMEDOP_RETURN(x)	RETURN_VAL( x )				// multichar operator, with a name
+#define NUMERIC_RETURN(x)	rm_underscore(); RETURN_VAL( x ) // numeric constant
+#define KEYWORD_RETURN(x)	RETURN_CHAR( x )			// keyword
+#define IDENTIFIER_RETURN()	RETURN_VAL( (typedefTable.isIdentifier( yytext ) ? IDENTIFIER : typedefTable.isTypedef( yytext ) ? TYPEDEFname : TYPEGENname ) )
+#define ATTRIBUTE_RETURN()	RETURN_VAL( ATTR_IDENTIFIER )
+
+void rm_underscore() {
+	// remove underscores in numeric constant
+	int j = 0;
+	for ( int i = 0; yytext[i] != '\0'; i += 1 ) {
+		if ( yytext[i] != '_' ) {
+			yytext[j] = yytext[i];
+			j += 1;
+		} // if
+	} // for
+	yyleng = j;
+	yytext[yyleng] = '\0';
+}
+
+// identifier, GCC: $ in identifier
+// quoted identifier
+// attribute identifier, GCC: $ in identifier
+// numeric constants, CFA: '_' in constant
+// character escape sequence, GCC: \e => esc character
+// ' stop highlighting
+// display/white-space characters
+// operators
+
+
+
+
+#line 1451 "Parser/lex.cc"
+
+#define INITIAL 0
+#define COMMENT 1
+#define BKQUOTE 2
+#define QUOTE 3
+#define STRING 4
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+static int yy_init_globals (void );
+
+/* Accessor methods to globals.
+   These are made visible to non-reentrant scanners for convenience. */
+
+int yylex_destroy (void );
+
+int yyget_debug (void );
+
+void yyset_debug (int debug_flag  );
+
+YY_EXTRA_TYPE yyget_extra (void );
+
+void yyset_extra (YY_EXTRA_TYPE user_defined  );
+
+FILE *yyget_in (void );
+
+void yyset_in  (FILE * in_str  );
+
+FILE *yyget_out (void );
+
+void yyset_out  (FILE * out_str  );
+
+int yyget_leng (void );
+
+char *yyget_text (void );
+
+int yyget_lineno (void );
+
+void yyset_lineno (int line_number  );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap (void );
+#else
+extern int yywrap (void );
+#endif
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (void );
+#else
+static int input (void );
+#endif
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k */
+#define YY_READ_BUF_SIZE 16384
+#else
+#define YY_READ_BUF_SIZE 8192
+#endif /* __ia64__ */
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+		{ \
+		int c = '*'; \
+		size_t n; \
+		for ( n = 0; n < max_size && \
+			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+			buf[n] = (char) c; \
+		if ( c == '\n' ) \
+			buf[n++] = (char) c; \
+		if ( c == EOF && ferror( yyin ) ) \
+			YY_FATAL_ERROR( "input in flex scanner failed" ); \
+		result = n; \
+		} \
+	else \
+		{ \
+		errno=0; \
+		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+			{ \
+			if( errno != EINTR) \
+				{ \
+				YY_FATAL_ERROR( "input in flex scanner failed" ); \
+				break; \
+				} \
+			errno=0; \
+			clearerr(yyin); \
+			} \
+		}\
+\
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int yylex (void);
+
+#define YY_DECL int yylex (void)
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+	if ( yyleng > 0 ) \
+		YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
+				(yytext[yyleng - 1] == '\n'); \
+	YY_USER_ACTION
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+	register yy_state_type yy_current_state;
+	register char *yy_cp, *yy_bp;
+	register int yy_act;
+    
+#line 136 "lex.ll"
+
+				   /* line directives */
+#line 1646 "Parser/lex.cc"
+
+	if ( !(yy_init) )
+		{
+		(yy_init) = 1;
+
+#ifdef YY_USER_INIT
+		YY_USER_INIT;
+#endif
+
+		if ( ! (yy_start) )
+			(yy_start) = 1;	/* first start state */
+
+		if ( ! yyin )
+			yyin = stdin;
+
+		if ( ! yyout )
+			yyout = stdout;
+
+		if ( ! YY_CURRENT_BUFFER ) {
+			yyensure_buffer_stack ();
+			YY_CURRENT_BUFFER_LVALUE =
+				yy_create_buffer(yyin,YY_BUF_SIZE );
+		}
+
+		yy_load_buffer_state( );
+		}
+
+	while ( 1 )		/* loops until end-of-file is reached */
+		{
+		yy_cp = (yy_c_buf_p);
+
+		/* Support of yytext. */
+		*yy_cp = (yy_hold_char);
+
+		/* yy_bp points to the position in yy_ch_buf of the start of
+		 * the current run.
+		 */
+		yy_bp = yy_cp;
+
+		yy_current_state = (yy_start);
+		yy_current_state += YY_AT_BOL();
+yy_match:
+		do
+			{
+			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+			if ( yy_accept[yy_current_state] )
+				{
+				(yy_last_accepting_state) = yy_current_state;
+				(yy_last_accepting_cpos) = yy_cp;
+				}
+			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+				{
+				yy_current_state = (int) yy_def[yy_current_state];
+				if ( yy_current_state >= 826 )
+					yy_c = yy_meta[(unsigned int) yy_c];
+				}
+			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+			++yy_cp;
+			}
+		while ( yy_base[yy_current_state] != 2568 );
+
+yy_find_action:
+		yy_act = yy_accept[yy_current_state];
+		if ( yy_act == 0 )
+			{ /* have to back up */
+			yy_cp = (yy_last_accepting_cpos);
+			yy_current_state = (yy_last_accepting_state);
+			yy_act = yy_accept[yy_current_state];
+			}
+
+		YY_DO_BEFORE_ACTION;
+
+		if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
+			{
+			int yyl;
+			for ( yyl = 0; yyl < yyleng; ++yyl )
+				if ( yytext[yyl] == '\n' )
+					   
+    yylineno++;
+;
+			}
+
+do_action:	/* This label is used only to access EOF actions. */
+
+		switch ( yy_act )
+	{ /* beginning of action switch */
+			case 0: /* must back up */
+			/* undo the effects of YY_DO_BEFORE_ACTION */
+			*yy_cp = (yy_hold_char);
+			yy_cp = (yy_last_accepting_cpos);
+			yy_current_state = (yy_last_accepting_state);
+			goto yy_find_action;
+
+case 1:
+/* rule 1 can match eol */
+YY_RULE_SETUP
+#line 138 "lex.ll"
+{
+	/* " stop highlighting */
+	char *end_num;
+	char *begin_string, *end_string;
+	char *filename;
+	long lineno, length;
+	lineno = strtol( yytext + 1, &end_num, 0 );
+	begin_string = strchr( end_num, '"' );
+	if ( begin_string ) {
+		end_string = strchr( begin_string + 1, '"' );
+		if ( end_string ) {
+			length = end_string - begin_string - 1;
+			filename = new char[ length + 1 ];
+			memcpy( filename, begin_string + 1, length );
+			filename[ length ] = '\0';
+			//std::cout << "file " << filename << " line " << lineno << std::endl;
+			yylineno = lineno;
+			yyfilename = filename;
+		} // if
+	} // if
+}
+	YY_BREAK
+/* ignore preprocessor directives (for now) */
+case 2:
+/* rule 2 can match eol */
+YY_RULE_SETUP
+#line 161 "lex.ll"
+;
+	YY_BREAK
+/* ignore C style comments (ALSO HANDLED BY CPP) */
+case 3:
+YY_RULE_SETUP
+#line 164 "lex.ll"
+{ BEGIN COMMENT; }
+	YY_BREAK
+case 4:
+/* rule 4 can match eol */
+YY_RULE_SETUP
+#line 165 "lex.ll"
+;
+	YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 166 "lex.ll"
+{ BEGIN 0; }
+	YY_BREAK
+/* ignore C++ style comments (ALSO HANDLED BY CPP) */
+case 6:
+/* rule 6 can match eol */
+YY_RULE_SETUP
+#line 169 "lex.ll"
+;
+	YY_BREAK
+/* ignore whitespace */
+case 7:
+YY_RULE_SETUP
+#line 172 "lex.ll"
+{ WHITE_RETURN(' '); }
+	YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 173 "lex.ll"
+{ WHITE_RETURN(' '); }
+	YY_BREAK
+case 9:
+/* rule 9 can match eol */
+YY_RULE_SETUP
+#line 174 "lex.ll"
+{ NEWLINE_RETURN(); }
+	YY_BREAK
+/* keywords */
+case 10:
+YY_RULE_SETUP
+#line 177 "lex.ll"
+{ KEYWORD_RETURN(ALIGNAS); }			// C11
+	YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 178 "lex.ll"
+{ KEYWORD_RETURN(ALIGNOF); }			// C11
+	YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 179 "lex.ll"
+{ KEYWORD_RETURN(ALIGNOF); }			// GCC
+	YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 180 "lex.ll"
+{ KEYWORD_RETURN(ALIGNOF); }			// GCC
+	YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 181 "lex.ll"
+{ KEYWORD_RETURN(ASM); }
+	YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 182 "lex.ll"
+{ KEYWORD_RETURN(ASM); }				// GCC
+	YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 183 "lex.ll"
+{ KEYWORD_RETURN(ASM); }				// GCC
+	YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 184 "lex.ll"
+{ KEYWORD_RETURN(ATOMIC); }				// C11
+	YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 185 "lex.ll"
+{ KEYWORD_RETURN(ATTRIBUTE); }			// GCC
+	YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 186 "lex.ll"
+{ KEYWORD_RETURN(ATTRIBUTE); }			// GCC
+	YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 187 "lex.ll"
+{ KEYWORD_RETURN(AUTO); }
+	YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 188 "lex.ll"
+{ KEYWORD_RETURN(BOOL); }				// C99
+	YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 189 "lex.ll"
+{ KEYWORD_RETURN(BREAK); }
+	YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 190 "lex.ll"
+{ KEYWORD_RETURN(CASE); }
+	YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 191 "lex.ll"
+{ KEYWORD_RETURN(CATCH); }				// CFA
+	YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 192 "lex.ll"
+{ KEYWORD_RETURN(CHAR); }
+	YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 193 "lex.ll"
+{ KEYWORD_RETURN(CHOOSE); }				// CFA
+	YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 194 "lex.ll"
+{ KEYWORD_RETURN(COMPLEX); }			// C99
+	YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 195 "lex.ll"
+{ KEYWORD_RETURN(COMPLEX); }			// GCC
+	YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 196 "lex.ll"
+{ KEYWORD_RETURN(COMPLEX); }			// GCC
+	YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 197 "lex.ll"
+{ KEYWORD_RETURN(CONST); }
+	YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 198 "lex.ll"
+{ KEYWORD_RETURN(CONST); }				// GCC
+	YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 199 "lex.ll"
+{ KEYWORD_RETURN(CONST); }				// GCC
+	YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 200 "lex.ll"
+{ KEYWORD_RETURN(CONTEXT); }			// CFA
+	YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 201 "lex.ll"
+{ KEYWORD_RETURN(CONTINUE); }
+	YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 202 "lex.ll"
+{ KEYWORD_RETURN(DEFAULT); }
+	YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 203 "lex.ll"
+{ KEYWORD_RETURN(DO); }
+	YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 204 "lex.ll"
+{ KEYWORD_RETURN(DOUBLE); }
+	YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 205 "lex.ll"
+{ KEYWORD_RETURN(DTYPE); }				// CFA
+	YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 206 "lex.ll"
+{ KEYWORD_RETURN(ELSE); }
+	YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 207 "lex.ll"
+{ KEYWORD_RETURN(ENUM); }
+	YY_BREAK
+case 41:
+YY_RULE_SETUP
+#line 208 "lex.ll"
+{ KEYWORD_RETURN(EXTENSION); }			// GCC
+	YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 209 "lex.ll"
+{ KEYWORD_RETURN(EXTERN); }
+	YY_BREAK
+case 43:
+YY_RULE_SETUP
+#line 210 "lex.ll"
+{ KEYWORD_RETURN(FALLTHRU); }			// CFA
+	YY_BREAK
+case 44:
+YY_RULE_SETUP
+#line 211 "lex.ll"
+{ KEYWORD_RETURN(FINALLY); }			// CFA
+	YY_BREAK
+case 45:
+YY_RULE_SETUP
+#line 212 "lex.ll"
+{ KEYWORD_RETURN(FLOAT); }
+	YY_BREAK
+case 46:
+YY_RULE_SETUP
+#line 213 "lex.ll"
+{ KEYWORD_RETURN(FLOAT); }				// GCC
+	YY_BREAK
+case 47:
+YY_RULE_SETUP
+#line 214 "lex.ll"
+{ KEYWORD_RETURN(FOR); }
+	YY_BREAK
+case 48:
+YY_RULE_SETUP
+#line 215 "lex.ll"
+{ KEYWORD_RETURN(FORALL); }				// CFA
+	YY_BREAK
+case 49:
+YY_RULE_SETUP
+#line 216 "lex.ll"
+{ KEYWORD_RETURN(FORTRAN); }
+	YY_BREAK
+case 50:
+YY_RULE_SETUP
+#line 217 "lex.ll"
+{ KEYWORD_RETURN(FTYPE); }				// CFA
+	YY_BREAK
+case 51:
+YY_RULE_SETUP
+#line 218 "lex.ll"
+{ KEYWORD_RETURN(GENERIC); }			// C11
+	YY_BREAK
+case 52:
+YY_RULE_SETUP
+#line 219 "lex.ll"
+{ KEYWORD_RETURN(GOTO); }
+	YY_BREAK
+case 53:
+YY_RULE_SETUP
+#line 220 "lex.ll"
+{ KEYWORD_RETURN(IF); }
+	YY_BREAK
+case 54:
+YY_RULE_SETUP
+#line 221 "lex.ll"
+{ KEYWORD_RETURN(IMAGINARY); }			// C99
+	YY_BREAK
+case 55:
+YY_RULE_SETUP
+#line 222 "lex.ll"
+{ KEYWORD_RETURN(IMAGINARY); }			// GCC
+	YY_BREAK
+case 56:
+YY_RULE_SETUP
+#line 223 "lex.ll"
+{ KEYWORD_RETURN(IMAGINARY); }			// GCC
+	YY_BREAK
+case 57:
+YY_RULE_SETUP
+#line 224 "lex.ll"
+{ KEYWORD_RETURN(INLINE); }				// C99
+	YY_BREAK
+case 58:
+YY_RULE_SETUP
+#line 225 "lex.ll"
+{ KEYWORD_RETURN(INLINE); }				// GCC
+	YY_BREAK
+case 59:
+YY_RULE_SETUP
+#line 226 "lex.ll"
+{ KEYWORD_RETURN(INLINE); }				// GCC
+	YY_BREAK
+case 60:
+YY_RULE_SETUP
+#line 227 "lex.ll"
+{ KEYWORD_RETURN(INT); }
+	YY_BREAK
+case 61:
+YY_RULE_SETUP
+#line 228 "lex.ll"
+{ KEYWORD_RETURN(INT); }				// GCC
+	YY_BREAK
+case 62:
+YY_RULE_SETUP
+#line 229 "lex.ll"
+{ KEYWORD_RETURN(LABEL); }				// GCC
+	YY_BREAK
+case 63:
+YY_RULE_SETUP
+#line 230 "lex.ll"
+{ KEYWORD_RETURN(LONG); }
+	YY_BREAK
+case 64:
+YY_RULE_SETUP
+#line 231 "lex.ll"
+{ KEYWORD_RETURN(LVALUE); }				// CFA
+	YY_BREAK
+case 65:
+YY_RULE_SETUP
+#line 232 "lex.ll"
+{ KEYWORD_RETURN(NORETURN); }			// C11
+	YY_BREAK
+case 66:
+YY_RULE_SETUP
+#line 233 "lex.ll"
+{ KEYWORD_RETURN(REGISTER); }
+	YY_BREAK
+case 67:
+YY_RULE_SETUP
+#line 234 "lex.ll"
+{ KEYWORD_RETURN(RESTRICT); }			// C99
+	YY_BREAK
+case 68:
+YY_RULE_SETUP
+#line 235 "lex.ll"
+{ KEYWORD_RETURN(RESTRICT); }			// GCC
+	YY_BREAK
+case 69:
+YY_RULE_SETUP
+#line 236 "lex.ll"
+{ KEYWORD_RETURN(RESTRICT); }			// GCC
+	YY_BREAK
+case 70:
+YY_RULE_SETUP
+#line 237 "lex.ll"
+{ KEYWORD_RETURN(RETURN); }
+	YY_BREAK
+case 71:
+YY_RULE_SETUP
+#line 238 "lex.ll"
+{ KEYWORD_RETURN(SHORT); }
+	YY_BREAK
+case 72:
+YY_RULE_SETUP
+#line 239 "lex.ll"
+{ KEYWORD_RETURN(SIGNED); }
+	YY_BREAK
+case 73:
+YY_RULE_SETUP
+#line 240 "lex.ll"
+{ KEYWORD_RETURN(SIGNED); }				// GCC
+	YY_BREAK
+case 74:
+YY_RULE_SETUP
+#line 241 "lex.ll"
+{ KEYWORD_RETURN(SIGNED); }				// GCC
+	YY_BREAK
+case 75:
+YY_RULE_SETUP
+#line 242 "lex.ll"
+{ KEYWORD_RETURN(SIZEOF); }
+	YY_BREAK
+case 76:
+YY_RULE_SETUP
+#line 243 "lex.ll"
+{ KEYWORD_RETURN(STATIC); }
+	YY_BREAK
+case 77:
+YY_RULE_SETUP
+#line 244 "lex.ll"
+{ KEYWORD_RETURN(STATICASSERT); }		// C11
+	YY_BREAK
+case 78:
+YY_RULE_SETUP
+#line 245 "lex.ll"
+{ KEYWORD_RETURN(STRUCT); }
+	YY_BREAK
+case 79:
+YY_RULE_SETUP
+#line 246 "lex.ll"
+{ KEYWORD_RETURN(SWITCH); }
+	YY_BREAK
+case 80:
+YY_RULE_SETUP
+#line 247 "lex.ll"
+{ KEYWORD_RETURN(THREADLOCAL); }		// C11
+	YY_BREAK
+case 81:
+YY_RULE_SETUP
+#line 248 "lex.ll"
+{ KEYWORD_RETURN(THROW); }				// CFA
+	YY_BREAK
+case 82:
+YY_RULE_SETUP
+#line 249 "lex.ll"
+{ KEYWORD_RETURN(TRY); }				// CFA
+	YY_BREAK
+case 83:
+YY_RULE_SETUP
+#line 250 "lex.ll"
+{ KEYWORD_RETURN(TYPE); }				// CFA
+	YY_BREAK
+case 84:
+YY_RULE_SETUP
+#line 251 "lex.ll"
+{ KEYWORD_RETURN(TYPEDEF); }
+	YY_BREAK
+case 85:
+YY_RULE_SETUP
+#line 252 "lex.ll"
+{ KEYWORD_RETURN(TYPEOF); }				// GCC
+	YY_BREAK
+case 86:
+YY_RULE_SETUP
+#line 253 "lex.ll"
+{ KEYWORD_RETURN(TYPEOF); }				// GCC
+	YY_BREAK
+case 87:
+YY_RULE_SETUP
+#line 254 "lex.ll"
+{ KEYWORD_RETURN(TYPEOF); }				// GCC
+	YY_BREAK
+case 88:
+YY_RULE_SETUP
+#line 255 "lex.ll"
+{ KEYWORD_RETURN(UNION); }
+	YY_BREAK
+case 89:
+YY_RULE_SETUP
+#line 256 "lex.ll"
+{ KEYWORD_RETURN(UNSIGNED); }
+	YY_BREAK
+case 90:
+YY_RULE_SETUP
+#line 257 "lex.ll"
+{ KEYWORD_RETURN(VOID); }
+	YY_BREAK
+case 91:
+YY_RULE_SETUP
+#line 258 "lex.ll"
+{ KEYWORD_RETURN(VOLATILE); }
+	YY_BREAK
+case 92:
+YY_RULE_SETUP
+#line 259 "lex.ll"
+{ KEYWORD_RETURN(VOLATILE); }			// GCC
+	YY_BREAK
+case 93:
+YY_RULE_SETUP
+#line 260 "lex.ll"
+{ KEYWORD_RETURN(VOLATILE); }			// GCC
+	YY_BREAK
+case 94:
+YY_RULE_SETUP
+#line 261 "lex.ll"
+{ KEYWORD_RETURN(WHILE); }
+	YY_BREAK
+/* identifier */
+case 95:
+YY_RULE_SETUP
+#line 264 "lex.ll"
+{ IDENTIFIER_RETURN(); }
+	YY_BREAK
+case 96:
+YY_RULE_SETUP
+#line 265 "lex.ll"
+{ ATTRIBUTE_RETURN(); }
+	YY_BREAK
+case 97:
+YY_RULE_SETUP
+#line 266 "lex.ll"
+{ BEGIN BKQUOTE; }
+	YY_BREAK
+case 98:
+YY_RULE_SETUP
+#line 267 "lex.ll"
+{ IDENTIFIER_RETURN(); }
+	YY_BREAK
+case 99:
+YY_RULE_SETUP
+#line 268 "lex.ll"
+{ BEGIN 0; }
+	YY_BREAK
+/* numeric constants */
+case 100:
+YY_RULE_SETUP
+#line 271 "lex.ll"
+{ NUMERIC_RETURN(ZERO); }				// CFA
+	YY_BREAK
+case 101:
+YY_RULE_SETUP
+#line 272 "lex.ll"
+{ NUMERIC_RETURN(ONE); }				// CFA
+	YY_BREAK
+case 102:
+YY_RULE_SETUP
+#line 273 "lex.ll"
+{ NUMERIC_RETURN(INTEGERconstant); }
+	YY_BREAK
+case 103:
+YY_RULE_SETUP
+#line 274 "lex.ll"
+{ NUMERIC_RETURN(INTEGERconstant); }
+	YY_BREAK
+case 104:
+YY_RULE_SETUP
+#line 275 "lex.ll"
+{ NUMERIC_RETURN(INTEGERconstant); }
+	YY_BREAK
+case 105:
+YY_RULE_SETUP
+#line 276 "lex.ll"
+{ NUMERIC_RETURN(FLOATINGconstant); }
+	YY_BREAK
+case 106:
+YY_RULE_SETUP
+#line 277 "lex.ll"
+{ NUMERIC_RETURN(FLOATINGconstant); }
+	YY_BREAK
+/* character constant, allows empty value */
+case 107:
+YY_RULE_SETUP
+#line 280 "lex.ll"
+{ BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
+	YY_BREAK
+case 108:
+YY_RULE_SETUP
+#line 281 "lex.ll"
+{ *strtext += std::string( yytext ); }
+	YY_BREAK
+case 109:
+/* rule 109 can match eol */
+YY_RULE_SETUP
+#line 282 "lex.ll"
+{ BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
+	YY_BREAK
+/* ' stop highlighting */
+/* string constant */
+case 110:
+YY_RULE_SETUP
+#line 286 "lex.ll"
+{ BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
+	YY_BREAK
+case 111:
+YY_RULE_SETUP
+#line 287 "lex.ll"
+{ *strtext += std::string( yytext ); }
+	YY_BREAK
+case 112:
+/* rule 112 can match eol */
+YY_RULE_SETUP
+#line 288 "lex.ll"
+{ BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); }
+	YY_BREAK
+/* " stop highlighting */
+/* common character/string constant */
+case 113:
+YY_RULE_SETUP
+#line 292 "lex.ll"
+{ rm_underscore(); *strtext += std::string( yytext ); }
+	YY_BREAK
+case 114:
+/* rule 114 can match eol */
+YY_RULE_SETUP
+#line 293 "lex.ll"
+{}						// continuation (ALSO HANDLED BY CPP)
+	YY_BREAK
+case 115:
+YY_RULE_SETUP
+#line 294 "lex.ll"
+{ *strtext += std::string( yytext ); } // unknown escape character
+	YY_BREAK
+/* punctuation */
+case 116:
+YY_RULE_SETUP
+#line 297 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 117:
+YY_RULE_SETUP
+#line 298 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 118:
+YY_RULE_SETUP
+#line 299 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 119:
+YY_RULE_SETUP
+#line 300 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 120:
+YY_RULE_SETUP
+#line 301 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 121:
+YY_RULE_SETUP
+#line 302 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 122:
+YY_RULE_SETUP
+#line 303 "lex.ll"
+{ ASCIIOP_RETURN(); }					// also operator
+	YY_BREAK
+case 123:
+YY_RULE_SETUP
+#line 304 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 124:
+YY_RULE_SETUP
+#line 305 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 125:
+YY_RULE_SETUP
+#line 306 "lex.ll"
+{ ASCIIOP_RETURN(); }					// also operator
+	YY_BREAK
+case 126:
+YY_RULE_SETUP
+#line 307 "lex.ll"
+{ NAMEDOP_RETURN(ELLIPSIS); }
+	YY_BREAK
+/* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
+case 127:
+YY_RULE_SETUP
+#line 310 "lex.ll"
+{ RETURN_VAL('['); }
+	YY_BREAK
+case 128:
+YY_RULE_SETUP
+#line 311 "lex.ll"
+{ RETURN_VAL(']'); }
+	YY_BREAK
+case 129:
+YY_RULE_SETUP
+#line 312 "lex.ll"
+{ RETURN_VAL('{'); }
+	YY_BREAK
+case 130:
+YY_RULE_SETUP
+#line 313 "lex.ll"
+{ RETURN_VAL('}'); }
+	YY_BREAK
+/* operators */
+case 131:
+YY_RULE_SETUP
+#line 316 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 132:
+YY_RULE_SETUP
+#line 317 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 133:
+YY_RULE_SETUP
+#line 318 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 134:
+YY_RULE_SETUP
+#line 319 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 135:
+YY_RULE_SETUP
+#line 320 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 136:
+YY_RULE_SETUP
+#line 321 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 137:
+YY_RULE_SETUP
+#line 322 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 138:
+YY_RULE_SETUP
+#line 323 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 139:
+YY_RULE_SETUP
+#line 324 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 140:
+YY_RULE_SETUP
+#line 325 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 141:
+YY_RULE_SETUP
+#line 326 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 142:
+YY_RULE_SETUP
+#line 327 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 143:
+YY_RULE_SETUP
+#line 328 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 144:
+YY_RULE_SETUP
+#line 329 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 145:
+YY_RULE_SETUP
+#line 331 "lex.ll"
+{ NAMEDOP_RETURN(ICR); }
+	YY_BREAK
+case 146:
+YY_RULE_SETUP
+#line 332 "lex.ll"
+{ NAMEDOP_RETURN(DECR); }
+	YY_BREAK
+case 147:
+YY_RULE_SETUP
+#line 333 "lex.ll"
+{ NAMEDOP_RETURN(EQ); }
+	YY_BREAK
+case 148:
+YY_RULE_SETUP
+#line 334 "lex.ll"
+{ NAMEDOP_RETURN(NE); }
+	YY_BREAK
+case 149:
+YY_RULE_SETUP
+#line 335 "lex.ll"
+{ NAMEDOP_RETURN(LS); }
+	YY_BREAK
+case 150:
+YY_RULE_SETUP
+#line 336 "lex.ll"
+{ NAMEDOP_RETURN(RS); }
+	YY_BREAK
+case 151:
+YY_RULE_SETUP
+#line 337 "lex.ll"
+{ NAMEDOP_RETURN(LE); }
+	YY_BREAK
+case 152:
+YY_RULE_SETUP
+#line 338 "lex.ll"
+{ NAMEDOP_RETURN(GE); }
+	YY_BREAK
+case 153:
+YY_RULE_SETUP
+#line 339 "lex.ll"
+{ NAMEDOP_RETURN(ANDAND); }
+	YY_BREAK
+case 154:
+YY_RULE_SETUP
+#line 340 "lex.ll"
+{ NAMEDOP_RETURN(OROR); }
+	YY_BREAK
+case 155:
+YY_RULE_SETUP
+#line 341 "lex.ll"
+{ NAMEDOP_RETURN(ARROW); }
+	YY_BREAK
+case 156:
+YY_RULE_SETUP
+#line 342 "lex.ll"
+{ NAMEDOP_RETURN(PLUSassign); }
+	YY_BREAK
+case 157:
+YY_RULE_SETUP
+#line 343 "lex.ll"
+{ NAMEDOP_RETURN(MINUSassign); }
+	YY_BREAK
+case 158:
+YY_RULE_SETUP
+#line 344 "lex.ll"
+{ NAMEDOP_RETURN(MULTassign); }
+	YY_BREAK
+case 159:
+YY_RULE_SETUP
+#line 345 "lex.ll"
+{ NAMEDOP_RETURN(DIVassign); }
+	YY_BREAK
+case 160:
+YY_RULE_SETUP
+#line 346 "lex.ll"
+{ NAMEDOP_RETURN(MODassign); }
+	YY_BREAK
+case 161:
+YY_RULE_SETUP
+#line 347 "lex.ll"
+{ NAMEDOP_RETURN(ANDassign); }
+	YY_BREAK
+case 162:
+YY_RULE_SETUP
+#line 348 "lex.ll"
+{ NAMEDOP_RETURN(ORassign); }
+	YY_BREAK
+case 163:
+YY_RULE_SETUP
+#line 349 "lex.ll"
+{ NAMEDOP_RETURN(ERassign); }
+	YY_BREAK
+case 164:
+YY_RULE_SETUP
+#line 350 "lex.ll"
+{ NAMEDOP_RETURN(LSassign); }
+	YY_BREAK
+case 165:
+YY_RULE_SETUP
+#line 351 "lex.ll"
+{ NAMEDOP_RETURN(RSassign); }
+	YY_BREAK
+/* CFA, operator identifier */
+case 166:
+YY_RULE_SETUP
+#line 354 "lex.ll"
+{ IDENTIFIER_RETURN(); }				// unary
+	YY_BREAK
+case 167:
+YY_RULE_SETUP
+#line 355 "lex.ll"
+{ IDENTIFIER_RETURN(); }
+	YY_BREAK
+case 168:
+YY_RULE_SETUP
+#line 356 "lex.ll"
+{ IDENTIFIER_RETURN(); }		// binary
+	YY_BREAK
+/*
+	  This rule handles ambiguous cases with operator identifiers, e.g., "int *?*?()", where the string "*?*?"
+	  can be lexed as "*"/"?*?" or "*?"/"*?". Since it is common practise to put a unary operator juxtaposed
+	  to an identifier, e.g., "*i", users will be annoyed if they cannot do this with respect to operator
+	  identifiers. Even with this special hack, there are 5 general cases that cannot be handled. The first
+	  case is for the function-call identifier "?()":
+
+	  int * ?()();	// declaration: space required after '*'
+	  * ?()();	// expression: space required after '*'
+
+	  Without the space, the string "*?()" is ambiguous without N character look ahead; it requires scanning
+	  ahead to determine if there is a '(', which is the start of an argument/parameter list.
+
+	  The 4 remaining cases occur in expressions:
+
+	  i++?i:0;		// space required before '?'
+	  i--?i:0;		// space required before '?'
+	  i?++i:0;		// space required after '?'
+	  i?--i:0;		// space required after '?'
+
+	  In the first two cases, the string "i++?" is ambiguous, where this string can be lexed as "i"/"++?" or
+	  "i++"/"?"; it requires scanning ahead to determine if there is a '(', which is the start of an argument
+	  list.  In the second two cases, the string "?++x" is ambiguous, where this string can be lexed as
+	  "?++"/"x" or "?"/"++x"; it requires scanning ahead to determine if there is a '(', which is the start of
+	  an argument list.
+	*/
+case 169:
+YY_RULE_SETUP
+#line 383 "lex.ll"
+{
+	// 1 or 2 character unary operator ?
+	int i = yytext[1] == '?' ? 1 : 2;
+	yyless( i );		// put back characters up to first '?'
+	if ( i > 1 ) {
+		NAMEDOP_RETURN( yytext[0] == '+' ? ICR : DECR );
+	} else {
+		ASCIIOP_RETURN();
+	} // if
+}
+	YY_BREAK
+/* unknown characters */
+case 170:
+YY_RULE_SETUP
+#line 395 "lex.ll"
+{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
+	YY_BREAK
+case 171:
+YY_RULE_SETUP
+#line 397 "lex.ll"
+ECHO;
+	YY_BREAK
+#line 2675 "Parser/lex.cc"
+case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(COMMENT):
+case YY_STATE_EOF(BKQUOTE):
+case YY_STATE_EOF(QUOTE):
+case YY_STATE_EOF(STRING):
+	yyterminate();
+
+	case YY_END_OF_BUFFER:
+		{
+		/* Amount of text matched not including the EOB char. */
+		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
+
+		/* Undo the effects of YY_DO_BEFORE_ACTION. */
+		*yy_cp = (yy_hold_char);
+		YY_RESTORE_YY_MORE_OFFSET
+
+		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+			{
+			/* We're scanning a new file or input source.  It's
+			 * possible that this happened because the user
+			 * just pointed yyin at a new source and called
+			 * yylex().  If so, then we have to assure
+			 * consistency between YY_CURRENT_BUFFER and our
+			 * globals.  Here is the right place to do so, because
+			 * this is the first action (other than possibly a
+			 * back-up) that will match for the new input source.
+			 */
+			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
+			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+			}
+
+		/* Note that here we test for yy_c_buf_p "<=" to the position
+		 * of the first EOB in the buffer, since yy_c_buf_p will
+		 * already have been incremented past the NUL character
+		 * (since all states make transitions on EOB to the
+		 * end-of-buffer state).  Contrast this with the test
+		 * in input().
+		 */
+		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+			{ /* This was really a NUL. */
+			yy_state_type yy_next_state;
+
+			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
+
+			yy_current_state = yy_get_previous_state(  );
+
+			/* Okay, we're now positioned to make the NUL
+			 * transition.  We couldn't have
+			 * yy_get_previous_state() go ahead and do it
+			 * for us because it doesn't know how to deal
+			 * with the possibility of jamming (and we don't
+			 * want to build jamming into it because then it
+			 * will run more slowly).
+			 */
+
+			yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+			yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+
+			if ( yy_next_state )
+				{
+				/* Consume the NUL. */
+				yy_cp = ++(yy_c_buf_p);
+				yy_current_state = yy_next_state;
+				goto yy_match;
+				}
+
+			else
+				{
+				yy_cp = (yy_c_buf_p);
+				goto yy_find_action;
+				}
+			}
+
+		else switch ( yy_get_next_buffer(  ) )
+			{
+			case EOB_ACT_END_OF_FILE:
+				{
+				(yy_did_buffer_switch_on_eof) = 0;
+
+				if ( yywrap( ) )
+					{
+					/* Note: because we've taken care in
+					 * yy_get_next_buffer() to have set up
+					 * yytext, we can now set up
+					 * yy_c_buf_p so that if some total
+					 * hoser (like flex itself) wants to
+					 * call the scanner after we return the
+					 * YY_NULL, it'll still work - another
+					 * YY_NULL will get returned.
+					 */
+					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
+
+					yy_act = YY_STATE_EOF(YY_START);
+					goto do_action;
+					}
+
+				else
+					{
+					if ( ! (yy_did_buffer_switch_on_eof) )
+						YY_NEW_FILE;
+					}
+				break;
+				}
+
+			case EOB_ACT_CONTINUE_SCAN:
+				(yy_c_buf_p) =
+					(yytext_ptr) + yy_amount_of_matched_text;
+
+				yy_current_state = yy_get_previous_state(  );
+
+				yy_cp = (yy_c_buf_p);
+				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+				goto yy_match;
+
+			case EOB_ACT_LAST_MATCH:
+				(yy_c_buf_p) =
+				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
+
+				yy_current_state = yy_get_previous_state(  );
+
+				yy_cp = (yy_c_buf_p);
+				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+				goto yy_find_action;
+			}
+		break;
+		}
+
+	default:
+		YY_FATAL_ERROR(
+			"fatal flex scanner internal error--no action found" );
+	} /* end of action switch */
+		} /* end of scanning one token */
+} /* end of yylex */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *	EOB_ACT_LAST_MATCH -
+ *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *	EOB_ACT_END_OF_FILE - end of file
+ */
+static int yy_get_next_buffer (void)
+{
+    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+	register char *source = (yytext_ptr);
+	register int number_to_move, i;
+	int ret_val;
+
+	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+		YY_FATAL_ERROR(
+		"fatal flex scanner internal error--end of buffer missed" );
+
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+		{ /* Don't try to fill the buffer, so this is an EOF. */
+		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
+			{
+			/* We matched a single character, the EOB, so
+			 * treat this as a final EOF.
+			 */
+			return EOB_ACT_END_OF_FILE;
+			}
+
+		else
+			{
+			/* We matched some text prior to the EOB, first
+			 * process it.
+			 */
+			return EOB_ACT_LAST_MATCH;
+			}
+		}
+
+	/* Try to read more data. */
+
+	/* First move last chars to start of buffer. */
+	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+
+	for ( i = 0; i < number_to_move; ++i )
+		*(dest++) = *(source++);
+
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+		/* don't do the read, it's not guaranteed to return an EOF,
+		 * just force an EOF
+		 */
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+
+	else
+		{
+			int num_to_read =
+			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+		while ( num_to_read <= 0 )
+			{ /* Not enough room in the buffer - grow it. */
+
+			/* just a shorter name for the current buffer */
+			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+
+			int yy_c_buf_p_offset =
+				(int) ((yy_c_buf_p) - b->yy_ch_buf);
+
+			if ( b->yy_is_our_buffer )
+				{
+				int new_size = b->yy_buf_size * 2;
+
+				if ( new_size <= 0 )
+					b->yy_buf_size += b->yy_buf_size / 8;
+				else
+					b->yy_buf_size *= 2;
+
+				b->yy_ch_buf = (char *)
+					/* Include room in for 2 EOB chars. */
+					yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
+				}
+			else
+				/* Can't grow it, we don't own it. */
+				b->yy_ch_buf = 0;
+
+			if ( ! b->yy_ch_buf )
+				YY_FATAL_ERROR(
+				"fatal error - scanner input buffer overflow" );
+
+			(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+						number_to_move - 1;
+
+			}
+
+		if ( num_to_read > YY_READ_BUF_SIZE )
+			num_to_read = YY_READ_BUF_SIZE;
+
+		/* Read in more data. */
+		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+			(yy_n_chars), (size_t) num_to_read );
+
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	if ( (yy_n_chars) == 0 )
+		{
+		if ( number_to_move == YY_MORE_ADJ )
+			{
+			ret_val = EOB_ACT_END_OF_FILE;
+			yyrestart(yyin  );
+			}
+
+		else
+			{
+			ret_val = EOB_ACT_LAST_MATCH;
+			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+				YY_BUFFER_EOF_PENDING;
+			}
+		}
+
+	else
+		ret_val = EOB_ACT_CONTINUE_SCAN;
+
+	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+		/* Extend the array by 50%, plus the number we really need. */
+		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
+		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+	}
+
+	(yy_n_chars) += number_to_move;
+	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+
+	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+	return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+    static yy_state_type yy_get_previous_state (void)
+{
+	register yy_state_type yy_current_state;
+	register char *yy_cp;
+    
+	yy_current_state = (yy_start);
+	yy_current_state += YY_AT_BOL();
+
+	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
+		{
+		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+		if ( yy_accept[yy_current_state] )
+			{
+			(yy_last_accepting_state) = yy_current_state;
+			(yy_last_accepting_cpos) = yy_cp;
+			}
+		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+			{
+			yy_current_state = (int) yy_def[yy_current_state];
+			if ( yy_current_state >= 826 )
+				yy_c = yy_meta[(unsigned int) yy_c];
+			}
+		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+		}
+
+	return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *	next_state = yy_try_NUL_trans( current_state );
+ */
+    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
+{
+	register int yy_is_jam;
+    	register char *yy_cp = (yy_c_buf_p);
+
+	register YY_CHAR yy_c = 1;
+	if ( yy_accept[yy_current_state] )
+		{
+		(yy_last_accepting_state) = yy_current_state;
+		(yy_last_accepting_cpos) = yy_cp;
+		}
+	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+		{
+		yy_current_state = (int) yy_def[yy_current_state];
+		if ( yy_current_state >= 826 )
+			yy_c = yy_meta[(unsigned int) yy_c];
+		}
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+	yy_is_jam = (yy_current_state == 825);
+
+	return yy_is_jam ? 0 : yy_current_state;
+}
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+    static int yyinput (void)
+#else
+    static int input  (void)
+#endif
+
+{
+	int c;
+    
+	*(yy_c_buf_p) = (yy_hold_char);
+
+	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
+		{
+		/* yy_c_buf_p now points to the character we want to return.
+		 * If this occurs *before* the EOB characters, then it's a
+		 * valid NUL; if not, then we've hit the end of the buffer.
+		 */
+		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+			/* This was really a NUL. */
+			*(yy_c_buf_p) = '\0';
+
+		else
+			{ /* need more input */
+			int offset = (yy_c_buf_p) - (yytext_ptr);
+			++(yy_c_buf_p);
+
+			switch ( yy_get_next_buffer(  ) )
+				{
+				case EOB_ACT_LAST_MATCH:
+					/* This happens because yy_g_n_b()
+					 * sees that we've accumulated a
+					 * token and flags that we need to
+					 * try matching the token before
+					 * proceeding.  But for input(),
+					 * there's no matching to consider.
+					 * So convert the EOB_ACT_LAST_MATCH
+					 * to EOB_ACT_END_OF_FILE.
+					 */
+
+					/* Reset buffer status. */
+					yyrestart(yyin );
+
+					/*FALLTHROUGH*/
+
+				case EOB_ACT_END_OF_FILE:
+					{
+					if ( yywrap( ) )
+						return EOF;
+
+					if ( ! (yy_did_buffer_switch_on_eof) )
+						YY_NEW_FILE;
+#ifdef __cplusplus
+					return yyinput();
+#else
+					return input();
+#endif
+					}
+
+				case EOB_ACT_CONTINUE_SCAN:
+					(yy_c_buf_p) = (yytext_ptr) + offset;
+					break;
+				}
+			}
+		}
+
+	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
+	*(yy_c_buf_p) = '\0';	/* preserve yytext */
+	(yy_hold_char) = *++(yy_c_buf_p);
+
+	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_at_bol )
+		   
+    yylineno++;
+;
+
+	return c;
+}
+#endif	/* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ * 
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+    void yyrestart  (FILE * input_file )
+{
+    
+	if ( ! YY_CURRENT_BUFFER ){
+        yyensure_buffer_stack ();
+		YY_CURRENT_BUFFER_LVALUE =
+            yy_create_buffer(yyin,YY_BUF_SIZE );
+	}
+
+	yy_init_buffer(YY_CURRENT_BUFFER,input_file );
+	yy_load_buffer_state( );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ * 
+ */
+    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
+{
+    
+	/* TODO. We should be able to replace this entire function body
+	 * with
+	 *		yypop_buffer_state();
+	 *		yypush_buffer_state(new_buffer);
+     */
+	yyensure_buffer_stack ();
+	if ( YY_CURRENT_BUFFER == new_buffer )
+		return;
+
+	if ( YY_CURRENT_BUFFER )
+		{
+		/* Flush out information for old buffer. */
+		*(yy_c_buf_p) = (yy_hold_char);
+		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	YY_CURRENT_BUFFER_LVALUE = new_buffer;
+	yy_load_buffer_state( );
+
+	/* We don't actually know whether we did this switch during
+	 * EOF (yywrap()) processing, but the only time this flag
+	 * is looked at is after yywrap() is called, so it's safe
+	 * to go ahead and always set it.
+	 */
+	(yy_did_buffer_switch_on_eof) = 1;
+}
+
+static void yy_load_buffer_state  (void)
+{
+    	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+	(yy_hold_char) = *(yy_c_buf_p);
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ * 
+ * @return the allocated buffer state.
+ */
+    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
+{
+	YY_BUFFER_STATE b;
+    
+	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+	b->yy_buf_size = size;
+
+	/* yy_ch_buf has to be 2 characters longer than the size given because
+	 * we need to put in 2 end-of-buffer characters.
+	 */
+	b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
+	if ( ! b->yy_ch_buf )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+	b->yy_is_our_buffer = 1;
+
+	yy_init_buffer(b,file );
+
+	return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with yy_create_buffer()
+ * 
+ */
+    void yy_delete_buffer (YY_BUFFER_STATE  b )
+{
+    
+	if ( ! b )
+		return;
+
+	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+	if ( b->yy_is_our_buffer )
+		yyfree((void *) b->yy_ch_buf  );
+
+	yyfree((void *) b  );
+}
+
+#ifndef __cplusplus
+extern int isatty (int );
+#endif /* __cplusplus */
+    
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a yyrestart() or at EOF.
+ */
+    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
+
+{
+	int oerrno = errno;
+    
+	yy_flush_buffer(b );
+
+	b->yy_input_file = file;
+	b->yy_fill_buffer = 1;
+
+    /* If b is the current buffer, then yy_init_buffer was _probably_
+     * called from yyrestart() or through yy_get_next_buffer.
+     * In that case, we don't want to reset the lineno or column.
+     */
+    if (b != YY_CURRENT_BUFFER){
+        b->yy_bs_lineno = 1;
+        b->yy_bs_column = 0;
+    }
+
+        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+    
+	errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ * 
+ */
+    void yy_flush_buffer (YY_BUFFER_STATE  b )
+{
+    	if ( ! b )
+		return;
+
+	b->yy_n_chars = 0;
+
+	/* We always need two end-of-buffer characters.  The first causes
+	 * a transition to the end-of-buffer state.  The second causes
+	 * a jam in that state.
+	 */
+	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+	b->yy_buf_pos = &b->yy_ch_buf[0];
+
+	b->yy_at_bol = 1;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	if ( b == YY_CURRENT_BUFFER )
+		yy_load_buffer_state( );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ *  the current state. This function will allocate the stack
+ *  if necessary.
+ *  @param new_buffer The new state.
+ *  
+ */
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
+{
+    	if (new_buffer == NULL)
+		return;
+
+	yyensure_buffer_stack();
+
+	/* This block is copied from yy_switch_to_buffer. */
+	if ( YY_CURRENT_BUFFER )
+		{
+		/* Flush out information for old buffer. */
+		*(yy_c_buf_p) = (yy_hold_char);
+		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	/* Only push if top exists. Otherwise, replace top. */
+	if (YY_CURRENT_BUFFER)
+		(yy_buffer_stack_top)++;
+	YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+	/* copied from yy_switch_to_buffer. */
+	yy_load_buffer_state( );
+	(yy_did_buffer_switch_on_eof) = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ *  The next element becomes the new top.
+ *  
+ */
+void yypop_buffer_state (void)
+{
+    	if (!YY_CURRENT_BUFFER)
+		return;
+
+	yy_delete_buffer(YY_CURRENT_BUFFER );
+	YY_CURRENT_BUFFER_LVALUE = NULL;
+	if ((yy_buffer_stack_top) > 0)
+		--(yy_buffer_stack_top);
+
+	if (YY_CURRENT_BUFFER) {
+		yy_load_buffer_state( );
+		(yy_did_buffer_switch_on_eof) = 1;
+	}
+}
+
+/* Allocates the stack if it does not exist.
+ *  Guarantees space for at least one push.
+ */
+static void yyensure_buffer_stack (void)
+{
+	int num_to_alloc;
+    
+	if (!(yy_buffer_stack)) {
+
+		/* First allocation is just for 2 elements, since we don't know if this
+		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
+		 * immediate realloc on the next call.
+         */
+		num_to_alloc = 1;
+		(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
+								(num_to_alloc * sizeof(struct yy_buffer_state*)
+								);
+		if ( ! (yy_buffer_stack) )
+			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+								  
+		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+				
+		(yy_buffer_stack_max) = num_to_alloc;
+		(yy_buffer_stack_top) = 0;
+		return;
+	}
+
+	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
+
+		/* Increase the buffer to prepare for a possible push. */
+		int grow_size = 8 /* arbitrary grow size */;
+
+		num_to_alloc = (yy_buffer_stack_max) + grow_size;
+		(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
+								((yy_buffer_stack),
+								num_to_alloc * sizeof(struct yy_buffer_state*)
+								);
+		if ( ! (yy_buffer_stack) )
+			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+
+		/* zero only the new slots.*/
+		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+		(yy_buffer_stack_max) = num_to_alloc;
+	}
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ * 
+ * @return the newly allocated buffer state object. 
+ */
+YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
+{
+	YY_BUFFER_STATE b;
+    
+	if ( size < 2 ||
+	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
+	     base[size-1] != YY_END_OF_BUFFER_CHAR )
+		/* They forgot to leave room for the EOB's. */
+		return 0;
+
+	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
+	b->yy_buf_pos = b->yy_ch_buf = base;
+	b->yy_is_our_buffer = 0;
+	b->yy_input_file = 0;
+	b->yy_n_chars = b->yy_buf_size;
+	b->yy_is_interactive = 0;
+	b->yy_at_bol = 1;
+	b->yy_fill_buffer = 0;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	yy_switch_to_buffer(b  );
+
+	return b;
+}
+
+/** Setup the input buffer state to scan a string. The next call to yylex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ * 
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ *       yy_scan_bytes() instead.
+ */
+YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
+{
+    
+	return yy_scan_bytes(yystr,strlen(yystr) );
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
+ * scan from a @e copy of @a bytes.
+ * @param yybytes the byte buffer to scan
+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
+ * 
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
+{
+	YY_BUFFER_STATE b;
+	char *buf;
+	yy_size_t n;
+	int i;
+    
+	/* Get memory for full buffer, including space for trailing EOB's. */
+	n = _yybytes_len + 2;
+	buf = (char *) yyalloc(n  );
+	if ( ! buf )
+		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+	for ( i = 0; i < _yybytes_len; ++i )
+		buf[i] = yybytes[i];
+
+	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+
+	b = yy_scan_buffer(buf,n );
+	if ( ! b )
+		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+	/* It's okay to grow etc. this buffer, and we should throw it
+	 * away when we're done.
+	 */
+	b->yy_is_our_buffer = 1;
+
+	return b;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yy_fatal_error (yyconst char* msg )
+{
+    	(void) fprintf( stderr, "%s\n", msg );
+	exit( YY_EXIT_FAILURE );
+}
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up yytext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+		yytext[yyleng] = (yy_hold_char); \
+		(yy_c_buf_p) = yytext + yyless_macro_arg; \
+		(yy_hold_char) = *(yy_c_buf_p); \
+		*(yy_c_buf_p) = '\0'; \
+		yyleng = yyless_macro_arg; \
+		} \
+	while ( 0 )
+
+/* Accessor  methods (get/set functions) to struct members. */
+
+/** Get the current line number.
+ * 
+ */
+int yyget_lineno  (void)
+{
+        
+    return yylineno;
+}
+
+/** Get the input stream.
+ * 
+ */
+FILE *yyget_in  (void)
+{
+        return yyin;
+}
+
+/** Get the output stream.
+ * 
+ */
+FILE *yyget_out  (void)
+{
+        return yyout;
+}
+
+/** Get the length of the current token.
+ * 
+ */
+int yyget_leng  (void)
+{
+        return yyleng;
+}
+
+/** Get the current token.
+ * 
+ */
+
+char *yyget_text  (void)
+{
+        return yytext;
+}
+
+/** Set the current line number.
+ * @param line_number
+ * 
+ */
+void yyset_lineno (int  line_number )
+{
+    
+    yylineno = line_number;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ * 
+ * @see yy_switch_to_buffer
+ */
+void yyset_in (FILE *  in_str )
+{
+        yyin = in_str ;
+}
+
+void yyset_out (FILE *  out_str )
+{
+        yyout = out_str ;
+}
+
+int yyget_debug  (void)
+{
+        return yy_flex_debug;
+}
+
+void yyset_debug (int  bdebug )
+{
+        yy_flex_debug = bdebug ;
+}
+
+static int yy_init_globals (void)
+{
+        /* Initialization is the same as for the non-reentrant scanner.
+     * This function is called from yylex_destroy(), so don't allocate here.
+     */
+
+    /* We do not touch yylineno unless the option is enabled. */
+    yylineno =  1;
+    
+    (yy_buffer_stack) = 0;
+    (yy_buffer_stack_top) = 0;
+    (yy_buffer_stack_max) = 0;
+    (yy_c_buf_p) = (char *) 0;
+    (yy_init) = 0;
+    (yy_start) = 0;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+    yyin = stdin;
+    yyout = stdout;
+#else
+    yyin = (FILE *) 0;
+    yyout = (FILE *) 0;
+#endif
+
+    /* For future reference: Set errno on error, since we are called by
+     * yylex_init()
+     */
+    return 0;
+}
+
+/* yylex_destroy is for both reentrant and non-reentrant scanners. */
+int yylex_destroy  (void)
+{
+    
+    /* Pop the buffer stack, destroying each element. */
+	while(YY_CURRENT_BUFFER){
+		yy_delete_buffer(YY_CURRENT_BUFFER  );
+		YY_CURRENT_BUFFER_LVALUE = NULL;
+		yypop_buffer_state();
+	}
+
+	/* Destroy the stack itself. */
+	yyfree((yy_buffer_stack) );
+	(yy_buffer_stack) = NULL;
+
+    /* Reset the globals. This is important in a non-reentrant scanner so the next time
+     * yylex() is called, initialization will occur. */
+    yy_init_globals( );
+
+    return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
+	register int i;
+	for ( i = 0; i < n; ++i )
+		s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s )
+{
+	register int n;
+	for ( n = 0; s[n]; ++n )
+		;
+
+	return n;
+}
+#endif
+
+void *yyalloc (yy_size_t  size )
+{
+	return (void *) malloc( size );
+}
+
+void *yyrealloc  (void * ptr, yy_size_t  size )
+{
+	/* The cast to (char *) in the following accommodates both
+	 * implementations that use char* generic pointers, and those
+	 * that use void* generic pointers.  It works with the latter
+	 * because both ANSI C and C++ allow castless assignment from
+	 * any pointer type to void*, and deal with argument conversions
+	 * as though doing an assignment.
+	 */
+	return (void *) realloc( (char *) ptr, size );
+}
+
+void yyfree (void * ptr )
+{
+	free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+#line 397 "lex.ll"
+
+
+
+// Local Variables: //
+// mode: c++ //
+// tab-width: 4 //
+// compile-command: "make install" //
+// End: //
+
Index: src/Parser/lex.h
===================================================================
--- src/Parser/lex.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Parser/lex.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep 22 08:58:10 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May 16 12:18:48 2015
-// Update Count     : 334
+// Last Modified On : Mon Jun  8 20:28:48 2015
+// Update Count     : 341
 //
 
@@ -18,5 +18,5 @@
 
 int yylex();
-void yyerror(char *);
+void yyerror( const char * );
 
 // External declarations for information sharing between lexer and scanner
@@ -35,5 +35,5 @@
 class Token {
   public:
-    std::string *str;
+    std::string *str;									// must be pointer as used in union
     Location loc;
 
@@ -44,5 +44,4 @@
 
 // Local Variables: //
-// fill-column: 110 //
 // tab-width: 4 //
 // mode: c++ //
Index: c/Parser/lex.l
===================================================================
--- src/Parser/lex.l	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,406 +1,0 @@
-/*
- * Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
- *
- * The contents of this file are covered under the licence agreement in the
- * file "LICENCE" distributed with Cforall.
- * 
- * lex.l -- 
- * 
- * Author           : Peter A. Buhr
- * Created On       : Sat Sep 22 08:58:10 2001
- * Last Modified By : Peter A. Buhr
- * Last Modified On : Tue May 19 15:41:54 2015
- * Update Count     : 331
- */
-
-%option yylineno
-
-%{
-// This lexer assumes the program has been preprocessed by cpp. Hence, all user level preprocessor directive
-// have been performed and removed from the source. The only exceptions are preprocessor directives passed to
-// the compiler (e.g., line-number directives) and C/C++ style comments, which are ignored.
-
-//**************************** Includes and Defines ****************************
-
-#include <string>
-
-#include "lex.h"
-#include "ParseNode.h"
-#include "cfa.tab.h"									// YACC generated definitions based on C++ grammar
-
-char *yyfilename;
-std::string *strtext;									// accumulate parts of character and string constant value
-
-#define WHITE_RETURN(x)									// do nothing
-#define NEWLINE_RETURN()	WHITE_RETURN('\n')
-#define RETURN_VAL(x)		yylval.tok.str = new std::string(yytext); \
-		                        yylval.tok.loc.file = yyfilename; \
-		                        yylval.tok.loc.line = yylineno; \
-		                        return(x)
-#define RETURN_STR(x)		yylval.tok.str = strtext; \
-		                        yylval.tok.loc.file = yyfilename; \
-		                        yylval.tok.loc.line = yylineno; \
-		                        return(x)
-
-#define KEYWORD_RETURN(x)	RETURN_VAL(x)				// keyword
-#define IDENTIFIER_RETURN()	RETURN_VAL((typedefTable.isIdentifier(yytext) ? IDENTIFIER : typedefTable.isTypedef(yytext) ? TYPEDEFname : TYPEGENname))
-//#define ATTRIBUTE_RETURN()	RETURN_VAL((typedefTable.isIdentifier(yytext) ? ATTR_IDENTIFIER : typedefTable.isTypedef(yytext) ? ATTR_TYPEDEFname : ATTR_TYPEGENname))
-#define ATTRIBUTE_RETURN()	RETURN_VAL(ATTR_IDENTIFIER)
-
-#define ASCIIOP_RETURN()	RETURN_VAL((int)yytext[0])	// single character operator
-#define NAMEDOP_RETURN(x)	RETURN_VAL(x)				// multichar operator, with a name
-
-#define NUMERIC_RETURN(x)	rm_underscore(); RETURN_VAL(x) // numeric constant
-
-void rm_underscore() {
-	// remove underscores in numeric constant
-	int j = 0;
-	for ( int i = 0; yytext[i] != '\0'; i += 1 ) {
-		if ( yytext[i] != '_' ) {
-			yytext[j] = yytext[i];
-			j += 1;
-		} // if
-	} // for
-	yyleng = j;
-	yytext[yyleng] = '\0';
-}
-
-%}
-
-octal [0-7]
-nonzero [1-9]
-decimal [0-9]
-hex [0-9a-fA-F]
-universal_char "\\"((u"_"?{hex_quad})|(U"_"?{hex_quad}{2}))
-
-				// identifier, GCC: $ in identifier
-identifier ([a-zA-Z_$]|{universal_char})([0-9a-zA-Z_$]|{universal_char})*
-
-				// quoted identifier
-quoted_identifier "`"{identifier}"`"
-
-				// attribute identifier, GCC: $ in identifier
-attr_identifier "@"{identifier}
-
-				// numeric constants, CFA: '_' in constant
-hex_quad {hex}("_"?{hex}){3}
-integer_suffix "_"?(([uU][lL]?)|([uU]("ll"|"LL")?)|([lL][uU]?)|("ll"|"LL")[uU]?)
-
-octal_digits ({octal})|({octal}({octal}|"_")*{octal})
-octal_prefix "0""_"?
-octal_constant (("0")|({octal_prefix}{octal_digits})){integer_suffix}?
-
-nonzero_digits ({nonzero})|({nonzero}({decimal}|"_")*{decimal})
-decimal_constant {nonzero_digits}{integer_suffix}?
-
-hex_digits ({hex})|({hex}({hex}|"_")*{hex})
-hex_prefix "0"[xX]"_"?
-hex_constant {hex_prefix}{hex_digits}{integer_suffix}?
-
-decimal_digits ({decimal})|({decimal}({decimal}|"_")*{decimal})
-fractional_constant ({decimal_digits}?"."{decimal_digits})|({decimal_digits}".")
-exponent "_"?[eE]"_"?[+-]?{decimal_digits}
-floating_suffix "_"?[flFL]
-floating_constant (({fractional_constant}{exponent}?)|({decimal_digits}{exponent})){floating_suffix}?
-
-binary_exponent "_"?[pP]"_"?[+-]?{decimal_digits}
-hex_fractional_constant ({hex_digits}?"."{hex_digits})|({hex_digits}".")
-hex_floating_constant {hex_prefix}(({hex_fractional_constant}{binary_exponent})|({hex_digits}{binary_exponent})){floating_suffix}?
-
-				// character escape sequence, GCC: \e => esc character
-simple_escape "\\"[abefnrtv'"?\\]
-				// ' stop highlighting
-octal_escape "\\"{octal}("_"?{octal}){0,2}
-hex_escape "\\""x""_"?{hex_digits}
-escape_seq {simple_escape}|{octal_escape}|{hex_escape}|{universal_char}
-
-				// display/white-space characters
-h_tab [\011]
-form_feed [\014]
-v_tab [\013]
-c_return [\015]
-h_white [ ]|{h_tab}
-
-				// operators
-op_unary_only "~"|"!"
-op_unary_binary "+"|"-"|"*"
-op_unary_pre_post "++"|"--"
-op_unary {op_unary_only}|{op_unary_binary}|{op_unary_pre_post}
-
-op_binary_only "/"|"%"|"^"|"&"|"|"|"<"|">"|"="|"=="|"!="|"<<"|">>"|"<="|">="|"+="|"-="|"*="|"/="|"%="|"&="|"|="|"^="|"<<="|">>="
-op_binary_over {op_unary_binary}|{op_binary_only}
-op_binary_not_over "?"|"->"|"&&"|"||"
-operator {op_unary_pre_post}|{op_binary_over}|{op_binary_not_over}
-
-%x COMMENT
-%x BKQUOTE
-%x QUOTE
-%x STRING
-
-%%
-				   /* line directives */
-^{h_white}*"#"{h_white}*[0-9]+{h_white}*["][^"\n]+["][^\n]*"\n" {
-	/* " stop highlighting */
-	char *end_num;
-	char *begin_string, *end_string;
-	char *filename;
-	long lineno, length;
-	lineno = strtol( yytext + 1, &end_num, 0 );
-	begin_string = strchr( end_num, '"' );
-	if ( begin_string ) {
-		end_string = strchr( begin_string + 1, '"' );
-		if ( end_string ) {
-			length = end_string - begin_string - 1;
-			filename = new char[ length + 1 ];
-			memcpy( filename, begin_string + 1, length );
-			filename[ length ] = '\0';
-			//std::cout << "file " << filename << " line " << lineno << std::endl;
-			yylineno = lineno;
-			yyfilename = filename;
-		} // if
-	} // if
-}
-
-				/* ignore preprocessor directives (for now) */
-^{h_white}*"#"[^\n]*"\n" ;
-
-				/* ignore C style comments */
-"/*"			{ BEGIN COMMENT; }
-<COMMENT>.|\n		;
-<COMMENT>"*/"		{ BEGIN 0; }
-
-				/* ignore C++ style comments */
-"//"[^\n]*"\n"		;
-
-				/* ignore whitespace */
-{h_white}+		{ WHITE_RETURN(' '); }
-({v_tab}|{c_return}|{form_feed})+ { WHITE_RETURN(' '); }
-({h_white}|{v_tab}|{c_return}|{form_feed})*"\n" { NEWLINE_RETURN(); }
-
-				/* keywords */
-_Alignas		{ KEYWORD_RETURN(ALIGNAS); }			// C11
-_Alignof		{ KEYWORD_RETURN(ALIGNOF); }			// C11
-__alignof		{ KEYWORD_RETURN(ALIGNOF); }			// GCC
-__alignof__		{ KEYWORD_RETURN(ALIGNOF); }			// GCC
-asm				{ KEYWORD_RETURN(ASM); }
-__asm			{ KEYWORD_RETURN(ASM); }				// GCC
-__asm__			{ KEYWORD_RETURN(ASM); }				// GCC
-_Atomic			{ KEYWORD_RETURN(ATOMIC); }				// C11
-__attribute		{ KEYWORD_RETURN(ATTRIBUTE); }			// GCC
-__attribute__	{ KEYWORD_RETURN(ATTRIBUTE); }			// GCC
-auto			{ KEYWORD_RETURN(AUTO); }
-_Bool			{ KEYWORD_RETURN(BOOL); }				// C99
-break			{ KEYWORD_RETURN(BREAK); }
-case			{ KEYWORD_RETURN(CASE); }
-catch			{ KEYWORD_RETURN(CATCH); }				// CFA
-char			{ KEYWORD_RETURN(CHAR); }
-choose			{ KEYWORD_RETURN(CHOOSE); }				// CFA
-_Complex		{ KEYWORD_RETURN(COMPLEX); }			// C99
-__complex		{ KEYWORD_RETURN(COMPLEX); }			// GCC
-__complex__		{ KEYWORD_RETURN(COMPLEX); }			// GCC
-const			{ KEYWORD_RETURN(CONST); }
-__const			{ KEYWORD_RETURN(CONST); }				// GCC
-__const__		{ KEYWORD_RETURN(CONST); }				// GCC
-context			{ KEYWORD_RETURN(CONTEXT); }			// CFA
-continue		{ KEYWORD_RETURN(CONTINUE); }
-default			{ KEYWORD_RETURN(DEFAULT); }
-do				{ KEYWORD_RETURN(DO); }
-double			{ KEYWORD_RETURN(DOUBLE); }
-dtype			{ KEYWORD_RETURN(DTYPE); }				// CFA
-else			{ KEYWORD_RETURN(ELSE); }
-enum			{ KEYWORD_RETURN(ENUM); }
-__extension__	{ KEYWORD_RETURN(EXTENSION); }			// GCC
-extern			{ KEYWORD_RETURN(EXTERN); }
-fallthru		{ KEYWORD_RETURN(FALLTHRU); }			// CFA
-finally			{ KEYWORD_RETURN(FINALLY); }			// CFA
-float			{ KEYWORD_RETURN(FLOAT); }
-__float128		{ KEYWORD_RETURN(FLOAT); }				// GCC
-for				{ KEYWORD_RETURN(FOR); }
-forall			{ KEYWORD_RETURN(FORALL); }				// CFA
-fortran			{ KEYWORD_RETURN(FORTRAN); }
-ftype			{ KEYWORD_RETURN(FTYPE); }				// CFA
-_Generic		{ KEYWORD_RETURN(GENERIC); }			// C11
-goto			{ KEYWORD_RETURN(GOTO); }
-if				{ KEYWORD_RETURN(IF); }
-_Imaginary		{ KEYWORD_RETURN(IMAGINARY); }			// C99
-__imag			{ KEYWORD_RETURN(IMAGINARY); }			// GCC
-__imag__		{ KEYWORD_RETURN(IMAGINARY); }			// GCC
-inline			{ KEYWORD_RETURN(INLINE); }				// C99
-__inline		{ KEYWORD_RETURN(INLINE); }				// GCC
-__inline__		{ KEYWORD_RETURN(INLINE); }				// GCC
-int				{ KEYWORD_RETURN(INT); }
-__int128		{ KEYWORD_RETURN(INT); }				// GCC
-__label__		{ KEYWORD_RETURN(LABEL); }				// GCC
-long			{ KEYWORD_RETURN(LONG); }
-lvalue			{ KEYWORD_RETURN(LVALUE); }				// CFA
-_Noreturn		{ KEYWORD_RETURN(NORETURN); }			// C11
-register		{ KEYWORD_RETURN(REGISTER); }
-restrict		{ KEYWORD_RETURN(RESTRICT); }			// C99
-__restrict		{ KEYWORD_RETURN(RESTRICT); }			// GCC
-__restrict__	{ KEYWORD_RETURN(RESTRICT); }			// GCC
-return			{ KEYWORD_RETURN(RETURN); }
-short			{ KEYWORD_RETURN(SHORT); }
-signed			{ KEYWORD_RETURN(SIGNED); }
-__signed		{ KEYWORD_RETURN(SIGNED); }				// GCC
-__signed__		{ KEYWORD_RETURN(SIGNED); }				// GCC
-sizeof			{ KEYWORD_RETURN(SIZEOF); }
-static			{ KEYWORD_RETURN(STATIC); }
-_Static_assert	{ KEYWORD_RETURN(STATICASSERT); }		// C11
-struct			{ KEYWORD_RETURN(STRUCT); }
-switch			{ KEYWORD_RETURN(SWITCH); }
-_Thread_local	{ KEYWORD_RETURN(THREADLOCAL); }		// C11
-throw			{ KEYWORD_RETURN(THROW); }				// CFA
-try				{ KEYWORD_RETURN(TRY); }				// CFA
-type			{ KEYWORD_RETURN(TYPE); }				// CFA
-typedef			{ KEYWORD_RETURN(TYPEDEF); }
-typeof			{ KEYWORD_RETURN(TYPEOF); }				// GCC
-__typeof		{ KEYWORD_RETURN(TYPEOF); }				// GCC
-__typeof__		{ KEYWORD_RETURN(TYPEOF); }				// GCC
-union			{ KEYWORD_RETURN(UNION); }
-unsigned		{ KEYWORD_RETURN(UNSIGNED); }
-void			{ KEYWORD_RETURN(VOID); }
-volatile		{ KEYWORD_RETURN(VOLATILE); }
-__volatile		{ KEYWORD_RETURN(VOLATILE); }			// GCC
-__volatile__	{ KEYWORD_RETURN(VOLATILE); }			// GCC
-while			{ KEYWORD_RETURN(WHILE); }
-
-				/* identifier */
-{identifier}	{ IDENTIFIER_RETURN(); }
-{attr_identifier} { ATTRIBUTE_RETURN(); }
-"`"			{ BEGIN BKQUOTE; }
-<BKQUOTE>{identifier} { IDENTIFIER_RETURN(); }
-<BKQUOTE>"`"	{ BEGIN 0; }
-
-				/* numeric constants */
-"0"				{ NUMERIC_RETURN(ZERO); }				// CFA
-"1"				{ NUMERIC_RETURN(ONE); }				// CFA
-{decimal_constant}	{ NUMERIC_RETURN(INTEGERconstant); }
-{octal_constant}	{ NUMERIC_RETURN(INTEGERconstant); }
-{hex_constant}		{ NUMERIC_RETURN(INTEGERconstant); }
-{floating_constant}	{ NUMERIC_RETURN(FLOATINGconstant); }
-{hex_floating_constant}	{ NUMERIC_RETURN(FLOATINGconstant); }
-
-				/* character constant, allows empty value */
-"L"?"_"?[']		{ BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
-<QUOTE>[^'\\\n]* { *strtext += std::string( yytext ); }
-<QUOTE>['\n]	{ BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
-				/* ' stop highlighting */
-
-				/* string constant */
-"L"?"_"?["]		{ BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
-<STRING>[^"\\\n]* { *strtext += std::string( yytext ); }
-<STRING>["\n]	{ BEGIN 0; *strtext += std::string( yytext); RETURN_STR(STRINGliteral); }
-				/* " stop highlighting */
-
-<QUOTE,STRING>{escape_seq} { rm_underscore(); *strtext += std::string( yytext ); }
-<QUOTE,STRING>[\\]	{ *strtext += std::string( yytext ); } // unknown escape character
-
-				/* punctuation */
-"["				{ ASCIIOP_RETURN(); }
-"]"				{ ASCIIOP_RETURN(); }
-"("				{ ASCIIOP_RETURN(); }
-")"				{ ASCIIOP_RETURN(); }
-"{"				{ ASCIIOP_RETURN(); }
-"}"				{ ASCIIOP_RETURN(); }
-","				{ ASCIIOP_RETURN(); }					// also operator
-":"				{ ASCIIOP_RETURN(); }
-";"				{ ASCIIOP_RETURN(); }
-"."				{ ASCIIOP_RETURN(); }					// also operator
-"..."			{ NAMEDOP_RETURN(ELLIPSIS); }
-
-				/* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
-"<:"			{ RETURN_VAL('['); }
-":>"			{ RETURN_VAL(']'); }
-"<%"			{ RETURN_VAL('{'); }
-"%>"			{ RETURN_VAL('}'); }
-
-				/* operators */
-"!"				{ ASCIIOP_RETURN(); }
-"+"				{ ASCIIOP_RETURN(); }
-"-"				{ ASCIIOP_RETURN(); }
-"*"				{ ASCIIOP_RETURN(); }
-"/"				{ ASCIIOP_RETURN(); }
-"%"				{ ASCIIOP_RETURN(); }
-"^"				{ ASCIIOP_RETURN(); }
-"~"				{ ASCIIOP_RETURN(); }
-"&"				{ ASCIIOP_RETURN(); }
-"|"				{ ASCIIOP_RETURN(); }
-"<"				{ ASCIIOP_RETURN(); }
-">"				{ ASCIIOP_RETURN(); }
-"="				{ ASCIIOP_RETURN(); }
-"?"				{ ASCIIOP_RETURN(); }
-
-"++"			{ NAMEDOP_RETURN(ICR); }
-"--"			{ NAMEDOP_RETURN(DECR); }
-"=="			{ NAMEDOP_RETURN(EQ); }
-"!="			{ NAMEDOP_RETURN(NE); }
-"<<"			{ NAMEDOP_RETURN(LS); }
-">>"			{ NAMEDOP_RETURN(RS); }
-"<="			{ NAMEDOP_RETURN(LE); }
-">="			{ NAMEDOP_RETURN(GE); }
-"&&"			{ NAMEDOP_RETURN(ANDAND); }
-"||"			{ NAMEDOP_RETURN(OROR); }
-"->"			{ NAMEDOP_RETURN(ARROW); }
-"+="			{ NAMEDOP_RETURN(PLUSassign); }
-"-="			{ NAMEDOP_RETURN(MINUSassign); }
-"*="			{ NAMEDOP_RETURN(MULTassign); }
-"/="			{ NAMEDOP_RETURN(DIVassign); }
-"%="			{ NAMEDOP_RETURN(MODassign); }
-"&="			{ NAMEDOP_RETURN(ANDassign); }
-"|="			{ NAMEDOP_RETURN(ORassign); }
-"^="			{ NAMEDOP_RETURN(ERassign); }
-"<<="			{ NAMEDOP_RETURN(LSassign); }
-">>="			{ NAMEDOP_RETURN(RSassign); }
-
-				/* CFA, operator identifier */
-{op_unary}"?"	{ IDENTIFIER_RETURN(); }				// unary
-"?"({op_unary_pre_post}|"()"|"[?]") { IDENTIFIER_RETURN(); }
-"?"{op_binary_over}"?"	{ IDENTIFIER_RETURN(); }		// binary
-	/*
-	  This rule handles ambiguous cases with operator identifiers, e.g., "int *?*?()", where the string "*?*?"
-	  can be lexed as "*"/"?*?" or "*?"/"*?". Since it is common practise to put a unary operator juxtaposed
-	  to an identifier, e.g., "*i", users will be annoyed if they cannot do this with respect to operator
-	  identifiers. Even with this special hack, there are 5 general cases that cannot be handled. The first
-	  case is for the function-call identifier "?()":
-
-	  int * ?()();	// declaration: space required after '*'
-	  * ?()();	// expression: space required after '*'
-
-	  Without the space, the string "*?()" is ambiguous without N character look ahead; it requires scanning
-	  ahead to determine if there is a '(', which is the start of an argument/parameter list.
-
-	  The 4 remaining cases occur in expressions:
-
-	  i++?i:0;		// space required before '?'
-	  i--?i:0;		// space required before '?'
-	  i?++i:0;		// space required after '?'
-	  i?--i:0;		// space required after '?'
-
-	  In the first two cases, the string "i++?" is ambiguous, where this string can be lexed as "i"/"++?" or
-	  "i++"/"?"; it requires scanning ahead to determine if there is a '(', which is the start of an argument
-	  list.  In the second two cases, the string "?++x" is ambiguous, where this string can be lexed as
-	  "?++"/"x" or "?"/"++x"; it requires scanning ahead to determine if there is a '(', which is the start of
-	  an argument list.
-	*/
-{op_unary}"?"(({op_unary_pre_post}|"[?]")|({op_binary_over}"?")) {
-	// 1 or 2 character unary operator ?
-	int i = yytext[1] == '?' ? 1 : 2;
-	yyless( i );		// put back characters up to first '?'
-	if ( i > 1 ) {
-		NAMEDOP_RETURN( yytext[0] == '+' ? ICR : DECR );
-	} else {
-		ASCIIOP_RETURN();
-	} // if
-}
-
-				/* unknown characters */
-.			{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
-
-%%
-
-// Local Variables: //
-// fill-column: 110 //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Parser/lex.ll	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,403 @@
+/*
+ * Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+ *
+ * The contents of this file are covered under the licence agreement in the
+ * file "LICENCE" distributed with Cforall.
+ * 
+ * lex.l -- 
+ * 
+ * Author           : Peter A. Buhr
+ * Created On       : Sat Sep 22 08:58:10 2001
+ * Last Modified By : Peter A. Buhr
+ * Last Modified On : Fri Jun 19 11:10:14 2015
+ * Update Count     : 392
+ */
+
+%option yylineno
+%option nounput
+
+%{
+// This lexer assumes the program has been preprocessed by cpp. Hence, all user level preprocessor directive have been
+// performed and removed from the source. The only exceptions are preprocessor directives passed to the compiler (e.g.,
+// line-number directives) and C/C++ style comments, which are ignored.
+
+//**************************** Includes and Defines ****************************
+
+#include <string>
+
+#include "lex.h"
+#include "ParseNode.h"
+#include "parser.h"										// YACC generated definitions based on C++ grammar
+
+char *yyfilename;
+std::string *strtext;									// accumulate parts of character and string constant value
+
+#define RETURN_LOCN(x)		yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return( x )
+#define RETURN_VAL(x)		yylval.tok.str = new std::string( yytext ); RETURN_LOCN( x )
+#define RETURN_CHAR(x)		yylval.tok.str = NULL; RETURN_LOCN( x )
+#define RETURN_STR(x)		yylval.tok.str = strtext; RETURN_LOCN( x )
+
+#define WHITE_RETURN(x)									// do nothing
+#define NEWLINE_RETURN()	WHITE_RETURN( '\n' )
+#define ASCIIOP_RETURN()	RETURN_CHAR( (int)yytext[0] ) // single character operator
+#define NAMEDOP_RETURN(x)	RETURN_VAL( x )				// multichar operator, with a name
+#define NUMERIC_RETURN(x)	rm_underscore(); RETURN_VAL( x ) // numeric constant
+#define KEYWORD_RETURN(x)	RETURN_CHAR( x )			// keyword
+#define IDENTIFIER_RETURN()	RETURN_VAL( (typedefTable.isIdentifier( yytext ) ? IDENTIFIER : typedefTable.isTypedef( yytext ) ? TYPEDEFname : TYPEGENname ) )
+#define ATTRIBUTE_RETURN()	RETURN_VAL( ATTR_IDENTIFIER )
+
+void rm_underscore() {
+	// remove underscores in numeric constant
+	int j = 0;
+	for ( int i = 0; yytext[i] != '\0'; i += 1 ) {
+		if ( yytext[i] != '_' ) {
+			yytext[j] = yytext[i];
+			j += 1;
+		} // if
+	} // for
+	yyleng = j;
+	yytext[yyleng] = '\0';
+}
+
+%}
+
+octal [0-7]
+nonzero [1-9]
+decimal [0-9]
+hex [0-9a-fA-F]
+universal_char "\\"((u"_"?{hex_quad})|(U"_"?{hex_quad}{2}))
+
+				// identifier, GCC: $ in identifier
+identifier ([a-zA-Z_$]|{universal_char})([0-9a-zA-Z_$]|{universal_char})*
+
+				// quoted identifier
+quoted_identifier "`"{identifier}"`"
+
+				// attribute identifier, GCC: $ in identifier
+attr_identifier "@"{identifier}
+
+				// numeric constants, CFA: '_' in constant
+hex_quad {hex}("_"?{hex}){3}
+integer_suffix "_"?(([uU][lL]?)|([uU]("ll"|"LL")?)|([lL][uU]?)|("ll"|"LL")[uU]?)
+
+octal_digits ({octal})|({octal}({octal}|"_")*{octal})
+octal_prefix "0""_"?
+octal_constant (("0")|({octal_prefix}{octal_digits})){integer_suffix}?
+
+nonzero_digits ({nonzero})|({nonzero}({decimal}|"_")*{decimal})
+decimal_constant {nonzero_digits}{integer_suffix}?
+
+hex_digits ({hex})|({hex}({hex}|"_")*{hex})
+hex_prefix "0"[xX]"_"?
+hex_constant {hex_prefix}{hex_digits}{integer_suffix}?
+
+decimal_digits ({decimal})|({decimal}({decimal}|"_")*{decimal})
+fractional_constant ({decimal_digits}?"."{decimal_digits})|({decimal_digits}".")
+exponent "_"?[eE]"_"?[+-]?{decimal_digits}
+floating_suffix "_"?[flFL]
+floating_constant (({fractional_constant}{exponent}?)|({decimal_digits}{exponent})){floating_suffix}?
+
+binary_exponent "_"?[pP]"_"?[+-]?{decimal_digits}
+hex_fractional_constant ({hex_digits}?"."{hex_digits})|({hex_digits}".")
+hex_floating_constant {hex_prefix}(({hex_fractional_constant}{binary_exponent})|({hex_digits}{binary_exponent})){floating_suffix}?
+
+				// character escape sequence, GCC: \e => esc character
+simple_escape "\\"[abefnrtv'"?\\]
+				// ' stop highlighting
+octal_escape "\\"{octal}("_"?{octal}){0,2}
+hex_escape "\\""x""_"?{hex_digits}
+escape_seq {simple_escape}|{octal_escape}|{hex_escape}|{universal_char}
+cwide_prefix "L"|"U"|"u"
+swide_prefix {cwide_prefix}|"u8"
+
+				// display/white-space characters
+h_tab [\011]
+form_feed [\014]
+v_tab [\013]
+c_return [\015]
+h_white [ ]|{h_tab}
+
+				// operators
+op_unary_only "~"|"!"
+op_unary_binary "+"|"-"|"*"
+op_unary_pre_post "++"|"--"
+op_unary {op_unary_only}|{op_unary_binary}|{op_unary_pre_post}
+
+op_binary_only "/"|"%"|"^"|"&"|"|"|"<"|">"|"="|"=="|"!="|"<<"|">>"|"<="|">="|"+="|"-="|"*="|"/="|"%="|"&="|"|="|"^="|"<<="|">>="
+op_binary_over {op_unary_binary}|{op_binary_only}
+op_binary_not_over "?"|"->"|"&&"|"||"
+operator {op_unary_pre_post}|{op_binary_over}|{op_binary_not_over}
+
+%x COMMENT
+%x BKQUOTE
+%x QUOTE
+%x STRING
+
+%%
+				   /* line directives */
+^{h_white}*"#"{h_white}*[0-9]+{h_white}*["][^"\n]+["][^\n]*"\n" {
+	/* " stop highlighting */
+	char *end_num;
+	char *begin_string, *end_string;
+	char *filename;
+	long lineno, length;
+	lineno = strtol( yytext + 1, &end_num, 0 );
+	begin_string = strchr( end_num, '"' );
+	if ( begin_string ) {
+		end_string = strchr( begin_string + 1, '"' );
+		if ( end_string ) {
+			length = end_string - begin_string - 1;
+			filename = new char[ length + 1 ];
+			memcpy( filename, begin_string + 1, length );
+			filename[ length ] = '\0';
+			//std::cout << "file " << filename << " line " << lineno << std::endl;
+			yylineno = lineno;
+			yyfilename = filename;
+		} // if
+	} // if
+}
+
+				/* ignore preprocessor directives (for now) */
+^{h_white}*"#"[^\n]*"\n" ;
+
+				/* ignore C style comments (ALSO HANDLED BY CPP) */
+"/*"			{ BEGIN COMMENT; }
+<COMMENT>.|\n	;
+<COMMENT>"*/"	{ BEGIN 0; }
+
+				/* ignore C++ style comments (ALSO HANDLED BY CPP) */
+"//"[^\n]*"\n"	;
+
+				/* ignore whitespace */
+{h_white}+		{ WHITE_RETURN(' '); }
+({v_tab}|{c_return}|{form_feed})+ { WHITE_RETURN(' '); }
+({h_white}|{v_tab}|{c_return}|{form_feed})*"\n" { NEWLINE_RETURN(); }
+
+				/* keywords */
+_Alignas		{ KEYWORD_RETURN(ALIGNAS); }			// C11
+_Alignof		{ KEYWORD_RETURN(ALIGNOF); }			// C11
+__alignof		{ KEYWORD_RETURN(ALIGNOF); }			// GCC
+__alignof__		{ KEYWORD_RETURN(ALIGNOF); }			// GCC
+asm				{ KEYWORD_RETURN(ASM); }
+__asm			{ KEYWORD_RETURN(ASM); }				// GCC
+__asm__			{ KEYWORD_RETURN(ASM); }				// GCC
+_Atomic			{ KEYWORD_RETURN(ATOMIC); }				// C11
+__attribute		{ KEYWORD_RETURN(ATTRIBUTE); }			// GCC
+__attribute__	{ KEYWORD_RETURN(ATTRIBUTE); }			// GCC
+auto			{ KEYWORD_RETURN(AUTO); }
+_Bool			{ KEYWORD_RETURN(BOOL); }				// C99
+break			{ KEYWORD_RETURN(BREAK); }
+case			{ KEYWORD_RETURN(CASE); }
+catch			{ KEYWORD_RETURN(CATCH); }				// CFA
+char			{ KEYWORD_RETURN(CHAR); }
+choose			{ KEYWORD_RETURN(CHOOSE); }				// CFA
+_Complex		{ KEYWORD_RETURN(COMPLEX); }			// C99
+__complex		{ KEYWORD_RETURN(COMPLEX); }			// GCC
+__complex__		{ KEYWORD_RETURN(COMPLEX); }			// GCC
+const			{ KEYWORD_RETURN(CONST); }
+__const			{ KEYWORD_RETURN(CONST); }				// GCC
+__const__		{ KEYWORD_RETURN(CONST); }				// GCC
+context			{ KEYWORD_RETURN(CONTEXT); }			// CFA
+continue		{ KEYWORD_RETURN(CONTINUE); }
+default			{ KEYWORD_RETURN(DEFAULT); }
+do				{ KEYWORD_RETURN(DO); }
+double			{ KEYWORD_RETURN(DOUBLE); }
+dtype			{ KEYWORD_RETURN(DTYPE); }				// CFA
+else			{ KEYWORD_RETURN(ELSE); }
+enum			{ KEYWORD_RETURN(ENUM); }
+__extension__	{ KEYWORD_RETURN(EXTENSION); }			// GCC
+extern			{ KEYWORD_RETURN(EXTERN); }
+fallthru		{ KEYWORD_RETURN(FALLTHRU); }			// CFA
+finally			{ KEYWORD_RETURN(FINALLY); }			// CFA
+float			{ KEYWORD_RETURN(FLOAT); }
+__float128		{ KEYWORD_RETURN(FLOAT); }				// GCC
+for				{ KEYWORD_RETURN(FOR); }
+forall			{ KEYWORD_RETURN(FORALL); }				// CFA
+fortran			{ KEYWORD_RETURN(FORTRAN); }
+ftype			{ KEYWORD_RETURN(FTYPE); }				// CFA
+_Generic		{ KEYWORD_RETURN(GENERIC); }			// C11
+goto			{ KEYWORD_RETURN(GOTO); }
+if				{ KEYWORD_RETURN(IF); }
+_Imaginary		{ KEYWORD_RETURN(IMAGINARY); }			// C99
+__imag			{ KEYWORD_RETURN(IMAGINARY); }			// GCC
+__imag__		{ KEYWORD_RETURN(IMAGINARY); }			// GCC
+inline			{ KEYWORD_RETURN(INLINE); }				// C99
+__inline		{ KEYWORD_RETURN(INLINE); }				// GCC
+__inline__		{ KEYWORD_RETURN(INLINE); }				// GCC
+int				{ KEYWORD_RETURN(INT); }
+__int128		{ KEYWORD_RETURN(INT); }				// GCC
+__label__		{ KEYWORD_RETURN(LABEL); }				// GCC
+long			{ KEYWORD_RETURN(LONG); }
+lvalue			{ KEYWORD_RETURN(LVALUE); }				// CFA
+_Noreturn		{ KEYWORD_RETURN(NORETURN); }			// C11
+register		{ KEYWORD_RETURN(REGISTER); }
+restrict		{ KEYWORD_RETURN(RESTRICT); }			// C99
+__restrict		{ KEYWORD_RETURN(RESTRICT); }			// GCC
+__restrict__	{ KEYWORD_RETURN(RESTRICT); }			// GCC
+return			{ KEYWORD_RETURN(RETURN); }
+short			{ KEYWORD_RETURN(SHORT); }
+signed			{ KEYWORD_RETURN(SIGNED); }
+__signed		{ KEYWORD_RETURN(SIGNED); }				// GCC
+__signed__		{ KEYWORD_RETURN(SIGNED); }				// GCC
+sizeof			{ KEYWORD_RETURN(SIZEOF); }
+static			{ KEYWORD_RETURN(STATIC); }
+_Static_assert	{ KEYWORD_RETURN(STATICASSERT); }		// C11
+struct			{ KEYWORD_RETURN(STRUCT); }
+switch			{ KEYWORD_RETURN(SWITCH); }
+_Thread_local	{ KEYWORD_RETURN(THREADLOCAL); }		// C11
+throw			{ KEYWORD_RETURN(THROW); }				// CFA
+try				{ KEYWORD_RETURN(TRY); }				// CFA
+type			{ KEYWORD_RETURN(TYPE); }				// CFA
+typedef			{ KEYWORD_RETURN(TYPEDEF); }
+typeof			{ KEYWORD_RETURN(TYPEOF); }				// GCC
+__typeof		{ KEYWORD_RETURN(TYPEOF); }				// GCC
+__typeof__		{ KEYWORD_RETURN(TYPEOF); }				// GCC
+union			{ KEYWORD_RETURN(UNION); }
+unsigned		{ KEYWORD_RETURN(UNSIGNED); }
+void			{ KEYWORD_RETURN(VOID); }
+volatile		{ KEYWORD_RETURN(VOLATILE); }
+__volatile		{ KEYWORD_RETURN(VOLATILE); }			// GCC
+__volatile__	{ KEYWORD_RETURN(VOLATILE); }			// GCC
+while			{ KEYWORD_RETURN(WHILE); }
+
+				/* identifier */
+{identifier}	{ IDENTIFIER_RETURN(); }
+{attr_identifier} { ATTRIBUTE_RETURN(); }
+"`"			{ BEGIN BKQUOTE; }
+<BKQUOTE>{identifier} { IDENTIFIER_RETURN(); }
+<BKQUOTE>"`"	{ BEGIN 0; }
+
+				/* numeric constants */
+"0"				{ NUMERIC_RETURN(ZERO); }				// CFA
+"1"				{ NUMERIC_RETURN(ONE); }				// CFA
+{decimal_constant} { NUMERIC_RETURN(INTEGERconstant); }
+{octal_constant} { NUMERIC_RETURN(INTEGERconstant); }
+{hex_constant}	{ NUMERIC_RETURN(INTEGERconstant); }
+{floating_constant}	{ NUMERIC_RETURN(FLOATINGconstant); }
+{hex_floating_constant}	{ NUMERIC_RETURN(FLOATINGconstant); }
+
+				/* character constant, allows empty value */
+({cwide_prefix}[_]?)?['] { BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
+<QUOTE>[^'\\\n]* { *strtext += std::string( yytext ); }
+<QUOTE>['\n]	{ BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
+				/* ' stop highlighting */
+
+				/* string constant */
+({swide_prefix}[_]?)?["] { BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
+<STRING>[^"\\\n]* { *strtext += std::string( yytext ); }
+<STRING>["\n]	{ BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); }
+				/* " stop highlighting */
+
+				/* common character/string constant */
+<QUOTE,STRING>{escape_seq} { rm_underscore(); *strtext += std::string( yytext ); }
+<QUOTE,STRING>"\\"{h_white}*"\n" {}						// continuation (ALSO HANDLED BY CPP)
+<QUOTE,STRING>"\\" { *strtext += std::string( yytext ); } // unknown escape character
+
+				/* punctuation */
+"["				{ ASCIIOP_RETURN(); }
+"]"				{ ASCIIOP_RETURN(); }
+"("				{ ASCIIOP_RETURN(); }
+")"				{ ASCIIOP_RETURN(); }
+"{"				{ ASCIIOP_RETURN(); }
+"}"				{ ASCIIOP_RETURN(); }
+","				{ ASCIIOP_RETURN(); }					// also operator
+":"				{ ASCIIOP_RETURN(); }
+";"				{ ASCIIOP_RETURN(); }
+"."				{ ASCIIOP_RETURN(); }					// also operator
+"..."			{ NAMEDOP_RETURN(ELLIPSIS); }
+
+				/* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
+"<:"			{ RETURN_VAL('['); }
+":>"			{ RETURN_VAL(']'); }
+"<%"			{ RETURN_VAL('{'); }
+"%>"			{ RETURN_VAL('}'); }
+
+				/* operators */
+"!"				{ ASCIIOP_RETURN(); }
+"+"				{ ASCIIOP_RETURN(); }
+"-"				{ ASCIIOP_RETURN(); }
+"*"				{ ASCIIOP_RETURN(); }
+"/"				{ ASCIIOP_RETURN(); }
+"%"				{ ASCIIOP_RETURN(); }
+"^"				{ ASCIIOP_RETURN(); }
+"~"				{ ASCIIOP_RETURN(); }
+"&"				{ ASCIIOP_RETURN(); }
+"|"				{ ASCIIOP_RETURN(); }
+"<"				{ ASCIIOP_RETURN(); }
+">"				{ ASCIIOP_RETURN(); }
+"="				{ ASCIIOP_RETURN(); }
+"?"				{ ASCIIOP_RETURN(); }
+
+"++"			{ NAMEDOP_RETURN(ICR); }
+"--"			{ NAMEDOP_RETURN(DECR); }
+"=="			{ NAMEDOP_RETURN(EQ); }
+"!="			{ NAMEDOP_RETURN(NE); }
+"<<"			{ NAMEDOP_RETURN(LS); }
+">>"			{ NAMEDOP_RETURN(RS); }
+"<="			{ NAMEDOP_RETURN(LE); }
+">="			{ NAMEDOP_RETURN(GE); }
+"&&"			{ NAMEDOP_RETURN(ANDAND); }
+"||"			{ NAMEDOP_RETURN(OROR); }
+"->"			{ NAMEDOP_RETURN(ARROW); }
+"+="			{ NAMEDOP_RETURN(PLUSassign); }
+"-="			{ NAMEDOP_RETURN(MINUSassign); }
+"*="			{ NAMEDOP_RETURN(MULTassign); }
+"/="			{ NAMEDOP_RETURN(DIVassign); }
+"%="			{ NAMEDOP_RETURN(MODassign); }
+"&="			{ NAMEDOP_RETURN(ANDassign); }
+"|="			{ NAMEDOP_RETURN(ORassign); }
+"^="			{ NAMEDOP_RETURN(ERassign); }
+"<<="			{ NAMEDOP_RETURN(LSassign); }
+">>="			{ NAMEDOP_RETURN(RSassign); }
+
+				/* CFA, operator identifier */
+{op_unary}"?"	{ IDENTIFIER_RETURN(); }				// unary
+"?"({op_unary_pre_post}|"()"|"[?]"|"{}") { IDENTIFIER_RETURN(); }
+"?"{op_binary_over}"?"	{ IDENTIFIER_RETURN(); }		// binary
+	/*
+	  This rule handles ambiguous cases with operator identifiers, e.g., "int *?*?()", where the string "*?*?"
+	  can be lexed as "*"/"?*?" or "*?"/"*?". Since it is common practise to put a unary operator juxtaposed
+	  to an identifier, e.g., "*i", users will be annoyed if they cannot do this with respect to operator
+	  identifiers. Even with this special hack, there are 5 general cases that cannot be handled. The first
+	  case is for the function-call identifier "?()":
+
+	  int * ?()();	// declaration: space required after '*'
+	  * ?()();	// expression: space required after '*'
+
+	  Without the space, the string "*?()" is ambiguous without N character look ahead; it requires scanning
+	  ahead to determine if there is a '(', which is the start of an argument/parameter list.
+
+	  The 4 remaining cases occur in expressions:
+
+	  i++?i:0;		// space required before '?'
+	  i--?i:0;		// space required before '?'
+	  i?++i:0;		// space required after '?'
+	  i?--i:0;		// space required after '?'
+
+	  In the first two cases, the string "i++?" is ambiguous, where this string can be lexed as "i"/"++?" or
+	  "i++"/"?"; it requires scanning ahead to determine if there is a '(', which is the start of an argument
+	  list.  In the second two cases, the string "?++x" is ambiguous, where this string can be lexed as
+	  "?++"/"x" or "?"/"++x"; it requires scanning ahead to determine if there is a '(', which is the start of
+	  an argument list.
+	*/
+{op_unary}"?"(({op_unary_pre_post}|"[?]")|({op_binary_over}"?")) {
+	// 1 or 2 character unary operator ?
+	int i = yytext[1] == '?' ? 1 : 2;
+	yyless( i );		// put back characters up to first '?'
+	if ( i > 1 ) {
+		NAMEDOP_RETURN( yytext[0] == '+' ? ICR : DECR );
+	} else {
+		ASCIIOP_RETURN();
+	} // if
+}
+
+				/* unknown characters */
+.			{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
+
+%%
+
+// Local Variables: //
+// mode: c++ //
+// tab-width: 4 //
+// compile-command: "make install" //
+// End: //
Index: src/Parser/module.mk
===================================================================
--- src/Parser/module.mk	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Parser/module.mk	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -8,18 +8,19 @@
 ## module.mk -- 
 ##
-## Author           : Richard C. Bilson
+## Author           : Peter A. Buhr
 ## Created On       : Sat May 16 15:29:09 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Thu May 21 21:17:07 2015
-## Update Count     : 2
+## Last Modified On : Mon Jun  8 20:23:47 2015
+## Update Count     : 87
 ###############################################################################
 
-YACC=bison
-YFLAGS=-d --debug -v
-LEX=flex
-LFLAGS=
+BUILT_SOURCES = Parser/parser.h
 
-SRC += Parser/cfa.y \
-       Parser/lex.l \
+AM_YFLAGS = -d -t -v
+cfa_cpp_LDADD = ${LEXLIB}	# yywrap
+MAINTAINERCLEANFILES = Parser/parser.output
+
+SRC += Parser/parser.yy \
+       Parser/lex.ll \
        Parser/TypedefTable.cc \
        Parser/ParseNode.cc \
@@ -32,23 +33,2 @@
        Parser/parseutility.cc \
        Parser/Parser.cc
-
-EXTRA_OUTPUT += Parser/cfa.tab.cc \
-                Parser/cfa.tab.h \
-		Parser/lex.yy.cc \
-		Parser/cfa.output
-
-LIBS += -lfl
-
-Parser/Parser.cc: Parser/cfa.tab.h
-
-Parser/cfa.tab.cc: Parser/cfa.y
-	$(YACC) $(YFLAGS) $< --file-prefix=Parser/cfa
-	-mv Parser/cfa.tab.c Parser/cfa.tab.cc
-
-Parser/cfa.tab.h: Parser/cfa.tab.cc
-
-Parser/lex.yy.cc: Parser/lex.l Parser/cfa.tab.h Parser/TypedefTable.h
-	$(LEX) $(LFLAGS) -o$@ $< 
-
-Parser/lex.yy.o: Parser/lex.yy.cc Parser/ParseNode.h
-	$(CXX) $(CXXFLAGS) -Wno-unused -c -o $@ $<
Index: src/Parser/parser.cc
===================================================================
--- src/Parser/parser.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Parser/parser.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,9343 @@
+/* A Bison parser, made by GNU Bison 2.5.  */
+
+/* Bison implementation for Yacc-like parsers in C
+   
+      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+   
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+   
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+   
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* As a special exception, you may create a larger work that contains
+   part or all of the Bison parser skeleton and distribute that work
+   under terms of your choice, so long as that work isn't itself a
+   parser generator using the skeleton or a modified version thereof
+   as a parser skeleton.  Alternatively, if you modify or redistribute
+   the parser skeleton itself, you may (at your option) remove this
+   special exception, which will cause the skeleton and the resulting
+   Bison output files to be licensed under the GNU General Public
+   License without this special exception.
+   
+   This special exception was added by the Free Software Foundation in
+   version 2.2 of Bison.  */
+
+/* C LALR(1) parser skeleton written by Richard Stallman, by
+   simplifying the original so-called "semantic" parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON 1
+
+/* Bison version.  */
+#define YYBISON_VERSION "2.5"
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 0
+
+/* Push parsers.  */
+#define YYPUSH 0
+
+/* Pull parsers.  */
+#define YYPULL 1
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+
+
+/* Copy the first part of user declarations.  */
+
+/* Line 268 of yacc.c  */
+#line 44 "parser.yy"
+
+#define YYDEBUG_LEXER_TEXT (yylval)						// lexer loads this up each time
+#define YYDEBUG 1										// get the pretty debugging code to compile
+extern char *yytext;
+
+#undef __GNUC_MINOR__
+
+#include <cstdio>
+#include <stack>
+#include "TypedefTable.h"
+#include "lex.h"
+#include "ParseNode.h"
+#include "LinkageSpec.h"
+
+DeclarationNode *theTree = 0;							// the resulting parse tree
+LinkageSpec::Type linkage = LinkageSpec::Cforall;
+std::stack< LinkageSpec::Type > linkageStack;
+TypedefTable typedefTable;
+
+
+/* Line 268 of yacc.c  */
+#line 92 "Parser/parser.cc"
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 1
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     TYPEDEF = 258,
+     AUTO = 259,
+     EXTERN = 260,
+     REGISTER = 261,
+     STATIC = 262,
+     INLINE = 263,
+     FORTRAN = 264,
+     CONST = 265,
+     VOLATILE = 266,
+     RESTRICT = 267,
+     FORALL = 268,
+     LVALUE = 269,
+     VOID = 270,
+     CHAR = 271,
+     SHORT = 272,
+     INT = 273,
+     LONG = 274,
+     FLOAT = 275,
+     DOUBLE = 276,
+     SIGNED = 277,
+     UNSIGNED = 278,
+     BOOL = 279,
+     COMPLEX = 280,
+     IMAGINARY = 281,
+     TYPEOF = 282,
+     LABEL = 283,
+     ENUM = 284,
+     STRUCT = 285,
+     UNION = 286,
+     TYPE = 287,
+     FTYPE = 288,
+     DTYPE = 289,
+     CONTEXT = 290,
+     SIZEOF = 291,
+     ATTRIBUTE = 292,
+     EXTENSION = 293,
+     IF = 294,
+     ELSE = 295,
+     SWITCH = 296,
+     CASE = 297,
+     DEFAULT = 298,
+     DO = 299,
+     WHILE = 300,
+     FOR = 301,
+     BREAK = 302,
+     CONTINUE = 303,
+     GOTO = 304,
+     RETURN = 305,
+     CHOOSE = 306,
+     FALLTHRU = 307,
+     TRY = 308,
+     CATCH = 309,
+     FINALLY = 310,
+     THROW = 311,
+     ASM = 312,
+     ALIGNAS = 313,
+     ALIGNOF = 314,
+     ATOMIC = 315,
+     GENERIC = 316,
+     NORETURN = 317,
+     STATICASSERT = 318,
+     THREADLOCAL = 319,
+     IDENTIFIER = 320,
+     QUOTED_IDENTIFIER = 321,
+     TYPEDEFname = 322,
+     TYPEGENname = 323,
+     ATTR_IDENTIFIER = 324,
+     ATTR_TYPEDEFname = 325,
+     ATTR_TYPEGENname = 326,
+     INTEGERconstant = 327,
+     FLOATINGconstant = 328,
+     CHARACTERconstant = 329,
+     STRINGliteral = 330,
+     ZERO = 331,
+     ONE = 332,
+     ARROW = 333,
+     ICR = 334,
+     DECR = 335,
+     LS = 336,
+     RS = 337,
+     LE = 338,
+     GE = 339,
+     EQ = 340,
+     NE = 341,
+     ANDAND = 342,
+     OROR = 343,
+     ELLIPSIS = 344,
+     MULTassign = 345,
+     DIVassign = 346,
+     MODassign = 347,
+     PLUSassign = 348,
+     MINUSassign = 349,
+     LSassign = 350,
+     RSassign = 351,
+     ANDassign = 352,
+     ERassign = 353,
+     ORassign = 354,
+     THEN = 355
+   };
+#endif
+/* Tokens.  */
+#define TYPEDEF 258
+#define AUTO 259
+#define EXTERN 260
+#define REGISTER 261
+#define STATIC 262
+#define INLINE 263
+#define FORTRAN 264
+#define CONST 265
+#define VOLATILE 266
+#define RESTRICT 267
+#define FORALL 268
+#define LVALUE 269
+#define VOID 270
+#define CHAR 271
+#define SHORT 272
+#define INT 273
+#define LONG 274
+#define FLOAT 275
+#define DOUBLE 276
+#define SIGNED 277
+#define UNSIGNED 278
+#define BOOL 279
+#define COMPLEX 280
+#define IMAGINARY 281
+#define TYPEOF 282
+#define LABEL 283
+#define ENUM 284
+#define STRUCT 285
+#define UNION 286
+#define TYPE 287
+#define FTYPE 288
+#define DTYPE 289
+#define CONTEXT 290
+#define SIZEOF 291
+#define ATTRIBUTE 292
+#define EXTENSION 293
+#define IF 294
+#define ELSE 295
+#define SWITCH 296
+#define CASE 297
+#define DEFAULT 298
+#define DO 299
+#define WHILE 300
+#define FOR 301
+#define BREAK 302
+#define CONTINUE 303
+#define GOTO 304
+#define RETURN 305
+#define CHOOSE 306
+#define FALLTHRU 307
+#define TRY 308
+#define CATCH 309
+#define FINALLY 310
+#define THROW 311
+#define ASM 312
+#define ALIGNAS 313
+#define ALIGNOF 314
+#define ATOMIC 315
+#define GENERIC 316
+#define NORETURN 317
+#define STATICASSERT 318
+#define THREADLOCAL 319
+#define IDENTIFIER 320
+#define QUOTED_IDENTIFIER 321
+#define TYPEDEFname 322
+#define TYPEGENname 323
+#define ATTR_IDENTIFIER 324
+#define ATTR_TYPEDEFname 325
+#define ATTR_TYPEGENname 326
+#define INTEGERconstant 327
+#define FLOATINGconstant 328
+#define CHARACTERconstant 329
+#define STRINGliteral 330
+#define ZERO 331
+#define ONE 332
+#define ARROW 333
+#define ICR 334
+#define DECR 335
+#define LS 336
+#define RS 337
+#define LE 338
+#define GE 339
+#define EQ 340
+#define NE 341
+#define ANDAND 342
+#define OROR 343
+#define ELLIPSIS 344
+#define MULTassign 345
+#define DIVassign 346
+#define MODassign 347
+#define PLUSassign 348
+#define MINUSassign 349
+#define LSassign 350
+#define RSassign 351
+#define ANDassign 352
+#define ERassign 353
+#define ORassign 354
+#define THEN 355
+
+
+
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+{
+
+/* Line 293 of yacc.c  */
+#line 107 "parser.yy"
+
+	Token tok;
+	ParseNode *pn;
+	ExpressionNode *en;
+	DeclarationNode *decl;
+	DeclarationNode::Aggregate aggKey;
+	DeclarationNode::TypeClass tclass;
+	StatementNode *sn;
+	ConstantNode *constant;
+	InitializerNode *in;
+
+
+
+/* Line 293 of yacc.c  */
+#line 342 "Parser/parser.cc"
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+
+/* Copy the second part of user declarations.  */
+
+
+/* Line 343 of yacc.c  */
+#line 354 "Parser/parser.cc"
+
+#ifdef short
+# undef short
+#endif
+
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
+#endif
+
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
+
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+#  define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+#  define YYSIZE_T size_t
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYSIZE_T size_t
+# else
+#  define YYSIZE_T unsigned int
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+#ifndef YY_
+# if defined YYENABLE_NLS && YYENABLE_NLS
+#  if ENABLE_NLS
+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#  endif
+# endif
+# ifndef YY_
+#  define YY_(msgid) msgid
+# endif
+#endif
+
+/* Suppress unused-variable warnings by "using" E.  */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(e) ((void) (e))
+#else
+# define YYUSE(e) /* empty */
+#endif
+
+/* Identity function, used to suppress warnings about constant conditions.  */
+#ifndef lint
+# define YYID(n) (n)
+#else
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int yyi)
+#else
+static int
+YYID (yyi)
+    int yyi;
+#endif
+{
+  return yyi;
+}
+#endif
+
+#if ! defined yyoverflow || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# ifdef YYSTACK_USE_ALLOCA
+#  if YYSTACK_USE_ALLOCA
+#   ifdef __GNUC__
+#    define YYSTACK_ALLOC __builtin_alloca
+#   elif defined __BUILTIN_VA_ARG_INCR
+#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+#   elif defined _AIX
+#    define YYSTACK_ALLOC __alloca
+#   elif defined _MSC_VER
+#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+#    define alloca _alloca
+#   else
+#    define YYSTACK_ALLOC alloca
+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#     ifndef EXIT_SUCCESS
+#      define EXIT_SUCCESS 0
+#     endif
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+    /* The OS might guarantee only one guard page at the bottom of the stack,
+       and a page size can be as small as 4096 bytes.  So we cannot safely
+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
+       to allow for a few compiler-allocated temporary stack slots.  */
+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+#  endif
+# else
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+#  endif
+#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
+       && ! ((defined YYMALLOC || defined malloc) \
+	     && (defined YYFREE || defined free)))
+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#   ifndef EXIT_SUCCESS
+#    define EXIT_SUCCESS 0
+#   endif
+#  endif
+#  ifndef YYMALLOC
+#   define YYMALLOC malloc
+#   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifndef YYFREE
+#   define YYFREE free
+#   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+# endif
+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+
+
+#if (! defined yyoverflow \
+     && (! defined __cplusplus \
+	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  yytype_int16 yyss_alloc;
+  YYSTYPE yyvs_alloc;
+};
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+      + YYSTACK_GAP_MAXIMUM)
+
+# define YYCOPY_NEEDED 1
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
+    do									\
+      {									\
+	YYSIZE_T yynewbytes;						\
+	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
+	Stack = &yyptr->Stack_alloc;					\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+	yyptr += yynewbytes / sizeof (*yyptr);				\
+      }									\
+    while (YYID (0))
+
+#endif
+
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)		\
+      do					\
+	{					\
+	  YYSIZE_T yyi;				\
+	  for (yyi = 0; yyi < (Count); yyi++)	\
+	    (To)[yyi] = (From)[yyi];		\
+	}					\
+      while (YYID (0))
+#  endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
+/* YYFINAL -- State number of the termination state.  */
+#define YYFINAL  240
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   12266
+
+/* YYNTOKENS -- Number of terminals.  */
+#define YYNTOKENS  125
+/* YYNNTS -- Number of nonterminals.  */
+#define YYNNTS  235
+/* YYNRULES -- Number of rules.  */
+#define YYNRULES  735
+/* YYNRULES -- Number of states.  */
+#define YYNSTATES  1555
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   355
+
+#define YYTRANSLATE(YYX)						\
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const yytype_uint8 yytranslate[] =
+{
+       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,   110,     2,     2,     2,   117,   112,     2,
+     101,   102,   111,   113,   108,   114,   105,   116,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   109,   124,
+     118,   123,   119,   122,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,   103,     2,   104,   120,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,   106,   121,   107,   115,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,    99,   100
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const yytype_uint16 yyprhs[] =
+{
+       0,     0,     3,     4,     5,     7,     9,    11,    13,    15,
+      17,    19,    21,    23,    25,    27,    29,    32,    34,    36,
+      38,    40,    44,    48,    50,    57,    62,    66,    74,    78,
+      86,    89,    92,   100,   102,   106,   107,   109,   113,   121,
+     131,   133,   137,   139,   143,   151,   155,   163,   165,   168,
+     171,   174,   177,   180,   183,   186,   191,   193,   198,   203,
+     206,   211,   214,   216,   218,   220,   222,   224,   229,   234,
+     236,   240,   244,   248,   250,   254,   258,   260,   264,   268,
+     270,   274,   278,   282,   286,   288,   292,   296,   298,   302,
+     304,   308,   310,   314,   316,   320,   322,   326,   328,   334,
+     339,   345,   347,   349,   353,   357,   360,   361,   363,   368,
+     374,   381,   389,   391,   395,   397,   399,   401,   403,   405,
+     407,   409,   411,   413,   415,   417,   421,   422,   424,   426,
+     428,   430,   432,   434,   436,   438,   440,   445,   448,   456,
+     458,   462,   464,   467,   469,   472,   474,   477,   480,   486,
+     494,   500,   510,   516,   526,   528,   532,   534,   536,   540,
+     544,   547,   549,   552,   555,   556,   558,   561,   565,   566,
+     568,   571,   575,   579,   584,   585,   587,   589,   592,   598,
+     606,   613,   620,   625,   629,   634,   637,   641,   644,   648,
+     652,   656,   659,   663,   667,   672,   674,   680,   687,   697,
+     708,   711,   713,   716,   719,   722,   724,   731,   740,   751,
+     764,   765,   767,   769,   773,   778,   780,   784,   786,   788,
+     790,   794,   796,   798,   800,   804,   805,   807,   811,   816,
+     818,   822,   824,   826,   830,   834,   838,   842,   846,   849,
+     853,   860,   864,   868,   873,   875,   878,   881,   885,   891,
+     902,   913,   921,   929,   935,   945,   948,   951,   957,   961,
+     967,   972,   976,   981,   986,   994,   998,  1002,  1006,  1010,
+    1015,  1022,  1024,  1026,  1028,  1030,  1032,  1034,  1036,  1038,
+    1039,  1041,  1043,  1046,  1048,  1050,  1052,  1054,  1056,  1058,
+    1060,  1061,  1067,  1069,  1072,  1076,  1078,  1081,  1083,  1085,
+    1087,  1089,  1091,  1093,  1095,  1097,  1099,  1101,  1103,  1105,
+    1107,  1109,  1111,  1113,  1115,  1117,  1119,  1121,  1123,  1125,
+    1128,  1131,  1135,  1139,  1141,  1145,  1147,  1150,  1153,  1156,
+    1161,  1166,  1171,  1176,  1178,  1181,  1184,  1188,  1190,  1193,
+    1196,  1198,  1201,  1204,  1208,  1210,  1213,  1216,  1218,  1220,
+    1225,  1228,  1234,  1244,  1252,  1263,  1276,  1282,  1290,  1304,
+    1307,  1310,  1312,  1315,  1318,  1322,  1325,  1329,  1331,  1334,
+    1338,  1341,  1344,  1349,  1350,  1352,  1355,  1358,  1360,  1361,
+    1363,  1366,  1369,  1375,  1382,  1385,  1388,  1393,  1394,  1397,
+    1398,  1400,  1402,  1404,  1410,  1416,  1422,  1424,  1430,  1436,
+    1446,  1448,  1454,  1455,  1457,  1459,  1465,  1467,  1469,  1475,
+    1481,  1483,  1487,  1491,  1496,  1498,  1500,  1502,  1504,  1507,
+    1509,  1513,  1517,  1519,  1522,  1524,  1528,  1530,  1532,  1534,
+    1536,  1538,  1540,  1542,  1544,  1546,  1548,  1551,  1553,  1555,
+    1557,  1560,  1561,  1564,  1566,  1571,  1573,  1576,  1580,  1585,
+    1588,  1591,  1593,  1596,  1599,  1605,  1611,  1619,  1626,  1628,
+    1631,  1634,  1638,  1643,  1649,  1652,  1655,  1660,  1661,  1666,
+    1669,  1671,  1673,  1675,  1676,  1679,  1685,  1691,  1705,  1707,
+    1709,  1713,  1717,  1720,  1724,  1728,  1731,  1736,  1738,  1745,
+    1755,  1756,  1768,  1770,  1774,  1778,  1782,  1784,  1786,  1792,
+    1795,  1801,  1802,  1804,  1806,  1810,  1811,  1813,  1815,  1817,
+    1819,  1820,  1827,  1830,  1832,  1835,  1840,  1843,  1847,  1851,
+    1855,  1860,  1866,  1872,  1878,  1885,  1887,  1889,  1891,  1895,
+    1896,  1902,  1903,  1905,  1907,  1910,  1917,  1919,  1923,  1924,
+    1926,  1931,  1933,  1935,  1937,  1939,  1942,  1944,  1947,  1950,
+    1952,  1956,  1959,  1963,  1967,  1970,  1975,  1980,  1984,  1993,
+    1997,  2000,  2002,  2005,  2012,  2021,  2025,  2028,  2032,  2036,
+    2041,  2046,  2050,  2052,  2054,  2056,  2061,  2068,  2072,  2075,
+    2079,  2083,  2088,  2093,  2097,  2100,  2102,  2105,  2108,  2110,
+    2114,  2117,  2121,  2125,  2128,  2133,  2138,  2142,  2149,  2158,
+    2162,  2165,  2167,  2170,  2173,  2176,  2180,  2184,  2187,  2192,
+    2197,  2201,  2208,  2217,  2221,  2224,  2226,  2229,  2232,  2234,
+    2237,  2241,  2245,  2248,  2253,  2260,  2269,  2271,  2274,  2277,
+    2279,  2282,  2285,  2289,  2293,  2295,  2300,  2305,  2309,  2315,
+    2324,  2328,  2333,  2339,  2341,  2347,  2353,  2360,  2367,  2369,
+    2372,  2375,  2377,  2380,  2383,  2387,  2391,  2393,  2398,  2403,
+    2407,  2413,  2422,  2426,  2428,  2431,  2433,  2438,  2445,  2451,
+    2458,  2466,  2474,  2476,  2479,  2482,  2484,  2487,  2490,  2494,
+    2498,  2500,  2505,  2510,  2514,  2523,  2527,  2529,  2531,  2534,
+    2536,  2538,  2541,  2545,  2548,  2552,  2555,  2559,  2565,  2568,
+    2575,  2579,  2582,  2588,  2591,  2598,  2602,  2605,  2612,  2619,
+    2626,  2634,  2636,  2639,  2641,  2643,  2645,  2648,  2652,  2655,
+    2659,  2662,  2666,  2672,  2679,  2682,  2688,  2695,  2698,  2704,
+    2712,  2719,  2726,  2727,  2729,  2730
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
+static const yytype_int16 yyrhs[] =
+{
+     288,     0,    -1,    -1,    -1,    72,    -1,    73,    -1,    74,
+      -1,    65,    -1,    69,    -1,   132,    -1,    65,    -1,    69,
+      -1,    65,    -1,    76,    -1,    77,    -1,    75,    -1,   133,
+      75,    -1,    65,    -1,   132,    -1,   128,    -1,   133,    -1,
+     101,   160,   102,    -1,   101,   164,   102,    -1,   134,    -1,
+     135,   103,   126,   155,   127,   104,    -1,   135,   101,   136,
+     102,    -1,   135,   105,   131,    -1,   135,   105,   103,   126,
+     138,   127,   104,    -1,   135,    78,   131,    -1,   135,    78,
+     103,   126,   138,   127,   104,    -1,   135,    79,    -1,   135,
+      80,    -1,   101,   262,   102,   106,   266,   358,   107,    -1,
+     137,    -1,   136,   108,   137,    -1,    -1,   155,    -1,   131,
+     109,   155,    -1,   103,   126,   155,   127,   104,   109,   155,
+      -1,   103,   126,   155,   108,   158,   127,   104,   109,   155,
+      -1,   139,    -1,   138,   108,   139,    -1,   131,    -1,   131,
+     105,   139,    -1,   131,   105,   103,   126,   138,   127,   104,
+      -1,   131,    78,   139,    -1,   131,    78,   103,   126,   138,
+     127,   104,    -1,   135,    -1,    79,   140,    -1,    80,   140,
+      -1,    38,   142,    -1,   141,   142,    -1,   110,   142,    -1,
+     111,   142,    -1,    36,   140,    -1,    36,   101,   262,   102,
+      -1,    69,    -1,    69,   101,   263,   102,    -1,    69,   101,
+     137,   102,    -1,    59,   140,    -1,    59,   101,   262,   102,
+      -1,    87,   131,    -1,   112,    -1,   113,    -1,   114,    -1,
+     115,    -1,   140,    -1,   101,   262,   102,   142,    -1,   101,
+     262,   102,   157,    -1,   142,    -1,   143,   111,   142,    -1,
+     143,   116,   142,    -1,   143,   117,   142,    -1,   143,    -1,
+     144,   113,   143,    -1,   144,   114,   143,    -1,   144,    -1,
+     145,    81,   144,    -1,   145,    82,   144,    -1,   145,    -1,
+     146,   118,   145,    -1,   146,   119,   145,    -1,   146,    83,
+     145,    -1,   146,    84,   145,    -1,   146,    -1,   147,    85,
+     146,    -1,   147,    86,   146,    -1,   147,    -1,   148,   112,
+     147,    -1,   148,    -1,   149,   120,   148,    -1,   149,    -1,
+     150,   121,   149,    -1,   150,    -1,   151,    87,   150,    -1,
+     151,    -1,   152,    88,   151,    -1,   152,    -1,   152,   122,
+     160,   109,   153,    -1,   152,   122,   109,   153,    -1,   152,
+     122,   160,   109,   157,    -1,   153,    -1,   153,    -1,   140,
+     123,   155,    -1,   140,   159,   155,    -1,   157,   359,    -1,
+      -1,   155,    -1,   103,   126,   127,   104,    -1,   103,   126,
+     155,   127,   104,    -1,   103,   126,   108,   158,   127,   104,
+      -1,   103,   126,   155,   108,   158,   127,   104,    -1,   156,
+      -1,   158,   108,   156,    -1,    90,    -1,    91,    -1,    92,
+      -1,    93,    -1,    94,    -1,    95,    -1,    96,    -1,    97,
+      -1,    98,    -1,    99,    -1,   155,    -1,   160,   108,   155,
+      -1,    -1,   160,    -1,   163,    -1,   164,    -1,   168,    -1,
+     169,    -1,   181,    -1,   183,    -1,   184,    -1,   189,    -1,
+     131,   109,   298,   162,    -1,   106,   107,    -1,   106,   126,
+     126,   198,   165,   127,   107,    -1,   166,    -1,   165,   126,
+     166,    -1,   201,    -1,    38,   201,    -1,   294,    -1,   162,
+     127,    -1,   162,    -1,   167,   162,    -1,   161,   124,    -1,
+      39,   101,   160,   102,   162,    -1,    39,   101,   160,   102,
+     162,    40,   162,    -1,    41,   101,   160,   102,   174,    -1,
+      41,   101,   160,   102,   106,   126,   194,   175,   107,    -1,
+      51,   101,   160,   102,   174,    -1,    51,   101,   160,   102,
+     106,   126,   194,   177,   107,    -1,   154,    -1,   154,    89,
+     154,    -1,   296,    -1,   170,    -1,   171,   108,   170,    -1,
+      42,   171,   109,    -1,    43,   109,    -1,   172,    -1,   173,
+     172,    -1,   173,   162,    -1,    -1,   176,    -1,   173,   167,
+      -1,   176,   173,   167,    -1,    -1,   178,    -1,   173,   180,
+      -1,   173,   167,   179,    -1,   178,   173,   180,    -1,   178,
+     173,   167,   179,    -1,    -1,   180,    -1,    52,    -1,    52,
+     124,    -1,    45,   101,   160,   102,   162,    -1,    44,   162,
+      45,   101,   160,   102,   124,    -1,    46,   101,   126,   182,
+     102,   162,    -1,   161,   127,   124,   161,   124,   161,    -1,
+     201,   161,   124,   161,    -1,    49,   131,   124,    -1,    49,
+     111,   160,   124,    -1,    48,   124,    -1,    48,   131,   124,
+      -1,    47,   124,    -1,    47,   131,   124,    -1,    50,   161,
+     124,    -1,    56,   155,   124,    -1,    56,   124,    -1,    53,
+     164,   185,    -1,    53,   164,   187,    -1,    53,   164,   185,
+     187,    -1,   186,    -1,    54,   101,    89,   102,   164,    -1,
+     186,    54,   101,    89,   102,   164,    -1,    54,   101,   126,
+     126,   188,   127,   102,   164,   127,    -1,   186,    54,   101,
+     126,   126,   188,   127,   102,   164,   127,    -1,    55,   164,
+      -1,   214,    -1,   214,   295,    -1,   214,   343,    -1,   352,
+     131,    -1,   352,    -1,    57,   215,   101,   154,   102,   124,
+      -1,    57,   215,   101,   154,   109,   190,   102,   124,    -1,
+      57,   215,   101,   154,   109,   190,   109,   190,   102,   124,
+      -1,    57,   215,   101,   154,   109,   190,   109,   190,   109,
+     193,   102,   124,    -1,    -1,   191,    -1,   192,    -1,   191,
+     108,   192,    -1,    75,   101,   154,   102,    -1,    75,    -1,
+     193,   108,    75,    -1,   127,    -1,   195,    -1,   201,    -1,
+     195,   126,   201,    -1,   127,    -1,   197,    -1,   211,    -1,
+     197,   126,   211,    -1,    -1,   199,    -1,    28,   200,   124,
+      -1,   199,    28,   200,   124,    -1,   261,    -1,   200,   108,
+     261,    -1,   202,    -1,   211,    -1,   203,   127,   124,    -1,
+     208,   127,   124,    -1,   205,   127,   124,    -1,   279,   127,
+     124,    -1,   282,   127,   124,    -1,   204,   264,    -1,   220,
+     204,   264,    -1,   203,   127,   108,   126,   259,   264,    -1,
+     353,   259,   297,    -1,   356,   259,   297,    -1,   216,   356,
+     259,   297,    -1,   206,    -1,   216,   206,    -1,   220,   206,
+      -1,   220,   216,   206,    -1,   205,   127,   108,   126,   259,
+      -1,   103,   126,   127,   104,   129,   101,   126,   247,   127,
+     102,    -1,   103,   126,   127,   104,    67,   101,   126,   247,
+     127,   102,    -1,   356,   259,   101,   126,   247,   127,   102,
+      -1,   207,   259,   101,   126,   247,   127,   102,    -1,   103,
+     126,   249,   127,   104,    -1,   103,   126,   249,   127,   108,
+     126,   250,   127,   104,    -1,     3,   204,    -1,     3,   206,
+      -1,   208,   127,   108,   126,   131,    -1,     3,   214,   295,
+      -1,   209,   127,   108,   126,   295,    -1,   216,     3,   214,
+     295,    -1,   214,     3,   295,    -1,   214,     3,   216,   295,
+      -1,     3,   131,   123,   155,    -1,   210,   127,   108,   126,
+     131,   123,   155,    -1,   212,   127,   124,    -1,   209,   127,
+     124,    -1,   210,   127,   124,    -1,   229,   127,   124,    -1,
+     213,   295,   297,   264,    -1,   212,   108,   298,   295,   297,
+     264,    -1,   225,    -1,   229,    -1,   231,    -1,   270,    -1,
+     226,    -1,   230,    -1,   232,    -1,   271,    -1,    -1,   216,
+      -1,   217,    -1,   216,   217,    -1,   218,    -1,   300,    -1,
+      10,    -1,    12,    -1,    11,    -1,    14,    -1,    60,    -1,
+      -1,    13,   101,   219,   272,   102,    -1,   221,    -1,   216,
+     221,    -1,   220,   216,   221,    -1,   222,    -1,   221,   222,
+      -1,   223,    -1,     5,    -1,     7,    -1,     4,    -1,     6,
+      -1,     8,    -1,     9,    -1,    62,    -1,    64,    -1,    16,
+      -1,    21,    -1,    20,    -1,    18,    -1,    19,    -1,    17,
+      -1,    22,    -1,    23,    -1,    15,    -1,    24,    -1,    25,
+      -1,    26,    -1,   226,    -1,   220,   226,    -1,   225,   222,
+      -1,   225,   222,   216,    -1,   225,   222,   226,    -1,   227,
+      -1,   215,   228,   215,    -1,   224,    -1,   216,   224,    -1,
+     227,   217,    -1,   227,   224,    -1,    27,   101,   263,   102,
+      -1,    27,   101,   160,   102,    -1,    71,   101,   263,   102,
+      -1,    71,   101,   160,   102,    -1,   230,    -1,   220,   230,
+      -1,   229,   222,    -1,   229,   222,   216,    -1,   233,    -1,
+     216,   233,    -1,   230,   217,    -1,   232,    -1,   220,   232,
+      -1,   231,   222,    -1,   231,   222,   216,    -1,    67,    -1,
+     216,    67,    -1,   232,   217,    -1,   234,    -1,   244,    -1,
+     235,   106,   236,   107,    -1,   235,   261,    -1,   235,   261,
+     106,   236,   107,    -1,   235,   101,   126,   272,   127,   102,
+     106,   236,   107,    -1,   235,   101,   126,   272,   127,   102,
+     261,    -1,   235,   101,   126,   272,   127,   102,   261,   106,
+     236,   107,    -1,   235,   101,   126,   272,   127,   102,   101,
+     278,   102,   106,   236,   107,    -1,   235,    68,   101,   278,
+     102,    -1,   235,   101,   126,   278,   127,   102,   261,    -1,
+     235,   101,   126,   272,   127,   102,   101,   278,   102,   261,
+     106,   236,   107,    -1,    30,   298,    -1,    31,   298,    -1,
+     237,    -1,   236,   237,    -1,   238,   124,    -1,    38,   238,
+     124,    -1,   239,   124,    -1,    38,   239,   124,    -1,   352,
+      -1,   352,   261,    -1,   238,   108,   261,    -1,   238,   108,
+      -1,   214,   240,    -1,   239,   108,   298,   240,    -1,    -1,
+     242,    -1,   304,   241,    -1,   317,   241,    -1,   343,    -1,
+      -1,   242,    -1,   109,   154,    -1,    29,   298,    -1,   243,
+     106,   245,   358,   107,    -1,   243,   261,   106,   245,   358,
+     107,    -1,   243,   261,    -1,   261,   246,    -1,   245,   108,
+     261,   246,    -1,    -1,   123,   154,    -1,    -1,   248,    -1,
+     250,    -1,   249,    -1,   249,   127,   108,   126,   250,    -1,
+     250,   127,   108,   126,    89,    -1,   249,   127,   108,   126,
+      89,    -1,   254,    -1,   250,   127,   108,   126,   254,    -1,
+     249,   127,   108,   126,   254,    -1,   249,   127,   108,   126,
+     250,   127,   108,   126,   254,    -1,   255,    -1,   250,   127,
+     108,   126,   255,    -1,    -1,   252,    -1,   253,    -1,   253,
+     127,   108,   126,    89,    -1,   257,    -1,   256,    -1,   253,
+     127,   108,   126,   257,    -1,   253,   127,   108,   126,   256,
+      -1,   256,    -1,   348,   259,   359,    -1,   356,   259,   359,
+      -1,   216,   356,   259,   359,    -1,   206,    -1,   257,    -1,
+     348,    -1,   356,    -1,   216,   356,    -1,   357,    -1,   213,
+     322,   359,    -1,   213,   326,   359,    -1,   213,    -1,   213,
+     337,    -1,   131,    -1,   258,   108,   131,    -1,   129,    -1,
+      67,    -1,    68,    -1,   130,    -1,    67,    -1,    68,    -1,
+     131,    -1,    67,    -1,   352,    -1,   214,    -1,   214,   343,
+      -1,   352,    -1,   357,    -1,   214,    -1,   214,   331,    -1,
+      -1,   123,   265,    -1,   155,    -1,   106,   266,   358,   107,
+      -1,   265,    -1,   267,   265,    -1,   266,   108,   265,    -1,
+     266,   108,   267,   265,    -1,   268,   109,    -1,   261,   109,
+      -1,   269,    -1,   268,   269,    -1,   105,   261,    -1,   103,
+     126,   155,   127,   104,    -1,   103,   126,   296,   127,   104,
+      -1,   103,   126,   154,    89,   154,   127,   104,    -1,   105,
+     103,   126,   138,   127,   104,    -1,   271,    -1,   220,   271,
+      -1,   270,   222,    -1,   270,   222,   216,    -1,    68,   101,
+     278,   102,    -1,   216,    68,   101,   278,   102,    -1,   271,
+     217,    -1,   273,   359,    -1,   272,   108,   273,   359,    -1,
+      -1,   275,   261,   274,   276,    -1,   214,   322,    -1,    32,
+      -1,    34,    -1,    33,    -1,    -1,   276,   277,    -1,   121,
+     261,   101,   278,   102,    -1,   121,   106,   126,   284,   107,
+      -1,   121,   101,   126,   272,   127,   102,   106,   126,   284,
+     107,   101,   278,   102,    -1,   263,    -1,   155,    -1,   278,
+     108,   263,    -1,   278,   108,   155,    -1,    32,   280,    -1,
+     221,    32,   280,    -1,   279,   108,   280,    -1,   281,   276,
+      -1,   281,   276,   123,   263,    -1,   261,    -1,   260,   101,
+     126,   272,   127,   102,    -1,    35,   261,   101,   126,   272,
+     127,   102,   106,   107,    -1,    -1,    35,   261,   101,   126,
+     272,   127,   102,   106,   283,   284,   107,    -1,   285,    -1,
+     284,   126,   285,    -1,   286,   127,   124,    -1,   287,   127,
+     124,    -1,   204,    -1,   206,    -1,   286,   127,   108,   126,
+     259,    -1,   214,   295,    -1,   287,   127,   108,   126,   295,
+      -1,    -1,   289,    -1,   291,    -1,   289,   126,   291,    -1,
+      -1,   289,    -1,   201,    -1,   293,    -1,   189,    -1,    -1,
+       5,    75,   292,   106,   290,   107,    -1,    38,   291,    -1,
+     294,    -1,   309,   164,    -1,   313,   126,   196,   164,    -1,
+     205,   164,    -1,   213,   309,   164,    -1,   216,   309,   164,
+      -1,   220,   309,   164,    -1,   220,   216,   309,   164,    -1,
+     213,   313,   126,   196,   164,    -1,   216,   313,   126,   196,
+     164,    -1,   220,   313,   126,   196,   164,    -1,   220,   216,
+     313,   126,   196,   164,    -1,   304,    -1,   309,    -1,   317,
+      -1,   154,   115,   154,    -1,    -1,    57,   101,   133,   102,
+     298,    -1,    -1,   299,    -1,   300,    -1,   299,   300,    -1,
+      37,   101,   101,   301,   102,   102,    -1,   302,    -1,   301,
+     108,   302,    -1,    -1,   303,    -1,   303,   101,   161,   102,
+      -1,   259,    -1,   223,    -1,   224,    -1,   217,    -1,   305,
+     298,    -1,   306,    -1,   307,   298,    -1,   308,   298,    -1,
+     129,    -1,   101,   305,   102,    -1,   111,   304,    -1,   111,
+     216,   304,    -1,   101,   306,   102,    -1,   305,   335,    -1,
+     101,   306,   102,   335,    -1,   101,   307,   102,   336,    -1,
+     101,   307,   102,    -1,   101,   306,   102,   101,   126,   251,
+     127,   102,    -1,   101,   308,   102,    -1,   310,   298,    -1,
+     311,    -1,   312,   298,    -1,   305,   101,   126,   251,   127,
+     102,    -1,   101,   311,   102,   101,   126,   251,   127,   102,
+      -1,   101,   310,   102,    -1,   111,   309,    -1,   111,   216,
+     309,    -1,   101,   311,   102,    -1,   101,   311,   102,   335,
+      -1,   101,   312,   102,   336,    -1,   101,   312,   102,    -1,
+     314,    -1,   315,    -1,   316,    -1,   305,   101,   258,   102,
+      -1,   101,   315,   102,   101,   258,   102,    -1,   101,   314,
+     102,    -1,   111,   313,    -1,   111,   216,   313,    -1,   101,
+     315,   102,    -1,   101,   315,   102,   335,    -1,   101,   316,
+     102,   336,    -1,   101,   316,   102,    -1,   318,   298,    -1,
+     319,    -1,   320,   298,    -1,   321,   298,    -1,    67,    -1,
+     101,   318,   102,    -1,   111,   317,    -1,   111,   216,   317,
+      -1,   101,   319,   102,    -1,   318,   335,    -1,   101,   319,
+     102,   335,    -1,   101,   320,   102,   336,    -1,   101,   320,
+     102,    -1,   318,   101,   126,   251,   127,   102,    -1,   101,
+     319,   102,   101,   126,   251,   127,   102,    -1,   101,   321,
+     102,    -1,   305,   298,    -1,   323,    -1,   324,   298,    -1,
+     325,   298,    -1,   111,   322,    -1,   111,   216,   322,    -1,
+     101,   323,   102,    -1,   305,   341,    -1,   101,   323,   102,
+     335,    -1,   101,   324,   102,   336,    -1,   101,   324,   102,
+      -1,   305,   101,   126,   251,   127,   102,    -1,   101,   323,
+     102,   101,   126,   251,   127,   102,    -1,   101,   325,   102,
+      -1,   327,   298,    -1,   328,    -1,   329,   298,    -1,   330,
+     298,    -1,    67,    -1,   111,   326,    -1,   111,   216,   326,
+      -1,   101,   328,   102,    -1,   327,   341,    -1,   101,   328,
+     102,   341,    -1,   327,   101,   126,   251,   127,   102,    -1,
+     101,   328,   102,   101,   126,   251,   127,   102,    -1,   332,
+      -1,   333,   298,    -1,   334,   298,    -1,   111,    -1,   111,
+     216,    -1,   111,   331,    -1,   111,   216,   331,    -1,   101,
+     332,   102,    -1,   335,    -1,   101,   332,   102,   335,    -1,
+     101,   333,   102,   336,    -1,   101,   333,   102,    -1,   101,
+     126,   251,   127,   102,    -1,   101,   332,   102,   101,   126,
+     251,   127,   102,    -1,   101,   334,   102,    -1,   103,   126,
+     127,   104,    -1,   103,   126,   127,   104,   336,    -1,   336,
+      -1,   103,   126,   155,   127,   104,    -1,   103,   126,   111,
+     127,   104,    -1,   336,   103,   126,   155,   127,   104,    -1,
+     336,   103,   126,   111,   127,   104,    -1,   338,    -1,   339,
+     298,    -1,   340,   298,    -1,   111,    -1,   111,   216,    -1,
+     111,   337,    -1,   111,   216,   337,    -1,   101,   338,   102,
+      -1,   341,    -1,   101,   338,   102,   341,    -1,   101,   339,
+     102,   336,    -1,   101,   339,   102,    -1,   101,   126,   251,
+     127,   102,    -1,   101,   338,   102,   101,   126,   251,   127,
+     102,    -1,   101,   340,   102,    -1,   342,    -1,   342,   336,
+      -1,   336,    -1,   103,   126,   127,   104,    -1,   103,   126,
+     216,   111,   127,   104,    -1,   103,   126,   216,   127,   104,
+      -1,   103,   126,   216,   155,   127,   104,    -1,   103,   126,
+       7,   215,   155,   127,   104,    -1,   103,   126,   216,     7,
+     155,   127,   104,    -1,   344,    -1,   345,   298,    -1,   346,
+     298,    -1,   111,    -1,   111,   216,    -1,   111,   343,    -1,
+     111,   216,   343,    -1,   101,   344,   102,    -1,   335,    -1,
+     101,   344,   102,   335,    -1,   101,   345,   102,   336,    -1,
+     101,   345,   102,    -1,   101,   344,   102,   101,   126,   251,
+     127,   102,    -1,   101,   346,   102,    -1,   348,    -1,   356,
+      -1,   216,   356,    -1,   349,    -1,   350,    -1,   111,   214,
+      -1,   216,   111,   214,    -1,   111,   357,    -1,   216,   111,
+     357,    -1,   111,   347,    -1,   216,   111,   347,    -1,   103,
+     126,   127,   104,   214,    -1,   351,   214,    -1,   103,   126,
+     127,   104,   336,   214,    -1,   351,   336,   214,    -1,   336,
+     214,    -1,   103,   126,   127,   104,   349,    -1,   351,   349,
+      -1,   103,   126,   127,   104,   336,   349,    -1,   351,   336,
+     349,    -1,   336,   349,    -1,   103,   126,   216,   111,   127,
+     104,    -1,   103,   126,   216,   155,   127,   104,    -1,   103,
+     126,   220,   155,   127,   104,    -1,   103,   126,   220,   216,
+     155,   127,   104,    -1,   356,    -1,   216,   356,    -1,   353,
+      -1,   354,    -1,   355,    -1,   111,   214,    -1,   216,   111,
+     214,    -1,   111,   357,    -1,   216,   111,   357,    -1,   111,
+     352,    -1,   216,   111,   352,    -1,   103,   126,   127,   104,
+     214,    -1,   103,   126,   127,   104,   336,   214,    -1,   336,
+     214,    -1,   103,   126,   127,   104,   354,    -1,   103,   126,
+     127,   104,   336,   354,    -1,   336,   354,    -1,   103,   126,
+     250,   127,   104,    -1,   103,   126,   127,   104,   101,   247,
+     102,    -1,   356,   101,   126,   247,   127,   102,    -1,   207,
+     101,   126,   247,   127,   102,    -1,    -1,   108,    -1,    -1,
+     123,   155,    -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const yytype_uint16 yyrline[] =
+{
+       0,   279,   279,   285,   294,   295,   296,   300,   301,   302,
+     306,   307,   311,   315,   316,   320,   321,   327,   329,   331,
+     333,   335,   337,   342,   343,   349,   351,   353,   354,   356,
+     357,   359,   362,   367,   368,   374,   375,   376,   381,   383,
+     388,   389,   393,   395,   397,   399,   401,   406,   407,   409,
+     411,   413,   415,   417,   423,   425,   427,   429,   431,   433,
+     435,   437,   442,   443,   444,   445,   449,   450,   452,   457,
+     458,   460,   462,   467,   468,   470,   475,   476,   478,   483,
+     484,   486,   488,   490,   495,   496,   498,   503,   504,   509,
+     510,   515,   516,   521,   522,   527,   528,   533,   534,   536,
+     538,   543,   548,   549,   551,   553,   559,   560,   566,   568,
+     570,   572,   577,   578,   583,   584,   585,   586,   587,   588,
+     589,   590,   591,   592,   596,   597,   603,   604,   610,   611,
+     612,   613,   614,   615,   616,   617,   621,   626,   628,   638,
+     639,   644,   646,   648,   650,   654,   655,   660,   665,   668,
+     670,   672,   677,   679,   687,   688,   690,   694,   695,   700,
+     701,   706,   707,   711,   716,   717,   721,   723,   729,   730,
+     734,   736,   738,   740,   746,   747,   751,   752,   756,   758,
+     760,   765,   767,   772,   774,   778,   781,   785,   788,   792,
+     794,   796,   801,   803,   805,   814,   816,   818,   823,   825,
+     830,   843,   844,   849,   851,   856,   860,   862,   864,   866,
+     870,   872,   876,   877,   881,   885,   886,   892,   894,   898,
+     899,   904,   906,   910,   911,   915,   917,   921,   922,   926,
+     927,   931,   932,   947,   948,   949,   950,   951,   955,   960,
+     967,   977,   982,   987,   995,  1000,  1005,  1010,  1015,  1023,
+    1028,  1040,  1045,  1052,  1054,  1061,  1066,  1071,  1082,  1087,
+    1092,  1097,  1102,  1110,  1115,  1123,  1124,  1125,  1126,  1132,
+    1137,  1145,  1146,  1147,  1148,  1152,  1153,  1154,  1155,  1160,
+    1161,  1170,  1171,  1176,  1177,  1182,  1184,  1186,  1188,  1190,
+    1193,  1192,  1204,  1205,  1207,  1217,  1218,  1223,  1227,  1229,
+    1231,  1233,  1235,  1237,  1239,  1241,  1246,  1248,  1250,  1252,
+    1254,  1256,  1258,  1260,  1262,  1264,  1266,  1268,  1274,  1275,
+    1277,  1279,  1281,  1286,  1287,  1293,  1294,  1296,  1298,  1303,
+    1305,  1307,  1309,  1314,  1315,  1317,  1319,  1324,  1325,  1327,
+    1332,  1333,  1335,  1337,  1342,  1344,  1346,  1351,  1352,  1356,
+    1358,  1360,  1362,  1364,  1366,  1368,  1370,  1372,  1375,  1380,
+    1382,  1387,  1389,  1394,  1395,  1397,  1398,  1403,  1404,  1406,
+    1408,  1413,  1415,  1421,  1422,  1424,  1427,  1430,  1435,  1436,
+    1441,  1446,  1450,  1452,  1454,  1459,  1461,  1467,  1468,  1476,
+    1477,  1481,  1482,  1483,  1485,  1487,  1494,  1495,  1497,  1499,
+    1504,  1505,  1511,  1512,  1516,  1517,  1522,  1523,  1524,  1526,
+    1534,  1535,  1537,  1540,  1542,  1546,  1547,  1548,  1550,  1552,
+    1556,  1561,  1569,  1570,  1579,  1581,  1586,  1587,  1588,  1592,
+    1593,  1594,  1598,  1599,  1604,  1605,  1606,  1611,  1612,  1613,
+    1614,  1620,  1621,  1625,  1626,  1630,  1631,  1632,  1633,  1648,
+    1649,  1654,  1655,  1660,  1662,  1665,  1667,  1669,  1692,  1693,
+    1695,  1697,  1702,  1704,  1706,  1711,  1712,  1718,  1717,  1721,
+    1725,  1727,  1729,  1735,  1736,  1741,  1746,  1748,  1753,  1755,
+    1756,  1758,  1763,  1765,  1767,  1772,  1774,  1779,  1784,  1792,
+    1798,  1797,  1811,  1812,  1817,  1818,  1822,  1827,  1832,  1840,
+    1845,  1856,  1857,  1868,  1869,  1875,  1876,  1880,  1881,  1882,
+    1885,  1884,  1895,  1900,  1906,  1912,  1921,  1927,  1933,  1939,
+    1945,  1953,  1959,  1967,  1973,  1982,  1983,  1984,  1988,  1992,
+    1994,  1997,  1999,  2003,  2004,  2008,  2012,  2013,  2016,  2018,
+    2019,  2023,  2024,  2025,  2026,  2060,  2061,  2062,  2063,  2067,
+    2072,  2077,  2079,  2081,  2086,  2088,  2090,  2092,  2097,  2099,
+    2109,  2110,  2111,  2115,  2117,  2119,  2124,  2126,  2128,  2133,
+    2135,  2137,  2146,  2147,  2148,  2152,  2154,  2156,  2161,  2163,
+    2165,  2170,  2172,  2174,  2189,  2190,  2191,  2192,  2196,  2201,
+    2206,  2208,  2210,  2215,  2217,  2219,  2221,  2226,  2228,  2230,
+    2240,  2241,  2242,  2243,  2247,  2249,  2251,  2256,  2258,  2260,
+    2262,  2267,  2269,  2271,  2302,  2303,  2304,  2305,  2309,  2317,
+    2319,  2321,  2326,  2328,  2333,  2335,  2349,  2350,  2351,  2355,
+    2357,  2359,  2361,  2363,  2368,  2369,  2371,  2373,  2378,  2380,
+    2382,  2388,  2390,  2392,  2396,  2398,  2400,  2402,  2416,  2417,
+    2418,  2422,  2424,  2426,  2428,  2430,  2435,  2436,  2438,  2440,
+    2445,  2447,  2449,  2455,  2456,  2458,  2467,  2470,  2472,  2475,
+    2477,  2479,  2492,  2493,  2494,  2498,  2500,  2502,  2504,  2506,
+    2511,  2512,  2514,  2516,  2521,  2523,  2531,  2532,  2533,  2538,
+    2539,  2543,  2545,  2547,  2549,  2551,  2553,  2560,  2562,  2564,
+    2566,  2568,  2570,  2572,  2574,  2576,  2578,  2583,  2585,  2587,
+    2592,  2618,  2619,  2621,  2625,  2626,  2630,  2632,  2634,  2636,
+    2638,  2640,  2647,  2649,  2651,  2653,  2655,  2657,  2662,  2667,
+    2669,  2671,  2689,  2691,  2696,  2697
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
+static const char *const yytname[] =
+{
+  "$end", "error", "$undefined", "TYPEDEF", "AUTO", "EXTERN", "REGISTER",
+  "STATIC", "INLINE", "FORTRAN", "CONST", "VOLATILE", "RESTRICT", "FORALL",
+  "LVALUE", "VOID", "CHAR", "SHORT", "INT", "LONG", "FLOAT", "DOUBLE",
+  "SIGNED", "UNSIGNED", "BOOL", "COMPLEX", "IMAGINARY", "TYPEOF", "LABEL",
+  "ENUM", "STRUCT", "UNION", "TYPE", "FTYPE", "DTYPE", "CONTEXT", "SIZEOF",
+  "ATTRIBUTE", "EXTENSION", "IF", "ELSE", "SWITCH", "CASE", "DEFAULT",
+  "DO", "WHILE", "FOR", "BREAK", "CONTINUE", "GOTO", "RETURN", "CHOOSE",
+  "FALLTHRU", "TRY", "CATCH", "FINALLY", "THROW", "ASM", "ALIGNAS",
+  "ALIGNOF", "ATOMIC", "GENERIC", "NORETURN", "STATICASSERT",
+  "THREADLOCAL", "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname",
+  "TYPEGENname", "ATTR_IDENTIFIER", "ATTR_TYPEDEFname", "ATTR_TYPEGENname",
+  "INTEGERconstant", "FLOATINGconstant", "CHARACTERconstant",
+  "STRINGliteral", "ZERO", "ONE", "ARROW", "ICR", "DECR", "LS", "RS", "LE",
+  "GE", "EQ", "NE", "ANDAND", "OROR", "ELLIPSIS", "MULTassign",
+  "DIVassign", "MODassign", "PLUSassign", "MINUSassign", "LSassign",
+  "RSassign", "ANDassign", "ERassign", "ORassign", "THEN", "'('", "')'",
+  "'['", "']'", "'.'", "'{'", "'}'", "','", "':'", "'!'", "'*'", "'&'",
+  "'+'", "'-'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'", "'|'", "'?'",
+  "'='", "';'", "$accept", "push", "pop", "constant", "identifier",
+  "no_01_identifier", "no_attr_identifier", "zero_one",
+  "string_literal_list", "primary_expression", "postfix_expression",
+  "argument_expression_list", "argument_expression", "field_list", "field",
+  "unary_expression", "unary_operator", "cast_expression",
+  "multiplicative_expression", "additive_expression", "shift_expression",
+  "relational_expression", "equality_expression", "AND_expression",
+  "exclusive_OR_expression", "inclusive_OR_expression",
+  "logical_AND_expression", "logical_OR_expression",
+  "conditional_expression", "constant_expression", "assignment_expression",
+  "assignment_expression_opt", "tuple", "tuple_expression_list",
+  "assignment_operator", "comma_expression", "comma_expression_opt",
+  "statement", "labeled_statement", "compound_statement",
+  "block_item_list", "block_item", "statement_list",
+  "expression_statement", "selection_statement", "case_value",
+  "case_value_list", "case_label", "case_label_list", "case_clause",
+  "switch_clause_list_opt", "switch_clause_list", "choose_clause_list_opt",
+  "choose_clause_list", "fall_through_opt", "fall_through",
+  "iteration_statement", "for_control_expression", "jump_statement",
+  "exception_statement", "handler_list", "handler_clause",
+  "finally_clause", "exception_declaration", "asm_statement",
+  "asm_operands_opt", "asm_operands_list", "asm_operand",
+  "asm_clobbers_list", "declaration_list_opt", "declaration_list",
+  "old_declaration_list_opt", "old_declaration_list",
+  "label_declaration_opt", "label_declaration_list", "label_list",
+  "declaration", "new_declaration", "new_variable_declaration",
+  "new_variable_specifier", "new_function_declaration",
+  "new_function_specifier", "new_function_return",
+  "new_typedef_declaration", "typedef_declaration", "typedef_expression",
+  "old_declaration", "declaring_list", "declaration_specifier",
+  "type_specifier", "type_qualifier_list_opt", "type_qualifier_list",
+  "type_qualifier", "type_qualifier_name", "$@1",
+  "declaration_qualifier_list", "storage_class_list", "storage_class",
+  "storage_class_name", "basic_type_name", "basic_declaration_specifier",
+  "basic_type_specifier", "direct_type_name", "indirect_type_name",
+  "sue_declaration_specifier", "sue_type_specifier",
+  "typedef_declaration_specifier", "typedef_type_specifier",
+  "elaborated_type_name", "aggregate_name", "aggregate_key",
+  "field_declaration_list", "field_declaration",
+  "new_field_declaring_list", "field_declaring_list", "field_declarator",
+  "bit_subrange_size_opt", "bit_subrange_size", "enum_key", "enum_name",
+  "enumerator_list", "enumerator_value_opt", "new_parameter_type_list_opt",
+  "new_parameter_type_list", "new_parameter_list",
+  "new_abstract_parameter_list", "parameter_type_list_opt",
+  "parameter_type_list", "parameter_list", "new_parameter_declaration",
+  "new_abstract_parameter_declaration", "parameter_declaration",
+  "abstract_parameter_declaration", "identifier_list",
+  "identifier_or_typedef_name", "no_01_identifier_or_typedef_name",
+  "no_attr_identifier_or_typedef_name", "type_name_no_function",
+  "type_name", "initializer_opt", "initializer", "initializer_list",
+  "designation", "designator_list", "designator",
+  "typegen_declaration_specifier", "typegen_type_specifier",
+  "type_parameter_list", "type_parameter", "$@2", "type_class",
+  "assertion_list_opt", "assertion", "type_name_list",
+  "type_declaring_list", "type_declarator", "type_declarator_name",
+  "context_specifier", "$@3", "context_declaration_list",
+  "context_declaration", "new_context_declaring_list",
+  "context_declaring_list", "translation_unit", "external_definition_list",
+  "external_definition_list_opt", "external_definition", "$@4",
+  "external_function_definition", "function_definition", "declarator",
+  "subrange", "asm_name_opt", "attribute_list_opt", "attribute_list",
+  "attribute", "attribute_parameter_list", "attrib", "any_word",
+  "variable_declarator", "paren_identifier", "variable_ptr",
+  "variable_array", "variable_function", "function_declarator",
+  "function_no_ptr", "function_ptr", "function_array",
+  "old_function_declarator", "old_function_no_ptr", "old_function_ptr",
+  "old_function_array", "typedef_redeclarator", "paren_typedef",
+  "typedef_ptr", "typedef_array", "typedef_function",
+  "identifier_parameter_declarator", "identifier_parameter_ptr",
+  "identifier_parameter_array", "identifier_parameter_function",
+  "typedef_parameter_redeclarator", "typedef", "typedef_parameter_ptr",
+  "typedef_parameter_array", "typedef_parameter_function",
+  "abstract_declarator", "abstract_ptr", "abstract_array",
+  "abstract_function", "array_dimension", "multi_array_dimension",
+  "abstract_parameter_declarator", "abstract_parameter_ptr",
+  "abstract_parameter_array", "abstract_parameter_function",
+  "array_parameter_dimension", "array_parameter_1st_dimension",
+  "variable_abstract_declarator", "variable_abstract_ptr",
+  "variable_abstract_array", "variable_abstract_function",
+  "new_identifier_parameter_declarator_tuple",
+  "new_identifier_parameter_declarator_no_tuple",
+  "new_identifier_parameter_ptr", "new_identifier_parameter_array",
+  "new_array_parameter_1st_dimension", "new_abstract_declarator_tuple",
+  "new_abstract_declarator_no_tuple", "new_abstract_ptr",
+  "new_abstract_array", "new_abstract_tuple", "new_abstract_function",
+  "comma_opt", "assignment_opt", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const yytype_uint16 yytoknum[] =
+{
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
+     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
+     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
+     355,    40,    41,    91,    93,    46,   123,   125,    44,    58,
+      33,    42,    38,    43,    45,   126,    47,    37,    60,    62,
+      94,   124,    63,    61,    59
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_uint16 yyr1[] =
+{
+       0,   125,   126,   127,   128,   128,   128,   129,   129,   129,
+     130,   130,   131,   132,   132,   133,   133,   134,   134,   134,
+     134,   134,   134,   135,   135,   135,   135,   135,   135,   135,
+     135,   135,   135,   136,   136,   137,   137,   137,   137,   137,
+     138,   138,   139,   139,   139,   139,   139,   140,   140,   140,
+     140,   140,   140,   140,   140,   140,   140,   140,   140,   140,
+     140,   140,   141,   141,   141,   141,   142,   142,   142,   143,
+     143,   143,   143,   144,   144,   144,   145,   145,   145,   146,
+     146,   146,   146,   146,   147,   147,   147,   148,   148,   149,
+     149,   150,   150,   151,   151,   152,   152,   153,   153,   153,
+     153,   154,   155,   155,   155,   155,   156,   156,   157,   157,
+     157,   157,   158,   158,   159,   159,   159,   159,   159,   159,
+     159,   159,   159,   159,   160,   160,   161,   161,   162,   162,
+     162,   162,   162,   162,   162,   162,   163,   164,   164,   165,
+     165,   166,   166,   166,   166,   167,   167,   168,   169,   169,
+     169,   169,   169,   169,   170,   170,   170,   171,   171,   172,
+     172,   173,   173,   174,   175,   175,   176,   176,   177,   177,
+     178,   178,   178,   178,   179,   179,   180,   180,   181,   181,
+     181,   182,   182,   183,   183,   183,   183,   183,   183,   183,
+     183,   183,   184,   184,   184,   185,   185,   185,   186,   186,
+     187,   188,   188,   188,   188,   188,   189,   189,   189,   189,
+     190,   190,   191,   191,   192,   193,   193,   194,   194,   195,
+     195,   196,   196,   197,   197,   198,   198,   199,   199,   200,
+     200,   201,   201,   202,   202,   202,   202,   202,   203,   203,
+     203,   204,   204,   204,   205,   205,   205,   205,   205,   206,
+     206,   206,   206,   207,   207,   208,   208,   208,   209,   209,
+     209,   209,   209,   210,   210,   211,   211,   211,   211,   212,
+     212,   213,   213,   213,   213,   214,   214,   214,   214,   215,
+     215,   216,   216,   217,   217,   218,   218,   218,   218,   218,
+     219,   218,   220,   220,   220,   221,   221,   222,   223,   223,
+     223,   223,   223,   223,   223,   223,   224,   224,   224,   224,
+     224,   224,   224,   224,   224,   224,   224,   224,   225,   225,
+     225,   225,   225,   226,   226,   227,   227,   227,   227,   228,
+     228,   228,   228,   229,   229,   229,   229,   230,   230,   230,
+     231,   231,   231,   231,   232,   232,   232,   233,   233,   234,
+     234,   234,   234,   234,   234,   234,   234,   234,   234,   235,
+     235,   236,   236,   237,   237,   237,   237,   238,   238,   238,
+     238,   239,   239,   240,   240,   240,   240,   240,   241,   241,
+     242,   243,   244,   244,   244,   245,   245,   246,   246,   247,
+     247,   248,   248,   248,   248,   248,   249,   249,   249,   249,
+     250,   250,   251,   251,   252,   252,   253,   253,   253,   253,
+     254,   254,   254,   254,   254,   255,   255,   255,   255,   255,
+     256,   256,   257,   257,   258,   258,   259,   259,   259,   260,
+     260,   260,   261,   261,   262,   262,   262,   263,   263,   263,
+     263,   264,   264,   265,   265,   266,   266,   266,   266,   267,
+     267,   268,   268,   269,   269,   269,   269,   269,   270,   270,
+     270,   270,   271,   271,   271,   272,   272,   274,   273,   273,
+     275,   275,   275,   276,   276,   277,   277,   277,   278,   278,
+     278,   278,   279,   279,   279,   280,   280,   281,   281,   282,
+     283,   282,   284,   284,   285,   285,   286,   286,   286,   287,
+     287,   288,   288,   289,   289,   290,   290,   291,   291,   291,
+     292,   291,   291,   293,   293,   293,   294,   294,   294,   294,
+     294,   294,   294,   294,   294,   295,   295,   295,   296,   297,
+     297,   298,   298,   299,   299,   300,   301,   301,   302,   302,
+     302,   303,   303,   303,   303,   304,   304,   304,   304,   305,
+     305,   306,   306,   306,   307,   307,   307,   307,   308,   308,
+     309,   309,   309,   310,   310,   310,   311,   311,   311,   312,
+     312,   312,   313,   313,   313,   314,   314,   314,   315,   315,
+     315,   316,   316,   316,   317,   317,   317,   317,   318,   318,
+     319,   319,   319,   320,   320,   320,   320,   321,   321,   321,
+     322,   322,   322,   322,   323,   323,   323,   324,   324,   324,
+     324,   325,   325,   325,   326,   326,   326,   326,   327,   328,
+     328,   328,   329,   329,   330,   330,   331,   331,   331,   332,
+     332,   332,   332,   332,   333,   333,   333,   333,   334,   334,
+     334,   335,   335,   335,   336,   336,   336,   336,   337,   337,
+     337,   338,   338,   338,   338,   338,   339,   339,   339,   339,
+     340,   340,   340,   341,   341,   341,   342,   342,   342,   342,
+     342,   342,   343,   343,   343,   344,   344,   344,   344,   344,
+     345,   345,   345,   345,   346,   346,   347,   347,   347,   348,
+     348,   349,   349,   349,   349,   349,   349,   350,   350,   350,
+     350,   350,   350,   350,   350,   350,   350,   351,   351,   351,
+     351,   352,   352,   352,   353,   353,   354,   354,   354,   354,
+     354,   354,   355,   355,   355,   355,   355,   355,   356,   357,
+     357,   357,   358,   358,   359,   359
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const yytype_uint8 yyr2[] =
+{
+       0,     2,     0,     0,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     2,     1,     1,     1,
+       1,     3,     3,     1,     6,     4,     3,     7,     3,     7,
+       2,     2,     7,     1,     3,     0,     1,     3,     7,     9,
+       1,     3,     1,     3,     7,     3,     7,     1,     2,     2,
+       2,     2,     2,     2,     2,     4,     1,     4,     4,     2,
+       4,     2,     1,     1,     1,     1,     1,     4,     4,     1,
+       3,     3,     3,     1,     3,     3,     1,     3,     3,     1,
+       3,     3,     3,     3,     1,     3,     3,     1,     3,     1,
+       3,     1,     3,     1,     3,     1,     3,     1,     5,     4,
+       5,     1,     1,     3,     3,     2,     0,     1,     4,     5,
+       6,     7,     1,     3,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     3,     0,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     4,     2,     7,     1,
+       3,     1,     2,     1,     2,     1,     2,     2,     5,     7,
+       5,     9,     5,     9,     1,     3,     1,     1,     3,     3,
+       2,     1,     2,     2,     0,     1,     2,     3,     0,     1,
+       2,     3,     3,     4,     0,     1,     1,     2,     5,     7,
+       6,     6,     4,     3,     4,     2,     3,     2,     3,     3,
+       3,     2,     3,     3,     4,     1,     5,     6,     9,    10,
+       2,     1,     2,     2,     2,     1,     6,     8,    10,    12,
+       0,     1,     1,     3,     4,     1,     3,     1,     1,     1,
+       3,     1,     1,     1,     3,     0,     1,     3,     4,     1,
+       3,     1,     1,     3,     3,     3,     3,     3,     2,     3,
+       6,     3,     3,     4,     1,     2,     2,     3,     5,    10,
+      10,     7,     7,     5,     9,     2,     2,     5,     3,     5,
+       4,     3,     4,     4,     7,     3,     3,     3,     3,     4,
+       6,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+       1,     1,     2,     1,     1,     1,     1,     1,     1,     1,
+       0,     5,     1,     2,     3,     1,     2,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
+       2,     3,     3,     1,     3,     1,     2,     2,     2,     4,
+       4,     4,     4,     1,     2,     2,     3,     1,     2,     2,
+       1,     2,     2,     3,     1,     2,     2,     1,     1,     4,
+       2,     5,     9,     7,    10,    12,     5,     7,    13,     2,
+       2,     1,     2,     2,     3,     2,     3,     1,     2,     3,
+       2,     2,     4,     0,     1,     2,     2,     1,     0,     1,
+       2,     2,     5,     6,     2,     2,     4,     0,     2,     0,
+       1,     1,     1,     5,     5,     5,     1,     5,     5,     9,
+       1,     5,     0,     1,     1,     5,     1,     1,     5,     5,
+       1,     3,     3,     4,     1,     1,     1,     1,     2,     1,
+       3,     3,     1,     2,     1,     3,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     2,     1,     1,     1,
+       2,     0,     2,     1,     4,     1,     2,     3,     4,     2,
+       2,     1,     2,     2,     5,     5,     7,     6,     1,     2,
+       2,     3,     4,     5,     2,     2,     4,     0,     4,     2,
+       1,     1,     1,     0,     2,     5,     5,    13,     1,     1,
+       3,     3,     2,     3,     3,     2,     4,     1,     6,     9,
+       0,    11,     1,     3,     3,     3,     1,     1,     5,     2,
+       5,     0,     1,     1,     3,     0,     1,     1,     1,     1,
+       0,     6,     2,     1,     2,     4,     2,     3,     3,     3,
+       4,     5,     5,     5,     6,     1,     1,     1,     3,     0,
+       5,     0,     1,     1,     2,     6,     1,     3,     0,     1,
+       4,     1,     1,     1,     1,     2,     1,     2,     2,     1,
+       3,     2,     3,     3,     2,     4,     4,     3,     8,     3,
+       2,     1,     2,     6,     8,     3,     2,     3,     3,     4,
+       4,     3,     1,     1,     1,     4,     6,     3,     2,     3,
+       3,     4,     4,     3,     2,     1,     2,     2,     1,     3,
+       2,     3,     3,     2,     4,     4,     3,     6,     8,     3,
+       2,     1,     2,     2,     2,     3,     3,     2,     4,     4,
+       3,     6,     8,     3,     2,     1,     2,     2,     1,     2,
+       3,     3,     2,     4,     6,     8,     1,     2,     2,     1,
+       2,     2,     3,     3,     1,     4,     4,     3,     5,     8,
+       3,     4,     5,     1,     5,     5,     6,     6,     1,     2,
+       2,     1,     2,     2,     3,     3,     1,     4,     4,     3,
+       5,     8,     3,     1,     2,     1,     4,     6,     5,     6,
+       7,     7,     1,     2,     2,     1,     2,     2,     3,     3,
+       1,     4,     4,     3,     8,     3,     1,     1,     2,     1,
+       1,     2,     3,     2,     3,     2,     3,     5,     2,     6,
+       3,     2,     5,     2,     6,     3,     2,     6,     6,     6,
+       7,     1,     2,     1,     1,     1,     2,     3,     2,     3,
+       2,     3,     5,     6,     2,     5,     6,     2,     5,     7,
+       6,     6,     0,     1,     0,     2
+};
+
+/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+   Performed when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const yytype_uint16 yydefact[] =
+{
+     279,   279,   300,   298,   301,   299,   302,   303,   285,   287,
+     286,     0,   288,   314,   306,   311,   309,   310,   308,   307,
+     312,   313,   315,   316,   317,   531,   531,   531,     0,     0,
+       0,   279,   279,   289,   304,   305,     7,   344,     0,     8,
+      13,    14,     0,     2,   279,   549,     9,   509,   507,   231,
+       3,   441,     3,   244,     0,     3,     3,     3,   232,     3,
+       0,     0,     0,   280,   281,   283,   279,   292,   295,   297,
+     325,   271,   318,   323,   272,   333,   273,   340,   337,   347,
+       0,     0,   348,   274,   458,     3,     3,     0,     2,   503,
+     508,   513,   284,     0,     0,   531,   561,   531,     2,   572,
+     573,   574,   279,     0,   714,   715,     0,    12,   279,     0,
+     255,   256,     0,   280,   275,   276,   277,   278,   510,   290,
+     381,   532,   533,   359,   360,    12,   433,   431,    11,   429,
+     432,     0,   487,   482,   473,   433,     0,     0,   512,     0,
+     280,   279,     0,     0,     0,     0,     0,     0,     0,     0,
+     279,     2,     0,   716,   280,   566,   578,   720,   713,   711,
+     718,     0,     0,   238,     2,     0,   516,   427,   428,   426,
+       0,     0,     0,     0,   531,     0,   588,     0,     0,   529,
+     525,   531,   546,   531,   531,   526,     2,   527,   531,   585,
+     531,   531,     0,     0,     0,   279,   279,   298,   345,     0,
+       2,   279,   245,   282,   293,   326,   338,     0,     2,     0,
+     441,   246,   280,   319,   334,   341,   459,     0,     2,     0,
+     296,   320,   327,   328,     0,   335,   339,   342,   346,     0,
+       2,   279,   350,     0,   384,   460,   464,     0,     0,     0,
+       1,   279,     2,   514,   560,   562,   279,     2,   724,   280,
+     727,   529,   529,   280,     0,     0,     0,   258,   531,   526,
+       2,   279,     0,     0,   279,   534,     2,   485,     2,   538,
+       0,     0,     0,     0,    17,    56,     4,     5,     6,    15,
+       0,     0,     0,   279,     2,     0,   279,    62,    63,    64,
+      65,    19,    18,    20,    23,    47,    66,     0,    69,    73,
+      76,    79,    84,    87,    89,    91,    93,    95,    97,   102,
+     479,   734,   439,   478,     0,   437,   438,     0,   550,   565,
+     568,   571,   577,   580,   583,     2,   279,     0,     3,   414,
+       0,   422,   280,   279,   292,   318,   272,   333,   340,     3,
+       3,   396,   400,   410,   415,   458,   279,   416,   689,   690,
+     279,   417,   419,   279,     2,   567,   579,   712,     2,     2,
+     233,     2,     0,     0,   443,   442,   137,     2,     2,   235,
+       2,     2,   234,     2,   266,     2,   267,     0,   265,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   551,   590,
+       0,   441,     2,   545,   554,   643,   547,   548,   517,   279,
+       2,   584,   593,   586,   587,     0,   261,   279,   279,   324,
+       0,   280,   279,   279,   717,   721,   719,   518,   279,   529,
+     239,   247,   294,     0,     2,   519,   279,   483,   321,   322,
+     268,   336,   343,   279,   279,   279,     2,   373,   279,   361,
+       0,     0,   367,   711,   279,   732,   387,     0,   461,   484,
+     236,   237,   504,   279,   424,     0,   279,   221,     0,     2,
+     223,     0,   280,     0,   241,     2,   242,   263,     0,     0,
+       2,   279,   529,   279,   470,   472,   471,     0,     0,   734,
+       0,   279,     0,   279,   474,   279,   544,   542,   543,   541,
+       0,   536,   539,    66,   101,     0,   279,    54,    50,   279,
+      59,   279,   279,    48,    49,    61,     2,   124,     0,     0,
+     435,     0,   434,   279,    52,    53,    16,     0,    30,    31,
+      35,     2,     0,   114,   115,   116,   117,   118,   119,   120,
+     121,   122,   123,     0,     0,    51,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   105,     2,   629,   440,
+     626,   531,   531,   634,   462,   279,     2,   569,     2,   570,
+       0,   581,   582,   279,     2,   279,     0,   691,   280,   695,
+     686,   687,   693,   279,     0,   618,     2,     2,   651,   531,
+     734,   601,   531,   531,   734,   531,   615,   531,   531,   665,
+     423,   648,   531,   531,   656,   663,   279,   418,   280,     0,
+       0,   279,   701,   280,   706,   734,   698,   279,   703,   734,
+       0,   279,   279,     0,     3,    17,     2,     0,     0,   445,
+     732,     0,     0,   451,   225,     0,   279,     0,     0,     0,
+     529,   553,   557,   559,   589,   592,   596,   599,   552,   591,
+       0,   269,     3,     0,   279,   262,     0,     0,     0,     0,
+     260,     0,     2,     0,     0,   243,   520,   279,     0,     0,
+     439,     3,     3,     0,     0,   279,     0,     0,   675,   371,
+     374,   378,   531,   378,   680,   377,   672,   531,   531,   349,
+     362,   370,   363,   531,   365,   368,   279,   733,     0,     0,
+     385,   732,   280,     3,   403,     3,   407,   406,   575,     0,
+     515,   279,     3,     3,   279,   422,   280,     3,   416,   417,
+       2,     0,     0,     0,   469,   291,   279,   465,   467,     3,
+       2,     2,     0,   486,     3,     0,   538,   126,     0,   210,
+       0,     0,     2,     0,     0,    36,     0,     0,   279,    21,
+       0,    22,     0,   675,   436,     0,   106,     0,     3,     2,
+      28,     2,     0,    33,     0,     2,    26,   103,   104,    70,
+      71,    72,    74,    75,    77,    78,    82,    83,    80,    81,
+      85,    86,    88,    90,    92,    94,    96,     0,     0,   735,
+     279,     0,     0,     0,   630,   631,   627,   628,   481,   480,
+     279,     0,     0,     0,   280,   279,   279,   645,   688,   344,
+       0,   722,   279,   725,   644,     2,   279,     0,     0,     0,
+       0,     0,     0,     0,     0,     3,   652,   604,   619,   653,
+       2,   600,   607,   420,   602,   603,   421,     2,   614,   622,
+     616,   617,   649,   650,   664,   692,   696,   694,   734,   253,
+       2,   728,     2,   411,   700,   705,   412,   279,     3,   390,
+       3,     3,     3,   441,     0,     3,     3,     2,   453,   450,
+     733,     0,   446,     2,   449,   452,     0,   279,   226,   248,
+       3,   257,   259,     0,   441,     2,   555,   556,     2,   594,
+     595,     0,     3,     0,   521,     3,   330,   329,   332,   331,
+     463,   279,     0,   522,     0,   523,   356,     2,   629,     0,
+       0,   364,   366,     2,     0,     0,     0,     0,     0,   380,
+     676,   677,   375,   379,   376,   673,   674,   369,   373,   351,
+     387,   382,   388,     0,     0,     0,   425,   224,     0,     0,
+       3,     2,   651,   418,     0,   511,     0,   734,   473,     0,
+     279,   279,   279,     0,   535,   537,   127,     0,   206,     0,
+       0,   211,   212,    55,    60,   279,     0,    58,    57,     0,
+       0,   125,   676,     0,    67,    68,   107,   112,     3,   108,
+     106,     0,     0,     3,    25,    35,     3,     0,    99,     0,
+       3,   633,   637,   640,   632,     3,   576,   108,     2,   279,
+       3,     3,   280,     0,     2,     2,   723,   726,     0,     3,
+     606,   610,   613,   621,   655,   659,   662,   279,     0,     3,
+     605,   620,   654,   279,   279,   413,   279,   279,   279,     0,
+       0,     0,     0,   240,   108,     0,   101,     0,     3,     3,
+       0,   447,     0,   444,     0,     0,   229,   279,     0,     0,
+     126,     0,     0,     0,     0,     0,   126,     0,     0,     0,
+       2,     0,     0,     3,   128,   129,     2,   139,   130,   131,
+     132,   133,   134,   135,   141,   143,     0,     0,     0,   270,
+     279,   279,   531,   641,     0,     0,     0,   524,   630,     0,
+       0,   279,   279,   679,   683,   685,   678,   372,   386,   383,
+     563,     2,   647,   646,     0,   652,     2,   466,   468,   488,
+       3,   496,   497,     0,     2,   492,     3,     3,     0,     0,
+     540,     0,     0,   210,     0,     3,    37,   108,   732,   106,
+       0,     3,   644,    42,     3,    40,     3,    34,     0,     3,
+      98,   100,     0,     2,   635,   636,     0,   697,   279,   702,
+     279,     0,     0,     0,     3,   279,   279,   279,   621,     0,
+       2,   608,   609,     2,   623,     2,   657,   658,     0,   666,
+       0,     3,     0,     3,     3,     3,     3,   398,   397,   401,
+       0,   731,     2,     2,   730,   109,     0,     0,     0,     0,
+       3,   448,     3,     0,   227,   142,     3,   280,   279,     0,
+       0,     0,     0,     2,   187,     0,   185,     0,     0,     0,
+       0,     0,     0,   191,     0,   279,   531,   147,   144,   279,
+       0,     0,   252,   264,     3,     3,   530,   642,   597,   279,
+     279,   279,   353,   357,     0,     2,   681,   682,   279,   251,
+     279,     0,   499,   476,   279,     0,     0,   475,   490,     0,
+     207,     0,   213,   106,     0,     0,   113,   110,     0,     0,
+       0,     0,     0,     0,    24,     0,   638,   279,   564,   699,
+     704,   707,   708,   709,     0,     3,     3,   660,   279,   279,
+     279,     3,     3,     0,   668,     0,     0,     0,     0,   729,
+     279,   279,     3,   528,   109,   455,     0,     0,   230,   280,
+       0,     0,     0,     0,   279,   188,   186,     0,   183,   189,
+       0,     0,     0,   192,   195,   193,   190,     0,   126,   140,
+     138,   228,     0,     0,     0,   279,   279,   108,   279,   405,
+     409,   408,     0,   493,     2,   494,     2,   495,   489,   279,
+     214,     0,     0,     3,   644,    32,   111,     2,    45,     2,
+      43,    41,    29,   109,    27,     3,   710,     0,     0,     3,
+       3,     3,     0,     0,   667,   669,   611,   624,   254,     2,
+     395,     3,   394,     0,   457,   454,   126,     0,     0,   126,
+       3,     0,   126,   184,     0,     2,   200,   194,     0,   108,
+     136,   558,   598,     0,   352,   279,     3,     2,     0,     0,
+       2,   208,   215,     0,     0,     0,     0,     0,     0,   250,
+     249,     0,     0,     0,   670,   671,   279,     0,   456,   148,
+       0,     0,     2,   161,   126,   150,     0,   178,     0,   126,
+       0,     2,   152,     0,     2,     2,   279,     0,   354,     0,
+     279,   498,   500,   491,     0,     0,   111,    38,     3,     3,
+     639,   612,   625,   661,   399,   126,   154,   157,     0,   156,
+     160,     3,   163,   162,     0,   126,   180,   126,     3,     0,
+     279,     0,     2,   279,   279,   684,     2,   209,   216,     0,
+       0,     0,   149,     0,     0,   159,   217,   164,     2,   219,
+     179,     0,   182,   168,   196,     3,   201,   205,     0,   279,
+     355,   279,     0,    39,    46,    44,   155,   158,   126,     0,
+     165,   279,   126,   126,     0,   169,     0,     0,   675,   202,
+     203,   204,   197,     3,   358,   279,   145,   166,   151,   126,
+     220,   181,   176,   174,   170,   153,   126,     0,   676,     0,
+       0,   146,   167,   177,   171,   175,   174,   172,     3,     0,
+     477,   173,   198,     3,   199
+};
+
+/* YYDEFGOTO[NTERM-NUM].  */
+static const yytype_int16 yydefgoto[] =
+{
+      -1,   816,   457,   291,    45,   129,   130,   292,   293,   294,
+     295,   762,   744,  1134,  1135,   296,   297,   298,   299,   300,
+     301,   302,   303,   304,   305,   306,   307,   308,   309,  1037,
+     507,   977,   311,   978,   534,   956,  1062,  1526,  1064,  1065,
+    1066,  1067,  1527,  1068,  1069,  1457,  1458,  1423,  1424,  1425,
+    1509,  1510,  1514,  1515,  1544,  1545,  1070,  1381,  1071,  1072,
+    1313,  1314,  1315,  1495,  1073,   960,   961,   962,  1403,  1487,
+    1488,   458,   459,   877,   878,  1045,    48,    49,    50,    51,
+      52,   329,   152,    55,    56,    57,    58,    59,   331,    61,
+      62,   253,    64,    65,   264,   333,   334,    68,    69,    70,
+      71,   114,    73,   195,   336,   115,    76,   116,    78,    79,
+      80,   438,   439,   440,   441,   679,   922,   680,    81,    82,
+     445,   700,   858,   859,   339,   340,   703,   704,   705,   341,
+     342,   343,   344,   455,   170,   131,   132,   511,   313,   163,
+     629,   630,   631,   632,   633,    83,   117,   478,   479,   948,
+     480,   267,   484,   314,    85,   133,   134,    86,  1339,  1114,
+    1115,  1116,  1117,    87,    88,   721,    89,   263,    90,    91,
+     179,  1039,   665,   393,   121,    92,   490,   491,   492,   180,
+     258,   182,   183,   184,   259,    95,    96,    97,    98,    99,
+     100,   101,   187,   188,   189,   190,   191,   827,   591,   592,
+     593,   594,   595,   596,   597,   598,   559,   560,   561,   562,
+     684,   102,   600,   601,   602,   603,   604,   605,   921,   686,
+     687,   688,   579,   347,   348,   349,   350,   442,   158,   104,
+     105,   351,   352,   698,   556
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -1297
+static const yytype_int16 yypact[] =
+{
+    5063, 10209, -1297,   115, -1297, -1297, -1297, -1297, -1297, -1297,
+   -1297,   109, -1297, -1297, -1297, -1297, -1297, -1297, -1297, -1297,
+   -1297, -1297, -1297, -1297, -1297,   252,   252,   252,   866,   397,
+     123,  7705,   771, -1297, -1297, -1297, -1297, -1297,   225, -1297,
+   -1297, -1297,   776, -1297,  9574, -1297, -1297, -1297, -1297, -1297,
+   -1297,   208,   239, -1297,  1099, -1297, -1297, -1297, -1297,   242,
+     505,   360,   130,  7814, -1297, -1297,  9642,   626, -1297, -1297,
+   -1297,   693,   365,  5846,   163,   733,   693,  1021, -1297, -1297,
+     289,   218, -1297,   693,  1254,   275, -1297,   401,   413, -1297,
+   -1297, -1297, -1297,   327,   239,   252, -1297,   252, -1297, -1297,
+   -1297, -1297, 10445,  1099, -1297, -1297,  1099, -1297, 10504,   344,
+   -1297, -1297,   638, 10563, -1297,   771,   771,   771, -1297, -1297,
+   -1297,   252, -1297, -1297, -1297,   380,   384, -1297, -1297, -1297,
+   -1297,   400, -1297, -1297, -1297, -1297,   457,   466, -1297,   486,
+     771,  9150,  2777,    75,   495,   519,   568,   584,   594,   602,
+    3892, -1297,   608, -1297,  9710, -1297, -1297, -1297, -1297,   617,
+   -1297,   206,  4815, -1297,   643,   243, -1297, -1297, -1297, -1297,
+     639,   325,   326,   385,   252,   663, -1297,   505,  1914,   735,
+   -1297,    84, -1297,   252,   252,   239, -1297, -1297,   105, -1297,
+     252,   252,  2563,   705,   742,   771, 11342, -1297, -1297,   746,
+   -1297,  9574, -1297, -1297,   693, -1297, -1297,   239, -1297,  1099,
+     208, -1297,  3694, -1297,   771,   771,   771,   239, -1297,   866,
+   -1297,  3561, -1297, -1297,   691,   771, -1297,   771, -1297,   769,
+   -1297, 10268,   768,   397,   795,   771, -1297,   866,   782,   789,
+   -1297,  7705,   852, -1297, -1297, -1297,  3826, -1297, -1297, 11035,
+   -1297,   735,   121, 10563,  6255,   638,  2563, -1297,   136, -1297,
+   -1297, 10504,  1099,   814, 12170, -1297, -1297,   422, -1297, 11905,
+   11622, 11679, 11622, 11736, -1297,   824, -1297, -1297, -1297, -1297,
+   11793, 11793,   852,  8832, -1297, 11622,  9256, -1297, -1297, -1297,
+   -1297, -1297, -1297,   872, -1297,   996,  2005, 11622, -1297,   482,
+     140,   497,   633,   675,   843,   844,   870,   901,    28, -1297,
+   -1297,   884,   516, -1297,   314, -1297, -1297,  2777, -1297, -1297,
+     551,   911, -1297,   588,   911, -1297,  8938,   933, -1297, -1297,
+    1002,  1428,  8472, 11342,   693, -1297,   693,   771,   771, -1297,
+   -1297, -1297, -1297, -1297, -1297,   771, 10622,  1099, -1297, -1297,
+   10681,  1019, -1297,  3892, -1297, -1297, -1297, -1297, -1297, -1297,
+   -1297, -1297,  4608, 11622, -1297, -1297, -1297, -1297, -1297, -1297,
+   -1297, -1297, -1297, -1297, -1297, -1297, -1297,   638, -1297,   839,
+     916,   938,   940,   867,   949,   963,   970,  1914, -1297, -1297,
+     979,   208, -1297, -1297, -1297,   980, -1297, -1297, -1297,  3826,
+   -1297, -1297, -1297, -1297, -1297,  2563, -1297,  9150,  9150, -1297,
+     638, 12198,  9150,  8124, -1297, -1297, -1297, -1297,  3826,   121,
+   -1297, -1297,   693,   239, -1297, -1297,  3826, -1297,  4002, -1297,
+   -1297,   771,   771,  9150,  8726, 10740, -1297,   377,  4504, -1297,
+     388,   402,   397, -1297, 10268,   981,   975,   397,   771, -1297,
+   -1297, -1297, -1297, 11159, -1297,   339,  8392, -1297,   239,   994,
+   -1297,   638, 11980,  6754, -1297, -1297, -1297, -1297,   926,  2563,
+   -1297,  8537,   735,  6493, -1297, -1297, -1297,   944,   540,   884,
+     397, 12170,   276, 10504, -1297, 12170, -1297, -1297, -1297, -1297,
+     571, -1297,  1009, -1297, -1297,    18,  8832, -1297, -1297,  8832,
+   -1297,  9044,  8832, -1297, -1297, -1297, -1297, -1297,   604,  1010,
+     581,  1012, -1297,  7016, -1297, -1297, -1297,   147, -1297, -1297,
+    6903, -1297,   152, -1297, -1297, -1297, -1297, -1297, -1297, -1297,
+   -1297, -1297, -1297,  6255,  6255, -1297, 11622, 11622, 11622, 11622,
+   11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622,
+   11622, 11622, 11622, 11622,  5083,  6255, -1297,   516,   886, -1297,
+   -1297,   252,   252, -1297, -1297,  9150, -1297, -1297, -1297,   980,
+     852, -1297,   980,  7016, -1297,  9362,  1015, -1297, 10799, -1297,
+   -1297,   617, -1297,  9846,  1017, -1297,   804, -1297,  1782,   146,
+     884, -1297,   252,   252,   884,   236, -1297,   252,   252,   980,
+   -1297, -1297,   252,   252, -1297,   911, 10858,  1099, 12111,   198,
+     427, 10858, -1297, 11094, -1297,   884, -1297, 10622, -1297,    14,
+    1020,  8189,  8189,  1099,  5252,  1014, -1297,   210,  1022, -1297,
+    1025,  4815,   367, -1297,  1106,  1099,  8189,   852,   638,   852,
+     735,   737,   911, -1297, -1297,   753,   911, -1297, -1297, -1297,
+    1060, -1297, 11565,   239, 11159, -1297,   629,  1035,   670,  1036,
+   -1297,   699, -1297,  1037,   239, -1297, -1297,  3826,   239,   701,
+     889,  1032,  1034,   405,   425,  7368,  1486, 11622,  2366, -1297,
+   -1297,  1039,   125,  1039, -1297, -1297, -1297,   252,   252, -1297,
+   -1297,   397, -1297,   252, -1297, -1297,  9914,   397,  1038, 11622,
+   -1297,   981, 12111, -1297, -1297,  1047, -1297, -1297, -1297,   852,
+   -1297, 12046, 11622, -1297,  8189,   610,  8472, -1297, -1297,   617,
+    1048,  1050,   944,  2999, -1297, -1297, 12170, -1297, -1297,  1032,
+   -1297, -1297,  1053, -1297,  1032,  1056, 11905,  6255,  1045,  1085,
+    1059,  1061, -1297,  1062,  1068, -1297,  1075,  1077,  7128, -1297,
+    6255, -1297,   581,  1714, -1297,  5360,  6255,  1076,  1078, -1297,
+   -1297, -1297,   711, -1297,  6255, -1297, -1297, -1297, -1297, -1297,
+   -1297, -1297,   482,   482,   140,   140,   497,   497,   497,   497,
+     633,   633,   675,   843,   844,   870,   901, 11622,   667, -1297,
+   11159,  1081,  1082,  1083,   886, -1297, -1297, -1297, -1297, -1297,
+   11159, 11565,   714,  1084,  7480,  9468,  3892, -1297, -1297,  1086,
+    1088, -1297, 10445, -1297, -1297,   804, 11159,   945,  1089,  1090,
+    1093,  1094,  1095,  1096,  1100,  4041,  1782, -1297, -1297, -1297,
+   -1297, -1297, -1297, -1297, -1297, -1297, -1297, -1297, -1297, -1297,
+   -1297, -1297, -1297, -1297,   980, -1297, -1297, -1297,   884, -1297,
+   -1297, -1297, -1297, -1297, -1297, -1297, -1297, 10327, -1297, -1297,
+    1103,  1105, -1297,   208,  1104,  1078,  5252, -1297, -1297, -1297,
+    4608,  1114, -1297, -1297, -1297, -1297,   397,  6608,  1162, -1297,
+   -1297, -1297, -1297,  1087,   208, -1297, -1297,   980, -1297, -1297,
+     980,   203, 11622,  1109, -1297, -1297, -1297, -1297, -1297, -1297,
+   -1297,  3892,   721, -1297,   239, -1297, -1297,   889,  2623,  1120,
+    1124, -1297, -1297, -1297,  1123,   848,  1128,  1130,  1132, -1297,
+    2366, -1297, -1297, -1297, -1297, -1297, -1297, -1297,   377, -1297,
+     975, -1297, -1297,  1133,  1135,  1127, -1297, -1297,  1139,  1140,
+   -1297,   610,  1909, -1297,   496, -1297,  2999,   884, -1297,  1137,
+   12170, 10917,  9150,  1144, -1297, -1297,  1141,  1145, -1297,  1147,
+     301,  1148, -1297,  1146,  1146,  7016,  6255, -1297, -1297,  1146,
+    1149, -1297,  1714,  4608, -1297, -1297, -1297, -1297,  1153,  5205,
+    6255,  1158,   852,  5252, -1297,  6903, -1297,   852, -1297,  6255,
+   -1297,   788,   911, -1297, -1297, -1297, -1297,  5490, -1297,  8938,
+   -1297, -1297,  7592,  1159, -1297, -1297, -1297, -1297,  1167, -1297,
+     877,   911, -1297,   882,   907,   911, -1297,   771,  1168,  4314,
+   -1297, -1297, -1297, 11159, 11159, -1297,  8602,  8602,  8189,  1171,
+    1169,  1170,  1177, -1297, -1297,  1176,   557,    37,  1078, -1297,
+     852, -1297,  4815, -1297,  6255,   444, -1297,  6884,  1180,  1181,
+   11508,  1189,  1191,    15,    96,    38,  6255,  1193,   239,  4178,
+   -1297,  1187,  1173, -1297, -1297, -1297,  1192, -1297, -1297, -1297,
+   -1297, -1297, -1297, -1297, -1297, -1297,   397,  1198,  6255, -1297,
+   11159, 11159,   252,   911,  1200,  1201,  1086, -1297,  2623,   331,
+     397,  7016, 10976,   914,   911, -1297, -1297, -1297, -1297, -1297,
+   -1297, -1297, -1297, -1297,  1205,  1909, -1297, -1297,  1188, -1297,
+    1032, -1297, -1297,   638,  1203, -1297, -1297, -1297,   722,  1202,
+   -1297, 11622,  1194,  1085,  1085,  1207, -1297,  6185,  1025,  6255,
+    1212,  1153,   307,   288,  1211, -1297,  1207, -1297,  1216,  1211,
+   -1297, -1297,  1209, -1297, -1297,   980,  1219, -1297, 10622, -1297,
+    7241,  1222,  1223,  1224, -1297, 10386,  8189,  8189, -1297,  1221,
+   -1297, -1297,   980, -1297, -1297, -1297, -1297,   980,  6255, -1297,
+    6255, 11622,  1228, -1297, -1297, -1297, -1297, -1297, -1297, -1297,
+    1231, -1297, -1297, -1297, -1297, -1297, 11622, 11622,  1230,  1234,
+    1211, -1297, -1297,   397, -1297, -1297, -1297,  8059, 10917,  6255,
+    6255,  1294,  6255, -1297, -1297,  1217, -1297,  1218,  6255,  1220,
+    1226,  6255,   831, -1297,  1232,  7016,   252, -1297, -1297,  6608,
+    1233,   452, -1297, -1297, -1297, -1297, -1297,   980, -1297,  9778,
+    9150, 10268,  1237, -1297,  1243, -1297, -1297,   980, 11314, -1297,
+    8537,  1246, -1297, -1297, 10917,   467,   542, -1297,  1251,  1260,
+   -1297,   359, -1297,  6255,  1263,  1261, -1297, -1297,  1265,   245,
+     257,   852,  1267,  1269, -1297,  1270, -1297, 11159, -1297, -1297,
+   -1297, -1297, -1297, -1297,  1272, -1297, -1297, -1297, 11159, 11159,
+   11159, -1297, -1297,  1276, -1297,  1277,  1280,  1281,   619, -1297,
+    8256,  8364, -1297, -1297,   625, -1297,  1283,  1284, -1297,  8667,
+     727,   731,  1288,   740,  6735, -1297, -1297,   543, -1297, -1297,
+     756,  1289,   239,  1329,  1338, -1297, -1297,  1290, 11508, -1297,
+   -1297, -1297,  1291,  1293,   780,  9973, 10268,  6075, 11159, -1297,
+   -1297, -1297,  1292, -1297, -1297, -1297, -1297, -1297, -1297, 10917,
+   -1297,  1275,  1327,  1153,   537, -1297, -1297, -1297, -1297, -1297,
+   -1297, -1297, -1297,  1295, -1297, -1297, -1297,  1301,  1305, -1297,
+   -1297, -1297,  1306,  1308, -1297, -1297, -1297, -1297, -1297, -1297,
+   -1297,  1307, -1297,  1309, -1297, -1297, 11508,    90,  6255, 11508,
+   -1297,  1313,  6255, -1297,   187,  1328, -1297, -1297,  1315,  5778,
+   -1297, -1297, -1297,   332, -1297, 10032, -1297, -1297,  1099,   638,
+    1311, -1297, -1297,   800,  1317,  6255,   852,   852,  1320, -1297,
+   -1297,  1322,  1323,  1324, -1297, -1297,  8602,  1321, -1297,  1379,
+   11622,  1325, -1297, -1297, 11428, -1297,   810, -1297,  1312, 11508,
+    1318, -1297, -1297,  1333, -1297,  1341, 10268,  1335, -1297,  1343,
+   10917, -1297, -1297, -1297,  1319,  1356,  1339, -1297,  1211,  1211,
+   -1297, -1297, -1297, -1297, -1297, 11508,   270, -1297,   951, -1297,
+   -1297,  7923, -1297, -1297,  1326,  6255, -1297,  6255,  7923,   239,
+   10740,  1345, -1297, 10091, 10268, -1297,  1342, -1297, -1297,  6255,
+    1347,  1348, -1297, 11622, 11622, -1297, -1297,   952,   237, -1297,
+   -1297,  1331, -1297,   952, -1297, -1297,  1642,   852,   239, 10740,
+   -1297, 10150,  1355, -1297, -1297, -1297, -1297, -1297, 11428,  1353,
+     952,  7992,  6255, 11348,  1354,   952,  1360,  1642,  2460, -1297,
+   -1297, -1297, -1297, -1297, -1297,  9150, -1297, 11193, -1297, 11428,
+   -1297, -1297,  1340,  4905, -1297, -1297, 11348,   239,  2460,  1361,
+     819, -1297, 11193, -1297, -1297, -1297,  4905, -1297, -1297,   239,
+   -1297, -1297, -1297, -1297, -1297
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const yytype_int16 yypgoto[] =
+{
+   -1297,  4539,  3474, -1297,    22, -1297,    -1,     2,   817, -1297,
+   -1297, -1297,  -495,  -902,  -132,  5887, -1297,  1449,   523,   552,
+     430,   558,   919,   920,   921,   922,   924, -1297,   150,  -242,
+    5319,   346,  -694,  -917, -1297,    87,  -701,   234, -1297,   157,
+   -1297,   254, -1077, -1297, -1297,    -6, -1297, -1273,  -892,    95,
+   -1297, -1297, -1297, -1297,   -60, -1267, -1297, -1297, -1297, -1297,
+   -1297, -1297,   168,   -11,    51,   368, -1297,   375, -1297,    33,
+   -1297,  -295, -1297, -1297, -1297,   432,  -848, -1297, -1297,     6,
+    -970,    26,  2983, -1297, -1297, -1297,  -117, -1297,    66,   718,
+     -14,  1458,  4231, -1297, -1297,    55,   134,   124,  -247,  1805,
+   -1297,  1752, -1297, -1297,   135,  2146, -1297,  2351,  1577, -1297,
+   -1297,  -431,  -435,  1074,  1079,   582,   830,   342, -1297, -1297,
+    1070,   585,  -481, -1297,  -462,   -65,  -412, -1297, -1297,  -973,
+    -968,   783,  1252,   948,   156, -1297,    83,   233,  -297,  -199,
+    -148,   548,   655, -1297,   904, -1297,  2844,  -402,   807, -1297,
+   -1297,   590, -1297,  -393, -1297,   101, -1297, -1297, -1297, -1251,
+     299, -1297, -1297, -1297,  1071, -1297,    63, -1297, -1297,  -839,
+    -111, -1296,  -104,  2118, -1297,  3091, -1297,   811, -1297,  -172,
+    1440,  -168,  -165,  -162,     4,   -37,   -34,   -32,   611,    36,
+      67,    71,  -161,  -156,  -154,  -153,  -138,  -284,  -490,  -488,
+    -486,  -538, -1297,  -480, -1297, -1297,  -524,  -520,  -505,  -499,
+    1640,  5025,  -528,  -541,  -515,  -512,  -459, -1297,  -388,  -645,
+    -634,  -633,  -576,  -124,  -277, -1297, -1297,   710,   153,   -86,
+   -1297,   361,   821,  -610,  -304
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -507
+static const yytype_int16 yytable[] =
+{
+     109,   257,    46,   690,    94,   144,   388,   110,   145,   380,
+     146,   420,   381,   696,   365,   382,   250,   389,   139,   661,
+     871,   383,   487,   384,   385,   763,    53,   111,   495,  1074,
+     846,   916,   671,    46,   795,    94,   957,   791,  1075,   386,
+     669,   672,   917,   918,    46,   822,    46,   590,   155,   685,
+     828,    47,   792,  1177,  1178,    66,    46,    53,   793,  1179,
+     829,   975,    46,  1131,   185,    46,    60,   207,    46,   614,
+     217,   823,   210,   618,   824,   391,   169,  1196,   147,   729,
+     107,   406,    47,   734,   388,  1139,    66,   380,  1400,   202,
+     381,   933,   211,   382,   138,   389,   818,    60,   819,   383,
+     820,   384,   385,   107,   653,    46,   821,   916,    46,   148,
+     657,   659,   136,   149,    46,   465,   553,   386,   917,   918,
+     738,    30,   754,   664,  1459,   169,  1186,   739,   169,   460,
+     832,   668,  1420,  1421,    67,    74,   839,   555,  1190,  1204,
+     144,   862,    30,   145,    46,   146,   155,   464,   466,  1208,
+     554,  1463,  1187,   103,   103,   880,    46,   193,   355,   860,
+     860,   107,    30,   232,   234,    67,    74,     2,   197,     4,
+       5,     6,     7,    30,   860,   727,   242,   318,   390,    46,
+      46,   409,   155,    30,   103,   242,   733,   392,  1459,  1476,
+     118,   220,   651,   724,    46,   221,  1422,   204,   225,  1195,
+     227,   194,   580,    46,   746,   155,   400,   235,   392,   166,
+     119,    46,   107,   147,    46,   648,   423,   107,   144,   103,
+    1206,   145,   465,   146,   137,    34,   649,    35,   392,  1420,
+    1421,   169,   818,   940,   819,  1463,   820,   470,   421,   392,
+    1463,   454,   895,    46,   148,    94,  1534,   830,   149,   587,
+     759,   243,   860,   539,   540,   765,  1463,    46,    46,   251,
+     155,   690,   252,  1463,    46,   681,   640,    53,   799,  1547,
+     994,    46,  1179,    30,   822,   107,   683,   135,   516,  -218,
+    -218,   505,   460,   107,   169,   135,   833,    -3,  1021,    30,
+     836,   169,    47,  1431,   655,  1141,    66,   648,  1022,   660,
+     823,   460,   849,   824,   452,  1082,   850,    60,   649,   460,
+     107,   853,   461,   867,   359,   856,   446,  1177,  1178,    46,
+     427,   355,   107,  1179,   233,   818,   141,   819,   220,   820,
+     360,   162,    46,    46,  1196,  1008,  1343,   837,   449,   587,
+     855,   107,   398,   135,  -218,   164,   422,   718,  1347,    46,
+     174,   368,   169,    46,   107,  1210,   135,   229,   832,  1483,
+    1349,   106,   106,   192,   417,   419,  1259,   369,  -275,   169,
+     508,  1074,   904,   169,   425,    67,    74,   730,   990,    46,
+    1075,    74,   731,   237,   795,  1187,   724,   791,   995,    46,
+     230,   355,   106,  1260,   103,   231,   107,   107,   135,   135,
+     822,   240,   792,  1122,  1009,   159,   717,    46,   793,  -109,
+    1123,  -109,    46,  -502,   829,  -109,   564,   818,   472,   819,
+     494,   820,   565,   846,   209,   489,   823,   106,   242,   824,
+    -109,  -109,  1230,   371,   373,   919,  1533,  1231,  1436,    46,
+     509,   708,    36,  1454,   176,   628,    39,   709,  1179,   372,
+     374,   580,  1542,    40,    41,   109,  1382,   932,   220,  1546,
+     225,  1341,   107,    46,   135,   461,   204,   254,  1342,   159,
+     873,    46,   627,   355,   262,    46,   874,    94,   676,    46,
+     392,   -10,   580,   872,   461,  -430,   677,   580,   678,   487,
+    1137,  1196,   461,   375,   656,   658,   691,   813,  1196,    53,
+     743,   266,   159,   615,  1448,  1449,   388,   619,   380,   376,
+     693,   381,   692,   691,   382,   357,   760,   389,  1255,   743,
+     383,   766,   384,   385,    47,   695,   694,   882,    66,   911,
+     446,   851,  1096,   693,    74,   852,   884,   715,   386,    60,
+     685,  1196,  1020,   482,  1025,   483,   220,  1180,  1110,   912,
+     460,   718,  1193,    74,  1164,  1166,   861,   861,   268,  1118,
+    1193,    74,   159,   728,   994,   732,   860,   269,  1194,   454,
+      36,   861,   176,   209,    39,  1334,  1321,  1022,   541,   542,
+     666,    40,    41,   508,  1096,    46,   508,   270,    46,   508,
+      46,  1335,   443,   536,   937,  1508,   204,   319,   537,   538,
+     851,  1513,   106,  1380,  1106,   810,   177,    67,    74,    46,
+     717,  1174,  1175,  1489,   357,   710,   178,   557,  1529,   392,
+    1489,   320,   159,  1536,   718,    46,   103,   558,   805,   169,
+       2,   197,     4,     5,     6,     7,   881,    46,   883,  -109,
+      46,   788,   725,  1107,   443,   169,  1405,   159,   726,   861,
+    1336,   750,   566,   509,   392,   156,   509,   169,   219,   509,
+    -109,  -102,  1020,  1530,  1033,  -102,  1337,  1383,  1224,  1225,
+     321,   186,    46,   735,   208,  1275,  1276,   218,    46,   736,
+      46,  1430,   752,   717,   392,  1079,   322,   581,    34,   570,
+      35,   392,   753,   607,   860,   860,   323,     2,   197,     4,
+       5,     6,     7,    36,   324,   176,   749,    39,   936,   354,
+     868,   941,   750,   587,    40,    41,   543,   544,   358,   112,
+    1149,   942,  1041,  1368,    46,    46,  1007,  1369,  -454,   740,
+    -454,   896,   741,   461,  -454,   747,  -276,   750,    46,   255,
+     370,   715,   422,     8,     9,    10,    11,    12,   648,   256,
+     366,   545,   546,   156,   157,    34,   681,    35,   169,   649,
+     547,   548,   153,   848,  1491,   356,  1492,   683,   159,   159,
+      30,   813,   898,   159,   927,   750,   989,   461,   750,   863,
+     930,     8,     9,    10,    11,    12,    36,   378,  1086,   156,
+      39,   879,   390,    33,   159,   159,   443,    40,    41,   443,
+    1325,   900,    74,   906,  1020,   443,   407,   565,    30,   565,
+     894,  1531,   156,   984,   715,   430,   996,    46,   157,   985,
+     248,   903,   709,   424,  1247,   905,   153,   494,    46,  1376,
+     565,    33,   719,  1377,   106,   750,   204,  1324,   885,   750,
+     392,    36,  1379,   408,   159,    39,    74,   412,   750,   494,
+     204,   315,    40,    41,   888,  1355,   392,   443,  1384,   312,
+     443,   805,   159,   443,   750,   160,  1359,  1360,  1361,    36,
+     433,  1270,   916,    39,   444,   580,  1061,    42,  1149,  1249,
+      40,    41,  1393,   917,   918,  1311,  1312,   142,   565,  1143,
+     690,   392,   489,   813,  1191,  1395,     8,     9,    10,    11,
+      12,   447,  1444,    53,    46,   815,   450,   587,  1445,    46,
+      46,   415,  1464,   451,   410,   588,  1396,   107,   750,   414,
+     473,  1550,    46,    30,   810,   501,   159,   565,   356,   160,
+      46,   125,    66,   126,   127,   128,   581,   988,   204,   808,
+     242,   318,   392,    60,  1292,  1293,    33,   516,    46,   437,
+     318,   392,  1149,   628,    36,   549,   805,  1111,    39,  1046,
+     690,  1176,   316,   861,   550,    40,    41,   581,   400,   644,
+     392,   415,   581,   776,   777,   778,   779,  1112,  1160,   414,
+     392,  1133,   477,  1163,   743,   587,  1133,   557,   552,   392,
+     907,   551,   392,   512,  1420,  1421,   157,   558,   356,    46,
+     908,   510,  1242,  1168,   153,  1473,   813,   555,  1165,    36,
+     587,    67,    74,    39,   568,  1235,  1036,   392,   641,   810,
+      40,    41,   416,   923,  -277,   923,   718,   470,   318,   392,
+     103,     8,     9,    10,    11,    12,   719,   583,   690,  1133,
+     642,   813,   643,  1501,   577,   722,   830,   318,   587,  1061,
+    1149,   645,  1205,  1207,  1209,   723,   628,   443,    30,  1484,
+    1485,  1087,   772,   773,   612,   646,   690,    36,   616,   167,
+     168,    39,   647,    53,   517,   518,   519,   943,    40,    41,
+     650,    33,   416,   247,    36,   717,   167,   168,    39,   697,
+      46,   861,   861,   774,   775,    40,    41,   520,   699,   521,
+    -222,   522,  1198,   354,   103,   780,   781,   160,  1520,   719,
+     737,  1063,   751,   461,   755,    46,   718,   315,   315,   807,
+     358,   814,   315,   -12,   857,   312,   312,  1348,  1350,  1351,
+     312,   869,  1540,   870,   876,   279,   422,   897,   899,  1140,
+     726,   902,   565,   315,   315,   931,   805,   582,   677,  -404,
+    1096,   312,   670,   437,   952,  -506,   437,   945,   954,  1046,
+     959,   963,   437,   964,    36,   607,   167,   168,    39,   958,
+     967,   966,  1232,  1233,   112,    40,    41,   968,  1456,   969,
+     979,    67,    74,   991,   992,   993,   980,  1004,   997,  1005,
+    1076,  1010,  1011,   315,  1036,  1012,  1013,  1014,  1015,   477,
+     103,   312,  1016,   477,   210,  -392,   512,  -391,  1034,   512,
+    1078,   315,   512,  1083,   510,  1212,   715,   510,  1061,   312,
+     510,  1043,  1089,   202,   211,  1371,  1090,  1092,   316,   316,
+    1093,    46,  1094,   316,  1095,  1101,   706,  1100,   106,  1109,
+    1099,  1506,  1456,  1102,  1103,    53,  1119,  1120,  1121,   750,
+    1111,   810,   973,  1127,   316,   316,  1124,  -278,  1133,  1133,
+    1133,  1129,  1132,  1155,     8,     9,    10,    11,    12,  1158,
+    1112,   494,  1169,  1181,    66,   315,  1298,  1182,  1183,  1184,
+    1185,  1199,  1200,   312,  1201,    60,  1300,  1301,  1442,  1303,
+    1202,    30,  1203,   577,  1211,  1307,  1216,  1217,  1310,    -3,
+    1222,   811,  1228,   813,   316,  1229,   715,  1239,  1248,   482,
+    1243,  1266,   106,   159,    33,  1253,  1257,  1061,  1250,  1261,
+    1264,  1268,   316,  1277,   845,   421,  1271,  1272,  1273,   577,
+      53,   204,  1284,  1289,  1294,   854,   494,   494,  1295,  1302,
+    1320,  1305,  1306,  1326,  1308,  1111,   388,  1327,  1332,   380,
+    1309,   103,   381,    67,    74,   382,  1316,   389,  1338,  1198,
+     581,   383,  1340,   384,   385,  1112,   648,  1344,  1345,  1346,
+     461,  1352,   103,  1353,  1354,  1061,  1356,   649,  1061,   386,
+    1364,  1365,  1366,  1367,  1312,  1519,   316,  1374,  1375,  1378,
+    1385,    46,  1388,  1391,  1389,  1392,   582,   103,  1397,  1401,
+      46,    46,  1402,  1409,  1405,  1133,  1133,  1410,   106,  -393,
+    1414,   810,  1415,  1418,   437,  1429,  1435,  1433,  1443,  1455,
+     169,  1446,  1450,  1061,  1451,  1452,  1453,   847,  1061,  1369,
+    1471,  1478,   582,   422,  1460,  1469,  1465,   706,    67,    74,
+      93,  1474,  1467,  1477,   477,  1475,  1111,  1498,  1479,  1502,
+    1490,  1504,  1505,  1063,  1061,  1512,  1525,   103,    63,   113,
+    1528,  1535,  1537,  1549,  1543,  1426,  1112,   891,   782,  1386,
+     783,    93,   784,  1319,   785,  1256,  1437,   786,  1507,  1432,
+     144,  1387,   143,   145,    93,   146,  1551,    53,  1523,    63,
+     140,  1251,   103,    36,    53,   585,  1521,    39,    46,  1252,
+     181,  1493,   154,    93,    40,    41,    93,  1061,  1221,   673,
+    1097,   719,  1061,   924,   674,  1098,  1198,   701,   802,    46,
+      46,  1128,   155,  1198,   212,  1042,  1061,   461,  1061,   586,
+    1006,   587,  1061,   947,   461,  1061,   875,    53,  1108,   588,
+      46,  1061,   355,  1333,   720,  1061,     0,   955,     0,     0,
+       0,    36,  1390,   176,  1441,    39,     0,     0,   209,   106,
+     249,     0,    40,    41,     0,     0,  1198,     0,     0,     0,
+     494,     0,     0,   706,     0,   811,     0,   461,     0,     0,
+     106,     0,    93,   706,     0,     0,     0,   676,     0,   392,
+       0,   159,   443,   103,    93,    67,    74,   678,     0,   706,
+     317,   719,    67,    74,     0,   106,     0,     0,   332,     0,
+    1419,     0,     0,  1427,   103,     0,     0,   379,   181,     0,
+       0,   103,     0,     0,     0,     0,  1494,     0,     0,     0,
+       0,     0,     0,   494,   494,     0,   387,     0,     0,     0,
+     206,    93,     0,     0,     0,    67,    74,     0,     0,     0,
+     405,     0,    93,   140,   411,  1522,     0,     0,  1462,   154,
+     209,     0,   315,  1466,   103,   106,     0,     0,   477,  1113,
+     312,     0,     0,     0,     0,     0,     0,     0,     0,   428,
+       0,    93,     0,   431,     0,   432,   443,   443,     0,  1482,
+     206,     0,     0,   448,  1548,   468,     0,   811,     0,    63,
+     106,     0,     0,     0,   462,   707,  1553,    36,     0,   176,
+       0,    39,     0,     0,   469,  1147,     0,   845,    40,    41,
+       0,   498,   411,     0,     8,     9,    10,    11,    12,     0,
+       0,   206,     0,     0,   514,   515,     0,     0,     0,     0,
+       0,     0,     0,  1517,     0,   392,   535,     0,     0,     0,
+       0,    30,    72,  1518,     0,     0,   443,    93,     0,     0,
+       0,  1541,     0,     0,     0,     0,     0,  1541,     0,     0,
+       0,   589,     0,   316,    33,   515,  1541,     0,     0,     0,
+    1541,     0,     0,    72,   578,     0,     0,     0,     0,   206,
+       0,   608,     8,     9,    10,    11,    12,   443,     0,     0,
+       0,   106,     0,     0,   613,     0,   706,   706,   613,     0,
+     811,   332,   515,     0,     0,   752,     0,   392,   213,    30,
+     847,   394,   106,     0,     0,   753,   206,   181,   402,   106,
+     206,   443,     0,     0,   443,   443,     0,     0,     0,     0,
+       0,     0,    33,     0,     0,   811,     0,    36,     0,   585,
+       0,    39,     0,     0,     0,     0,     0,   462,    40,    41,
+     443,     0,   443,   706,   706,     0,  1269,     0,   205,     0,
+       0,   332,   106,  1147,     0,     0,   462,   682,   223,     0,
+       0,     0,     0,   586,   462,   587,   159,     0,     0,     0,
+       0,     0,     0,   588,     0,     0,     0,     0,   394,     0,
+       0,     0,   335,     0,     0,     0,   707,     0,     0,   206,
+       0,   702,     0,    93,   411,     0,     0,   589,   205,     8,
+       9,    10,    11,    12,     8,     9,    10,    11,    12,   716,
+       0,    63,     0,     0,     0,     0,     0,     0,     0,   411,
+     315,     0,     0,   411,     0,     0,    30,  1147,   312,   437,
+       0,    30,   563,     0,     0,     0,     0,     0,     0,   205,
+     567,     0,  1113,   571,     0,     0,     0,     0,     0,    33,
+       0,   332,     0,   429,    33,     0,     0,     0,     0,    36,
+       0,   176,     0,    39,     0,   769,   770,   771,   206,     0,
+      40,    41,     0,    72,     0,     0,     0,     0,    72,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     941,     0,   587,     0,     0,   177,   794,   205,     0,   394,
+     942,  1330,     0,   402,   515,   178,   817,     0,   589,     0,
+       0,   804,     0,   578,     0,     0,     0,     0,     0,   206,
+       0,   249,   707,   437,   437,  1147,   826,     0,     0,     0,
+     706,   316,   707,     0,   205,     0,     0,  1113,   205,     0,
+       0,   706,   706,   706,   578,     0,     0,     0,   707,   578,
+       0,     0,     0,     0,   488,   613,     0,     0,     0,   332,
+     332,     0,     0,     0,     0,   213,     0,     0,     0,     0,
+       0,     0,     0,     0,   332,   523,   524,   525,   526,   527,
+     528,   529,   530,   531,   532,   335,     0,   811,   394,     0,
+     589,   706,   702,   437,     0,     0,   915,     0,   682,     0,
+       0,     0,     0,     0,     0,   462,     0,     0,   533,     0,
+       0,     0,     0,   716,     0,     0,   920,   205,     0,     0,
+       0,     0,     0,   120,   123,   124,    75,     0,     0,     0,
+       0,    72,     0,     0,   437,   206,     0,     0,  1113,     0,
+       0,   515,   817,   589,     0,   335,     0,     0,     0,   462,
+      72,     0,   332,     0,     0,     0,     0,    75,    72,     0,
+    1497,   946,     0,     0,   411,   206,     0,     0,  1496,     0,
+     206,   437,   437,     0,     0,     0,     0,   563,   563,     0,
+       0,     0,     0,     0,   974,   335,   716,     0,     0,  1497,
+       0,   972,   214,   244,     0,   245,   205,  1496,     0,   437,
+       0,     0,     0,   335,     0,    72,     0,     0,     0,     0,
+       0,     0,     0,   205,     0,   315,     0,     0,     0,     0,
+       0,     0,     0,   312,     0,     0,     0,     0,   702,     0,
+       0,     0,     0,     0,     0,   817,     0,     0,   702,     0,
+       0,     0,     0,  1002,   804,   335,   589,   205,     0,     0,
+     249,     0,     0,     0,   702,   707,   707,     0,     0,   206,
+       0,   886,     0,  1019,     0,   889,     0,     0,     0,     0,
+       0,     0,   377,   206,     0,     0,   337,     0,     0,     0,
+       0,   396,   397,     0,     0,     0,   401,     0,   403,   404,
+     563,     0,     0,     0,     0,   249,     0,     0,     0,     0,
+       0,     0,   394,     0,     0,   335,     0,     0,     0,     0,
+       0,     0,   707,   707,     0,    63,     0,     0,     0,     0,
+       0,   515,     0,     0,     0,     0,   316,   817,   589,     0,
+       0,    77,     0,     0,     0,     0,     0,     0,     0,   804,
+     682,     0,     0,     0,     0,     0,  1088,     0,   682,     0,
+       0,     0,     0,   335,   335,     0,     8,     9,    10,    11,
+      12,   206,    77,   205,     0,     0,   589,    75,   335,     0,
+       0,     0,    75,     0,     0,     0,     0,     0,     0,     0,
+    1105,     0,     0,    30,     0,     0,   335,     0,   411,   113,
+       0,     0,     0,   205,     0,     0,     0,   215,   205,    72,
+       0,     0,     0,   332,     0,     0,    33,   335,     0,     0,
+       0,    36,     0,   176,   563,    39,     0,   249,     0,     0,
+       0,     0,    40,    41,     0,     0,     0,     0,   515,     0,
+       0,     0,     0,     0,     0,   613,     0,   578,     0,     0,
+       0,     0,     0,    72,     0,     0,   335,   676,     0,   392,
+       8,     9,    10,    11,    12,   140,     0,   678,     0,   214,
+       0,   702,   702,     0,   332,   332,   332,     0,     0,     0,
+    1331,     0,     0,     0,     0,     0,   498,    30,     0,   337,
+     335,   338,     0,     0,     0,  1197,     0,   205,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   707,
+      33,   205,     0,     0,     0,    36,     0,   176,   589,    39,
+     707,   707,   707,     0,     0,     0,    40,    41,   702,   702,
+       0,   488,   335,     0,     0,    75,     0,   563,   563,   804,
+     249,     0,   335,     0,     0,   394,     0,   213,   335,   337,
+       0,  1517,     0,   392,    75,     0,     0,     0,   335,     0,
+       0,  1518,    75,     8,     9,    10,    11,    12,     0,   206,
+     707,     0,     0,     0,     0,   249,     0,     0,     0,     0,
+       0,     0,    77,     0,     0,     0,     0,    77,     0,   337,
+      30,     0,     0,     0,     0,     0,   613,     0,   716,   205,
+       0,     0,     0,   613,   332,   332,     0,   337,     0,    75,
+     515,     0,     0,    33,     0,     0,     0,     0,    36,    72,
+     176,  1144,    39,     8,     9,    10,    11,    12,     0,    40,
+      41,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    1161,     0,     0,   335,     0,     0,  1299,     0,     0,   337,
+      30,     0,     0,     0,   255,     0,     0,     0,     0,     0,
+       0,     0,     0,   332,   256,     0,     0,    63,     0,   796,
+     797,     0,     0,    33,   215,     0,     0,   613,    36,     0,
+       0,     0,    39,     0,     0,     0,   702,     0,   716,    40,
+      41,     0,   113,     0,   338,     0,     0,   831,     0,     0,
+     834,   835,     0,   838,     0,   840,   841,   335,     0,   337,
+     842,   843,     0,     0,   907,   702,   392,     0,   563,     0,
+       0,     0,     0,  1236,   908,     0,   702,   702,   702,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   332,   332,
+      77,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,  1197,     0,   338,     0,     0,   337,   337,    77,
+       0,     0,     0,     0,   206,   335,   335,    77,   335,   335,
+     335,     0,   337,     0,     0,   613,   702,     8,     9,    10,
+      11,    12,     0,     0,     0,     0,     0,   113,     0,    72,
+     337,     0,     0,     0,   338,   925,   926,   205,     0,     0,
+       0,   928,     0,    75,    30,     0,     0,     0,     0,     0,
+       0,   337,   338,     0,    77,     0,     0,     0,     0,     0,
+       0,     0,   335,   335,     0,     0,     0,    33,     0,     0,
+       0,     0,    36,   335,    84,     0,    39,   249,     0,     0,
+       0,     0,     0,    40,    41,     0,     0,    75,     0,     0,
+     337,     0,     0,     0,   338,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   332,    84,   206,     0,    42,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   142,     0,
+       0,     0,     0,     0,   337,     0,     0,     0,   113,     0,
+       0,     0,   335,     0,     0,     0,     0,     0,   335,   335,
+     216,     0,     0,     0,     0,     0,     0,     0,     0,  1197,
+       0,     0,     0,     0,   338,     0,  1197,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   337,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   337,     0,     0,     0,
+     213,   214,   337,     0,     0,     0,     0,   468,     0,     0,
+       0,     0,   337,     0,     0,     0,     0,   335,     0,  1197,
+       0,    72,   338,   338,     0,     0,  1538,     0,     0,     0,
+       0,     0,     0,    54,    54,     0,     0,   338,     0,     0,
+     335,     0,   335,     0,   345,     0,     0,     0,     0,     0,
+       0,     0,   205,     0,     0,   338,     0,     0,     0,     8,
+       9,    10,    11,    12,    54,     0,     0,     0,    77,   335,
+       0,     0,     0,    75,     0,     0,   338,     0,     0,     0,
+     335,   335,   335,     0,     0,     0,    30,     0,     0,     0,
+       0,     0,   335,   335,     0,     0,    54,   337,     0,    54,
+       0,     0,     0,     0,     0,     0,    72,     0,     0,    33,
+       0,     0,    77,     0,    36,   338,     0,     0,    39,     0,
+       0,     0,     0,     0,     0,    40,    41,     0,     0,     0,
+     335,     0,     0,     0,     0,    84,     0,     0,     0,     0,
+      84,     0,     0,     0,     0,     0,     0,     0,     0,   338,
+     722,     0,     0,     0,   205,     0,     0,     0,     0,     0,
+     723,   337,     0,     0,     0,     0,   122,   122,   122,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   330,     0,     0,     0,     0,     0,     0,
+       0,   338,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   338,     0,     0,     0,     0,   215,   338,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   338,   335,   337,
+     337,     0,   337,   337,   337,     0,     0,   216,     0,     0,
+       0,     0,     0,     0,     0,     0,   122,     0,   122,     0,
+       0,     0,     0,    75,     0,    54,     0,   345,     0,     0,
+    1226,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   265,    72,     0,     0,     0,     0,     0,     0,
+      72,     0,     0,     0,    54,     0,   337,   337,    77,     0,
+       0,     0,     0,     0,     0,     0,     0,   337,     0,     0,
+       0,     0,     0,    84,     0,     0,     0,     0,     0,     0,
+       0,     0,   338,     0,     0,     0,     0,   345,     0,     0,
+       0,     0,    84,    72,     0,   122,     0,     0,     0,     0,
+      84,     0,   122,     0,   122,   122,     0,     0,     0,   122,
+       0,   122,   122,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   337,   345,     0,     0,
+       0,     0,   337,   337,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   345,   338,    84,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,  1318,     0,   330,     0,     0,     0,
+       0,     0,     0,     0,   214,     0,     0,     0,     0,   122,
+       0,     0,     0,     0,     0,     0,     0,   345,     0,     0,
+       0,   337,     0,     0,     0,    75,     0,     0,     0,     0,
+       0,     0,     0,     0,   338,   338,     0,   338,   338,   338,
+       0,     0,     0,     0,   337,     0,   337,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   330,     0,    77,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   337,     0,     0,     0,   345,     0,     0,
+       0,     0,     0,     0,   337,   337,   337,     0,     0,     0,
+       0,   338,   338,     0,     0,     0,   337,   337,     0,     0,
+       0,     0,   338,     0,     0,     0,     0,     0,     0,     0,
+      75,     0,     0,     0,     0,     0,    54,     0,     0,     0,
+       0,     0,     0,     0,     0,   345,   345,     0,     0,     0,
+       0,     0,     0,     0,   337,     0,     0,     0,     0,     0,
+     345,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   330,     0,   345,     0,
+       0,   338,     0,     0,     0,     0,     0,   338,   338,     0,
+       0,    84,     0,     0,     0,     0,     0,     0,     0,   345,
+       0,     0,     0,     0,   161,     0,   165,     0,     0,   171,
+     172,   173,     0,   175,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   224,   215,
+       0,     0,     0,     0,     0,    84,   330,     0,   345,   238,
+     239,     0,   337,     0,     0,     0,   338,     0,     0,     0,
+      77,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,  -279,   338,
+       0,   338,   345,     0,     0,     0,     0,     0,    30,     0,
+       0,     0,     0,     0,   330,   330,     0,    75,     0,     0,
+       0,     0,     0,     0,    75,     0,     0,     0,   338,   330,
+       0,    33,     0,     0,   327,     0,     0,     0,     0,   338,
+     338,   338,  -279,     0,   345,     0,     0,     0,     0,     0,
+       0,   338,   338,     0,   345,     0,     0,     0,     0,   216,
+     345,     0,   122,   122,     0,    77,     0,    75,     0,     0,
+     345,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   338,
+     122,     0,     0,   122,   122,     0,   122,     0,   122,   122,
+       0,     0,     0,   122,   122,     0,     0,   330,     2,   197,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    84,     0,    25,    26,    27,     0,     0,     0,     0,
+       0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   345,     0,     0,     0,     0,
+       0,     0,     0,     0,    33,     0,    34,     0,    35,    36,
+       0,   198,   199,    39,     0,     0,     0,   338,     0,     0,
+      40,    41,     0,   122,     0,     0,     0,     0,   122,   122,
+       0,     0,     0,     0,   122,     0,     0,     0,     0,   330,
+       0,     0,     0,     0,     0,    42,     0,   200,     0,     0,
+     576,     0,   584,     0,     0,   201,     0,     0,     0,   345,
+       0,     0,    77,   609,   610,     0,     0,     0,     0,    77,
+       0,     0,     0,     0,     0,     0,     0,   620,     0,   456,
+       2,   197,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
+      54,     0,    77,    30,     0,     0,     0,   345,   345,     0,
+     345,   345,   345,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   330,     0,    33,   663,    34,     0,
+      35,    84,     0,    37,    38,     0,     2,   197,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
+       0,    25,    26,    27,   345,   345,     0,     0,   271,    30,
+     272,     0,    -3,     0,    54,   345,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   330,     0,
+       0,   273,    33,     0,    34,     0,    35,   274,     0,    37,
+      38,   275,     0,     0,   276,   277,   278,   279,    40,    41,
+       0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
+       0,     0,     0,     0,     0,     0,     0,   757,     0,     0,
+       0,     0,     0,   283,   345,   325,    -3,     0,     0,     0,
+     345,   345,   285,   326,   287,   288,   289,   290,     0,   330,
+     330,   330,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,  -280,
+      54,     0,     0,     0,     0,     0,     0,     0,     0,    30,
+       0,     0,   216,     0,     0,     0,     0,   803,  1017,     0,
+       0,     8,     9,    10,    11,    12,     0,     0,     0,   345,
+       0,     0,    33,    84,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,  -280,   330,     0,     0,   271,    30,   272,
+       0,     0,   345,     0,   345,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   864,     0,
+     273,    33,     0,     0,     0,     0,   274,     0,     0,     0,
+     275,   345,     0,   276,   277,   278,   279,    40,    41,     0,
+     280,   281,   345,   345,   345,     0,   893,     0,   282,     0,
+       0,     0,     0,     0,   345,   345,     0,     0,     0,   330,
+     330,     0,   283,     0,   361,   909,   910,     0,    84,   914,
+       0,   285,   892,   287,   288,   289,   290,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   345,   122,     0,     0,     0,   934,     0,   935,
+      54,    54,     0,     0,     0,     0,   938,   939,     0,     0,
+       0,   944,     0,     0,     0,     0,     0,     0,   330,     0,
+       0,     0,    54,   949,     0,     0,     0,     0,   953,     0,
+       0,     0,     0,     0,   271,     0,   272,     0,     0,     0,
+       0,     0,   970,     0,     0,     0,     0,    54,     0,     0,
+       0,     0,   981,     0,     0,     0,     0,   273,     0,     0,
+       0,     0,     0,   274,     0,     0,     0,   275,     0,     0,
+     276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
+     345,     0,     0,     0,     0,   282,     0,     0,     0,     0,
+       0,     0,     0,   330,   330,     0,     0,     0,     0,   283,
+    1003,   361,    54,     0,     0,     0,     0,    54,   285,   363,
+     287,   288,   289,   290,   203,     0,     0,     0,     0,  1018,
+       0,     0,  1213,     0,   222,    84,   226,   122,   228,     0,
+       0,     0,    84,     0,     0,   236,     0,     0,     0,     0,
+       0,  1170,    54,     0,     8,     9,    10,    11,    12,     0,
+       0,     0,  1029,     0,  1030,  1031,  1032,     0,     0,  1035,
+     864,     0,     0,     0,   203,     0,   226,   228,   236,     0,
+     271,    30,   272,     0,  1077,    84,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   576,     0,     0,  1084,
+       0,   203,     0,   273,    33,  1085,     0,     0,     0,   274,
+       0,     0,     0,   275,     0,   203,   276,   277,   278,   279,
+      40,    41,     0,   280,   281,     0,     0,     0,     0,   330,
+       0,   282,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,  1104,   283,     0,   361,     0,     0,
+       0,     0,     0,    54,   285,  1171,   287,   288,   289,   290,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   757,
+       0,     0,     0,   203,    54,   226,   228,   236,     0,     0,
+       0,    54,  1130,     0,     0,     0,     0,   864,     0,     0,
+    1138,     0,     0,     0,  1142,     0,     0,     0,     0,  1146,
+       0,     0,     0,  1151,  1152,  1153,     0,     0,     0,     0,
+     203,     0,     0,  1159,   203,     0,     0,     0,     0,     0,
+       0,     0,     0,  1172,    54,     0,     0,     0,     0,     0,
+     486,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,  1188,  1189,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,     0,     0,    25,    26,    27,     0,  1218,     0,     0,
+    1220,    30,   435,     0,     0,     0,     0,     0,   203,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   203,    33,  1234,     0,     0,   226,   228,
+       0,    37,    38,     0,     0,     0,   236,     0,     0,     0,
+       0,     0,   150,     0,  1241,     0,     0,     0,     0,     0,
+    1245,  1246,     0,     0,     0,     0,     0,     0,     0,  1254,
+       0,     0,     0,     0,     0,  1258,     0,   436,  1262,     0,
+    1263,   689,     0,  1265,     0,   108,     0,     0,   203,     0,
+       0,     0,     0,     0,   864,     0,     0,   241,  1274,     0,
+       0,     0,     0,     0,     0,     0,   203,   246,     0,     0,
+       0,     0,   203,     0,   271,  1283,   272,  1285,  1286,  1287,
+    1288,     0,     0,     0,     0,     0,     0,     0,     0,   203,
+       0,     0,   203,   203,  1296,     0,  1297,   273,     0,     0,
+     165,     0,     0,   625,     0,   135,     0,   275,     0,   203,
+     276,   277,   278,   279,    40,    41,     0,   280,   281,  1317,
+     353,     0,     0,   203,     0,   282,     0,     0,  1322,  1323,
+     203,     0,     0,   367,     0,     0,     0,     0,     0,   283,
+       0,   626,     0,   627,   362,     0,     0,     0,   285,   363,
+     287,   288,   289,   290,     0,   399,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   413,
+       0,     0,     0,     0,     0,     0,     0,   418,     0,  1357,
+    1358,     0,     0,     0,     0,  1362,  1363,   426,     0,     0,
+       0,     0,     0,     0,     0,     0,  1373,     0,     0,   434,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   453,     0,     0,     0,     0,   463,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   471,
+       0,     0,     0,     0,     0,   481,     0,   485,     0,   203,
+       0,     0,     0,     0,     0,     0,     0,  1404,     0,     0,
+       0,     0,     0,   513,     0,     0,     0,     0,     0,  1408,
+       0,     0,     0,  1411,  1412,  1413,     0,     0,     0,   203,
+       0,     0,     0,     0,   203,  1417,     0,     0,     0,     0,
+       0,   271,     0,   272,  1428,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   573,     0,     0,     0,     0,     0,
+    1439,     0,     0,     0,   273,     0,     0,     0,     0,     0,
+     274,     0,     0,     0,   275,     0,     0,   276,   277,   278,
+     279,    40,    41,   621,   280,   281,     0,   622,   623,     0,
+     624,     0,   282,     0,     0,     0,   634,   635,     0,   636,
+     637,     0,   638,     0,   639,     0,   283,     0,   361,     0,
+       0,   362,  1480,  1481,     0,   285,   363,   287,   288,   289,
+     290,   652,     0,   203,     0,  1486,     0,     0,     0,   654,
+       0,   271,  1486,   272,  1048,     0,  1049,   203,     0,  1050,
+    1051,  1052,  1053,  1054,  1055,  1056,  1057,  1532,  1058,     0,
+       0,  1059,    32,   667,   273,     0,     0,   486,     0,  1516,
+     625,     0,     0,     0,   275,   675,     0,   276,   277,   278,
+     279,    40,    41,     0,   280,   281,     0,     0,     0,     0,
+       0,     0,   282,     0,     0,     0,     0,  1539,   711,     0,
+       0,     0,     0,     0,   714,     0,   283,     0,   361,   453,
+       0,   164,     0,     0,     0,   285,   363,   287,   288,   289,
+     290,     0,  1552,     0,     0,   203,     0,  1554,     0,  -126,
+       0,     0,     0,     0,     0,   203,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   748,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   203,     0,     0,
+     764,     0,     0,  -501,     0,     0,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+       0,     0,    25,    26,    27,    28,   790,     0,    29,     0,
+      30,    31,     0,     0,     0,   800,     0,   801,     0,     0,
+       0,     0,     0,   806,     0,     0,     0,     0,     0,   271,
+      32,   272,     0,    33,     0,    34,   825,    35,    36,     0,
+      37,    38,    39,     0,     0,     0,     0,     0,     0,    40,
+      41,     0,   273,     0,     0,     0,     0,     0,   274,     0,
+       0,   203,   275,     0,     0,   276,   277,   278,   279,    40,
+      41,     0,   280,   281,    42,   866,    43,     0,     0,     0,
+     282,     0,     0,     0,    44,   346,     0,   203,     0,     0,
+       0,     0,     0,     0,   283,     0,   361,     0,     0,     0,
+       0,     0,   787,   285,   363,   287,   288,   289,   290,     0,
+       0,   901,     0,   203,     0,     0,   395,     0,     0,     0,
+       0,     0,     0,   395,     0,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,  -279,   203,    25,    26,    27,     0,     0,     0,
+       0,     0,    30,     0,     0,     0,     0,     0,     0,     0,
+     203,     0,     0,     0,     0,     0,     0,     0,     0,   241,
+       0,     0,     0,     0,     0,    33,     0,     0,     0,   950,
+     951,     0,    37,    38,     0,     0,  -279,     0,     0,     0,
+       0,   965,     0,   395,     0,     0,     0,     0,   271,     0,
+     272,     0,     0,     0,     0,     0,     0,     0,   982,     0,
+     983,     0,     0,     0,   987,     0,  1028,     0,   568,     0,
+       0,   273,     0,     0,     0,     0,   108,   274,     0,   203,
+       0,   275,     0,     0,   276,   277,   278,   279,    40,    41,
+       0,   280,   281,     0,     0,     0,   203,   395,     0,   282,
+       0,     0,     0,     0,     0,   395,   569,     0,   395,   572,
+       0,   346,     0,   283,     0,   361,   599,     0,     0,     0,
+     756,     0,   285,   363,   287,   288,   289,   290,     0,  1023,
+       0,     0,     0,     0,     0,   617,  1024,     0,   346,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,  1026,
+       0,  1027,     0,     0,     0,     0,   271,     0,   272,     0,
+       0,     0,     0,     0,   395,     0,  1040,     0,   395,     0,
+       0,     0,  1044,     0,     0,     0,     0,     0,     0,   273,
+       0,     0,     0,     0,  1080,   274,     0,  1081,   203,   275,
+       0,     0,   276,   277,   278,   279,    40,    41,   346,   280,
+     281,     0,     0,     0,     0,     0,   790,   282,     0,     0,
+       0,     0,  1091,     0,     0,     0,     0,     0,     0,     0,
+     310,   283,   395,   361,     0,     0,   973,     0,     0,   328,
+     285,   363,   287,   288,   289,   290,     0,     0,     0,     0,
+       0,   364,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   395,     0,     0,   346,     0,     0,     0,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,  -279,     0,    25,
+      26,    27,     0,     0,     0,     0,     0,    30,     0,     0,
+     203,     0,     0,     0,     0,   395,     0,  1150,   346,     0,
+       0,     0,     0,  1156,  1157,     0,     0,     0,     0,     0,
+      33,     0,     0,     0,     0,    36,     0,   809,    38,    39,
+       0,  -279,     0,     0,     0,     0,    40,    41,     0,     0,
+       0,     0,     0,   467,     0,     0,     0,     0,     0,     0,
+       0,     0,   395,   395,     0,     0,     0,     0,     0,     0,
+       0,  1028,     0,   568,     0,     0,     0,     0,   346,  1215,
+     346,   611,     0,     0,     0,  1219,     0,     0,   812,     0,
+       0,   599,     0,   599,   599,     0,     0,     0,     0,     0,
+     599,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     844,   346,     0,     0,     0,     0,   346,     0,     0,     0,
+    1238,     0,     0,     0,     0,  1240,   346,   346,     0,     0,
+       0,     0,     0,  1244,     0,     0,     0,     0,     0,     0,
+       0,   346,     0,     0,     0,     0,   395,   887,     0,     0,
+     395,   890,   328,     0,     0,     0,     0,     0,     0,     0,
+       0,   364,  1267,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   395,     0,     0,     0,  1278,
+     346,   395,  1279,   395,  1280,     0,     0,   395,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,  1290,  1291,     0,     0,     0,     0,     0,     0,     0,
+       0,   310,     0,     0,     0,     0,     0,     0,     0,   346,
+     599,     0,  1304,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   310,   310,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   203,
+       0,     0,     0,   346,  1328,     0,     0,   395,   395,     0,
+       0,     0,   713,     0,     0,     0,     0,     0,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,  -279,     0,    25,    26,    27,
+       0,     0,     0,     0,     0,    30,     0,     0,     0,   395,
+     745,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   346,   758,     0,     0,     0,     0,     0,    33,   745,
+     599,     0,   599,    36,     0,   809,    38,    39,     0,  -279,
+       0,   599,   767,   768,    40,    41,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,  1398,   789,  1399,     0,     0,     0,     0,
+       0,   568,   812,    30,   798,     0,  1406,     0,  1407,   108,
+       0,     0,   758,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    33,     0,  1416,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,  1434,     0,   346,     0,     0,     0,
+       0,     0,   395,   395,     0,     0,  1440,     0,     0,  1244,
+     395,     0,     0,   865,     0,   395,     0,     0,     0,     0,
+     364,     0,     0,   395,     0,     0,     0,     0,     0,     0,
+       0,  1461,     0,     0,     0,     0,   599,   599,     0,     0,
+    1468,   328,     0,  1470,  1472,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     346,     0,     0,     0,   328,     0,     0,   395,     0,     0,
+       0,     0,     0,     0,   812,     0,     0,     0,     0,     0,
+       0,  1499,     0,     0,     0,  1244,   395,  1145,     0,     0,
+       0,     0,  1148,     0,   346,     0,     0,  1511,     0,     0,
+       0,     0,     0,     0,     0,   395,  1162,     0,   599,   599,
+    1167,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   346,   346,   346,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   758,     0,   971,
+       0,     0,     0,     0,     0,   976,     0,     0,     0,     0,
+       0,     0,     0,   986,     0,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,  -279,     0,    25,    26,    27,     0,  1227,     0,
+       0,     0,    30,   395,     0,     0,   346,   812,   395,  1237,
+     328,     0,     0,  1000,  1001,   328,     0,     0,     0,     0,
+     599,     0,     0,     0,     0,    33,     0,     0,     0,     0,
+       0,     0,    37,    38,   328,     0,  -279,     0,     0,     0,
+       0,     0,   812,     0,     0,     0,     0,   493,   497,   493,
+     500,     0,     0,     0,     0,     0,     0,   503,   504,     0,
+       0,     0,   493,   493,     0,   346,  1028,     0,   568,     0,
+    1148,   346,   346,     0,   493,  1038,   611,     0,     0,   364,
+       0,     0,     0,     0,     0,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,  -279,   493,    25,    26,    27,     0,     0,     0,
+     328,     0,    30,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     346,     0,     0,     0,     0,    33,     0,     0,     0,     0,
+     493,     0,    37,    38,  1148,     0,  -279,     0,     0,     0,
+       0,     0,     0,     0,     0,   346,     0,     0,     0,     0,
+       0,   310,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,  1125,  1126,     0,     0,   568,     0,
+       0,   271,   364,   272,     0,     0,   108,     0,     0,   976,
+       0,     0,  1136,     0,   745,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   273,   346,   346,     0,     0,     0,
+     274,  1154,     0,     0,   275,     0,     0,   276,   277,   278,
+     279,    40,    41,     0,   280,   281,     0,     0,  1173,     0,
+       0,     0,   282,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,  1148,     0,     0,     0,   283,     0,   361,     0,
+       0,   364,     0,  1192,     0,   285,   363,   287,   288,   289,
+     290,     0,     0,     0,     0,     0,     0,     0,  1214,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,  1223,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     758,     0,     0,     0,   812,     0,     0,     0,     0,     0,
+       0,     0,     0,   493,   493,   493,   493,   493,   493,   493,
+     493,   493,   493,   493,   493,   493,   493,   493,   493,   493,
+     493,   346,     0,     0,     0,     0,     0,     0,   976,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   493,     0,     0,     0,     0,     0,     0,   865,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,  1281,     0,  1282,
+       0,     0,     0,     0,     0,     0,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+       0,   395,    25,    26,    27,    28,     0,     0,    29,     0,
+      30,    31,     0,     0,   758,     0,     0,     0,     0,     0,
+       0,     0,   395,   395,     0,     0,     0,     0,     0,   310,
+      32,     0,     0,    33,     0,    34,     0,    35,    36,     0,
+      37,    38,    39,   395,   493,     0,     0,     0,     0,    40,
+      41,     0,   976,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   493,     0,     0,     0,
+       0,     0,     0,     0,    42,     0,    43,     0,     0,   493,
+    -505,     0,     0,     0,    44,     0,     0,     0,     0,     0,
+       0,     1,     2,   197,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
+      28,     0,   493,    29,   271,    30,  1047,  1048,     0,  1049,
+       0,     0,  1050,  1051,  1052,  1053,  1054,  1055,  1056,  1057,
+       0,  1058,     0,     0,  1059,    32,     0,   273,    33,     0,
+      34,     0,    35,   625,   493,    37,    38,   275,     0,     0,
+     276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
+       0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
+       0,  1060,     0,     0,   164,     0,     0,     0,   285,   286,
+     287,   288,   289,   290,  1447,     0,     0,     0,     0,     0,
+       0,     0,  -126,     0,     0,     0,     0,     0,     1,     2,
+     197,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,     0,     0,    25,    26,    27,    28,     0,     0,
+      29,   271,    30,   272,     0,     0,     0,     0,     0,   493,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     271,     0,   272,     0,   273,    33,     0,    34,  1503,    35,
+     274,     0,    37,    38,   275,     0,     0,   276,   277,   278,
+     279,    40,    41,   273,   280,   281,     0,     0,     0,   274,
+       0,     0,   282,   275,     0,     0,   276,   277,   278,   279,
+      40,    41,     0,   280,   281,     0,   283,     0,  1060,     0,
+       0,   282,     0,     0,   310,   285,   286,   287,   288,   289,
+     290,     0,     0,     0,     0,   283,     0,   361,     0,  -126,
+       0,     0,     0,     0,   285,   712,   287,   288,   289,   290,
+       0,     0,     0,     0,     0,     0,   493,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   493,     1,     2,   197,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,     0,     0,    25,    26,    27,    28,     0,     0,    29,
+     271,    30,   272,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   493,     0,     0,     0,     0,   271,
+       0,   272,     0,   273,    33,     0,    34,     0,    35,   274,
+       0,    37,    38,   275,     0,     0,   276,   277,   278,   279,
+      40,    41,   273,   280,   281,     0,     0,     0,   625,     0,
+       0,   282,   275,     0,     0,   276,   277,   278,   279,    40,
+      41,     0,   280,   281,     0,   283,     0,    43,     0,     0,
+     282,     0,     0,     0,   285,   286,   287,   288,   289,   290,
+       0,     0,     0,     0,   283,     0,   761,     0,   493,     0,
+       0,     0,     0,   285,   363,   287,   288,   289,   290,     0,
+       2,   197,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
+       0,     0,   271,    30,   272,     0,     0,     0,   493,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   493,   493,   273,    33,     0,    34,     0,
+      35,   274,     0,    37,    38,   275,     0,     0,   276,   277,
+     278,   279,    40,    41,     0,   280,   281,     0,     0,     0,
+       0,     0,     0,   282,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   283,     0,   325,
+      -3,     0,     0,     0,   756,     0,   285,   326,   287,   288,
+     289,   290,     2,   197,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
+       0,     0,     0,     0,   271,    30,   272,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   273,    33,     0,
+      34,     0,    35,   274,     0,    37,    38,   275,     0,     0,
+     276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
+       0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
+       0,   913,    -3,     0,     0,     0,   756,     0,   285,   326,
+     287,   288,   289,   290,     0,     2,   197,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
+      25,    26,    27,     0,     0,     0,     0,   271,    30,   272,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     273,    33,     0,    34,     0,    35,   274,   493,    37,    38,
+     275,     0,     0,   276,   277,   278,   279,    40,    41,     0,
+     280,   281,     0,     0,     0,     0,     0,     0,   282,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   283,     0,   913,    -3,     0,     0,     0,   756,
+       0,   285,   575,   287,   288,   289,   290,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     493,   493,     2,   197,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
+       0,     0,     0,     0,   271,    30,   272,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   273,    33,     0,
+      34,     0,    35,   274,     0,    37,    38,   275,     0,     0,
+     276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
+       0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
+       0,   913,    -3,     0,     0,     0,     0,     0,   285,   326,
+     287,   288,   289,   290,     2,   197,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
+      26,    27,     0,     0,     0,     0,   271,    30,   272,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   273,
+      33,     0,    34,     0,    35,   274,     0,   198,   199,   275,
+       0,     0,   276,   277,   278,   279,    40,    41,     0,   280,
+     281,     0,     0,     0,     0,     0,     0,   282,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   283,     0,   998,     0,     0,     0,     0,     0,     0,
+     285,   999,   287,   288,   289,   290,     2,   197,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
+       0,    25,    26,    27,     0,     0,     0,     0,   271,    30,
+     272,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   273,    33,     0,    34,     0,    35,   274,     0,   198,
+     199,   275,     0,     0,   276,   277,   278,   279,    40,    41,
+       0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   283,     0,   361,     0,     0,     0,     0,
+       0,     0,   285,   363,   287,   288,   289,   290,     1,     2,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,     0,     0,    25,    26,    27,    28,     0,     0,
+      29,     0,    30,    31,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    32,     0,     0,    33,     0,    34,     0,    35,
+      36,     0,    37,    38,    39,     0,     0,     0,     0,     0,
+       0,    40,    41,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    42,     0,    43,     0,
+       0,     0,     0,     0,     0,     0,    44,   196,     2,   197,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
+       0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    33,     0,    34,     0,    35,    36,
+       0,   198,   199,    39,     0,     0,     0,     0,     0,     0,
+      40,    41,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    42,     0,   200,     0,     0,
+       0,     0,     0,     0,     0,   201,     1,     2,   197,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+    -279,     0,    25,    26,    27,    28,     0,     0,    29,     0,
+      30,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    33,     0,    34,     0,    35,     0,     0,
+      37,    38,     0,     0,  -279,     1,     2,   197,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
+       0,    25,    26,    27,    28,     0,    43,    29,     0,    30,
+       0,     0,     0,     0,   108,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
+      38,     0,   196,     2,   197,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
+      27,     0,     0,     0,     0,    43,    30,     0,     0,     0,
+       0,     0,     0,   108,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
+       0,    34,     0,    35,     0,     0,   198,   199,     2,   197,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
+       0,    30,   200,     0,     0,     0,     0,     0,     0,     0,
+     261,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    33,     0,    34,     0,    35,     0,
+       0,    37,    38,     2,   197,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
+      27,     0,     0,     0,     0,     0,    30,   662,    -3,     0,
+       0,     0,     0,     0,     0,   611,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
+       0,    34,     0,    35,     0,     0,    37,    38,     0,     0,
+       2,   197,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
+       0,  -389,   662,    30,     0,     0,     0,     0,     0,     0,
+     611,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
+      35,     0,     0,    37,    38,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,  1370,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   662,
+       0,     0,     0,     0,     0,     0,     0,   611,     2,   197,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
+       0,    30,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
+       0,    25,    26,    27,    33,     0,    34,     0,    35,    30,
+       0,    37,    38,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    33,  1372,     0,     0,     0,   107,     0,    37,
+      38,     0,     0,     0,     0,     0,     0,   662,     0,     0,
+       0,     0,     0,     0,     0,   611,     2,   197,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
+       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    33,     0,    34,     0,    35,     0,     0,   198,
+     199,     2,   197,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
+       0,     0,     0,     0,    30,   260,     0,     0,     0,     0,
+       0,     0,     0,   606,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
+       0,    35,     0,     0,    37,    38,     2,   197,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
+       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
+     574,     0,     0,     0,     0,     0,     0,     0,   611,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
+      38,     2,   197,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
+       0,     0,     0,     0,    30,   662,     0,     0,     0,     0,
+       0,     0,     0,   611,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
+       0,    35,     0,     0,   198,   199,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,     0,     0,    25,    26,    27,   474,   475,
+     476,     0,   271,    30,   272,     0,     0,     0,     0,     0,
+     200,     0,     0,     0,     0,     0,     0,     0,   261,     0,
+       0,     0,     0,     0,     0,   273,    33,     0,     0,     0,
+       0,   274,     0,    37,    38,   275,     0,     0,   276,   277,
+     278,   279,    40,    41,     0,   280,   281,     0,     0,     0,
+       0,     0,     0,   282,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   283,     0,   284,
+       0,     0,     0,     0,     0,     0,   285,   286,   287,   288,
+     289,   290,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
+       0,    25,    26,    27,     0,     0,     0,     0,   271,    30,
+     272,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   273,    33,     0,     0,     0,     0,   274,     0,    37,
+      38,   275,     0,     0,   276,   277,   278,   279,    40,    41,
+       0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   283,     0,   506,     0,     0,   164,     0,
+       0,     0,   285,   286,   287,   288,   289,   290,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
+       0,     0,     0,     0,   271,    30,   272,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   273,    33,     0,
+       0,     0,     0,   274,     0,    37,    38,   275,     0,     0,
+     276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
+       0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
+       0,   574,    -3,     0,     0,     0,     0,     0,   285,   575,
+     287,   288,   289,   290,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
+     271,    30,   272,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   273,    33,     0,     0,     0,     0,   625,
+       0,    37,    38,   275,     0,     0,   276,   277,   278,   279,
+      40,    41,     0,   280,   281,     0,     0,     0,     0,     0,
+       0,   282,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   283,   -35,   742,     0,     0,
+       0,     0,     0,     0,   285,   286,   287,   288,   289,   290,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
+      26,    27,     0,     0,     0,     0,   271,    30,   272,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   273,
+      33,     0,     0,     0,     0,   274,     0,    37,    38,   275,
+       0,     0,   276,   277,   278,   279,    40,    41,     0,   280,
+     281,     0,     0,     0,     0,     0,     0,   282,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   283,     0,   284,     0,     0,     0,     0,     0,     0,
+     285,   286,   287,   288,   289,   290,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
+       0,     0,   271,    30,   272,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   273,    33,     0,     0,     0,
+       0,   274,     0,    37,    38,   275,     0,     0,   276,   277,
+     278,   279,    40,    41,     0,   280,   281,     0,     0,     0,
+       0,     0,     0,   282,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   283,     0,   151,
+       0,     0,     0,     0,     0,     0,   285,   286,   287,   288,
+     289,   290,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
+       0,    25,    26,    27,     0,     0,     0,     0,   271,    30,
+     272,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   273,    33,     0,     0,     0,     0,   274,     0,    37,
+      38,   275,     0,     0,   276,   277,   278,   279,    40,    41,
+       0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   283,     0,   574,     0,     0,     0,     0,
+       0,     0,   285,   575,   287,   288,   289,   290,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
+       0,     0,     0,     0,   271,    30,   272,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   273,    33,     0,
+       0,     0,     0,   274,     0,    37,    38,   275,     0,     0,
+     276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
+       0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
+       0,   361,     0,     0,     0,     0,     0,     0,   285,   363,
+     287,   288,   289,   290,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
+       0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    33,     0,     0,     0,     0,    36,
+       0,    37,    38,    39,     0,     0,     0,     0,     0,     0,
+      40,    41,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
+       0,    25,    26,    27,     0,    42,     0,   151,     0,    30,
+       0,     0,     0,     0,     0,    44,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    33,     0,     0,     0,     0,    36,     0,    37,
+      38,    39,     0,     0,     0,     0,     0,     0,    40,    41,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
+      26,    27,     0,    42,     0,    43,     0,    30,     0,     0,
+       0,     0,     0,    44,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      33,     0,     0,     0,     0,    36,     0,   198,   199,    39,
+       0,     0,     0,     0,     0,     0,    40,    41,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
+       0,    42,     0,   260,     0,    30,     0,     0,     0,     0,
+       0,   201,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
+       0,     0,     0,    36,     0,   809,    38,    39,     0,     0,
+       0,     0,     0,     0,    40,    41,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,     0,     0,    25,    26,    27,     0,  1028,
+       0,   568,     0,    30,     0,     0,     0,     0,     0,   611,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
+       0,    36,     0,   809,    38,    39,     0,     0,     0,     0,
+       0,     0,    40,    41,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,     0,     0,    25,    26,    27,     0,     0,     0,   568,
+       0,    30,   435,     0,     0,     0,     0,   108,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
+       0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
+      30,   435,     0,     0,     0,     0,     0,   436,     0,     0,
+       0,   929,     0,     0,     0,   108,     0,     0,     0,     0,
+       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
+      37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
+       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
+     435,     0,     0,     0,     0,     0,   436,     0,     0,     0,
+    1394,     0,     0,     0,   108,     0,     0,     0,     0,     0,
+       0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
+      38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
+      25,    26,    27,     0,     0,     0,     0,     0,    30,   435,
+       0,     0,     0,     0,     0,   436,     0,     0,     0,  1438,
+       0,     0,     0,   108,     0,     0,     0,     0,     0,     0,
+       0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
+      26,    27,     0,     0,     0,     0,     0,    30,   435,     0,
+       0,     0,     0,     0,   436,     0,     0,     0,  1500,     0,
+       0,     0,   108,     0,     0,     0,     0,     0,     0,     0,
+      33,     0,     0,     0,     0,     0,     0,    37,    38,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
+      27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
+       0,     0,     0,   436,     0,     0,     0,  1524,     0,     0,
+       0,   108,     0,     0,     0,     0,     0,     0,     0,    33,
+       0,     0,     0,     0,   107,     0,    37,    38,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
+       0,     0,     0,     0,     0,    30,   435,     0,     0,     0,
+       0,     0,    43,     0,     0,     0,     0,     0,     0,     0,
+     108,     0,     0,     0,     0,     0,     0,     0,    33,     0,
+       0,     0,     0,     0,     0,    37,    38,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
+       0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
+       0,   436,     0,     0,     0,     0,     0,     0,     0,   108,
+       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
+       0,     0,     0,     0,    37,    38,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
+       0,     0,     0,    30,     0,     0,     0,     0,  1028,     0,
+     568,     0,     0,     0,     0,     0,     0,     0,   108,     0,
+       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
+       0,     0,     0,    37,    38,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
+       0,     0,    30,     0,     0,     0,     0,  1028,     0,   568,
+       0,     0,     0,     0,     0,     0,     0,   611,     0,     0,
+       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
+       0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
+       0,    30,     0,     0,     0,     0,     0,     0,   247,     0,
+       0,     0,     0,     0,     0,     0,   108,     0,     0,     0,
+       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
+       0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
+      30,     0,     0,     0,     0,     0,     0,   151,     0,     0,
+       0,     0,     0,     0,     0,   108,     0,     0,     0,     0,
+       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
+     198,   199,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
+       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
+       0,     0,     0,     0,     0,     0,   260,     0,     0,     0,
+       0,     0,     0,     0,   261,     0,     0,     0,     0,     0,
+       0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
+      38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
+      25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
+       0,     0,     0,     0,     0,   247,     0,     0,     0,     0,
+       0,     0,     0,   611,     0,     0,     0,     0,     0,     0,
+       0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
+      26,    27,     0,     0,     0,     0,     0,    30,     0,     0,
+       0,     0,     0,     0,   568,     0,     0,     0,     0,     0,
+       0,     0,   611,     0,     0,     0,     0,     0,     0,     0,
+      33,     0,     0,     0,     0,     0,     0,    37,    38,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
+      27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
+       0,     0,     0,   436,     0,     0,     0,     0,     0,     0,
+       0,   108,     0,     0,     0,     0,     0,     0,     0,    33,
+       0,     0,     0,     0,     0,     0,   198,   199,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
+       0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
+       0,     0,   260,     0,     0,     0,     0,     0,     0,     0,
+     606,     0,     0,     0,     0,     0,     0,     0,    33,     0,
+       0,     0,     0,     0,     0,    37,    38,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
+       0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
+       0,   574,     0,     0,     0,     0,     0,     0,     0,   611,
+       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
+       0,     0,     0,     0,    37,    38,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
+       0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
+      43,     0,     0,     0,     0,     0,     0,     0,   108,     0,
+       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
+       0,     0,     0,    37,    38,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
+       0,     0,    30,     0,     0,     0,     0,     0,     0,   568,
+       0,     0,     0,     0,     0,     0,     0,   108,     0,     0,
+       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
+       0,     0,   198,   199,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
+       0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   261,     0,     0,     0,
+       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
+       0,   198,   199,     2,   197,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
+      27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
+       0,     0,     0,     0,     0,   606,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
+       0,    34,     0,    35,     0,     0,    37,    38,     0,   271,
+       0,   272,  1048,     0,  1049,     0,     0,  1050,  1051,  1052,
+    1053,  1054,  1055,  1056,  1057,     0,  1058,     0,     0,  1059,
+      32,     0,   273,     0,     0,     0,     0,     0,   625,     0,
+       0,  -402,   275,     0,     0,   276,   277,   278,   279,    40,
+      41,     0,   280,   281,     0,     0,     0,     0,     0,     0,
+     282,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   283,     0,   361,     0,     0,   164,
+       0,     0,     0,   285,   363,   287,   288,   289,   290,     0,
+       0,     0,     0,     0,     0,     0,     0,  -126,     2,   197,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
+       0,    30,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
+       0,    25,    26,    27,    33,     0,    34,     0,    35,    30,
+       0,    37,    38,     0,   271,     0,   272,  1048,     0,  1049,
+    1420,  1421,  1050,  1051,  1052,  1053,  1054,  1055,  1056,  1057,
+    1532,  1058,    33,  1329,  1059,    32,     0,   273,     0,    37,
+      38,     0,     0,   625,     0,     0,     0,   275,     0,     0,
+     276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
+       0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
+       0,   361,     0,     0,   164,     0,     0,     0,   285,   363,
+     287,   288,   289,   290,   271,     0,   272,  1048,     0,  1049,
+    1420,  1421,  1050,  1051,  1052,  1053,  1054,  1055,  1056,  1057,
+       0,  1058,     0,     0,  1059,    32,     0,   273,     0,     0,
+       0,     0,     0,   625,     0,     0,     0,   275,     0,     0,
+     276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
+       0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
+       0,   361,     0,     0,   164,     0,     0,     0,   285,   363,
+     287,   288,   289,   290,   271,     0,   272,  1048,     0,  1049,
+       0,     0,  1050,  1051,  1052,  1053,  1054,  1055,  1056,  1057,
+       0,  1058,     0,     0,  1059,    32,     0,   273,     0,     0,
+       0,     0,     0,   625,     0,     0,     0,   275,     0,     0,
+     276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
+       0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
+       0,   271,     0,   272,     0,     0,     0,     0,     0,   283,
+       0,   361,     0,     0,   164,     0,     0,     0,   285,   363,
+     287,   288,   289,   290,   273,     0,     0,     0,     0,     0,
+     274,     0,     0,     0,   275,     0,     0,   276,   277,   278,
+     279,    40,    41,     0,   280,   281,     0,     0,     0,     0,
+       0,     0,   282,     0,     0,     0,     0,     0,   271,     0,
+     272,     0,     0,     0,     0,     0,   283,     0,   361,     0,
+       0,     0,     0,     0,     0,   285,   892,   287,   288,   289,
+     290,   273,     0,     0,     0,     0,     0,   274,     0,     0,
+       0,   275,     0,     0,   276,   277,   278,   279,    40,    41,
+       0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
+       0,     0,     0,     0,     0,   271,     0,   272,     0,     0,
+       0,     0,     0,   283,     0,     0,     0,     0,     0,     0,
+       0,     0,   285,   363,   287,   288,   289,   290,   273,     0,
+       0,     0,     0,     0,   274,     0,     0,     0,   275,     0,
+       0,   276,   277,   278,   279,    40,    41,     0,   280,   281,
+       0,     0,     0,     0,     0,     0,   282,     0,     0,     0,
+       0,     0,   271,     0,   272,     0,     0,     0,     0,     0,
+     496,     0,     0,     0,     0,     0,     0,     0,     0,   285,
+     363,   287,   288,   289,   290,   273,     0,     0,     0,     0,
+       0,   274,     0,     0,     0,   275,     0,     0,   276,   277,
+     278,   279,    40,    41,     0,   280,   281,     0,     0,     0,
+       0,     0,     0,   282,     0,     0,     0,     0,     0,   271,
+       0,   272,     0,     0,     0,     0,     0,   499,     0,     0,
+       0,     0,     0,     0,     0,     0,   285,   363,   287,   288,
+     289,   290,   273,     0,     0,     0,     0,     0,   274,     0,
+       0,     0,   275,     0,     0,   276,   277,   278,   279,    40,
+      41,     0,   280,   281,     0,     0,     0,     0,     0,     0,
+     282,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   502,     0,     0,     0,     0,     0,
+       0,     0,     0,   285,   363,   287,   288,   289,   290,     2,
+     197,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    30,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    33,     0,    34,     0,    35,
+      36,     0,   167,   168,    39,     0,     0,     0,     0,     0,
+       0,    40,    41,   196,     2,   197,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
+      26,    27,     0,     0,     0,     0,     0,    30,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      33,     0,    34,     0,    35,     0,     0,   198,   199,   456,
+       2,   197,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
+       0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
+      35,     0,     0,    37,    38,     2,   197,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
+      25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    33,     0,    34,     0,    35,     0,     0,   198,   199,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
+      26,    27,   474,   475,   476,     0,     0,    30,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
+      33,     0,     0,     0,     0,    30,     0,    37,    38,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
+       0,     0,     0,     0,     0,   198,   199
+};
+
+#define yypact_value_is_default(yystate) \
+  ((yystate) == (-1297))
+
+#define yytable_value_is_error(yytable_value) \
+  YYID (0)
+
+static const yytype_int16 yycheck[] =
+{
+       1,   112,     0,   438,     0,    42,   178,     1,    42,   177,
+      42,   210,   177,   444,   162,   177,   102,   178,    32,   412,
+     630,   177,   269,   177,   177,   520,     0,     1,   270,   877,
+     606,   676,   434,    31,   558,    31,   737,   557,   877,   177,
+     433,   434,   676,   676,    42,   586,    44,   331,    44,   437,
+     588,     0,   557,  1026,  1027,     0,    54,    31,   557,  1027,
+     588,   755,    60,   980,    60,    63,     0,    63,    66,   346,
+      66,   586,    66,   350,   586,   179,    54,  1047,    42,   481,
+      65,   192,    31,   485,   256,   987,    31,   255,  1339,    63,
+     255,   701,    66,   255,    31,   256,   586,    31,   586,   255,
+     586,   255,   255,    65,   399,   103,   586,   752,   106,    42,
+     407,   408,    29,    42,   112,   101,    88,   255,   752,   752,
+     102,    37,   510,   418,  1420,   103,    89,   109,   106,   246,
+     589,   426,    42,    43,     0,     0,   595,   123,  1040,   124,
+     177,   622,    37,   177,   142,   177,   142,   251,   252,   111,
+     122,  1424,   115,     0,     1,   636,   154,    27,   154,   621,
+     622,    65,    37,    80,    81,    31,    31,     4,     5,     6,
+       7,     8,     9,    37,   636,   479,   101,   102,    57,   177,
+     178,   195,   178,    37,    31,   101,   483,   103,  1484,  1440,
+      75,    67,   391,   477,   192,    71,   106,    63,    74,  1047,
+      76,    71,   326,   201,   501,   201,   101,    83,   103,    52,
+     101,   209,    65,   177,   212,   387,   212,    65,   255,    66,
+     124,   255,   101,   255,   101,    62,   387,    64,   103,    42,
+      43,   209,   722,   714,   722,  1508,   722,   101,   212,   103,
+    1513,   242,   654,   241,   177,   241,  1513,   101,   177,   103,
+     103,    94,   714,   113,   114,   103,  1529,   255,   256,   103,
+     256,   696,   106,  1536,   262,   437,   377,   241,   565,  1536,
+     794,   269,  1240,    37,   815,    65,   437,    67,    75,    42,
+      43,   282,   399,    65,   262,    67,   590,   124,   826,    37,
+     594,   269,   241,   106,   405,   989,   241,   469,   826,   410,
+     815,   418,   104,   815,   241,   102,   108,   241,   469,   426,
+      65,   615,   246,   103,   108,   619,   233,  1290,  1291,   317,
+     219,   317,    65,  1291,   106,   815,   101,   815,   204,   815,
+     124,   123,   330,   331,  1304,   815,  1253,   101,   237,   103,
+     617,    65,   185,    67,   107,   106,   212,   471,   103,   347,
+     108,   108,   330,   351,    65,  1056,    67,    68,   817,    89,
+     103,     0,     1,     3,   207,   209,    78,   124,     3,   347,
+     283,  1219,   667,   351,   217,   241,   241,   101,   790,   377,
+    1219,   246,   106,   108,   908,   115,   670,   907,   800,   387,
+     101,   387,    31,   105,   241,   106,    65,    65,    67,    67,
+     941,     0,   907,   102,   816,    44,   471,   405,   907,   102,
+     109,   104,   410,     0,   942,   108,   102,   907,   262,   907,
+     270,   907,   108,   999,    63,   269,   941,    66,   101,   941,
+     123,   124,   101,   108,   108,   677,  1513,   106,   106,   437,
+     283,   102,    65,  1416,    67,   362,    69,   108,  1416,   124,
+     124,   575,  1529,    76,    77,   456,  1304,   699,   334,  1536,
+     336,   102,    65,   461,    67,   399,   332,   123,   109,   108,
+     103,   469,   105,   469,   113,   473,   109,   473,   101,   477,
+     103,   101,   606,   631,   418,   101,   109,   611,   111,   736,
+     985,  1461,   426,   108,   407,   408,   108,   583,  1468,   473,
+     501,   101,   141,   347,  1406,  1407,   678,   351,   676,   124,
+     108,   676,   124,   108,   676,   154,   517,   678,  1128,   520,
+     676,   522,   676,   676,   473,   442,   124,   638,   473,   124,
+     447,   104,   920,   108,   399,   108,   640,   471,   676,   473,
+     928,  1511,   826,   121,   848,   123,   422,  1028,   950,   124,
+     667,   675,   108,   418,  1013,  1014,   621,   622,   101,   952,
+     108,   426,   201,   480,  1088,   482,  1028,   101,   124,   570,
+      65,   636,    67,   212,    69,   108,   124,  1105,    81,    82,
+     423,    76,    77,   496,   972,   583,   499,   101,   586,   502,
+     588,   124,   231,   111,   711,  1487,   462,   102,   116,   117,
+     104,  1493,   241,  1304,   108,   583,   101,   473,   473,   607,
+     675,  1023,  1024,  1461,   253,   458,   111,   101,  1510,   103,
+    1468,   102,   261,  1515,   748,   623,   473,   111,   573,   607,
+       4,     5,     6,     7,     8,     9,   637,   635,   639,   102,
+     638,   554,   102,   947,   283,   623,   109,   286,   108,   714,
+     108,   108,   101,   496,   103,    44,   499,   635,    32,   502,
+     123,   104,   946,  1511,   863,   108,   124,   124,  1080,  1081,
+     102,    60,   670,   102,    63,  1156,  1157,    66,   676,   108,
+     678,  1382,   101,   748,   103,   884,   102,   326,    62,   101,
+      64,   103,   111,   332,  1156,  1157,   102,     4,     5,     6,
+       7,     8,     9,    65,   102,    67,   102,    69,   709,   101,
+     627,   101,   108,   103,    76,    77,    83,    84,   101,     1,
+     997,   111,   870,   104,   722,   723,   812,   108,   103,   496,
+     105,   102,   499,   667,   109,   502,     3,   108,   736,   101,
+     101,   675,   608,    10,    11,    12,    13,    14,   920,   111,
+     107,   118,   119,   142,    44,    62,   928,    64,   736,   920,
+      85,    86,    44,   607,  1465,   154,  1467,   928,   407,   408,
+      37,   857,   102,   412,   691,   108,   109,   711,   108,   623,
+     697,    10,    11,    12,    13,    14,    65,   124,    67,   178,
+      69,   635,    57,    60,   433,   434,   435,    76,    77,   438,
+    1231,   102,   667,   102,  1088,   444,   101,   108,    37,   108,
+     653,  1512,   201,   102,   748,   124,   102,   815,   108,   108,
+     102,   664,   108,   212,   102,   668,   108,   677,   826,   102,
+     108,    60,   471,   102,   473,   108,   702,  1230,   101,   108,
+     103,    65,   102,   101,   483,    69,   711,   101,   108,   699,
+     716,   141,    76,    77,   101,  1267,   103,   496,   102,   141,
+     499,   806,   501,   502,   108,    44,  1278,  1279,  1280,    65,
+     101,  1148,  1517,    69,   106,   999,   877,   101,  1155,  1121,
+      76,    77,   102,  1517,  1517,    54,    55,   111,   108,   101,
+    1325,   103,   736,   979,  1042,  1326,    10,    11,    12,    13,
+      14,   106,   102,   877,   902,   101,   124,   103,   108,   907,
+     908,   201,   102,   124,   196,   111,  1328,    65,   108,   201,
+     106,   102,   920,    37,   902,   101,   565,   108,   317,   108,
+     928,    65,   877,    67,    68,    69,   575,   787,   804,   578,
+     101,   102,   103,   877,  1186,  1187,    60,    75,   946,   231,
+     102,   103,  1229,   870,    65,   112,   901,   951,    69,   876,
+    1395,  1026,   141,  1028,   120,    76,    77,   606,   101,   102,
+     103,   261,   611,   543,   544,   545,   546,   951,   101,   261,
+     103,   982,   264,   101,   985,   103,   987,   101,    87,   103,
+     101,   121,   103,   283,    42,    43,   286,   111,   387,   997,
+     111,   283,  1113,  1017,   286,  1436,  1092,   123,   101,    65,
+     103,   877,   877,    69,   103,   101,   866,   103,   102,   997,
+      76,    77,   201,   681,     3,   683,  1150,   101,   102,   103,
+     877,    10,    11,    12,    13,    14,   675,   104,  1473,  1040,
+     102,  1127,   102,  1474,   326,   101,   101,   102,   103,  1050,
+    1327,   102,  1053,  1054,  1055,   111,   973,   696,    37,   108,
+     109,   904,   539,   540,   346,   102,  1501,    65,   350,    67,
+      68,    69,   102,  1047,    78,    79,    80,   716,    76,    77,
+     101,    60,   261,   103,    65,  1150,    67,    68,    69,   108,
+    1088,  1156,  1157,   541,   542,    76,    77,   101,   123,   103,
+     106,   105,  1047,   101,   951,   547,   548,   286,  1496,   748,
+     101,   877,   102,  1047,   102,  1113,  1240,   407,   408,   104,
+     101,   104,   412,   109,   104,   407,   408,  1259,  1260,  1261,
+     412,   109,  1525,   108,    28,    75,  1002,   102,   102,   989,
+     108,   104,   108,   433,   434,   107,  1091,   326,   109,   102,
+    1538,   433,   434,   435,   101,   107,   438,   107,   102,  1076,
+      75,   102,   444,   102,    65,   804,    67,    68,    69,   124,
+     102,   109,  1089,  1090,   456,    76,    77,   102,  1420,   102,
+     104,  1047,  1047,   102,   102,   102,   108,   101,   104,   101,
+      28,   102,   102,   483,  1044,   102,   102,   102,   102,   481,
+    1047,   483,   102,   485,  1198,   102,   496,   102,   104,   499,
+     123,   501,   502,   104,   496,  1058,  1150,   499,  1219,   501,
+     502,   107,   102,  1197,  1198,  1290,   102,   104,   407,   408,
+     102,  1229,   102,   412,   102,   108,   453,   102,   877,   102,
+     107,  1483,  1484,   104,   104,  1219,   102,   102,   101,   108,
+    1244,  1229,   106,   104,   433,   434,   108,     3,  1259,  1260,
+    1261,   108,   104,   104,    10,    11,    12,    13,    14,   102,
+    1244,  1121,   104,   102,  1219,   565,  1193,   108,   108,   102,
+     104,   101,   101,   565,  1050,  1219,  1199,  1200,  1399,  1202,
+     101,    37,   101,   575,   101,  1208,   109,   124,  1211,   107,
+     102,   583,   102,  1389,   483,   104,  1240,   102,   106,   121,
+     107,   102,   951,   952,    60,   108,   104,  1318,   124,   108,
+     104,   102,   501,   102,   606,  1299,   104,   104,   104,   611,
+    1304,  1197,   104,   102,   104,   617,  1186,  1187,   104,    45,
+     107,   124,   124,   106,   124,  1339,  1518,   104,   102,  1517,
+     124,  1198,  1517,  1219,  1219,  1517,   124,  1518,   107,  1304,
+     999,  1517,   102,  1517,  1517,  1339,  1538,   104,   107,   104,
+    1304,   104,  1219,   104,   104,  1376,   104,  1538,  1379,  1517,
+     104,   104,   102,   102,    55,  1496,   565,   104,   104,   101,
+     101,  1389,    54,   102,   104,   102,   575,  1244,   106,   124,
+    1398,  1399,    75,   102,   109,  1406,  1407,   102,  1047,   102,
+     104,  1389,   104,   104,   696,   102,   101,    89,   107,    40,
+    1398,   104,   102,  1424,   102,   102,   102,   606,  1429,   108,
+      89,    75,   611,  1299,   109,   102,   124,   654,  1304,  1304,
+       0,   106,   124,   124,   726,   102,  1440,   102,   109,   107,
+     124,   104,   104,  1219,  1455,   124,   101,  1304,     0,     1,
+     107,   107,   102,   102,   124,  1378,  1440,   650,   549,  1312,
+     550,    31,   551,  1219,   552,  1129,  1393,   553,  1484,  1384,
+    1517,  1313,    42,  1517,    44,  1517,  1546,  1461,  1499,    31,
+      32,  1123,  1339,    65,  1468,    67,  1497,    69,  1496,  1124,
+      60,  1468,    44,    63,    76,    77,    66,  1508,  1076,   435,
+     928,  1150,  1513,   683,   435,   930,  1461,   447,   570,  1517,
+    1518,   973,  1518,  1468,    66,   870,  1527,  1461,  1529,   101,
+     812,   103,  1533,   726,  1468,  1536,   632,  1511,   948,   111,
+    1538,  1542,  1538,  1244,   473,  1546,    -1,   736,    -1,    -1,
+      -1,    65,  1318,    67,  1398,    69,    -1,    -1,  1197,  1198,
+     102,    -1,    76,    77,    -1,    -1,  1511,    -1,    -1,    -1,
+    1420,    -1,    -1,   790,    -1,   857,    -1,  1511,    -1,    -1,
+    1219,    -1,   142,   800,    -1,    -1,    -1,   101,    -1,   103,
+      -1,  1230,  1231,  1440,   154,  1461,  1461,   111,    -1,   816,
+     142,  1240,  1468,  1468,    -1,  1244,    -1,    -1,   150,    -1,
+    1376,    -1,    -1,  1379,  1461,    -1,    -1,   177,   178,    -1,
+      -1,  1468,    -1,    -1,    -1,    -1,  1469,    -1,    -1,    -1,
+      -1,    -1,    -1,  1483,  1484,    -1,   178,    -1,    -1,    -1,
+      63,   201,    -1,    -1,    -1,  1511,  1511,    -1,    -1,    -1,
+     192,    -1,   212,   195,   196,  1498,    -1,    -1,  1424,   201,
+    1299,    -1,   952,  1429,  1511,  1304,    -1,    -1,   950,   951,
+     952,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   221,
+      -1,   241,    -1,   225,    -1,   227,  1325,  1326,    -1,  1455,
+     113,    -1,    -1,   235,  1537,   255,    -1,   979,    -1,   241,
+    1339,    -1,    -1,    -1,   246,   453,  1549,    65,    -1,    67,
+      -1,    69,    -1,    -1,   256,   997,    -1,   999,    76,    77,
+      -1,   272,   264,    -1,    10,    11,    12,    13,    14,    -1,
+      -1,   154,    -1,    -1,   285,   286,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   101,    -1,   103,   297,    -1,    -1,    -1,
+      -1,    37,     0,   111,    -1,    -1,  1395,   317,    -1,    -1,
+      -1,  1527,    -1,    -1,    -1,    -1,    -1,  1533,    -1,    -1,
+      -1,   331,    -1,   952,    60,   326,  1542,    -1,    -1,    -1,
+    1546,    -1,    -1,    31,   326,    -1,    -1,    -1,    -1,   212,
+      -1,   333,    10,    11,    12,    13,    14,  1436,    -1,    -1,
+      -1,  1440,    -1,    -1,   346,    -1,  1023,  1024,   350,    -1,
+    1092,   353,   363,    -1,    -1,   101,    -1,   103,    66,    37,
+     999,   181,  1461,    -1,    -1,   111,   249,   387,   188,  1468,
+     253,  1470,    -1,    -1,  1473,  1474,    -1,    -1,    -1,    -1,
+      -1,    -1,    60,    -1,    -1,  1127,    -1,    65,    -1,    67,
+      -1,    69,    -1,    -1,    -1,    -1,    -1,   399,    76,    77,
+    1499,    -1,  1501,  1080,  1081,    -1,  1148,    -1,    63,    -1,
+      -1,   413,  1511,  1155,    -1,    -1,   418,   437,    73,    -1,
+      -1,    -1,    -1,   101,   426,   103,  1525,    -1,    -1,    -1,
+      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,   258,    -1,
+      -1,    -1,   150,    -1,    -1,    -1,   654,    -1,    -1,   332,
+      -1,   453,    -1,   473,   456,    -1,    -1,   477,   113,    10,
+      11,    12,    13,    14,    10,    11,    12,    13,    14,   471,
+      -1,   473,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   481,
+    1230,    -1,    -1,   485,    -1,    -1,    37,  1229,  1230,  1231,
+      -1,    37,   312,    -1,    -1,    -1,    -1,    -1,    -1,   154,
+     320,    -1,  1244,   323,    -1,    -1,    -1,    -1,    -1,    60,
+      -1,   513,    -1,   221,    60,    -1,    -1,    -1,    -1,    65,
+      -1,    67,    -1,    69,    -1,   536,   537,   538,   411,    -1,
+      76,    77,    -1,   241,    -1,    -1,    -1,    -1,   246,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     101,    -1,   103,    -1,    -1,   101,   558,   212,    -1,   379,
+     111,  1238,    -1,   383,   575,   111,   586,    -1,   588,    -1,
+      -1,   573,    -1,   575,    -1,    -1,    -1,    -1,    -1,   462,
+      -1,   583,   790,  1325,  1326,  1327,   588,    -1,    -1,    -1,
+    1267,  1230,   800,    -1,   249,    -1,    -1,  1339,   253,    -1,
+      -1,  1278,  1279,  1280,   606,    -1,    -1,    -1,   816,   611,
+      -1,    -1,    -1,    -1,   269,   617,    -1,    -1,    -1,   621,
+     622,    -1,    -1,    -1,    -1,   333,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   636,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,    99,   353,    -1,  1389,   468,    -1,
+     670,  1328,   654,  1395,    -1,    -1,   676,    -1,   678,    -1,
+      -1,    -1,    -1,    -1,    -1,   667,    -1,    -1,   123,    -1,
+      -1,    -1,    -1,   675,    -1,    -1,   678,   332,    -1,    -1,
+      -1,    -1,    -1,    25,    26,    27,     0,    -1,    -1,    -1,
+      -1,   399,    -1,    -1,  1436,   578,    -1,    -1,  1440,    -1,
+      -1,   712,   722,   723,    -1,   413,    -1,    -1,    -1,   711,
+     418,    -1,   714,    -1,    -1,    -1,    -1,    31,   426,    -1,
+    1470,   723,    -1,    -1,   726,   608,    -1,    -1,  1470,    -1,
+     613,  1473,  1474,    -1,    -1,    -1,    -1,   557,   558,    -1,
+      -1,    -1,    -1,    -1,   755,   453,   748,    -1,    -1,  1499,
+      -1,   753,    66,    95,    -1,    97,   411,  1499,    -1,  1501,
+      -1,    -1,    -1,   471,    -1,   473,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   428,    -1,  1525,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,  1525,    -1,    -1,    -1,    -1,   790,    -1,
+      -1,    -1,    -1,    -1,    -1,   815,    -1,    -1,   800,    -1,
+      -1,    -1,    -1,   805,   806,   513,   826,   462,    -1,    -1,
+     812,    -1,    -1,    -1,   816,  1023,  1024,    -1,    -1,   702,
+      -1,   641,    -1,   825,    -1,   645,    -1,    -1,    -1,    -1,
+      -1,    -1,   174,   716,    -1,    -1,   150,    -1,    -1,    -1,
+      -1,   183,   184,    -1,    -1,    -1,   188,    -1,   190,   191,
+     670,    -1,    -1,    -1,    -1,   857,    -1,    -1,    -1,    -1,
+      -1,    -1,   682,    -1,    -1,   573,    -1,    -1,    -1,    -1,
+      -1,    -1,  1080,  1081,    -1,   877,    -1,    -1,    -1,    -1,
+      -1,   892,    -1,    -1,    -1,    -1,  1525,   907,   908,    -1,
+      -1,     0,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   901,
+     920,    -1,    -1,    -1,    -1,    -1,   908,    -1,   928,    -1,
+      -1,    -1,    -1,   621,   622,    -1,    10,    11,    12,    13,
+      14,   804,    31,   578,    -1,    -1,   946,   241,   636,    -1,
+      -1,    -1,   246,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     942,    -1,    -1,    37,    -1,    -1,   654,    -1,   950,   951,
+      -1,    -1,    -1,   608,    -1,    -1,    -1,    66,   613,   667,
+      -1,    -1,    -1,   965,    -1,    -1,    60,   675,    -1,    -1,
+      -1,    65,    -1,    67,   794,    69,    -1,   979,    -1,    -1,
+      -1,    -1,    76,    77,    -1,    -1,    -1,    -1,   999,    -1,
+      -1,    -1,    -1,    -1,    -1,   997,    -1,   999,    -1,    -1,
+      -1,    -1,    -1,   711,    -1,    -1,   714,   101,    -1,   103,
+      10,    11,    12,    13,    14,  1017,    -1,   111,    -1,   333,
+      -1,  1023,  1024,    -1,  1026,  1027,  1028,    -1,    -1,    -1,
+    1238,    -1,    -1,    -1,    -1,    -1,  1047,    37,    -1,   353,
+     748,   150,    -1,    -1,    -1,  1047,    -1,   702,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1267,
+      60,   716,    -1,    -1,    -1,    65,    -1,    67,  1088,    69,
+    1278,  1279,  1280,    -1,    -1,    -1,    76,    77,  1080,  1081,
+      -1,   736,   790,    -1,    -1,   399,    -1,   907,   908,  1091,
+    1092,    -1,   800,    -1,    -1,   915,    -1,   805,   806,   413,
+      -1,   101,    -1,   103,   418,    -1,    -1,    -1,   816,    -1,
+      -1,   111,   426,    10,    11,    12,    13,    14,    -1,  1002,
+    1328,    -1,    -1,    -1,    -1,  1127,    -1,    -1,    -1,    -1,
+      -1,    -1,   241,    -1,    -1,    -1,    -1,   246,    -1,   453,
+      37,    -1,    -1,    -1,    -1,    -1,  1148,    -1,  1150,   804,
+      -1,    -1,    -1,  1155,  1156,  1157,    -1,   471,    -1,   473,
+    1171,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,   877,
+      67,   991,    69,    10,    11,    12,    13,    14,    -1,    76,
+      77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    1010,    -1,    -1,   901,    -1,    -1,  1198,    -1,    -1,   513,
+      37,    -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,  1215,   111,    -1,    -1,  1219,    -1,   561,
+     562,    -1,    -1,    60,   333,    -1,    -1,  1229,    65,    -1,
+      -1,    -1,    69,    -1,    -1,    -1,  1238,    -1,  1240,    76,
+      77,    -1,  1244,    -1,   353,    -1,    -1,   589,    -1,    -1,
+     592,   593,    -1,   595,    -1,   597,   598,   965,    -1,   573,
+     602,   603,    -1,    -1,   101,  1267,   103,    -1,  1088,    -1,
+      -1,    -1,    -1,  1093,   111,    -1,  1278,  1279,  1280,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1290,  1291,
+     399,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  1304,    -1,   413,    -1,    -1,   621,   622,   418,
+      -1,    -1,    -1,    -1,  1197,  1023,  1024,   426,  1026,  1027,
+    1028,    -1,   636,    -1,    -1,  1327,  1328,    10,    11,    12,
+      13,    14,    -1,    -1,    -1,    -1,    -1,  1339,    -1,  1047,
+     654,    -1,    -1,    -1,   453,   687,   688,  1002,    -1,    -1,
+      -1,   693,    -1,   667,    37,    -1,    -1,    -1,    -1,    -1,
+      -1,   675,   471,    -1,   473,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  1080,  1081,    -1,    -1,    -1,    60,    -1,    -1,
+      -1,    -1,    65,  1091,     0,    -1,    69,  1389,    -1,    -1,
+      -1,    -1,    -1,    76,    77,    -1,    -1,   711,    -1,    -1,
+     714,    -1,    -1,    -1,   513,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1416,    31,  1299,    -1,   101,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
+      -1,    -1,    -1,    -1,   748,    -1,    -1,    -1,  1440,    -1,
+      -1,    -1,  1150,    -1,    -1,    -1,    -1,    -1,  1156,  1157,
+      66,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1461,
+      -1,    -1,    -1,    -1,   573,    -1,  1468,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   790,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   800,    -1,    -1,    -1,
+    1198,   805,   806,    -1,    -1,    -1,    -1,  1517,    -1,    -1,
+      -1,    -1,   816,    -1,    -1,    -1,    -1,  1215,    -1,  1511,
+      -1,  1219,   621,   622,    -1,    -1,  1518,    -1,    -1,    -1,
+      -1,    -1,    -1,     0,     1,    -1,    -1,   636,    -1,    -1,
+    1238,    -1,  1240,    -1,   150,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  1197,    -1,    -1,   654,    -1,    -1,    -1,    10,
+      11,    12,    13,    14,    31,    -1,    -1,    -1,   667,  1267,
+      -1,    -1,    -1,   877,    -1,    -1,   675,    -1,    -1,    -1,
+    1278,  1279,  1280,    -1,    -1,    -1,    37,    -1,    -1,    -1,
+      -1,    -1,  1290,  1291,    -1,    -1,    63,   901,    -1,    66,
+      -1,    -1,    -1,    -1,    -1,    -1,  1304,    -1,    -1,    60,
+      -1,    -1,   711,    -1,    65,   714,    -1,    -1,    69,    -1,
+      -1,    -1,    -1,    -1,    -1,    76,    77,    -1,    -1,    -1,
+    1328,    -1,    -1,    -1,    -1,   241,    -1,    -1,    -1,    -1,
+     246,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   748,
+     101,    -1,    -1,    -1,  1299,    -1,    -1,    -1,    -1,    -1,
+     111,   965,    -1,    -1,    -1,    -1,    25,    26,    27,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   150,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   790,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   800,    -1,    -1,    -1,    -1,   805,   806,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   816,  1416,  1023,
+    1024,    -1,  1026,  1027,  1028,    -1,    -1,   333,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    95,    -1,    97,    -1,
+      -1,    -1,    -1,  1047,    -1,   212,    -1,   353,    -1,    -1,
+    1082,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   121,  1461,    -1,    -1,    -1,    -1,    -1,    -1,
+    1468,    -1,    -1,    -1,   241,    -1,  1080,  1081,   877,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1091,    -1,    -1,
+      -1,    -1,    -1,   399,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   901,    -1,    -1,    -1,    -1,   413,    -1,    -1,
+      -1,    -1,   418,  1511,    -1,   174,    -1,    -1,    -1,    -1,
+     426,    -1,   181,    -1,   183,   184,    -1,    -1,    -1,   188,
+      -1,   190,   191,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  1150,   453,    -1,    -1,
+      -1,    -1,  1156,  1157,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   471,   965,   473,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1216,    -1,   353,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1198,    -1,    -1,    -1,    -1,   258,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   513,    -1,    -1,
+      -1,  1215,    -1,    -1,    -1,  1219,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1023,  1024,    -1,  1026,  1027,  1028,
+      -1,    -1,    -1,    -1,  1238,    -1,  1240,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   413,    -1,  1047,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,  1267,    -1,    -1,    -1,   573,    -1,    -1,
+      -1,    -1,    -1,    -1,  1278,  1279,  1280,    -1,    -1,    -1,
+      -1,  1080,  1081,    -1,    -1,    -1,  1290,  1291,    -1,    -1,
+      -1,    -1,  1091,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    1304,    -1,    -1,    -1,    -1,    -1,   473,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   621,   622,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1328,    -1,    -1,    -1,    -1,    -1,
+     636,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   513,    -1,   654,    -1,
+      -1,  1150,    -1,    -1,    -1,    -1,    -1,  1156,  1157,    -1,
+      -1,   667,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   675,
+      -1,    -1,    -1,    -1,    50,    -1,    52,    -1,    -1,    55,
+      56,    57,    -1,    59,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    74,  1198,
+      -1,    -1,    -1,    -1,    -1,   711,   573,    -1,   714,    85,
+      86,    -1,  1416,    -1,    -1,    -1,  1215,    -1,    -1,    -1,
+    1219,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,  1238,
+      -1,  1240,   748,    -1,    -1,    -1,    -1,    -1,    37,    -1,
+      -1,    -1,    -1,    -1,   621,   622,    -1,  1461,    -1,    -1,
+      -1,    -1,    -1,    -1,  1468,    -1,    -1,    -1,  1267,   636,
+      -1,    60,    -1,    -1,   150,    -1,    -1,    -1,    -1,  1278,
+    1279,  1280,    71,    -1,   790,    -1,    -1,    -1,    -1,    -1,
+      -1,  1290,  1291,    -1,   800,    -1,    -1,    -1,    -1,   805,
+     806,    -1,   561,   562,    -1,  1304,    -1,  1511,    -1,    -1,
+     816,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1328,
+     589,    -1,    -1,   592,   593,    -1,   595,    -1,   597,   598,
+      -1,    -1,    -1,   602,   603,    -1,    -1,   714,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,   877,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
+      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   901,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,    65,
+      -1,    67,    68,    69,    -1,    -1,    -1,  1416,    -1,    -1,
+      76,    77,    -1,   682,    -1,    -1,    -1,    -1,   687,   688,
+      -1,    -1,    -1,    -1,   693,    -1,    -1,    -1,    -1,   806,
+      -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
+     326,    -1,   328,    -1,    -1,   111,    -1,    -1,    -1,   965,
+      -1,    -1,  1461,   339,   340,    -1,    -1,    -1,    -1,  1468,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   353,    -1,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
+     877,    -1,  1511,    37,    -1,    -1,    -1,  1023,  1024,    -1,
+    1026,  1027,  1028,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   901,    -1,    60,   413,    62,    -1,
+      64,  1047,    -1,    67,    68,    -1,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
+      -1,    29,    30,    31,  1080,  1081,    -1,    -1,    36,    37,
+      38,    -1,   106,    -1,   951,  1091,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   965,    -1,
+      -1,    59,    60,    -1,    62,    -1,    64,    65,    -1,    67,
+      68,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
+      -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   513,    -1,    -1,
+      -1,    -1,    -1,   101,  1150,   103,   104,    -1,    -1,    -1,
+    1156,  1157,   110,   111,   112,   113,   114,   115,    -1,  1026,
+    1027,  1028,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+    1047,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,
+      -1,    -1,  1198,    -1,    -1,    -1,    -1,   573,     7,    -1,
+      -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,  1215,
+      -1,    -1,    60,  1219,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    71,  1091,    -1,    -1,    36,    37,    38,
+      -1,    -1,  1238,    -1,  1240,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   624,    -1,
+      59,    60,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
+      69,  1267,    -1,    72,    73,    74,    75,    76,    77,    -1,
+      79,    80,  1278,  1279,  1280,    -1,   652,    -1,    87,    -1,
+      -1,    -1,    -1,    -1,  1290,  1291,    -1,    -1,    -1,  1156,
+    1157,    -1,   101,    -1,   103,   671,   672,    -1,  1304,   675,
+      -1,   110,   111,   112,   113,   114,   115,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  1328,  1082,    -1,    -1,    -1,   703,    -1,   705,
+    1197,  1198,    -1,    -1,    -1,    -1,   712,   713,    -1,    -1,
+      -1,   717,    -1,    -1,    -1,    -1,    -1,    -1,  1215,    -1,
+      -1,    -1,  1219,   729,    -1,    -1,    -1,    -1,   734,    -1,
+      -1,    -1,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,
+      -1,    -1,   748,    -1,    -1,    -1,    -1,  1244,    -1,    -1,
+      -1,    -1,   758,    -1,    -1,    -1,    -1,    59,    -1,    -1,
+      -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,
+      72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
+    1416,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,  1290,  1291,    -1,    -1,    -1,    -1,   101,
+     806,   103,  1299,    -1,    -1,    -1,    -1,  1304,   110,   111,
+     112,   113,   114,   115,    63,    -1,    -1,    -1,    -1,   825,
+      -1,    -1,   124,    -1,    73,  1461,    75,  1216,    77,    -1,
+      -1,    -1,  1468,    -1,    -1,    84,    -1,    -1,    -1,    -1,
+      -1,     7,  1339,    -1,    10,    11,    12,    13,    14,    -1,
+      -1,    -1,   858,    -1,   860,   861,   862,    -1,    -1,   865,
+     866,    -1,    -1,    -1,   113,    -1,   115,   116,   117,    -1,
+      36,    37,    38,    -1,   880,  1511,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   892,    -1,    -1,   895,
+      -1,   140,    -1,    59,    60,   901,    -1,    -1,    -1,    65,
+      -1,    -1,    -1,    69,    -1,   154,    72,    73,    74,    75,
+      76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,  1416,
+      -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   940,   101,    -1,   103,    -1,    -1,
+      -1,    -1,    -1,  1440,   110,   111,   112,   113,   114,   115,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   965,
+      -1,    -1,    -1,   212,  1461,   214,   215,   216,    -1,    -1,
+      -1,  1468,   978,    -1,    -1,    -1,    -1,   983,    -1,    -1,
+     986,    -1,    -1,    -1,   990,    -1,    -1,    -1,    -1,   995,
+      -1,    -1,    -1,   999,  1000,  1001,    -1,    -1,    -1,    -1,
+     249,    -1,    -1,  1009,   253,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,  1019,  1511,    -1,    -1,    -1,    -1,    -1,
+     269,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  1038,  1039,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    -1,    -1,    29,    30,    31,    -1,  1063,    -1,    -1,
+    1066,    37,    38,    -1,    -1,    -1,    -1,    -1,   317,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   332,    60,  1091,    -1,    -1,   337,   338,
+      -1,    67,    68,    -1,    -1,    -1,   345,    -1,    -1,    -1,
+      -1,    -1,    43,    -1,  1110,    -1,    -1,    -1,    -1,    -1,
+    1116,  1117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1125,
+      -1,    -1,    -1,    -1,    -1,  1131,    -1,   103,  1134,    -1,
+    1136,   107,    -1,  1139,    -1,   111,    -1,    -1,   387,    -1,
+      -1,    -1,    -1,    -1,  1150,    -1,    -1,    88,  1154,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   405,    98,    -1,    -1,
+      -1,    -1,   411,    -1,    36,  1171,    38,  1173,  1174,  1175,
+    1176,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   428,
+      -1,    -1,   431,   432,  1190,    -1,  1192,    59,    -1,    -1,
+    1196,    -1,    -1,    65,    -1,    67,    -1,    69,    -1,   448,
+      72,    73,    74,    75,    76,    77,    -1,    79,    80,  1215,
+     151,    -1,    -1,   462,    -1,    87,    -1,    -1,  1224,  1225,
+     469,    -1,    -1,   164,    -1,    -1,    -1,    -1,    -1,   101,
+      -1,   103,    -1,   105,   106,    -1,    -1,    -1,   110,   111,
+     112,   113,   114,   115,    -1,   186,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   200,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   208,    -1,  1275,
+    1276,    -1,    -1,    -1,    -1,  1281,  1282,   218,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  1292,    -1,    -1,   230,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   242,    -1,    -1,    -1,    -1,   247,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   260,
+      -1,    -1,    -1,    -1,    -1,   266,    -1,   268,    -1,   578,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1343,    -1,    -1,
+      -1,    -1,    -1,   284,    -1,    -1,    -1,    -1,    -1,  1355,
+      -1,    -1,    -1,  1359,  1360,  1361,    -1,    -1,    -1,   608,
+      -1,    -1,    -1,    -1,   613,  1371,    -1,    -1,    -1,    -1,
+      -1,    36,    -1,    38,  1380,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   325,    -1,    -1,    -1,    -1,    -1,
+    1396,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,
+      65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,
+      75,    76,    77,   354,    79,    80,    -1,   358,   359,    -1,
+     361,    -1,    87,    -1,    -1,    -1,   367,   368,    -1,   370,
+     371,    -1,   373,    -1,   375,    -1,   101,    -1,   103,    -1,
+      -1,   106,  1448,  1449,    -1,   110,   111,   112,   113,   114,
+     115,   392,    -1,   702,    -1,  1461,    -1,    -1,    -1,   400,
+      -1,    36,  1468,    38,    39,    -1,    41,   716,    -1,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
+      -1,    56,    57,   424,    59,    -1,    -1,   736,    -1,  1495,
+      65,    -1,    -1,    -1,    69,   436,    -1,    72,    73,    74,
+      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
+      -1,    -1,    87,    -1,    -1,    -1,    -1,  1523,   459,    -1,
+      -1,    -1,    -1,    -1,   465,    -1,   101,    -1,   103,   470,
+      -1,   106,    -1,    -1,    -1,   110,   111,   112,   113,   114,
+     115,    -1,  1548,    -1,    -1,   794,    -1,  1553,    -1,   124,
+      -1,    -1,    -1,    -1,    -1,   804,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   506,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   826,    -1,    -1,
+     521,    -1,    -1,     0,    -1,    -1,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      -1,    -1,    29,    30,    31,    32,   557,    -1,    35,    -1,
+      37,    38,    -1,    -1,    -1,   566,    -1,   568,    -1,    -1,
+      -1,    -1,    -1,   574,    -1,    -1,    -1,    -1,    -1,    36,
+      57,    38,    -1,    60,    -1,    62,   587,    64,    65,    -1,
+      67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
+      77,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
+      -1,   920,    69,    -1,    -1,    72,    73,    74,    75,    76,
+      77,    -1,    79,    80,   101,   626,   103,    -1,    -1,    -1,
+      87,    -1,    -1,    -1,   111,   150,    -1,   946,    -1,    -1,
+      -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
+      -1,    -1,   109,   110,   111,   112,   113,   114,   115,    -1,
+      -1,   662,    -1,   972,    -1,    -1,   181,    -1,    -1,    -1,
+      -1,    -1,    -1,   188,    -1,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,  1002,    29,    30,    31,    -1,    -1,    -1,
+      -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    1019,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   720,
+      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,   730,
+     731,    -1,    67,    68,    -1,    -1,    71,    -1,    -1,    -1,
+      -1,   742,    -1,   258,    -1,    -1,    -1,    -1,    36,    -1,
+      38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   759,    -1,
+     761,    -1,    -1,    -1,   765,    -1,   101,    -1,   103,    -1,
+      -1,    59,    -1,    -1,    -1,    -1,   111,    65,    -1,  1088,
+      -1,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
+      -1,    79,    80,    -1,    -1,    -1,  1105,   312,    -1,    87,
+      -1,    -1,    -1,    -1,    -1,   320,   321,    -1,   323,   324,
+      -1,   326,    -1,   101,    -1,   103,   331,    -1,    -1,    -1,
+     108,    -1,   110,   111,   112,   113,   114,   115,    -1,   830,
+      -1,    -1,    -1,    -1,    -1,   350,   837,    -1,   353,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   850,
+      -1,   852,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,
+      -1,    -1,    -1,    -1,   379,    -1,   867,    -1,   383,    -1,
+      -1,    -1,   873,    -1,    -1,    -1,    -1,    -1,    -1,    59,
+      -1,    -1,    -1,    -1,   885,    65,    -1,   888,  1197,    69,
+      -1,    -1,    72,    73,    74,    75,    76,    77,   413,    79,
+      80,    -1,    -1,    -1,    -1,    -1,   907,    87,    -1,    -1,
+      -1,    -1,   913,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     141,   101,   437,   103,    -1,    -1,   106,    -1,    -1,   150,
+     110,   111,   112,   113,   114,   115,    -1,    -1,    -1,    -1,
+      -1,   162,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   468,    -1,    -1,   471,    -1,    -1,    -1,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
+      30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
+    1299,    -1,    -1,    -1,    -1,   510,    -1,   998,   513,    -1,
+      -1,    -1,    -1,  1004,  1005,    -1,    -1,    -1,    -1,    -1,
+      60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,
+      -1,    71,    -1,    -1,    -1,    -1,    76,    77,    -1,    -1,
+      -1,    -1,    -1,   254,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   557,   558,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   101,    -1,   103,    -1,    -1,    -1,    -1,   573,  1060,
+     575,   111,    -1,    -1,    -1,  1066,    -1,    -1,   583,    -1,
+      -1,   586,    -1,   588,   589,    -1,    -1,    -1,    -1,    -1,
+     595,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     605,   606,    -1,    -1,    -1,    -1,   611,    -1,    -1,    -1,
+    1101,    -1,    -1,    -1,    -1,  1106,   621,   622,    -1,    -1,
+      -1,    -1,    -1,  1114,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   636,    -1,    -1,    -1,    -1,   641,   642,    -1,    -1,
+     645,   646,   353,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   362,  1143,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   670,    -1,    -1,    -1,  1160,
+     675,   676,  1163,   678,  1165,    -1,    -1,   682,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  1182,  1183,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   412,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   714,
+     715,    -1,  1203,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   433,   434,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1538,
+      -1,    -1,    -1,   748,  1235,    -1,    -1,   752,   753,    -1,
+      -1,    -1,   463,    -1,    -1,    -1,    -1,    -1,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    -1,    29,    30,    31,
+      -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,   794,
+     501,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   806,   513,    -1,    -1,    -1,    -1,    -1,    60,   520,
+     815,    -1,   817,    65,    -1,    67,    68,    69,    -1,    71,
+      -1,   826,   533,   534,    76,    77,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,  1334,   555,  1336,    -1,    -1,    -1,    -1,
+      -1,   103,   857,    37,   565,    -1,  1347,    -1,  1349,   111,
+      -1,    -1,   573,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,  1369,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1385,    -1,   901,    -1,    -1,    -1,
+      -1,    -1,   907,   908,    -1,    -1,  1397,    -1,    -1,  1400,
+     915,    -1,    -1,   624,    -1,   920,    -1,    -1,    -1,    -1,
+     631,    -1,    -1,   928,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  1422,    -1,    -1,    -1,    -1,   941,   942,    -1,    -1,
+    1431,   652,    -1,  1434,  1435,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     965,    -1,    -1,    -1,   675,    -1,    -1,   972,    -1,    -1,
+      -1,    -1,    -1,    -1,   979,    -1,    -1,    -1,    -1,    -1,
+      -1,  1472,    -1,    -1,    -1,  1476,   991,   992,    -1,    -1,
+      -1,    -1,   997,    -1,   999,    -1,    -1,  1488,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1010,  1011,    -1,  1013,  1014,
+    1015,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  1026,  1027,  1028,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   748,    -1,   750,
+      -1,    -1,    -1,    -1,    -1,   756,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   764,    -1,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    -1,    29,    30,    31,    -1,  1083,    -1,
+      -1,    -1,    37,  1088,    -1,    -1,  1091,  1092,  1093,  1094,
+     801,    -1,    -1,   804,   805,   806,    -1,    -1,    -1,    -1,
+    1105,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
+      -1,    -1,    67,    68,   825,    -1,    71,    -1,    -1,    -1,
+      -1,    -1,  1127,    -1,    -1,    -1,    -1,   270,   271,   272,
+     273,    -1,    -1,    -1,    -1,    -1,    -1,   280,   281,    -1,
+      -1,    -1,   285,   286,    -1,  1150,   101,    -1,   103,    -1,
+    1155,  1156,  1157,    -1,   297,   866,   111,    -1,    -1,   870,
+      -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,   326,    29,    30,    31,    -1,    -1,    -1,
+     901,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    1215,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
+     363,    -1,    67,    68,  1229,    -1,    71,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1240,    -1,    -1,    -1,    -1,
+      -1,   952,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   965,   966,    -1,    -1,   103,    -1,
+      -1,    36,   973,    38,    -1,    -1,   111,    -1,    -1,   980,
+      -1,    -1,   983,    -1,   985,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    59,  1290,  1291,    -1,    -1,    -1,
+      65,  1002,    -1,    -1,    69,    -1,    -1,    72,    73,    74,
+      75,    76,    77,    -1,    79,    80,    -1,    -1,  1019,    -1,
+      -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  1327,    -1,    -1,    -1,   101,    -1,   103,    -1,
+      -1,  1042,    -1,  1044,    -1,   110,   111,   112,   113,   114,
+     115,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1059,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1078,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    1091,    -1,    -1,    -1,  1389,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   536,   537,   538,   539,   540,   541,   542,
+     543,   544,   545,   546,   547,   548,   549,   550,   551,   552,
+     553,  1416,    -1,    -1,    -1,    -1,    -1,    -1,  1129,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   575,    -1,    -1,    -1,    -1,    -1,    -1,  1150,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1168,    -1,  1170,
+      -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      -1,  1496,    29,    30,    31,    32,    -1,    -1,    35,    -1,
+      37,    38,    -1,    -1,  1215,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  1517,  1518,    -1,    -1,    -1,    -1,    -1,  1230,
+      57,    -1,    -1,    60,    -1,    62,    -1,    64,    65,    -1,
+      67,    68,    69,  1538,   677,    -1,    -1,    -1,    -1,    76,
+      77,    -1,  1253,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   699,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   712,
+     107,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
+      -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
+      32,    -1,   755,    35,    36,    37,    38,    39,    -1,    41,
+      -1,    -1,    44,    45,    46,    47,    48,    49,    50,    51,
+      -1,    53,    -1,    -1,    56,    57,    -1,    59,    60,    -1,
+      62,    -1,    64,    65,   787,    67,    68,    69,    -1,    -1,
+      72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
+      -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
+      -1,   103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,
+     112,   113,   114,   115,  1405,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   124,    -1,    -1,    -1,    -1,    -1,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    -1,    -1,    29,    30,    31,    32,    -1,    -1,
+      35,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,   892,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      36,    -1,    38,    -1,    59,    60,    -1,    62,  1479,    64,
+      65,    -1,    67,    68,    69,    -1,    -1,    72,    73,    74,
+      75,    76,    77,    59,    79,    80,    -1,    -1,    -1,    65,
+      -1,    -1,    87,    69,    -1,    -1,    72,    73,    74,    75,
+      76,    77,    -1,    79,    80,    -1,   101,    -1,   103,    -1,
+      -1,    87,    -1,    -1,  1525,   110,   111,   112,   113,   114,
+     115,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,   124,
+      -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
+      -1,    -1,    -1,    -1,    -1,    -1,   989,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   999,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    -1,    -1,    29,    30,    31,    32,    -1,    -1,    35,
+      36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1047,    -1,    -1,    -1,    -1,    36,
+      -1,    38,    -1,    59,    60,    -1,    62,    -1,    64,    65,
+      -1,    67,    68,    69,    -1,    -1,    72,    73,    74,    75,
+      76,    77,    59,    79,    80,    -1,    -1,    -1,    65,    -1,
+      -1,    87,    69,    -1,    -1,    72,    73,    74,    75,    76,
+      77,    -1,    79,    80,    -1,   101,    -1,   103,    -1,    -1,
+      87,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
+      -1,    -1,    -1,    -1,   101,    -1,   103,    -1,  1121,    -1,
+      -1,    -1,    -1,   110,   111,   112,   113,   114,   115,    -1,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
+      -1,    -1,    36,    37,    38,    -1,    -1,    -1,  1171,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,  1186,  1187,    59,    60,    -1,    62,    -1,
+      64,    65,    -1,    67,    68,    69,    -1,    -1,    72,    73,
+      74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
+      -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
+     104,    -1,    -1,    -1,   108,    -1,   110,   111,   112,   113,
+     114,   115,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
+      -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,
+      62,    -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,
+      72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
+      -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
+      -1,   103,   104,    -1,    -1,    -1,   108,    -1,   110,   111,
+     112,   113,   114,   115,    -1,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
+      29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      59,    60,    -1,    62,    -1,    64,    65,  1420,    67,    68,
+      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
+      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   101,    -1,   103,   104,    -1,    -1,    -1,   108,
+      -1,   110,   111,   112,   113,   114,   115,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    1483,  1484,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
+      -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,
+      62,    -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,
+      72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
+      -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
+      -1,   103,   104,    -1,    -1,    -1,    -1,    -1,   110,   111,
+     112,   113,   114,   115,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
+      30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,
+      60,    -1,    62,    -1,    64,    65,    -1,    67,    68,    69,
+      -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
+      80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,
+     110,   111,   112,   113,   114,   115,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
+      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,
+      38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    59,    60,    -1,    62,    -1,    64,    65,    -1,    67,
+      68,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
+      -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,
+      -1,    -1,   110,   111,   112,   113,   114,   115,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    -1,    -1,    29,    30,    31,    32,    -1,    -1,
+      35,    -1,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    57,    -1,    -1,    60,    -1,    62,    -1,    64,
+      65,    -1,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,
+      -1,    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   111,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
+      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,    65,
+      -1,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,
+      76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   111,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    -1,    29,    30,    31,    32,    -1,    -1,    35,    -1,
+      37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,
+      67,    68,    -1,    -1,    71,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
+      -1,    29,    30,    31,    32,    -1,   103,    35,    -1,    37,
+      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
+      68,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
+      31,    -1,    -1,    -1,    -1,   103,    37,    -1,    -1,    -1,
+      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
+      -1,    62,    -1,    64,    -1,    -1,    67,    68,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
+      -1,    37,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,
+      -1,    67,    68,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
+      31,    -1,    -1,    -1,    -1,    -1,    37,   103,   104,    -1,
+      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
+      -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    -1,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
+      -1,   102,   103,    37,    -1,    -1,    -1,    -1,    -1,    -1,
+     111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
+      64,    -1,    -1,    67,    68,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
+      -1,    37,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
+      -1,    29,    30,    31,    60,    -1,    62,    -1,    64,    37,
+      -1,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    60,    89,    -1,    -1,    -1,    65,    -1,    67,
+      68,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   111,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
+      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
+      68,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
+      -1,    -1,    -1,    -1,    37,   103,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,
+      -1,    64,    -1,    -1,    67,    68,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
+      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
+     103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
+      68,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
+      -1,    -1,    -1,    -1,    37,   103,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,
+      -1,    64,    -1,    -1,    67,    68,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    -1,    -1,    29,    30,    31,    32,    33,
+      34,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,
+     103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
+      -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    -1,    -1,
+      -1,    65,    -1,    67,    68,    69,    -1,    -1,    72,    73,
+      74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
+      -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
+      -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,
+     114,   115,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
+      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,
+      38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    59,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,
+      68,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
+      -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,
+      -1,    -1,   110,   111,   112,   113,   114,   115,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
+      -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,
+      -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,
+      72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
+      -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
+      -1,   103,   104,    -1,    -1,    -1,    -1,    -1,   110,   111,
+     112,   113,   114,   115,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
+      36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    59,    60,    -1,    -1,    -1,    -1,    65,
+      -1,    67,    68,    69,    -1,    -1,    72,    73,    74,    75,
+      76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,
+      -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   101,   102,   103,    -1,    -1,
+      -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
+      30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,
+      60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,
+      -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
+      80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,
+     110,   111,   112,   113,   114,   115,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
+      -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    -1,    -1,
+      -1,    65,    -1,    67,    68,    69,    -1,    -1,    72,    73,
+      74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
+      -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
+      -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,
+     114,   115,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
+      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,
+      38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    59,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,
+      68,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
+      -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,
+      -1,    -1,   110,   111,   112,   113,   114,   115,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
+      -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,
+      -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,
+      72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
+      -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
+      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,
+     112,   113,   114,   115,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
+      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,
+      -1,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,
+      76,    77,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
+      -1,    29,    30,    31,    -1,   101,    -1,   103,    -1,    37,
+      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,
+      68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
+      30,    31,    -1,   101,    -1,   103,    -1,    37,    -1,    -1,
+      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,
+      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
+      -1,   101,    -1,   103,    -1,    37,    -1,    -1,    -1,    -1,
+      -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
+      -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,
+      -1,    -1,    -1,    -1,    76,    77,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,   101,
+      -1,   103,    -1,    37,    -1,    -1,    -1,    -1,    -1,   111,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,
+      -1,    65,    -1,    67,    68,    69,    -1,    -1,    -1,    -1,
+      -1,    -1,    76,    77,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,   103,
+      -1,    37,    38,    -1,    -1,    -1,    -1,   111,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
+      -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
+      37,    38,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
+      -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
+      67,    68,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
+      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
+      38,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
+     107,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,
+      68,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
+      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    38,
+      -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,   107,
+      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
+      30,    31,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,
+      -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,   107,    -1,
+      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
+      31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
+      -1,    -1,    -1,   103,    -1,    -1,    -1,   107,    -1,    -1,
+      -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
+      -1,    -1,    -1,    -1,    65,    -1,    67,    68,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
+      -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    -1,    -1,
+      -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
+      -1,    -1,    -1,    -1,    -1,    67,    68,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
+      -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
+      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,
+      -1,    -1,    -1,    -1,    67,    68,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
+      -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,   101,    -1,
+     103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,
+      -1,    -1,    -1,    67,    68,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
+      -1,    -1,    37,    -1,    -1,    -1,    -1,   101,    -1,   103,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
+      -1,    -1,    67,    68,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
+      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
+      -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
+      37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
+      67,    68,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
+      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
+      -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,
+      68,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
+      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
+      -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
+      30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
+      -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
+      31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
+      -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
+      -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
+      -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,
+      -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
+      -1,    -1,    -1,    -1,    -1,    67,    68,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
+      -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
+      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,
+      -1,    -1,    -1,    -1,    67,    68,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
+      -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
+     103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,
+      -1,    -1,    -1,    67,    68,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
+      -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,   103,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
+      -1,    -1,    67,    68,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
+      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
+      -1,    67,    68,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
+      31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
+      -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    36,
+      -1,    38,    39,    -1,    41,    -1,    -1,    44,    45,    46,
+      47,    48,    49,    50,    51,    -1,    53,    -1,    -1,    56,
+      57,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
+      -1,   102,    69,    -1,    -1,    72,    73,    74,    75,    76,
+      77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
+      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   106,
+      -1,    -1,    -1,   110,   111,   112,   113,   114,   115,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   124,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
+      -1,    37,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
+      -1,    29,    30,    31,    60,    -1,    62,    -1,    64,    37,
+      -1,    67,    68,    -1,    36,    -1,    38,    39,    -1,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    60,    89,    56,    57,    -1,    59,    -1,    67,
+      68,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,
+      72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
+      -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
+      -1,   103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,
+     112,   113,   114,   115,    36,    -1,    38,    39,    -1,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      -1,    53,    -1,    -1,    56,    57,    -1,    59,    -1,    -1,
+      -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,
+      72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
+      -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
+      -1,   103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,
+     112,   113,   114,   115,    36,    -1,    38,    39,    -1,    41,
+      -1,    -1,    44,    45,    46,    47,    48,    49,    50,    51,
+      -1,    53,    -1,    -1,    56,    57,    -1,    59,    -1,    -1,
+      -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,
+      72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
+      -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
+      -1,    36,    -1,    38,    -1,    -1,    -1,    -1,    -1,   101,
+      -1,   103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,
+     112,   113,   114,   115,    59,    -1,    -1,    -1,    -1,    -1,
+      65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,
+      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
+      -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    36,    -1,
+      38,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
+      -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
+     115,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
+      -1,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
+      -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
+      -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,    -1,
+      -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   110,   111,   112,   113,   114,   115,    59,    -1,
+      -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,
+      -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
+      -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
+      -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    -1,    -1,
+     101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,
+     111,   112,   113,   114,   115,    59,    -1,    -1,    -1,    -1,
+      -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,
+      74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
+      -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    36,
+      -1,    38,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,
+     114,   115,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
+      -1,    -1,    69,    -1,    -1,    72,    73,    74,    75,    76,
+      77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
+      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   110,   111,   112,   113,   114,   115,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,
+      65,    -1,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,
+      -1,    76,    77,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
+      30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      60,    -1,    62,    -1,    64,    -1,    -1,    67,    68,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
+      -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
+      64,    -1,    -1,    67,    68,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
+      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,    68,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
+      30,    31,    32,    33,    34,    -1,    -1,    37,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
+      60,    -1,    -1,    -1,    -1,    37,    -1,    67,    68,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
+      -1,    -1,    -1,    -1,    -1,    67,    68
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const yytype_uint16 yystos[] =
+{
+       0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    29,    30,    31,    32,    35,
+      37,    38,    57,    60,    62,    64,    65,    67,    68,    69,
+      76,    77,   101,   103,   111,   129,   132,   189,   201,   202,
+     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
+     213,   214,   215,   216,   217,   218,   220,   221,   222,   223,
+     224,   225,   226,   227,   229,   230,   231,   232,   233,   234,
+     235,   243,   244,   270,   271,   279,   282,   288,   289,   291,
+     293,   294,   300,   305,   309,   310,   311,   312,   313,   314,
+     315,   316,   336,   353,   354,   355,   356,    65,   111,   131,
+     204,   206,   214,   216,   226,   230,   232,   271,    75,   101,
+     298,   299,   300,   298,   298,    65,    67,    68,    69,   130,
+     131,   260,   261,   280,   281,    67,   261,   101,   291,   215,
+     216,   101,   111,   305,   310,   311,   312,   314,   315,   316,
+     126,   103,   207,   214,   216,   309,   313,   352,   353,   356,
+     357,   127,   123,   264,   106,   127,   164,    67,    68,   129,
+     259,   127,   127,   127,   108,   127,    67,   101,   111,   295,
+     304,   305,   306,   307,   308,   309,   313,   317,   318,   319,
+     320,   321,     3,    27,    71,   228,     3,     5,    67,    68,
+     103,   111,   206,   217,   221,   224,   233,   309,   313,   356,
+     204,   206,   216,   226,   230,   232,   271,   309,   313,    32,
+     222,   222,   217,   224,   127,   222,   217,   222,   217,    68,
+     101,   106,   261,   106,   261,   222,   217,   108,   127,   127,
+       0,   126,   101,   164,   298,   298,   126,   103,   214,   216,
+     354,   259,   259,   216,   123,   101,   111,   295,   305,   309,
+     103,   111,   356,   292,   219,   300,   101,   276,   101,   101,
+     101,    36,    38,    59,    65,    69,    72,    73,    74,    75,
+      79,    80,    87,   101,   103,   110,   111,   112,   113,   114,
+     115,   128,   132,   133,   134,   135,   140,   141,   142,   143,
+     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
+     155,   157,   214,   263,   278,   352,   357,   216,   102,   102,
+     102,   102,   102,   102,   102,   103,   111,   127,   155,   206,
+     207,   213,   216,   220,   221,   226,   229,   230,   232,   249,
+     250,   254,   255,   256,   257,   271,   336,   348,   349,   350,
+     351,   356,   357,   126,   101,   309,   313,   356,   101,   108,
+     124,   103,   106,   111,   155,   265,   107,   126,   108,   124,
+     101,   108,   124,   108,   124,   108,   124,   298,   124,   305,
+     306,   307,   308,   318,   319,   320,   321,   216,   304,   317,
+      57,   297,   103,   298,   335,   336,   298,   298,   164,   126,
+     101,   298,   335,   298,   298,   216,   295,   101,   101,   215,
+     214,   216,   101,   126,   214,   352,   357,   164,   126,   259,
+     264,   206,   221,   309,   313,   164,   126,   280,   216,   226,
+     124,   216,   216,   101,   126,    38,   103,   214,   236,   237,
+     238,   239,   352,   356,   106,   245,   261,   106,   216,   280,
+     124,   124,   291,   126,   131,   258,     3,   127,   196,   197,
+     211,   213,   216,   126,   297,   101,   297,   155,   305,   216,
+     101,   126,   259,   106,    32,    33,    34,   214,   272,   273,
+     275,   126,   121,   123,   277,   126,   217,   223,   224,   259,
+     301,   302,   303,   140,   153,   154,   101,   140,   142,   101,
+     140,   101,   101,   140,   140,   131,   103,   155,   160,   164,
+     214,   262,   352,   126,   142,   142,    75,    78,    79,    80,
+     101,   103,   105,    90,    91,    92,    93,    94,    95,    96,
+      97,    98,    99,   123,   159,   142,   111,   116,   117,   113,
+     114,    81,    82,    83,    84,   118,   119,    85,    86,   112,
+     120,   121,    87,    88,   122,   123,   359,   101,   111,   331,
+     332,   333,   334,   335,   102,   108,   101,   335,   103,   336,
+     101,   335,   336,   126,   103,   111,   127,   214,   216,   347,
+     348,   356,   357,   104,   127,    67,   101,   103,   111,   305,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,   336,
+     337,   338,   339,   340,   341,   342,   111,   356,   216,   127,
+     127,   111,   214,   216,   349,   259,   214,   336,   349,   259,
+     127,   126,   126,   126,   126,    65,   103,   105,   261,   265,
+     266,   267,   268,   269,   126,   126,   126,   126,   126,   126,
+     295,   102,   102,   102,   102,   102,   102,   102,   304,   317,
+     101,   264,   126,   196,   126,   295,   160,   263,   160,   263,
+     295,   278,   103,   127,   196,   297,   164,   126,   196,   278,
+     214,   272,   278,   238,   239,   126,   101,   109,   111,   240,
+     242,   304,   305,   317,   335,   343,   344,   345,   346,   107,
+     237,   108,   124,   108,   124,   261,   236,   108,   358,   123,
+     246,   245,   216,   251,   252,   253,   256,   257,   102,   108,
+     164,   126,   111,   155,   126,   213,   216,   250,   348,   356,
+     289,   290,   101,   111,   322,   102,   108,   359,   261,   272,
+     101,   106,   261,   263,   272,   102,   108,   101,   102,   109,
+     262,   262,   103,   131,   137,   155,   263,   262,   126,   102,
+     108,   102,   101,   111,   343,   102,   108,   127,   155,   103,
+     131,   103,   136,   137,   126,   103,   131,   155,   155,   142,
+     142,   142,   143,   143,   144,   144,   145,   145,   145,   145,
+     146,   146,   147,   148,   149,   150,   151,   109,   160,   155,
+     126,   332,   333,   334,   216,   331,   298,   298,   155,   263,
+     126,   126,   258,   127,   216,   220,   126,   104,   356,    67,
+     129,   214,   336,   354,   104,   101,   126,   305,   323,   324,
+     325,   328,   338,   339,   340,   126,   216,   322,   326,   337,
+     101,   298,   341,   359,   298,   298,   359,   101,   298,   341,
+     298,   298,   298,   298,   336,   214,   347,   357,   259,   104,
+     108,   104,   108,   359,   214,   349,   359,   104,   247,   248,
+     249,   250,   247,   259,   127,   155,   126,   103,   261,   109,
+     108,   358,   265,   103,   109,   269,    28,   198,   199,   259,
+     247,   131,   295,   131,   297,   101,   335,   336,   101,   335,
+     336,   133,   111,   127,   164,   251,   102,   102,   102,   102,
+     102,   126,   104,   164,   196,   164,   102,   101,   111,   127,
+     127,   124,   124,   103,   127,   305,   344,   345,   346,   154,
+     216,   343,   241,   242,   241,   298,   298,   261,   298,   107,
+     261,   107,   154,   358,   127,   127,   131,   211,   127,   127,
+     247,   101,   111,   356,   127,   107,   216,   273,   274,   127,
+     126,   126,   101,   127,   102,   302,   160,   161,   124,    75,
+     190,   191,   192,   102,   102,   126,   109,   102,   102,   102,
+     127,   155,   216,   106,   142,   157,   155,   156,   158,   104,
+     108,   127,   126,   126,   102,   108,   155,   126,   153,   109,
+     251,   102,   102,   102,   331,   251,   102,   104,   103,   111,
+     155,   155,   216,   127,   101,   101,   214,   354,   328,   251,
+     102,   102,   102,   102,   102,   102,   102,     7,   127,   216,
+     322,   326,   337,   126,   126,   359,   126,   126,   101,   127,
+     127,   127,   127,   264,   104,   127,   153,   154,   155,   296,
+     126,   265,   267,   107,   126,   200,   261,    38,    39,    41,
+      44,    45,    46,    47,    48,    49,    50,    51,    53,    56,
+     103,   131,   161,   162,   163,   164,   165,   166,   168,   169,
+     181,   183,   184,   189,   201,   294,    28,   127,   123,   264,
+     126,   126,   102,   104,   127,   127,    67,   164,   216,   102,
+     102,   126,   104,   102,   102,   102,   343,   240,   246,   107,
+     102,   108,   104,   104,   127,   216,   108,   359,   276,   102,
+     272,   204,   206,   214,   284,   285,   286,   287,   278,   102,
+     102,   101,   102,   109,   108,   155,   155,   104,   266,   108,
+     127,   158,   104,   131,   138,   139,   155,   137,   127,   138,
+     153,   157,   127,   101,   335,   336,   127,   214,   336,   349,
+     126,   127,   127,   127,   155,   104,   126,   126,   102,   127,
+     101,   335,   336,   101,   341,   101,   341,   336,   215,   104,
+       7,   111,   127,   155,   251,   251,   250,   254,   254,   255,
+     247,   102,   108,   108,   102,   104,    89,   115,   127,   127,
+     138,   265,   155,   108,   124,   201,   205,   216,   220,   101,
+     101,   162,   101,   101,   124,   131,   124,   131,   111,   131,
+     161,   101,   164,   124,   155,   126,   109,   124,   127,   126,
+     127,   200,   102,   155,   251,   251,   298,   336,   102,   104,
+     101,   106,   261,   261,   127,   101,   335,   336,   126,   102,
+     126,   127,   295,   107,   126,   127,   127,   102,   106,   154,
+     124,   190,   192,   108,   127,   358,   156,   104,   127,    78,
+     105,   108,   127,   127,   104,   127,   102,   126,   102,   214,
+     349,   104,   104,   104,   127,   247,   247,   102,   126,   126,
+     126,   155,   155,   127,   104,   127,   127,   127,   127,   102,
+     126,   126,   154,   154,   104,   104,   127,   127,   261,   216,
+     160,   160,    45,   160,   126,   124,   124,   160,   124,   124,
+     160,    54,    55,   185,   186,   187,   124,   127,   298,   166,
+     107,   124,   127,   127,   278,   236,   106,   104,   126,    89,
+     256,   257,   102,   285,   108,   124,   108,   124,   107,   283,
+     102,   102,   109,   158,   104,   107,   104,   103,   139,   103,
+     139,   139,   104,   104,   104,   251,   104,   127,   127,   251,
+     251,   251,   127,   127,   104,   104,   102,   102,   104,   108,
+      89,   250,    89,   127,   104,   104,   102,   102,   101,   102,
+     161,   182,   201,   124,   102,   101,   164,   187,    54,   104,
+     162,   102,   102,   102,   107,   236,   251,   106,   126,   126,
+     284,   124,    75,   193,   127,   109,   126,   126,   127,   102,
+     102,   127,   127,   127,   104,   104,   126,   127,   104,   162,
+      42,    43,   106,   172,   173,   174,   160,   162,   127,   102,
+     161,   106,   174,    89,   126,   101,   106,   261,   107,   127,
+     126,   259,   295,   107,   102,   108,   104,   155,   138,   138,
+     102,   102,   102,   102,   254,    40,   154,   170,   171,   296,
+     109,   126,   162,   172,   102,   124,   162,   124,   126,   102,
+     126,    89,   126,   236,   106,   102,   284,   124,    75,   109,
+     127,   127,   162,    89,   108,   109,   127,   194,   195,   201,
+     124,   161,   161,   194,   164,   188,   214,   352,   102,   126,
+     107,   236,   107,   155,   104,   104,   154,   170,   173,   175,
+     176,   126,   124,   173,   177,   178,   127,   101,   111,   295,
+     343,   131,   164,   188,   107,   101,   162,   167,   107,   173,
+     201,   161,    52,   167,   180,   107,   173,   102,   216,   127,
+     278,   162,   167,   124,   179,   180,   167,   180,   164,   102,
+     102,   179,   127,   164,   127
+};
+
+#define yyerrok		(yyerrstatus = 0)
+#define yyclearin	(yychar = YYEMPTY)
+#define YYEMPTY		(-2)
+#define YYEOF		0
+
+#define YYACCEPT	goto yyacceptlab
+#define YYABORT		goto yyabortlab
+#define YYERROR		goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  However,
+   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
+   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+   discussed.  */
+
+#define YYFAIL		goto yyerrlab
+#if defined YYFAIL
+  /* This is here to suppress warnings from the GCC cpp's
+     -Wunused-macros.  Normally we don't worry about that warning, but
+     some users do, and we want to make it easy for users to remove
+     YYFAIL uses, which will produce warnings from Bison 2.5.  */
+#endif
+
+#define YYRECOVERING()  (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value)					\
+do								\
+  if (yychar == YYEMPTY && yylen == 1)				\
+    {								\
+      yychar = (Token);						\
+      yylval = (Value);						\
+      YYPOPSTACK (1);						\
+      goto yybackup;						\
+    }								\
+  else								\
+    {								\
+      yyerror (YY_("syntax error: cannot back up")); \
+      YYERROR;							\
+    }								\
+while (YYID (0))
+
+
+#define YYTERROR	1
+#define YYERRCODE	256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
+    do									\
+      if (YYID (N))                                                    \
+	{								\
+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
+	}								\
+      else								\
+	{								\
+	  (Current).first_line   = (Current).last_line   =		\
+	    YYRHSLOC (Rhs, 0).last_line;				\
+	  (Current).first_column = (Current).last_column =		\
+	    YYRHSLOC (Rhs, 0).last_column;				\
+	}								\
+    while (YYID (0))
+#endif
+
+
+/* This macro is provided for backward compatibility. */
+
+#ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args)			\
+do {						\
+  if (yydebug)					\
+    YYFPRINTF Args;				\
+} while (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
+do {									  \
+  if (yydebug)								  \
+    {									  \
+      YYFPRINTF (stderr, "%s ", Title);					  \
+      yy_symbol_print (stderr,						  \
+		  Type, Value); \
+      YYFPRINTF (stderr, "\n");						  \
+    }									  \
+} while (YYID (0))
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE const * const yyvaluep;
+#endif
+{
+  if (!yyvaluep)
+    return;
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+  YYUSE (yyoutput);
+# endif
+  switch (yytype)
+    {
+      default:
+	break;
+    }
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE const * const yyvaluep;
+#endif
+{
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
+  YYFPRINTF (yyoutput, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included).                                                   |
+`------------------------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+#else
+static void
+yy_stack_print (yybottom, yytop)
+    yytype_int16 *yybottom;
+    yytype_int16 *yytop;
+#endif
+{
+  YYFPRINTF (stderr, "Stack now");
+  for (; yybottom <= yytop; yybottom++)
+    {
+      int yybot = *yybottom;
+      YYFPRINTF (stderr, " %d", yybot);
+    }
+  YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top)				\
+do {								\
+  if (yydebug)							\
+    yy_stack_print ((Bottom), (Top));				\
+} while (YYID (0))
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule)
+    YYSTYPE *yyvsp;
+    int yyrule;
+#endif
+{
+  int yynrhs = yyr2[yyrule];
+  int yyi;
+  unsigned long int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+	     yyrule - 1, yylno);
+  /* The symbols being reduced.  */
+  for (yyi = 0; yyi < yynrhs; yyi++)
+    {
+      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
+      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+		       &(yyvsp[(yyi + 1) - (yynrhs)])
+		       		       );
+      YYFPRINTF (stderr, "\n");
+    }
+}
+
+# define YY_REDUCE_PRINT(Rule)		\
+do {					\
+  if (yydebug)				\
+    yy_reduce_print (yyvsp, Rule); \
+} while (YYID (0))
+
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
+#ifndef	YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
+
+   Do not make this value too large; the results are undefined if
+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+#  if defined __GLIBC__ && defined _STRING_H
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static YYSIZE_T
+yystrlen (const char *yystr)
+#else
+static YYSIZE_T
+yystrlen (yystr)
+    const char *yystr;
+#endif
+{
+  YYSIZE_T yylen;
+  for (yylen = 0; yystr[yylen]; yylen++)
+    continue;
+  return yylen;
+}
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+yystpcpy (yydest, yysrc)
+    char *yydest;
+    const char *yysrc;
+#endif
+{
+  char *yyd = yydest;
+  const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
+}
+#  endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+   quotes and backslashes, so that it's suitable for yyerror.  The
+   heuristic is that double-quoting is unnecessary unless the string
+   contains an apostrophe, a comma, or backslash (other than
+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
+   null, do not copy; instead, return the length of what the result
+   would have been.  */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+  if (*yystr == '"')
+    {
+      YYSIZE_T yyn = 0;
+      char const *yyp = yystr;
+
+      for (;;)
+	switch (*++yyp)
+	  {
+	  case '\'':
+	  case ',':
+	    goto do_not_strip_quotes;
+
+	  case '\\':
+	    if (*++yyp != '\\')
+	      goto do_not_strip_quotes;
+	    /* Fall through.  */
+	  default:
+	    if (yyres)
+	      yyres[yyn] = *yyp;
+	    yyn++;
+	    break;
+
+	  case '"':
+	    if (yyres)
+	      yyres[yyn] = '\0';
+	    return yyn;
+	  }
+    do_not_strip_quotes: ;
+    }
+
+  if (! yyres)
+    return yystrlen (yystr);
+
+  return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+   about the unexpected token YYTOKEN for the state stack whose top is
+   YYSSP.
+
+   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
+   not large enough to hold the message.  In that case, also set
+   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
+   required number of bytes is too large to store.  */
+static int
+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+                yytype_int16 *yyssp, int yytoken)
+{
+  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
+  YYSIZE_T yysize = yysize0;
+  YYSIZE_T yysize1;
+  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+  /* Internationalized format string. */
+  const char *yyformat = 0;
+  /* Arguments of yyformat. */
+  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+  /* Number of reported tokens (one for the "unexpected", one per
+     "expected"). */
+  int yycount = 0;
+
+  /* There are many possibilities here to consider:
+     - Assume YYFAIL is not used.  It's too flawed to consider.  See
+       <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
+       for details.  YYERROR is fine as it does not invoke this
+       function.
+     - If this state is a consistent state with a default action, then
+       the only way this function was invoked is if the default action
+       is an error action.  In that case, don't check for expected
+       tokens because there are none.
+     - The only way there can be no lookahead present (in yychar) is if
+       this state is a consistent state with a default action.  Thus,
+       detecting the absence of a lookahead is sufficient to determine
+       that there is no unexpected or expected token to report.  In that
+       case, just report a simple "syntax error".
+     - Don't assume there isn't a lookahead just because this state is a
+       consistent state with a default action.  There might have been a
+       previous inconsistent state, consistent state with a non-default
+       action, or user semantic action that manipulated yychar.
+     - Of course, the expected token list depends on states to have
+       correct lookahead information, and it depends on the parser not
+       to perform extra reductions after fetching a lookahead from the
+       scanner and before detecting a syntax error.  Thus, state merging
+       (from LALR or IELR) and default reductions corrupt the expected
+       token list.  However, the list is correct for canonical LR with
+       one exception: it will still contain any token that will not be
+       accepted due to an error action in a later state.
+  */
+  if (yytoken != YYEMPTY)
+    {
+      int yyn = yypact[*yyssp];
+      yyarg[yycount++] = yytname[yytoken];
+      if (!yypact_value_is_default (yyn))
+        {
+          /* Start YYX at -YYN if negative to avoid negative indexes in
+             YYCHECK.  In other words, skip the first -YYN actions for
+             this state because they are default actions.  */
+          int yyxbegin = yyn < 0 ? -yyn : 0;
+          /* Stay within bounds of both yycheck and yytname.  */
+          int yychecklim = YYLAST - yyn + 1;
+          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+          int yyx;
+
+          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
+                && !yytable_value_is_error (yytable[yyx + yyn]))
+              {
+                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+                  {
+                    yycount = 1;
+                    yysize = yysize0;
+                    break;
+                  }
+                yyarg[yycount++] = yytname[yyx];
+                yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+                if (! (yysize <= yysize1
+                       && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+                  return 2;
+                yysize = yysize1;
+              }
+        }
+    }
+
+  switch (yycount)
+    {
+# define YYCASE_(N, S)                      \
+      case N:                               \
+        yyformat = S;                       \
+      break
+      YYCASE_(0, YY_("syntax error"));
+      YYCASE_(1, YY_("syntax error, unexpected %s"));
+      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+# undef YYCASE_
+    }
+
+  yysize1 = yysize + yystrlen (yyformat);
+  if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+    return 2;
+  yysize = yysize1;
+
+  if (*yymsg_alloc < yysize)
+    {
+      *yymsg_alloc = 2 * yysize;
+      if (! (yysize <= *yymsg_alloc
+             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+      return 1;
+    }
+
+  /* Avoid sprintf, as that infringes on the user's name space.
+     Don't have undefined behavior even if the translation
+     produced a string with the wrong number of "%s"s.  */
+  {
+    char *yyp = *yymsg;
+    int yyi = 0;
+    while ((*yyp = *yyformat) != '\0')
+      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
+        {
+          yyp += yytnamerr (yyp, yyarg[yyi++]);
+          yyformat += 2;
+        }
+      else
+        {
+          yyp++;
+          yyformat++;
+        }
+  }
+  return 0;
+}
+#endif /* YYERROR_VERBOSE */
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  YYUSE (yyvaluep);
+
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+  switch (yytype)
+    {
+
+      default:
+	break;
+    }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes.  */
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+/* The lookahead symbol.  */
+int yychar;
+
+/* The semantic value of the lookahead symbol.  */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far.  */
+int yynerrs;
+
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+    void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+
+#endif
+#endif
+{
+    int yystate;
+    /* Number of tokens to shift before error messages enabled.  */
+    int yyerrstatus;
+
+    /* The stacks and their tools:
+       `yyss': related to states.
+       `yyvs': related to semantic values.
+
+       Refer to the stacks thru separate pointers, to allow yyoverflow
+       to reallocate them elsewhere.  */
+
+    /* The state stack.  */
+    yytype_int16 yyssa[YYINITDEPTH];
+    yytype_int16 *yyss;
+    yytype_int16 *yyssp;
+
+    /* The semantic value stack.  */
+    YYSTYPE yyvsa[YYINITDEPTH];
+    YYSTYPE *yyvs;
+    YYSTYPE *yyvsp;
+
+    YYSIZE_T yystacksize;
+
+  int yyn;
+  int yyresult;
+  /* Lookahead token as an internal (translated) token number.  */
+  int yytoken;
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
+#if YYERROR_VERBOSE
+  /* Buffer for error messages, and its allocated size.  */
+  char yymsgbuf[128];
+  char *yymsg = yymsgbuf;
+  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
+
+  /* The number of symbols on the RHS of the reduced rule.
+     Keep to zero when no symbol should be popped.  */
+  int yylen = 0;
+
+  yytoken = 0;
+  yyss = yyssa;
+  yyvs = yyvsa;
+  yystacksize = YYINITDEPTH;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY; /* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+  yyssp = yyss;
+  yyvsp = yyvs;
+
+  goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed.  So pushing a state here evens the stacks.  */
+  yyssp++;
+
+ yysetstate:
+  *yyssp = yystate;
+
+  if (yyss + yystacksize - 1 <= yyssp)
+    {
+      /* Get the current used size of the three stacks, in elements.  */
+      YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      {
+	/* Give user a chance to reallocate the stack.  Use copies of
+	   these so that the &'s don't force the real ones into
+	   memory.  */
+	YYSTYPE *yyvs1 = yyvs;
+	yytype_int16 *yyss1 = yyss;
+
+	/* Each stack pointer address is followed by the size of the
+	   data in use in that stack, in bytes.  This used to be a
+	   conditional around just the two extra args, but that might
+	   be undefined if yyoverflow is a macro.  */
+	yyoverflow (YY_("memory exhausted"),
+		    &yyss1, yysize * sizeof (*yyssp),
+		    &yyvs1, yysize * sizeof (*yyvsp),
+		    &yystacksize);
+
+	yyss = yyss1;
+	yyvs = yyvs1;
+      }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyexhaustedlab;
+# else
+      /* Extend the stack our own way.  */
+      if (YYMAXDEPTH <= yystacksize)
+	goto yyexhaustedlab;
+      yystacksize *= 2;
+      if (YYMAXDEPTH < yystacksize)
+	yystacksize = YYMAXDEPTH;
+
+      {
+	yytype_int16 *yyss1 = yyss;
+	union yyalloc *yyptr =
+	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+	if (! yyptr)
+	  goto yyexhaustedlab;
+	YYSTACK_RELOCATE (yyss_alloc, yyss);
+	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+#  undef YYSTACK_RELOCATE
+	if (yyss1 != yyssa)
+	  YYSTACK_FREE (yyss1);
+      }
+# endif
+#endif /* no yyoverflow */
+
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
+
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+		  (unsigned long int) yystacksize));
+
+      if (yyss + yystacksize - 1 <= yyssp)
+	YYABORT;
+    }
+
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+  if (yystate == YYFINAL)
+    YYACCEPT;
+
+  goto yybackup;
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
+
+  /* Do appropriate processing given the current state.  Read a
+     lookahead token if we need one and don't already have one.  */
+
+  /* First try to decide what to do without reference to lookahead token.  */
+  yyn = yypact[yystate];
+  if (yypact_value_is_default (yyn))
+    goto yydefault;
+
+  /* Not known => get a lookahead token if don't already have one.  */
+
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
+  if (yychar == YYEMPTY)
+    {
+      YYDPRINTF ((stderr, "Reading a token: "));
+      yychar = YYLEX;
+    }
+
+  if (yychar <= YYEOF)
+    {
+      yychar = yytoken = YYEOF;
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
+    }
+  else
+    {
+      yytoken = YYTRANSLATE (yychar);
+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+    }
+
+  /* If the proper action on seeing token YYTOKEN is to reduce or to
+     detect an error, take that action.  */
+  yyn += yytoken;
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+    goto yydefault;
+  yyn = yytable[yyn];
+  if (yyn <= 0)
+    {
+      if (yytable_value_is_error (yyn))
+        goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
+
+  /* Shift the lookahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
+
+  yystate = yyn;
+  *++yyvsp = yylval;
+
+  goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+  goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
+yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
+  yylen = yyr2[yyn];
+
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to garbage.
+     This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+
+  YY_REDUCE_PRINT (yyn);
+  switch (yyn)
+    {
+        case 2:
+
+/* Line 1806 of yacc.c  */
+#line 279 "parser.yy"
+    {
+			typedefTable.enterScope();
+		}
+    break;
+
+  case 3:
+
+/* Line 1806 of yacc.c  */
+#line 285 "parser.yy"
+    {
+			typedefTable.leaveScope();
+		}
+    break;
+
+  case 4:
+
+/* Line 1806 of yacc.c  */
+#line 294 "parser.yy"
+    { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); }
+    break;
+
+  case 5:
+
+/* Line 1806 of yacc.c  */
+#line 295 "parser.yy"
+    { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); }
+    break;
+
+  case 6:
+
+/* Line 1806 of yacc.c  */
+#line 296 "parser.yy"
+    { (yyval.constant) = new ConstantNode( ConstantNode::Character, (yyvsp[(1) - (1)].tok) ); }
+    break;
+
+  case 15:
+
+/* Line 1806 of yacc.c  */
+#line 320 "parser.yy"
+    { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); }
+    break;
+
+  case 16:
+
+/* Line 1806 of yacc.c  */
+#line 321 "parser.yy"
+    { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); }
+    break;
+
+  case 17:
+
+/* Line 1806 of yacc.c  */
+#line 328 "parser.yy"
+    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
+    break;
+
+  case 18:
+
+/* Line 1806 of yacc.c  */
+#line 330 "parser.yy"
+    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
+    break;
+
+  case 19:
+
+/* Line 1806 of yacc.c  */
+#line 332 "parser.yy"
+    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
+    break;
+
+  case 20:
+
+/* Line 1806 of yacc.c  */
+#line 334 "parser.yy"
+    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
+    break;
+
+  case 21:
+
+/* Line 1806 of yacc.c  */
+#line 336 "parser.yy"
+    { (yyval.en) = (yyvsp[(2) - (3)].en); }
+    break;
+
+  case 22:
+
+/* Line 1806 of yacc.c  */
+#line 338 "parser.yy"
+    { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); }
+    break;
+
+  case 24:
+
+/* Line 1806 of yacc.c  */
+#line 348 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); }
+    break;
+
+  case 25:
+
+/* Line 1806 of yacc.c  */
+#line 350 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); }
+    break;
+
+  case 26:
+
+/* Line 1806 of yacc.c  */
+#line 352 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
+    break;
+
+  case 28:
+
+/* Line 1806 of yacc.c  */
+#line 355 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
+    break;
+
+  case 30:
+
+/* Line 1806 of yacc.c  */
+#line 358 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); }
+    break;
+
+  case 31:
+
+/* Line 1806 of yacc.c  */
+#line 360 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); }
+    break;
+
+  case 32:
+
+/* Line 1806 of yacc.c  */
+#line 363 "parser.yy"
+    { (yyval.en) = 0; }
+    break;
+
+  case 34:
+
+/* Line 1806 of yacc.c  */
+#line 369 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
+    break;
+
+  case 35:
+
+/* Line 1806 of yacc.c  */
+#line 374 "parser.yy"
+    { (yyval.en) = 0; }
+    break;
+
+  case 37:
+
+/* Line 1806 of yacc.c  */
+#line 377 "parser.yy"
+    { (yyval.en) = (yyvsp[(3) - (3)].en)->set_asArgName( (yyvsp[(1) - (3)].tok) ); }
+    break;
+
+  case 38:
+
+/* Line 1806 of yacc.c  */
+#line 382 "parser.yy"
+    { (yyval.en) = (yyvsp[(7) - (7)].en)->set_asArgName( (yyvsp[(3) - (7)].en) ); }
+    break;
+
+  case 39:
+
+/* Line 1806 of yacc.c  */
+#line 384 "parser.yy"
+    { (yyval.en) = (yyvsp[(9) - (9)].en)->set_asArgName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); }
+    break;
+
+  case 41:
+
+/* Line 1806 of yacc.c  */
+#line 389 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 42:
+
+/* Line 1806 of yacc.c  */
+#line 394 "parser.yy"
+    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
+    break;
+
+  case 43:
+
+/* Line 1806 of yacc.c  */
+#line 396 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 44:
+
+/* Line 1806 of yacc.c  */
+#line 398 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
+    break;
+
+  case 45:
+
+/* Line 1806 of yacc.c  */
+#line 400 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 46:
+
+/* Line 1806 of yacc.c  */
+#line 402 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
+    break;
+
+  case 48:
+
+/* Line 1806 of yacc.c  */
+#line 408 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); }
+    break;
+
+  case 49:
+
+/* Line 1806 of yacc.c  */
+#line 410 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); }
+    break;
+
+  case 50:
+
+/* Line 1806 of yacc.c  */
+#line 412 "parser.yy"
+    { (yyval.en) = (yyvsp[(2) - (2)].en); }
+    break;
+
+  case 51:
+
+/* Line 1806 of yacc.c  */
+#line 414 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
+    break;
+
+  case 52:
+
+/* Line 1806 of yacc.c  */
+#line 416 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); }
+    break;
+
+  case 53:
+
+/* Line 1806 of yacc.c  */
+#line 418 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); }
+    break;
+
+  case 54:
+
+/* Line 1806 of yacc.c  */
+#line 424 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); }
+    break;
+
+  case 55:
+
+/* Line 1806 of yacc.c  */
+#line 426 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
+    break;
+
+  case 56:
+
+/* Line 1806 of yacc.c  */
+#line 428 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); }
+    break;
+
+  case 57:
+
+/* Line 1806 of yacc.c  */
+#line 430 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
+    break;
+
+  case 58:
+
+/* Line 1806 of yacc.c  */
+#line 432 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); }
+    break;
+
+  case 59:
+
+/* Line 1806 of yacc.c  */
+#line 434 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); }
+    break;
+
+  case 60:
+
+/* Line 1806 of yacc.c  */
+#line 436 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
+    break;
+
+  case 61:
+
+/* Line 1806 of yacc.c  */
+#line 438 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true )); }
+    break;
+
+  case 62:
+
+/* Line 1806 of yacc.c  */
+#line 442 "parser.yy"
+    { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); }
+    break;
+
+  case 63:
+
+/* Line 1806 of yacc.c  */
+#line 443 "parser.yy"
+    { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); }
+    break;
+
+  case 64:
+
+/* Line 1806 of yacc.c  */
+#line 444 "parser.yy"
+    { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }
+    break;
+
+  case 65:
+
+/* Line 1806 of yacc.c  */
+#line 445 "parser.yy"
+    { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); }
+    break;
+
+  case 67:
+
+/* Line 1806 of yacc.c  */
+#line 451 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
+    break;
+
+  case 68:
+
+/* Line 1806 of yacc.c  */
+#line 453 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
+    break;
+
+  case 70:
+
+/* Line 1806 of yacc.c  */
+#line 459 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 71:
+
+/* Line 1806 of yacc.c  */
+#line 461 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 72:
+
+/* Line 1806 of yacc.c  */
+#line 463 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 74:
+
+/* Line 1806 of yacc.c  */
+#line 469 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 75:
+
+/* Line 1806 of yacc.c  */
+#line 471 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 77:
+
+/* Line 1806 of yacc.c  */
+#line 477 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 78:
+
+/* Line 1806 of yacc.c  */
+#line 479 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 80:
+
+/* Line 1806 of yacc.c  */
+#line 485 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 81:
+
+/* Line 1806 of yacc.c  */
+#line 487 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 82:
+
+/* Line 1806 of yacc.c  */
+#line 489 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 83:
+
+/* Line 1806 of yacc.c  */
+#line 491 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 85:
+
+/* Line 1806 of yacc.c  */
+#line 497 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 86:
+
+/* Line 1806 of yacc.c  */
+#line 499 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 88:
+
+/* Line 1806 of yacc.c  */
+#line 505 "parser.yy"
+    { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 90:
+
+/* Line 1806 of yacc.c  */
+#line 511 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 92:
+
+/* Line 1806 of yacc.c  */
+#line 517 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 94:
+
+/* Line 1806 of yacc.c  */
+#line 523 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 96:
+
+/* Line 1806 of yacc.c  */
+#line 529 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 98:
+
+/* Line 1806 of yacc.c  */
+#line 535 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
+    break;
+
+  case 99:
+
+/* Line 1806 of yacc.c  */
+#line 537 "parser.yy"
+    { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); }
+    break;
+
+  case 100:
+
+/* Line 1806 of yacc.c  */
+#line 539 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
+    break;
+
+  case 103:
+
+/* Line 1806 of yacc.c  */
+#line 550 "parser.yy"
+    { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 104:
+
+/* Line 1806 of yacc.c  */
+#line 552 "parser.yy"
+    { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 105:
+
+/* Line 1806 of yacc.c  */
+#line 554 "parser.yy"
+    { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
+    break;
+
+  case 106:
+
+/* Line 1806 of yacc.c  */
+#line 559 "parser.yy"
+    { (yyval.en) = new NullExprNode; }
+    break;
+
+  case 108:
+
+/* Line 1806 of yacc.c  */
+#line 567 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
+    break;
+
+  case 109:
+
+/* Line 1806 of yacc.c  */
+#line 569 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); }
+    break;
+
+  case 110:
+
+/* Line 1806 of yacc.c  */
+#line 571 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); }
+    break;
+
+  case 111:
+
+/* Line 1806 of yacc.c  */
+#line 573 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); }
+    break;
+
+  case 113:
+
+/* Line 1806 of yacc.c  */
+#line 579 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 114:
+
+/* Line 1806 of yacc.c  */
+#line 583 "parser.yy"
+    { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); }
+    break;
+
+  case 115:
+
+/* Line 1806 of yacc.c  */
+#line 584 "parser.yy"
+    { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); }
+    break;
+
+  case 116:
+
+/* Line 1806 of yacc.c  */
+#line 585 "parser.yy"
+    { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); }
+    break;
+
+  case 117:
+
+/* Line 1806 of yacc.c  */
+#line 586 "parser.yy"
+    { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); }
+    break;
+
+  case 118:
+
+/* Line 1806 of yacc.c  */
+#line 587 "parser.yy"
+    { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); }
+    break;
+
+  case 119:
+
+/* Line 1806 of yacc.c  */
+#line 588 "parser.yy"
+    { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); }
+    break;
+
+  case 120:
+
+/* Line 1806 of yacc.c  */
+#line 589 "parser.yy"
+    { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); }
+    break;
+
+  case 121:
+
+/* Line 1806 of yacc.c  */
+#line 590 "parser.yy"
+    { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); }
+    break;
+
+  case 122:
+
+/* Line 1806 of yacc.c  */
+#line 591 "parser.yy"
+    { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }
+    break;
+
+  case 123:
+
+/* Line 1806 of yacc.c  */
+#line 592 "parser.yy"
+    { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); }
+    break;
+
+  case 125:
+
+/* Line 1806 of yacc.c  */
+#line 598 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 126:
+
+/* Line 1806 of yacc.c  */
+#line 603 "parser.yy"
+    { (yyval.en) = 0; }
+    break;
+
+  case 130:
+
+/* Line 1806 of yacc.c  */
+#line 612 "parser.yy"
+    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
+    break;
+
+  case 136:
+
+/* Line 1806 of yacc.c  */
+#line 622 "parser.yy"
+    { (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );}
+    break;
+
+  case 137:
+
+/* Line 1806 of yacc.c  */
+#line 627 "parser.yy"
+    { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
+    break;
+
+  case 138:
+
+/* Line 1806 of yacc.c  */
+#line 634 "parser.yy"
+    { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
+    break;
+
+  case 140:
+
+/* Line 1806 of yacc.c  */
+#line 640 "parser.yy"
+    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
+    break;
+
+  case 141:
+
+/* Line 1806 of yacc.c  */
+#line 645 "parser.yy"
+    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
+    break;
+
+  case 142:
+
+/* Line 1806 of yacc.c  */
+#line 647 "parser.yy"
+    { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 143:
+
+/* Line 1806 of yacc.c  */
+#line 649 "parser.yy"
+    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
+    break;
+
+  case 146:
+
+/* Line 1806 of yacc.c  */
+#line 656 "parser.yy"
+    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
+    break;
+
+  case 147:
+
+/* Line 1806 of yacc.c  */
+#line 661 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
+    break;
+
+  case 148:
+
+/* Line 1806 of yacc.c  */
+#line 667 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
+    break;
+
+  case 149:
+
+/* Line 1806 of yacc.c  */
+#line 669 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); }
+    break;
+
+  case 150:
+
+/* Line 1806 of yacc.c  */
+#line 671 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
+    break;
+
+  case 151:
+
+/* Line 1806 of yacc.c  */
+#line 673 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ }
+    break;
+
+  case 152:
+
+/* Line 1806 of yacc.c  */
+#line 678 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
+    break;
+
+  case 153:
+
+/* Line 1806 of yacc.c  */
+#line 680 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); }
+    break;
+
+  case 154:
+
+/* Line 1806 of yacc.c  */
+#line 687 "parser.yy"
+    { (yyval.en) = (yyvsp[(1) - (1)].en); }
+    break;
+
+  case 155:
+
+/* Line 1806 of yacc.c  */
+#line 689 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 158:
+
+/* Line 1806 of yacc.c  */
+#line 696 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); }
+    break;
+
+  case 159:
+
+/* Line 1806 of yacc.c  */
+#line 700 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); }
+    break;
+
+  case 160:
+
+/* Line 1806 of yacc.c  */
+#line 701 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Default ); }
+    break;
+
+  case 162:
+
+/* Line 1806 of yacc.c  */
+#line 707 "parser.yy"
+    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
+    break;
+
+  case 163:
+
+/* Line 1806 of yacc.c  */
+#line 711 "parser.yy"
+    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
+    break;
+
+  case 164:
+
+/* Line 1806 of yacc.c  */
+#line 716 "parser.yy"
+    { (yyval.sn) = 0; }
+    break;
+
+  case 166:
+
+/* Line 1806 of yacc.c  */
+#line 722 "parser.yy"
+    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
+    break;
+
+  case 167:
+
+/* Line 1806 of yacc.c  */
+#line 724 "parser.yy"
+    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
+    break;
+
+  case 168:
+
+/* Line 1806 of yacc.c  */
+#line 729 "parser.yy"
+    { (yyval.sn) = 0; }
+    break;
+
+  case 170:
+
+/* Line 1806 of yacc.c  */
+#line 735 "parser.yy"
+    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
+    break;
+
+  case 171:
+
+/* Line 1806 of yacc.c  */
+#line 737 "parser.yy"
+    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); }
+    break;
+
+  case 172:
+
+/* Line 1806 of yacc.c  */
+#line 739 "parser.yy"
+    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
+    break;
+
+  case 173:
+
+/* Line 1806 of yacc.c  */
+#line 741 "parser.yy"
+    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(3) - (4)].sn),*(yyvsp[(4) - (4)].sn) ))))); }
+    break;
+
+  case 174:
+
+/* Line 1806 of yacc.c  */
+#line 746 "parser.yy"
+    { (yyval.sn) = 0; }
+    break;
+
+  case 176:
+
+/* Line 1806 of yacc.c  */
+#line 751 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Fallthru, 0, 0 ); }
+    break;
+
+  case 177:
+
+/* Line 1806 of yacc.c  */
+#line 752 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Fallthru, 0, 0 ); }
+    break;
+
+  case 178:
+
+/* Line 1806 of yacc.c  */
+#line 757 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
+    break;
+
+  case 179:
+
+/* Line 1806 of yacc.c  */
+#line 759 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }
+    break;
+
+  case 180:
+
+/* Line 1806 of yacc.c  */
+#line 761 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }
+    break;
+
+  case 181:
+
+/* Line 1806 of yacc.c  */
+#line 766 "parser.yy"
+    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
+    break;
+
+  case 182:
+
+/* Line 1806 of yacc.c  */
+#line 768 "parser.yy"
+    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
+    break;
+
+  case 183:
+
+/* Line 1806 of yacc.c  */
+#line 773 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
+    break;
+
+  case 184:
+
+/* Line 1806 of yacc.c  */
+#line 777 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
+    break;
+
+  case 185:
+
+/* Line 1806 of yacc.c  */
+#line 780 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Continue, 0, 0 ); }
+    break;
+
+  case 186:
+
+/* Line 1806 of yacc.c  */
+#line 784 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
+    break;
+
+  case 187:
+
+/* Line 1806 of yacc.c  */
+#line 787 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Break, 0, 0 ); }
+    break;
+
+  case 188:
+
+/* Line 1806 of yacc.c  */
+#line 791 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
+    break;
+
+  case 189:
+
+/* Line 1806 of yacc.c  */
+#line 793 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
+    break;
+
+  case 190:
+
+/* Line 1806 of yacc.c  */
+#line 795 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
+    break;
+
+  case 191:
+
+/* Line 1806 of yacc.c  */
+#line 797 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Throw, 0, 0 ); }
+    break;
+
+  case 192:
+
+/* Line 1806 of yacc.c  */
+#line 802 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
+    break;
+
+  case 193:
+
+/* Line 1806 of yacc.c  */
+#line 804 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
+    break;
+
+  case 194:
+
+/* Line 1806 of yacc.c  */
+#line 806 "parser.yy"
+    {
+			(yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) );
+			(yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (4)].sn),*(yyvsp[(3) - (4)].pn) ))));
+		}
+    break;
+
+  case 196:
+
+/* Line 1806 of yacc.c  */
+#line 817 "parser.yy"
+    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
+    break;
+
+  case 197:
+
+/* Line 1806 of yacc.c  */
+#line 819 "parser.yy"
+    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
+    break;
+
+  case 198:
+
+/* Line 1806 of yacc.c  */
+#line 824 "parser.yy"
+    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
+    break;
+
+  case 199:
+
+/* Line 1806 of yacc.c  */
+#line 826 "parser.yy"
+    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
+    break;
+
+  case 200:
+
+/* Line 1806 of yacc.c  */
+#line 831 "parser.yy"
+    {
+			(yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) );
+			std::cout << "Just created a finally node" << std::endl;
+		}
+    break;
+
+  case 202:
+
+/* Line 1806 of yacc.c  */
+#line 845 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) );
+		}
+    break;
+
+  case 203:
+
+/* Line 1806 of yacc.c  */
+#line 850 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 204:
+
+/* Line 1806 of yacc.c  */
+#line 852 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) );
+		}
+    break;
+
+  case 206:
+
+/* Line 1806 of yacc.c  */
+#line 861 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
+    break;
+
+  case 207:
+
+/* Line 1806 of yacc.c  */
+#line 863 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
+    break;
+
+  case 208:
+
+/* Line 1806 of yacc.c  */
+#line 865 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
+    break;
+
+  case 209:
+
+/* Line 1806 of yacc.c  */
+#line 867 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
+    break;
+
+  case 214:
+
+/* Line 1806 of yacc.c  */
+#line 881 "parser.yy"
+    {}
+    break;
+
+  case 215:
+
+/* Line 1806 of yacc.c  */
+#line 885 "parser.yy"
+    {}
+    break;
+
+  case 217:
+
+/* Line 1806 of yacc.c  */
+#line 893 "parser.yy"
+    { (yyval.decl) = 0; }
+    break;
+
+  case 220:
+
+/* Line 1806 of yacc.c  */
+#line 900 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
+    break;
+
+  case 221:
+
+/* Line 1806 of yacc.c  */
+#line 905 "parser.yy"
+    { (yyval.decl) = 0; }
+    break;
+
+  case 224:
+
+/* Line 1806 of yacc.c  */
+#line 912 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
+    break;
+
+  case 229:
+
+/* Line 1806 of yacc.c  */
+#line 926 "parser.yy"
+    {}
+    break;
+
+  case 230:
+
+/* Line 1806 of yacc.c  */
+#line 927 "parser.yy"
+    {}
+    break;
+
+  case 238:
+
+/* Line 1806 of yacc.c  */
+#line 956 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (2)].decl);
+		}
+    break;
+
+  case 239:
+
+/* Line 1806 of yacc.c  */
+#line 963 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) );
+		}
+    break;
+
+  case 240:
+
+/* Line 1806 of yacc.c  */
+#line 968 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneType( (yyvsp[(5) - (6)].tok) ) );
+		}
+    break;
+
+  case 241:
+
+/* Line 1806 of yacc.c  */
+#line 978 "parser.yy"
+    {
+			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
+			(yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
+		}
+    break;
+
+  case 242:
+
+/* Line 1806 of yacc.c  */
+#line 983 "parser.yy"
+    {
+			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
+			(yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
+		}
+    break;
+
+  case 243:
+
+/* Line 1806 of yacc.c  */
+#line 988 "parser.yy"
+    {
+			typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
+			(yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addName( (yyvsp[(3) - (4)].tok) );
+		}
+    break;
+
+  case 244:
+
+/* Line 1806 of yacc.c  */
+#line 996 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (1)].decl);
+		}
+    break;
+
+  case 245:
+
+/* Line 1806 of yacc.c  */
+#line 1001 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );
+		}
+    break;
+
+  case 246:
+
+/* Line 1806 of yacc.c  */
+#line 1006 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );
+		}
+    break;
+
+  case 247:
+
+/* Line 1806 of yacc.c  */
+#line 1011 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(2) - (3)].decl) );
+		}
+    break;
+
+  case 248:
+
+/* Line 1806 of yacc.c  */
+#line 1016 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
+		}
+    break;
+
+  case 249:
+
+/* Line 1806 of yacc.c  */
+#line 1024 "parser.yy"
+    {
+			typedefTable.setNextIdentifier( *( (yyvsp[(5) - (10)].tok) ) );
+			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(5) - (10)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(8) - (10)].decl), 0, true );
+		}
+    break;
+
+  case 250:
+
+/* Line 1806 of yacc.c  */
+#line 1029 "parser.yy"
+    {
+			typedefTable.setNextIdentifier( *( (yyvsp[(5) - (10)].tok) ) );
+			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(5) - (10)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(8) - (10)].decl), 0, true );
+		}
+    break;
+
+  case 251:
+
+/* Line 1806 of yacc.c  */
+#line 1042 "parser.yy"
+    {
+			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
+		}
+    break;
+
+  case 252:
+
+/* Line 1806 of yacc.c  */
+#line 1046 "parser.yy"
+    {
+			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
+		}
+    break;
+
+  case 253:
+
+/* Line 1806 of yacc.c  */
+#line 1053 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
+    break;
+
+  case 254:
+
+/* Line 1806 of yacc.c  */
+#line 1057 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
+    break;
+
+  case 255:
+
+/* Line 1806 of yacc.c  */
+#line 1062 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::TD );
+			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
+		}
+    break;
+
+  case 256:
+
+/* Line 1806 of yacc.c  */
+#line 1067 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::TD );
+			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
+		}
+    break;
+
+  case 257:
+
+/* Line 1806 of yacc.c  */
+#line 1072 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
+			(yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
+		}
+    break;
+
+  case 258:
+
+/* Line 1806 of yacc.c  */
+#line 1083 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::TD );
+			(yyval.decl) = (yyvsp[(3) - (3)].decl)->addType( (yyvsp[(2) - (3)].decl) )->addTypedef();
+		}
+    break;
+
+  case 259:
+
+/* Line 1806 of yacc.c  */
+#line 1088 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::TD );
+			(yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneBaseType( (yyvsp[(5) - (5)].decl) )->addTypedef() );
+		}
+    break;
+
+  case 260:
+
+/* Line 1806 of yacc.c  */
+#line 1093 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::TD );
+			(yyval.decl) = (yyvsp[(4) - (4)].decl)->addType( (yyvsp[(3) - (4)].decl) )->addQualifiers( (yyvsp[(1) - (4)].decl) )->addTypedef();
+		}
+    break;
+
+  case 261:
+
+/* Line 1806 of yacc.c  */
+#line 1098 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::TD );
+			(yyval.decl) = (yyvsp[(3) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addTypedef();
+		}
+    break;
+
+  case 262:
+
+/* Line 1806 of yacc.c  */
+#line 1103 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::TD );
+			(yyval.decl) = (yyvsp[(4) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addTypedef()->addType( (yyvsp[(1) - (4)].decl) );
+		}
+    break;
+
+  case 263:
+
+/* Line 1806 of yacc.c  */
+#line 1111 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
+			(yyval.decl) = DeclarationNode::newName( 0 ); // XXX
+		}
+    break;
+
+  case 264:
+
+/* Line 1806 of yacc.c  */
+#line 1116 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
+			(yyval.decl) = DeclarationNode::newName( 0 ); // XXX
+		}
+    break;
+
+  case 269:
+
+/* Line 1806 of yacc.c  */
+#line 1133 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = ( (yyvsp[(2) - (4)].decl)->addType( (yyvsp[(1) - (4)].decl) ))->addInitializer( (yyvsp[(4) - (4)].in) );
+		}
+    break;
+
+  case 270:
+
+/* Line 1806 of yacc.c  */
+#line 1138 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneBaseType( (yyvsp[(4) - (6)].decl)->addInitializer( (yyvsp[(6) - (6)].in) ) ) );
+		}
+    break;
+
+  case 279:
+
+/* Line 1806 of yacc.c  */
+#line 1160 "parser.yy"
+    { (yyval.decl) = 0; }
+    break;
+
+  case 282:
+
+/* Line 1806 of yacc.c  */
+#line 1172 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 284:
+
+/* Line 1806 of yacc.c  */
+#line 1178 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
+    break;
+
+  case 285:
+
+/* Line 1806 of yacc.c  */
+#line 1183 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
+    break;
+
+  case 286:
+
+/* Line 1806 of yacc.c  */
+#line 1185 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
+    break;
+
+  case 287:
+
+/* Line 1806 of yacc.c  */
+#line 1187 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
+    break;
+
+  case 288:
+
+/* Line 1806 of yacc.c  */
+#line 1189 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
+    break;
+
+  case 289:
+
+/* Line 1806 of yacc.c  */
+#line 1191 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
+    break;
+
+  case 290:
+
+/* Line 1806 of yacc.c  */
+#line 1193 "parser.yy"
+    {
+			typedefTable.enterScope();
+		}
+    break;
+
+  case 291:
+
+/* Line 1806 of yacc.c  */
+#line 1197 "parser.yy"
+    {
+			typedefTable.leaveScope();
+			(yyval.decl) = DeclarationNode::newForall( (yyvsp[(4) - (5)].decl) );
+		}
+    break;
+
+  case 293:
+
+/* Line 1806 of yacc.c  */
+#line 1206 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 294:
+
+/* Line 1806 of yacc.c  */
+#line 1208 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
+    break;
+
+  case 296:
+
+/* Line 1806 of yacc.c  */
+#line 1219 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 298:
+
+/* Line 1806 of yacc.c  */
+#line 1228 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
+    break;
+
+  case 299:
+
+/* Line 1806 of yacc.c  */
+#line 1230 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
+    break;
+
+  case 300:
+
+/* Line 1806 of yacc.c  */
+#line 1232 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
+    break;
+
+  case 301:
+
+/* Line 1806 of yacc.c  */
+#line 1234 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
+    break;
+
+  case 302:
+
+/* Line 1806 of yacc.c  */
+#line 1236 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
+    break;
+
+  case 303:
+
+/* Line 1806 of yacc.c  */
+#line 1238 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
+    break;
+
+  case 304:
+
+/* Line 1806 of yacc.c  */
+#line 1240 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
+    break;
+
+  case 305:
+
+/* Line 1806 of yacc.c  */
+#line 1242 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
+    break;
+
+  case 306:
+
+/* Line 1806 of yacc.c  */
+#line 1247 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
+    break;
+
+  case 307:
+
+/* Line 1806 of yacc.c  */
+#line 1249 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
+    break;
+
+  case 308:
+
+/* Line 1806 of yacc.c  */
+#line 1251 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
+    break;
+
+  case 309:
+
+/* Line 1806 of yacc.c  */
+#line 1253 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
+    break;
+
+  case 310:
+
+/* Line 1806 of yacc.c  */
+#line 1255 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
+    break;
+
+  case 311:
+
+/* Line 1806 of yacc.c  */
+#line 1257 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
+    break;
+
+  case 312:
+
+/* Line 1806 of yacc.c  */
+#line 1259 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
+    break;
+
+  case 313:
+
+/* Line 1806 of yacc.c  */
+#line 1261 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
+    break;
+
+  case 314:
+
+/* Line 1806 of yacc.c  */
+#line 1263 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
+    break;
+
+  case 315:
+
+/* Line 1806 of yacc.c  */
+#line 1265 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
+    break;
+
+  case 316:
+
+/* Line 1806 of yacc.c  */
+#line 1267 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
+    break;
+
+  case 317:
+
+/* Line 1806 of yacc.c  */
+#line 1269 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
+    break;
+
+  case 319:
+
+/* Line 1806 of yacc.c  */
+#line 1276 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 320:
+
+/* Line 1806 of yacc.c  */
+#line 1278 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 321:
+
+/* Line 1806 of yacc.c  */
+#line 1280 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
+    break;
+
+  case 322:
+
+/* Line 1806 of yacc.c  */
+#line 1282 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
+    break;
+
+  case 324:
+
+/* Line 1806 of yacc.c  */
+#line 1288 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
+    break;
+
+  case 326:
+
+/* Line 1806 of yacc.c  */
+#line 1295 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 327:
+
+/* Line 1806 of yacc.c  */
+#line 1297 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 328:
+
+/* Line 1806 of yacc.c  */
+#line 1299 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 329:
+
+/* Line 1806 of yacc.c  */
+#line 1304 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
+    break;
+
+  case 330:
+
+/* Line 1806 of yacc.c  */
+#line 1306 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
+    break;
+
+  case 331:
+
+/* Line 1806 of yacc.c  */
+#line 1308 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
+    break;
+
+  case 332:
+
+/* Line 1806 of yacc.c  */
+#line 1310 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
+    break;
+
+  case 334:
+
+/* Line 1806 of yacc.c  */
+#line 1316 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 335:
+
+/* Line 1806 of yacc.c  */
+#line 1318 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 336:
+
+/* Line 1806 of yacc.c  */
+#line 1320 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
+    break;
+
+  case 338:
+
+/* Line 1806 of yacc.c  */
+#line 1326 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 339:
+
+/* Line 1806 of yacc.c  */
+#line 1328 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 341:
+
+/* Line 1806 of yacc.c  */
+#line 1334 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 342:
+
+/* Line 1806 of yacc.c  */
+#line 1336 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 343:
+
+/* Line 1806 of yacc.c  */
+#line 1338 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
+    break;
+
+  case 344:
+
+/* Line 1806 of yacc.c  */
+#line 1343 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
+    break;
+
+  case 345:
+
+/* Line 1806 of yacc.c  */
+#line 1345 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 346:
+
+/* Line 1806 of yacc.c  */
+#line 1347 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 349:
+
+/* Line 1806 of yacc.c  */
+#line 1357 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, 0, (yyvsp[(3) - (4)].decl) ); }
+    break;
+
+  case 350:
+
+/* Line 1806 of yacc.c  */
+#line 1359 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0, 0 ); }
+    break;
+
+  case 351:
+
+/* Line 1806 of yacc.c  */
+#line 1361 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, 0, (yyvsp[(4) - (5)].decl) ); }
+    break;
+
+  case 352:
+
+/* Line 1806 of yacc.c  */
+#line 1363 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (9)].aggKey), 0, (yyvsp[(4) - (9)].decl), 0, (yyvsp[(8) - (9)].decl) ); }
+    break;
+
+  case 353:
+
+/* Line 1806 of yacc.c  */
+#line 1365 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), (yyvsp[(7) - (7)].tok), (yyvsp[(4) - (7)].decl), 0, 0 ); }
+    break;
+
+  case 354:
+
+/* Line 1806 of yacc.c  */
+#line 1367 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (10)].aggKey), (yyvsp[(7) - (10)].tok), (yyvsp[(4) - (10)].decl), 0, (yyvsp[(9) - (10)].decl) ); }
+    break;
+
+  case 355:
+
+/* Line 1806 of yacc.c  */
+#line 1369 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (12)].aggKey), 0, (yyvsp[(4) - (12)].decl), (yyvsp[(8) - (12)].en), (yyvsp[(11) - (12)].decl) ); }
+    break;
+
+  case 356:
+
+/* Line 1806 of yacc.c  */
+#line 1371 "parser.yy"
+    {}
+    break;
+
+  case 357:
+
+/* Line 1806 of yacc.c  */
+#line 1374 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), (yyvsp[(7) - (7)].tok), 0, (yyvsp[(4) - (7)].en), 0 ); }
+    break;
+
+  case 358:
+
+/* Line 1806 of yacc.c  */
+#line 1376 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (13)].aggKey), (yyvsp[(10) - (13)].tok), (yyvsp[(4) - (13)].decl), (yyvsp[(8) - (13)].en), (yyvsp[(12) - (13)].decl) ); }
+    break;
+
+  case 359:
+
+/* Line 1806 of yacc.c  */
+#line 1381 "parser.yy"
+    { (yyval.aggKey) = DeclarationNode::Struct; }
+    break;
+
+  case 360:
+
+/* Line 1806 of yacc.c  */
+#line 1383 "parser.yy"
+    { (yyval.aggKey) = DeclarationNode::Union; }
+    break;
+
+  case 361:
+
+/* Line 1806 of yacc.c  */
+#line 1388 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (1)].decl); }
+    break;
+
+  case 362:
+
+/* Line 1806 of yacc.c  */
+#line 1390 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 364:
+
+/* Line 1806 of yacc.c  */
+#line 1396 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 366:
+
+/* Line 1806 of yacc.c  */
+#line 1399 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 368:
+
+/* Line 1806 of yacc.c  */
+#line 1405 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
+    break;
+
+  case 369:
+
+/* Line 1806 of yacc.c  */
+#line 1407 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
+    break;
+
+  case 370:
+
+/* Line 1806 of yacc.c  */
+#line 1409 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
+    break;
+
+  case 371:
+
+/* Line 1806 of yacc.c  */
+#line 1414 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 372:
+
+/* Line 1806 of yacc.c  */
+#line 1416 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
+    break;
+
+  case 373:
+
+/* Line 1806 of yacc.c  */
+#line 1421 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
+    break;
+
+  case 374:
+
+/* Line 1806 of yacc.c  */
+#line 1423 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
+    break;
+
+  case 375:
+
+/* Line 1806 of yacc.c  */
+#line 1426 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
+    break;
+
+  case 376:
+
+/* Line 1806 of yacc.c  */
+#line 1429 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
+    break;
+
+  case 378:
+
+/* Line 1806 of yacc.c  */
+#line 1435 "parser.yy"
+    { (yyval.en) = 0; }
+    break;
+
+  case 379:
+
+/* Line 1806 of yacc.c  */
+#line 1437 "parser.yy"
+    { (yyval.en) = (yyvsp[(1) - (1)].en); }
+    break;
+
+  case 380:
+
+/* Line 1806 of yacc.c  */
+#line 1442 "parser.yy"
+    { (yyval.en) = (yyvsp[(2) - (2)].en); }
+    break;
+
+  case 382:
+
+/* Line 1806 of yacc.c  */
+#line 1451 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
+    break;
+
+  case 383:
+
+/* Line 1806 of yacc.c  */
+#line 1453 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); }
+    break;
+
+  case 384:
+
+/* Line 1806 of yacc.c  */
+#line 1455 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); }
+    break;
+
+  case 385:
+
+/* Line 1806 of yacc.c  */
+#line 1460 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
+    break;
+
+  case 386:
+
+/* Line 1806 of yacc.c  */
+#line 1462 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
+    break;
+
+  case 387:
+
+/* Line 1806 of yacc.c  */
+#line 1467 "parser.yy"
+    { (yyval.en) = 0; }
+    break;
+
+  case 388:
+
+/* Line 1806 of yacc.c  */
+#line 1469 "parser.yy"
+    { (yyval.en) = (yyvsp[(2) - (2)].en); }
+    break;
+
+  case 389:
+
+/* Line 1806 of yacc.c  */
+#line 1476 "parser.yy"
+    { (yyval.decl) = 0; }
+    break;
+
+  case 393:
+
+/* Line 1806 of yacc.c  */
+#line 1484 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
+    break;
+
+  case 394:
+
+/* Line 1806 of yacc.c  */
+#line 1486 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
+    break;
+
+  case 395:
+
+/* Line 1806 of yacc.c  */
+#line 1488 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
+    break;
+
+  case 397:
+
+/* Line 1806 of yacc.c  */
+#line 1496 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
+    break;
+
+  case 398:
+
+/* Line 1806 of yacc.c  */
+#line 1498 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
+    break;
+
+  case 399:
+
+/* Line 1806 of yacc.c  */
+#line 1500 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
+    break;
+
+  case 401:
+
+/* Line 1806 of yacc.c  */
+#line 1506 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
+    break;
+
+  case 402:
+
+/* Line 1806 of yacc.c  */
+#line 1511 "parser.yy"
+    { (yyval.decl) = 0; }
+    break;
+
+  case 405:
+
+/* Line 1806 of yacc.c  */
+#line 1518 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
+    break;
+
+  case 408:
+
+/* Line 1806 of yacc.c  */
+#line 1525 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
+    break;
+
+  case 409:
+
+/* Line 1806 of yacc.c  */
+#line 1527 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
+    break;
+
+  case 411:
+
+/* Line 1806 of yacc.c  */
+#line 1536 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
+    break;
+
+  case 412:
+
+/* Line 1806 of yacc.c  */
+#line 1539 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
+    break;
+
+  case 413:
+
+/* Line 1806 of yacc.c  */
+#line 1541 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
+    break;
+
+  case 418:
+
+/* Line 1806 of yacc.c  */
+#line 1551 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 420:
+
+/* Line 1806 of yacc.c  */
+#line 1557 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
+		}
+    break;
+
+  case 421:
+
+/* Line 1806 of yacc.c  */
+#line 1562 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
+		}
+    break;
+
+  case 423:
+
+/* Line 1806 of yacc.c  */
+#line 1571 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 424:
+
+/* Line 1806 of yacc.c  */
+#line 1580 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
+    break;
+
+  case 425:
+
+/* Line 1806 of yacc.c  */
+#line 1582 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
+    break;
+
+  case 436:
+
+/* Line 1806 of yacc.c  */
+#line 1607 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 440:
+
+/* Line 1806 of yacc.c  */
+#line 1615 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 441:
+
+/* Line 1806 of yacc.c  */
+#line 1620 "parser.yy"
+    { (yyval.in) = 0; }
+    break;
+
+  case 442:
+
+/* Line 1806 of yacc.c  */
+#line 1621 "parser.yy"
+    { (yyval.in) = (yyvsp[(2) - (2)].in); }
+    break;
+
+  case 443:
+
+/* Line 1806 of yacc.c  */
+#line 1625 "parser.yy"
+    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
+    break;
+
+  case 444:
+
+/* Line 1806 of yacc.c  */
+#line 1626 "parser.yy"
+    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
+    break;
+
+  case 446:
+
+/* Line 1806 of yacc.c  */
+#line 1631 "parser.yy"
+    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
+    break;
+
+  case 447:
+
+/* Line 1806 of yacc.c  */
+#line 1632 "parser.yy"
+    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
+    break;
+
+  case 448:
+
+/* Line 1806 of yacc.c  */
+#line 1634 "parser.yy"
+    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
+    break;
+
+  case 450:
+
+/* Line 1806 of yacc.c  */
+#line 1650 "parser.yy"
+    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
+    break;
+
+  case 452:
+
+/* Line 1806 of yacc.c  */
+#line 1655 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
+    break;
+
+  case 453:
+
+/* Line 1806 of yacc.c  */
+#line 1661 "parser.yy"
+    { (yyval.en) = new VarRefNode( (yyvsp[(2) - (2)].tok) ); }
+    break;
+
+  case 454:
+
+/* Line 1806 of yacc.c  */
+#line 1664 "parser.yy"
+    { (yyval.en) = (yyvsp[(3) - (5)].en); }
+    break;
+
+  case 455:
+
+/* Line 1806 of yacc.c  */
+#line 1666 "parser.yy"
+    { (yyval.en) = (yyvsp[(3) - (5)].en); }
+    break;
+
+  case 456:
+
+/* Line 1806 of yacc.c  */
+#line 1668 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ); }
+    break;
+
+  case 457:
+
+/* Line 1806 of yacc.c  */
+#line 1670 "parser.yy"
+    { (yyval.en) = (yyvsp[(4) - (6)].en); }
+    break;
+
+  case 459:
+
+/* Line 1806 of yacc.c  */
+#line 1694 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 460:
+
+/* Line 1806 of yacc.c  */
+#line 1696 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 461:
+
+/* Line 1806 of yacc.c  */
+#line 1698 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
+    break;
+
+  case 462:
+
+/* Line 1806 of yacc.c  */
+#line 1703 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
+    break;
+
+  case 463:
+
+/* Line 1806 of yacc.c  */
+#line 1705 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) )->addQualifiers( (yyvsp[(1) - (5)].decl) ); }
+    break;
+
+  case 464:
+
+/* Line 1806 of yacc.c  */
+#line 1707 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 466:
+
+/* Line 1806 of yacc.c  */
+#line 1713 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
+    break;
+
+  case 467:
+
+/* Line 1806 of yacc.c  */
+#line 1718 "parser.yy"
+    { typedefTable.addToEnclosingScope(*( (yyvsp[(2) - (2)].tok) ), TypedefTable::TD ); }
+    break;
+
+  case 468:
+
+/* Line 1806 of yacc.c  */
+#line 1720 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 470:
+
+/* Line 1806 of yacc.c  */
+#line 1726 "parser.yy"
+    { (yyval.tclass) = DeclarationNode::Type; }
+    break;
+
+  case 471:
+
+/* Line 1806 of yacc.c  */
+#line 1728 "parser.yy"
+    { (yyval.tclass) = DeclarationNode::Ftype; }
+    break;
+
+  case 472:
+
+/* Line 1806 of yacc.c  */
+#line 1730 "parser.yy"
+    { (yyval.tclass) = DeclarationNode::Dtype; }
+    break;
+
+  case 473:
+
+/* Line 1806 of yacc.c  */
+#line 1735 "parser.yy"
+    { (yyval.decl) = 0; }
+    break;
+
+  case 474:
+
+/* Line 1806 of yacc.c  */
+#line 1737 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 475:
+
+/* Line 1806 of yacc.c  */
+#line 1742 "parser.yy"
+    {
+			typedefTable.openContext( *( (yyvsp[(2) - (5)].tok) ) );
+			(yyval.decl) = DeclarationNode::newContextUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) );
+		}
+    break;
+
+  case 476:
+
+/* Line 1806 of yacc.c  */
+#line 1747 "parser.yy"
+    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
+    break;
+
+  case 477:
+
+/* Line 1806 of yacc.c  */
+#line 1749 "parser.yy"
+    { (yyval.decl) = 0; }
+    break;
+
+  case 478:
+
+/* Line 1806 of yacc.c  */
+#line 1754 "parser.yy"
+    { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
+    break;
+
+  case 480:
+
+/* Line 1806 of yacc.c  */
+#line 1757 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
+    break;
+
+  case 481:
+
+/* Line 1806 of yacc.c  */
+#line 1759 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
+    break;
+
+  case 482:
+
+/* Line 1806 of yacc.c  */
+#line 1764 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
+    break;
+
+  case 483:
+
+/* Line 1806 of yacc.c  */
+#line 1766 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
+    break;
+
+  case 484:
+
+/* Line 1806 of yacc.c  */
+#line 1768 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
+    break;
+
+  case 485:
+
+/* Line 1806 of yacc.c  */
+#line 1773 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 486:
+
+/* Line 1806 of yacc.c  */
+#line 1775 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 487:
+
+/* Line 1806 of yacc.c  */
+#line 1780 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
+			(yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[(1) - (1)].tok), 0 );
+		}
+    break;
+
+  case 488:
+
+/* Line 1806 of yacc.c  */
+#line 1785 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
+			(yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[(1) - (6)].tok), (yyvsp[(4) - (6)].decl) );
+		}
+    break;
+
+  case 489:
+
+/* Line 1806 of yacc.c  */
+#line 1793 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
+			(yyval.decl) = DeclarationNode::newContext( (yyvsp[(2) - (9)].tok), (yyvsp[(5) - (9)].decl), 0 );
+		}
+    break;
+
+  case 490:
+
+/* Line 1806 of yacc.c  */
+#line 1798 "parser.yy"
+    {
+			typedefTable.enterContext( *(yyvsp[(2) - (8)].tok) );
+			typedefTable.enterScope();
+		}
+    break;
+
+  case 491:
+
+/* Line 1806 of yacc.c  */
+#line 1803 "parser.yy"
+    {
+			typedefTable.leaveContext();
+			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (11)].tok), TypedefTable::ID );
+			(yyval.decl) = DeclarationNode::newContext( (yyvsp[(2) - (11)].tok), (yyvsp[(5) - (11)].decl), (yyvsp[(10) - (11)].decl) );
+		}
+    break;
+
+  case 493:
+
+/* Line 1806 of yacc.c  */
+#line 1813 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
+    break;
+
+  case 496:
+
+/* Line 1806 of yacc.c  */
+#line 1823 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope2( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (1)].decl);
+		}
+    break;
+
+  case 497:
+
+/* Line 1806 of yacc.c  */
+#line 1828 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope2( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (1)].decl);
+		}
+    break;
+
+  case 498:
+
+/* Line 1806 of yacc.c  */
+#line 1833 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
+		}
+    break;
+
+  case 499:
+
+/* Line 1806 of yacc.c  */
+#line 1841 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope2( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) );
+		}
+    break;
+
+  case 500:
+
+/* Line 1806 of yacc.c  */
+#line 1846 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope2( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneBaseType( (yyvsp[(5) - (5)].decl) ) );
+		}
+    break;
+
+  case 501:
+
+/* Line 1806 of yacc.c  */
+#line 1856 "parser.yy"
+    {}
+    break;
+
+  case 502:
+
+/* Line 1806 of yacc.c  */
+#line 1858 "parser.yy"
+    {
+			if ( theTree ) {
+				theTree->appendList( (yyvsp[(1) - (1)].decl) );
+			} else {
+				theTree = (yyvsp[(1) - (1)].decl);
+			}
+		}
+    break;
+
+  case 504:
+
+/* Line 1806 of yacc.c  */
+#line 1870 "parser.yy"
+    { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
+    break;
+
+  case 505:
+
+/* Line 1806 of yacc.c  */
+#line 1875 "parser.yy"
+    { (yyval.decl) = 0; }
+    break;
+
+  case 509:
+
+/* Line 1806 of yacc.c  */
+#line 1883 "parser.yy"
+    {}
+    break;
+
+  case 510:
+
+/* Line 1806 of yacc.c  */
+#line 1885 "parser.yy"
+    {
+			linkageStack.push( linkage );
+			linkage = LinkageSpec::fromString( *(yyvsp[(2) - (2)].tok) );
+		}
+    break;
+
+  case 511:
+
+/* Line 1806 of yacc.c  */
+#line 1890 "parser.yy"
+    {
+			linkage = linkageStack.top();
+			linkageStack.pop();
+			(yyval.decl) = (yyvsp[(5) - (6)].decl);
+		}
+    break;
+
+  case 512:
+
+/* Line 1806 of yacc.c  */
+#line 1896 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
+    break;
+
+  case 514:
+
+/* Line 1806 of yacc.c  */
+#line 1907 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(1) - (2)].decl)->addFunctionBody( (yyvsp[(2) - (2)].sn) );
+		}
+    break;
+
+  case 515:
+
+/* Line 1806 of yacc.c  */
+#line 1913 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(1) - (4)].decl)->addOldDeclList( (yyvsp[(3) - (4)].decl) )->addFunctionBody( (yyvsp[(4) - (4)].sn) );
+		}
+    break;
+
+  case 516:
+
+/* Line 1806 of yacc.c  */
+#line 1922 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(1) - (2)].decl)->addFunctionBody( (yyvsp[(2) - (2)].sn) );
+		}
+    break;
+
+  case 517:
+
+/* Line 1806 of yacc.c  */
+#line 1928 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addType( (yyvsp[(1) - (3)].decl) );
+		}
+    break;
+
+  case 518:
+
+/* Line 1806 of yacc.c  */
+#line 1934 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
+		}
+    break;
+
+  case 519:
+
+/* Line 1806 of yacc.c  */
+#line 1940 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
+		}
+    break;
+
+  case 520:
+
+/* Line 1806 of yacc.c  */
+#line 1946 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(3) - (4)].decl)->addFunctionBody( (yyvsp[(4) - (4)].sn) )->addQualifiers( (yyvsp[(2) - (4)].decl) )->addQualifiers( (yyvsp[(1) - (4)].decl) );
+		}
+    break;
+
+  case 521:
+
+/* Line 1806 of yacc.c  */
+#line 1954 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addType( (yyvsp[(1) - (5)].decl) );
+		}
+    break;
+
+  case 522:
+
+/* Line 1806 of yacc.c  */
+#line 1960 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addQualifiers( (yyvsp[(1) - (5)].decl) );
+		}
+    break;
+
+  case 523:
+
+/* Line 1806 of yacc.c  */
+#line 1968 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addQualifiers( (yyvsp[(1) - (5)].decl) );
+		}
+    break;
+
+  case 524:
+
+/* Line 1806 of yacc.c  */
+#line 1974 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(3) - (6)].decl)->addOldDeclList( (yyvsp[(5) - (6)].decl) )->addFunctionBody( (yyvsp[(6) - (6)].sn) )->addQualifiers( (yyvsp[(2) - (6)].decl) )->addQualifiers( (yyvsp[(1) - (6)].decl) );
+		}
+    break;
+
+  case 528:
+
+/* Line 1806 of yacc.c  */
+#line 1989 "parser.yy"
+    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 541:
+
+/* Line 1806 of yacc.c  */
+#line 2023 "parser.yy"
+    {}
+    break;
+
+  case 542:
+
+/* Line 1806 of yacc.c  */
+#line 2024 "parser.yy"
+    {}
+    break;
+
+  case 543:
+
+/* Line 1806 of yacc.c  */
+#line 2025 "parser.yy"
+    {}
+    break;
+
+  case 544:
+
+/* Line 1806 of yacc.c  */
+#line 2026 "parser.yy"
+    {}
+    break;
+
+  case 549:
+
+/* Line 1806 of yacc.c  */
+#line 2068 "parser.yy"
+    {
+			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
+			(yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
+		}
+    break;
+
+  case 550:
+
+/* Line 1806 of yacc.c  */
+#line 2073 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 551:
+
+/* Line 1806 of yacc.c  */
+#line 2078 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 552:
+
+/* Line 1806 of yacc.c  */
+#line 2080 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 553:
+
+/* Line 1806 of yacc.c  */
+#line 2082 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 554:
+
+/* Line 1806 of yacc.c  */
+#line 2087 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 555:
+
+/* Line 1806 of yacc.c  */
+#line 2089 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 556:
+
+/* Line 1806 of yacc.c  */
+#line 2091 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 557:
+
+/* Line 1806 of yacc.c  */
+#line 2093 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 558:
+
+/* Line 1806 of yacc.c  */
+#line 2098 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 559:
+
+/* Line 1806 of yacc.c  */
+#line 2100 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 563:
+
+/* Line 1806 of yacc.c  */
+#line 2116 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
+    break;
+
+  case 564:
+
+/* Line 1806 of yacc.c  */
+#line 2118 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 565:
+
+/* Line 1806 of yacc.c  */
+#line 2120 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 566:
+
+/* Line 1806 of yacc.c  */
+#line 2125 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 567:
+
+/* Line 1806 of yacc.c  */
+#line 2127 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 568:
+
+/* Line 1806 of yacc.c  */
+#line 2129 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 569:
+
+/* Line 1806 of yacc.c  */
+#line 2134 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 570:
+
+/* Line 1806 of yacc.c  */
+#line 2136 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 571:
+
+/* Line 1806 of yacc.c  */
+#line 2138 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 575:
+
+/* Line 1806 of yacc.c  */
+#line 2153 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
+    break;
+
+  case 576:
+
+/* Line 1806 of yacc.c  */
+#line 2155 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
+    break;
+
+  case 577:
+
+/* Line 1806 of yacc.c  */
+#line 2157 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 578:
+
+/* Line 1806 of yacc.c  */
+#line 2162 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 579:
+
+/* Line 1806 of yacc.c  */
+#line 2164 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 580:
+
+/* Line 1806 of yacc.c  */
+#line 2166 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 581:
+
+/* Line 1806 of yacc.c  */
+#line 2171 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 582:
+
+/* Line 1806 of yacc.c  */
+#line 2173 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 583:
+
+/* Line 1806 of yacc.c  */
+#line 2175 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 588:
+
+/* Line 1806 of yacc.c  */
+#line 2197 "parser.yy"
+    {
+			typedefTable.setNextIdentifier( *( (yyvsp[(1) - (1)].tok) ) );
+			(yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
+		}
+    break;
+
+  case 589:
+
+/* Line 1806 of yacc.c  */
+#line 2202 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 590:
+
+/* Line 1806 of yacc.c  */
+#line 2207 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 591:
+
+/* Line 1806 of yacc.c  */
+#line 2209 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 592:
+
+/* Line 1806 of yacc.c  */
+#line 2211 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 593:
+
+/* Line 1806 of yacc.c  */
+#line 2216 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 594:
+
+/* Line 1806 of yacc.c  */
+#line 2218 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 595:
+
+/* Line 1806 of yacc.c  */
+#line 2220 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 596:
+
+/* Line 1806 of yacc.c  */
+#line 2222 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 597:
+
+/* Line 1806 of yacc.c  */
+#line 2227 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
+    break;
+
+  case 598:
+
+/* Line 1806 of yacc.c  */
+#line 2229 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 599:
+
+/* Line 1806 of yacc.c  */
+#line 2231 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 604:
+
+/* Line 1806 of yacc.c  */
+#line 2248 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 605:
+
+/* Line 1806 of yacc.c  */
+#line 2250 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 606:
+
+/* Line 1806 of yacc.c  */
+#line 2252 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 607:
+
+/* Line 1806 of yacc.c  */
+#line 2257 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 608:
+
+/* Line 1806 of yacc.c  */
+#line 2259 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 609:
+
+/* Line 1806 of yacc.c  */
+#line 2261 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 610:
+
+/* Line 1806 of yacc.c  */
+#line 2263 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 611:
+
+/* Line 1806 of yacc.c  */
+#line 2268 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
+    break;
+
+  case 612:
+
+/* Line 1806 of yacc.c  */
+#line 2270 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 613:
+
+/* Line 1806 of yacc.c  */
+#line 2272 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 618:
+
+/* Line 1806 of yacc.c  */
+#line 2310 "parser.yy"
+    {
+			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
+			(yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
+		}
+    break;
+
+  case 619:
+
+/* Line 1806 of yacc.c  */
+#line 2318 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 620:
+
+/* Line 1806 of yacc.c  */
+#line 2320 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 621:
+
+/* Line 1806 of yacc.c  */
+#line 2322 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 622:
+
+/* Line 1806 of yacc.c  */
+#line 2327 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 623:
+
+/* Line 1806 of yacc.c  */
+#line 2329 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 624:
+
+/* Line 1806 of yacc.c  */
+#line 2334 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
+    break;
+
+  case 625:
+
+/* Line 1806 of yacc.c  */
+#line 2336 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 629:
+
+/* Line 1806 of yacc.c  */
+#line 2356 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
+    break;
+
+  case 630:
+
+/* Line 1806 of yacc.c  */
+#line 2358 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 631:
+
+/* Line 1806 of yacc.c  */
+#line 2360 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 632:
+
+/* Line 1806 of yacc.c  */
+#line 2362 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 633:
+
+/* Line 1806 of yacc.c  */
+#line 2364 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 635:
+
+/* Line 1806 of yacc.c  */
+#line 2370 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 636:
+
+/* Line 1806 of yacc.c  */
+#line 2372 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 637:
+
+/* Line 1806 of yacc.c  */
+#line 2374 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 638:
+
+/* Line 1806 of yacc.c  */
+#line 2379 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
+    break;
+
+  case 639:
+
+/* Line 1806 of yacc.c  */
+#line 2381 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 640:
+
+/* Line 1806 of yacc.c  */
+#line 2383 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 641:
+
+/* Line 1806 of yacc.c  */
+#line 2389 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
+    break;
+
+  case 642:
+
+/* Line 1806 of yacc.c  */
+#line 2391 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(5) - (5)].decl) ); }
+    break;
+
+  case 644:
+
+/* Line 1806 of yacc.c  */
+#line 2397 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
+    break;
+
+  case 645:
+
+/* Line 1806 of yacc.c  */
+#line 2399 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
+    break;
+
+  case 646:
+
+/* Line 1806 of yacc.c  */
+#line 2401 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
+    break;
+
+  case 647:
+
+/* Line 1806 of yacc.c  */
+#line 2403 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
+    break;
+
+  case 651:
+
+/* Line 1806 of yacc.c  */
+#line 2423 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
+    break;
+
+  case 652:
+
+/* Line 1806 of yacc.c  */
+#line 2425 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 653:
+
+/* Line 1806 of yacc.c  */
+#line 2427 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 654:
+
+/* Line 1806 of yacc.c  */
+#line 2429 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 655:
+
+/* Line 1806 of yacc.c  */
+#line 2431 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 657:
+
+/* Line 1806 of yacc.c  */
+#line 2437 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 658:
+
+/* Line 1806 of yacc.c  */
+#line 2439 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 659:
+
+/* Line 1806 of yacc.c  */
+#line 2441 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 660:
+
+/* Line 1806 of yacc.c  */
+#line 2446 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
+    break;
+
+  case 661:
+
+/* Line 1806 of yacc.c  */
+#line 2448 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 662:
+
+/* Line 1806 of yacc.c  */
+#line 2450 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 664:
+
+/* Line 1806 of yacc.c  */
+#line 2457 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 666:
+
+/* Line 1806 of yacc.c  */
+#line 2468 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
+    break;
+
+  case 667:
+
+/* Line 1806 of yacc.c  */
+#line 2471 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
+    break;
+
+  case 668:
+
+/* Line 1806 of yacc.c  */
+#line 2473 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
+    break;
+
+  case 669:
+
+/* Line 1806 of yacc.c  */
+#line 2476 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
+    break;
+
+  case 670:
+
+/* Line 1806 of yacc.c  */
+#line 2478 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
+    break;
+
+  case 671:
+
+/* Line 1806 of yacc.c  */
+#line 2480 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
+    break;
+
+  case 675:
+
+/* Line 1806 of yacc.c  */
+#line 2499 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
+    break;
+
+  case 676:
+
+/* Line 1806 of yacc.c  */
+#line 2501 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 677:
+
+/* Line 1806 of yacc.c  */
+#line 2503 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 678:
+
+/* Line 1806 of yacc.c  */
+#line 2505 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 679:
+
+/* Line 1806 of yacc.c  */
+#line 2507 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 681:
+
+/* Line 1806 of yacc.c  */
+#line 2513 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 682:
+
+/* Line 1806 of yacc.c  */
+#line 2515 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 683:
+
+/* Line 1806 of yacc.c  */
+#line 2517 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 684:
+
+/* Line 1806 of yacc.c  */
+#line 2522 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 685:
+
+/* Line 1806 of yacc.c  */
+#line 2524 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 688:
+
+/* Line 1806 of yacc.c  */
+#line 2534 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 691:
+
+/* Line 1806 of yacc.c  */
+#line 2544 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 692:
+
+/* Line 1806 of yacc.c  */
+#line 2546 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+    break;
+
+  case 693:
+
+/* Line 1806 of yacc.c  */
+#line 2548 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 694:
+
+/* Line 1806 of yacc.c  */
+#line 2550 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+    break;
+
+  case 695:
+
+/* Line 1806 of yacc.c  */
+#line 2552 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 696:
+
+/* Line 1806 of yacc.c  */
+#line 2554 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+    break;
+
+  case 697:
+
+/* Line 1806 of yacc.c  */
+#line 2561 "parser.yy"
+    { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+    break;
+
+  case 698:
+
+/* Line 1806 of yacc.c  */
+#line 2563 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 699:
+
+/* Line 1806 of yacc.c  */
+#line 2565 "parser.yy"
+    { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+    break;
+
+  case 700:
+
+/* Line 1806 of yacc.c  */
+#line 2567 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
+    break;
+
+  case 701:
+
+/* Line 1806 of yacc.c  */
+#line 2569 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 702:
+
+/* Line 1806 of yacc.c  */
+#line 2571 "parser.yy"
+    { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+    break;
+
+  case 703:
+
+/* Line 1806 of yacc.c  */
+#line 2573 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 704:
+
+/* Line 1806 of yacc.c  */
+#line 2575 "parser.yy"
+    { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+    break;
+
+  case 705:
+
+/* Line 1806 of yacc.c  */
+#line 2577 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
+    break;
+
+  case 706:
+
+/* Line 1806 of yacc.c  */
+#line 2579 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 707:
+
+/* Line 1806 of yacc.c  */
+#line 2584 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
+    break;
+
+  case 708:
+
+/* Line 1806 of yacc.c  */
+#line 2586 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
+    break;
+
+  case 709:
+
+/* Line 1806 of yacc.c  */
+#line 2591 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
+    break;
+
+  case 710:
+
+/* Line 1806 of yacc.c  */
+#line 2593 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
+    break;
+
+  case 712:
+
+/* Line 1806 of yacc.c  */
+#line 2620 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 716:
+
+/* Line 1806 of yacc.c  */
+#line 2631 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 717:
+
+/* Line 1806 of yacc.c  */
+#line 2633 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+    break;
+
+  case 718:
+
+/* Line 1806 of yacc.c  */
+#line 2635 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 719:
+
+/* Line 1806 of yacc.c  */
+#line 2637 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+    break;
+
+  case 720:
+
+/* Line 1806 of yacc.c  */
+#line 2639 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 721:
+
+/* Line 1806 of yacc.c  */
+#line 2641 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+    break;
+
+  case 722:
+
+/* Line 1806 of yacc.c  */
+#line 2648 "parser.yy"
+    { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+    break;
+
+  case 723:
+
+/* Line 1806 of yacc.c  */
+#line 2650 "parser.yy"
+    { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+    break;
+
+  case 724:
+
+/* Line 1806 of yacc.c  */
+#line 2652 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 725:
+
+/* Line 1806 of yacc.c  */
+#line 2654 "parser.yy"
+    { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+    break;
+
+  case 726:
+
+/* Line 1806 of yacc.c  */
+#line 2656 "parser.yy"
+    { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+    break;
+
+  case 727:
+
+/* Line 1806 of yacc.c  */
+#line 2658 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 728:
+
+/* Line 1806 of yacc.c  */
+#line 2663 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
+    break;
+
+  case 729:
+
+/* Line 1806 of yacc.c  */
+#line 2668 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (7)].decl), 0 ); }
+    break;
+
+  case 730:
+
+/* Line 1806 of yacc.c  */
+#line 2670 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
+    break;
+
+  case 731:
+
+/* Line 1806 of yacc.c  */
+#line 2672 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
+    break;
+
+  case 734:
+
+/* Line 1806 of yacc.c  */
+#line 2696 "parser.yy"
+    { (yyval.en) = 0; }
+    break;
+
+  case 735:
+
+/* Line 1806 of yacc.c  */
+#line 2698 "parser.yy"
+    { (yyval.en) = (yyvsp[(2) - (2)].en); }
+    break;
+
+
+
+/* Line 1806 of yacc.c  */
+#line 9096 "Parser/parser.cc"
+      default: break;
+    }
+  /* User semantic actions sometimes alter yychar, and that requires
+     that yytoken be updated with the new translation.  We take the
+     approach of translating immediately before every use of yytoken.
+     One alternative is translating here after every semantic action,
+     but that translation would be missed if the semantic action invokes
+     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
+     incorrect destructor might then be invoked immediately.  In the
+     case of YYERROR or YYBACKUP, subsequent parser actions might lead
+     to an incorrect destructor call or verbose syntax error message
+     before the lookahead is translated.  */
+  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+  YYPOPSTACK (yylen);
+  yylen = 0;
+  YY_STACK_PRINT (yyss, yyssp);
+
+  *++yyvsp = yyval;
+
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTOKENS];
+
+  goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* Make sure we have latest lookahead translation.  See comments at
+     user semantic actions for why this is necessary.  */
+  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
+
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+#if ! YYERROR_VERBOSE
+      yyerror (YY_("syntax error"));
+#else
+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
+                                        yyssp, yytoken)
+      {
+        char const *yymsgp = YY_("syntax error");
+        int yysyntax_error_status;
+        yysyntax_error_status = YYSYNTAX_ERROR;
+        if (yysyntax_error_status == 0)
+          yymsgp = yymsg;
+        else if (yysyntax_error_status == 1)
+          {
+            if (yymsg != yymsgbuf)
+              YYSTACK_FREE (yymsg);
+            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+            if (!yymsg)
+              {
+                yymsg = yymsgbuf;
+                yymsg_alloc = sizeof yymsgbuf;
+                yysyntax_error_status = 2;
+              }
+            else
+              {
+                yysyntax_error_status = YYSYNTAX_ERROR;
+                yymsgp = yymsg;
+              }
+          }
+        yyerror (yymsgp);
+        if (yysyntax_error_status == 2)
+          goto yyexhaustedlab;
+      }
+# undef YYSYNTAX_ERROR
+#endif
+    }
+
+
+
+  if (yyerrstatus == 3)
+    {
+      /* If just tried and failed to reuse lookahead token after an
+	 error, discard it.  */
+
+      if (yychar <= YYEOF)
+	{
+	  /* Return failure if at end of input.  */
+	  if (yychar == YYEOF)
+	    YYABORT;
+	}
+      else
+	{
+	  yydestruct ("Error: discarding",
+		      yytoken, &yylval);
+	  yychar = YYEMPTY;
+	}
+    }
+
+  /* Else will try to reuse lookahead token after shifting the error
+     token.  */
+  goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR.  |
+`---------------------------------------------------*/
+yyerrorlab:
+
+  /* Pacify compilers like GCC when the user code never invokes
+     YYERROR and the label yyerrorlab therefore never appears in user
+     code.  */
+  if (/*CONSTCOND*/ 0)
+     goto yyerrorlab;
+
+  /* Do not reclaim the symbols of the rule which action triggered
+     this YYERROR.  */
+  YYPOPSTACK (yylen);
+  yylen = 0;
+  YY_STACK_PRINT (yyss, yyssp);
+  yystate = *yyssp;
+  goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR.  |
+`-------------------------------------------------------------*/
+yyerrlab1:
+  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+
+  for (;;)
+    {
+      yyn = yypact[yystate];
+      if (!yypact_value_is_default (yyn))
+	{
+	  yyn += YYTERROR;
+	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+	    {
+	      yyn = yytable[yyn];
+	      if (0 < yyn)
+		break;
+	    }
+	}
+
+      /* Pop the current state because it cannot handle the error token.  */
+      if (yyssp == yyss)
+	YYABORT;
+
+
+      yydestruct ("Error: popping",
+		  yystos[yystate], yyvsp);
+      YYPOPSTACK (1);
+      yystate = *yyssp;
+      YY_STACK_PRINT (yyss, yyssp);
+    }
+
+  *++yyvsp = yylval;
+
+
+  /* Shift the error token.  */
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+#if !defined(yyoverflow) || YYERROR_VERBOSE
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here.  |
+`-------------------------------------------------*/
+yyexhaustedlab:
+  yyerror (YY_("memory exhausted"));
+  yyresult = 2;
+  /* Fall through.  */
+#endif
+
+yyreturn:
+  if (yychar != YYEMPTY)
+    {
+      /* Make sure we have latest lookahead translation.  See comments at
+         user semantic actions for why this is necessary.  */
+      yytoken = YYTRANSLATE (yychar);
+      yydestruct ("Cleanup: discarding lookahead",
+                  yytoken, &yylval);
+    }
+  /* Do not reclaim the symbols of the rule which action triggered
+     this YYABORT or YYACCEPT.  */
+  YYPOPSTACK (yylen);
+  YY_STACK_PRINT (yyss, yyssp);
+  while (yyssp != yyss)
+    {
+      yydestruct ("Cleanup: popping",
+		  yystos[*yyssp], yyvsp);
+      YYPOPSTACK (1);
+    }
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+#if YYERROR_VERBOSE
+  if (yymsg != yymsgbuf)
+    YYSTACK_FREE (yymsg);
+#endif
+  /* Make sure YYID is used.  */
+  return YYID (yyresult);
+}
+
+
+
+/* Line 2067 of yacc.c  */
+#line 2701 "parser.yy"
+
+// ----end of grammar----
+
+void yyerror( const char * ) {
+	std::cout << "Error ";
+	if ( yyfilename ) {
+	    std::cout << "in file " << yyfilename << " ";
+	} // if
+	std::cout << "at line " << yylineno << " reading token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << "\"" << std::endl;
+}
+
+// Local Variables: //
+// mode: c++ //
+// tab-width: 4 //
+// compile-command: "make install" //
+// End: //
+
Index: src/Parser/parser.h
===================================================================
--- src/Parser/parser.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Parser/parser.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,272 @@
+/* A Bison parser, made by GNU Bison 2.5.  */
+
+/* Bison interface for Yacc-like parsers in C
+   
+      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+   
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+   
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+   
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* As a special exception, you may create a larger work that contains
+   part or all of the Bison parser skeleton and distribute that work
+   under terms of your choice, so long as that work isn't itself a
+   parser generator using the skeleton or a modified version thereof
+   as a parser skeleton.  Alternatively, if you modify or redistribute
+   the parser skeleton itself, you may (at your option) remove this
+   special exception, which will cause the skeleton and the resulting
+   Bison output files to be licensed under the GNU General Public
+   License without this special exception.
+   
+   This special exception was added by the Free Software Foundation in
+   version 2.2 of Bison.  */
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     TYPEDEF = 258,
+     AUTO = 259,
+     EXTERN = 260,
+     REGISTER = 261,
+     STATIC = 262,
+     INLINE = 263,
+     FORTRAN = 264,
+     CONST = 265,
+     VOLATILE = 266,
+     RESTRICT = 267,
+     FORALL = 268,
+     LVALUE = 269,
+     VOID = 270,
+     CHAR = 271,
+     SHORT = 272,
+     INT = 273,
+     LONG = 274,
+     FLOAT = 275,
+     DOUBLE = 276,
+     SIGNED = 277,
+     UNSIGNED = 278,
+     BOOL = 279,
+     COMPLEX = 280,
+     IMAGINARY = 281,
+     TYPEOF = 282,
+     LABEL = 283,
+     ENUM = 284,
+     STRUCT = 285,
+     UNION = 286,
+     TYPE = 287,
+     FTYPE = 288,
+     DTYPE = 289,
+     CONTEXT = 290,
+     SIZEOF = 291,
+     ATTRIBUTE = 292,
+     EXTENSION = 293,
+     IF = 294,
+     ELSE = 295,
+     SWITCH = 296,
+     CASE = 297,
+     DEFAULT = 298,
+     DO = 299,
+     WHILE = 300,
+     FOR = 301,
+     BREAK = 302,
+     CONTINUE = 303,
+     GOTO = 304,
+     RETURN = 305,
+     CHOOSE = 306,
+     FALLTHRU = 307,
+     TRY = 308,
+     CATCH = 309,
+     FINALLY = 310,
+     THROW = 311,
+     ASM = 312,
+     ALIGNAS = 313,
+     ALIGNOF = 314,
+     ATOMIC = 315,
+     GENERIC = 316,
+     NORETURN = 317,
+     STATICASSERT = 318,
+     THREADLOCAL = 319,
+     IDENTIFIER = 320,
+     QUOTED_IDENTIFIER = 321,
+     TYPEDEFname = 322,
+     TYPEGENname = 323,
+     ATTR_IDENTIFIER = 324,
+     ATTR_TYPEDEFname = 325,
+     ATTR_TYPEGENname = 326,
+     INTEGERconstant = 327,
+     FLOATINGconstant = 328,
+     CHARACTERconstant = 329,
+     STRINGliteral = 330,
+     ZERO = 331,
+     ONE = 332,
+     ARROW = 333,
+     ICR = 334,
+     DECR = 335,
+     LS = 336,
+     RS = 337,
+     LE = 338,
+     GE = 339,
+     EQ = 340,
+     NE = 341,
+     ANDAND = 342,
+     OROR = 343,
+     ELLIPSIS = 344,
+     MULTassign = 345,
+     DIVassign = 346,
+     MODassign = 347,
+     PLUSassign = 348,
+     MINUSassign = 349,
+     LSassign = 350,
+     RSassign = 351,
+     ANDassign = 352,
+     ERassign = 353,
+     ORassign = 354,
+     THEN = 355
+   };
+#endif
+/* Tokens.  */
+#define TYPEDEF 258
+#define AUTO 259
+#define EXTERN 260
+#define REGISTER 261
+#define STATIC 262
+#define INLINE 263
+#define FORTRAN 264
+#define CONST 265
+#define VOLATILE 266
+#define RESTRICT 267
+#define FORALL 268
+#define LVALUE 269
+#define VOID 270
+#define CHAR 271
+#define SHORT 272
+#define INT 273
+#define LONG 274
+#define FLOAT 275
+#define DOUBLE 276
+#define SIGNED 277
+#define UNSIGNED 278
+#define BOOL 279
+#define COMPLEX 280
+#define IMAGINARY 281
+#define TYPEOF 282
+#define LABEL 283
+#define ENUM 284
+#define STRUCT 285
+#define UNION 286
+#define TYPE 287
+#define FTYPE 288
+#define DTYPE 289
+#define CONTEXT 290
+#define SIZEOF 291
+#define ATTRIBUTE 292
+#define EXTENSION 293
+#define IF 294
+#define ELSE 295
+#define SWITCH 296
+#define CASE 297
+#define DEFAULT 298
+#define DO 299
+#define WHILE 300
+#define FOR 301
+#define BREAK 302
+#define CONTINUE 303
+#define GOTO 304
+#define RETURN 305
+#define CHOOSE 306
+#define FALLTHRU 307
+#define TRY 308
+#define CATCH 309
+#define FINALLY 310
+#define THROW 311
+#define ASM 312
+#define ALIGNAS 313
+#define ALIGNOF 314
+#define ATOMIC 315
+#define GENERIC 316
+#define NORETURN 317
+#define STATICASSERT 318
+#define THREADLOCAL 319
+#define IDENTIFIER 320
+#define QUOTED_IDENTIFIER 321
+#define TYPEDEFname 322
+#define TYPEGENname 323
+#define ATTR_IDENTIFIER 324
+#define ATTR_TYPEDEFname 325
+#define ATTR_TYPEGENname 326
+#define INTEGERconstant 327
+#define FLOATINGconstant 328
+#define CHARACTERconstant 329
+#define STRINGliteral 330
+#define ZERO 331
+#define ONE 332
+#define ARROW 333
+#define ICR 334
+#define DECR 335
+#define LS 336
+#define RS 337
+#define LE 338
+#define GE 339
+#define EQ 340
+#define NE 341
+#define ANDAND 342
+#define OROR 343
+#define ELLIPSIS 344
+#define MULTassign 345
+#define DIVassign 346
+#define MODassign 347
+#define PLUSassign 348
+#define MINUSassign 349
+#define LSassign 350
+#define RSassign 351
+#define ANDassign 352
+#define ERassign 353
+#define ORassign 354
+#define THEN 355
+
+
+
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+{
+
+/* Line 2068 of yacc.c  */
+#line 107 "parser.yy"
+
+	Token tok;
+	ParseNode *pn;
+	ExpressionNode *en;
+	DeclarationNode *decl;
+	DeclarationNode::Aggregate aggKey;
+	DeclarationNode::TypeClass tclass;
+	StatementNode *sn;
+	ConstantNode *constant;
+	InitializerNode *in;
+
+
+
+/* Line 2068 of yacc.c  */
+#line 264 "Parser/parser.h"
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+extern YYSTYPE yylval;
+
+
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Parser/parser.yy	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,2716 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// cfa.y -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Sat Sep  1 20:22:55 2001
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Jun 22 15:19:44 2015
+// Update Count     : 1082
+// 
+
+// This grammar is based on the ANSI99/11 C grammar, specifically parts of EXPRESSION and STATEMENTS, and on the C
+// grammar by James A. Roskind, specifically parts of DECLARATIONS and EXTERNAL DEFINITIONS.  While parts have been
+// copied, important changes have been made in all sections; these changes are sufficient to constitute a new grammar.
+// In particular, this grammar attempts to be more syntactically precise, i.e., it parses less incorrect language syntax
+// that must be subsequently rejected by semantic checks.  Nevertheless, there are still several semantic checks
+// required and many are noted in the grammar. Finally, the grammar is extended with GCC and CFA language extensions.
+
+// Acknowledgments to Richard Bilson, Glen Ditchfield, and Rodolfo Gabriel Esteves who all helped when I got stuck with
+// the grammar.
+
+// The root language for this grammar is ANSI99/11 C. All of ANSI99/11 is parsed, except for:
+//
+// 1. designation with '=' (use ':' instead)
+//
+// Most of the syntactic extensions from ANSI90 to ANSI11 C are marked with the comment "C99/C11". This grammar also has
+// two levels of extensions. The first extensions cover most of the GCC C extensions, except for:
+//
+// 1. nested functions
+// 2. generalized lvalues
+// 3. designation with and without '=' (use ':' instead)
+// 4. attributes not allowed in parenthesis of declarator
+//
+// All of the syntactic extensions for GCC C are marked with the comment "GCC". The second extensions are for Cforall
+// (CFA), which fixes several of C's outstanding problems and extends C with many modern language concepts. All of the
+// syntactic extensions for CFA C are marked with the comment "CFA". As noted above, there is one unreconcileable
+// parsing problem between C99 and CFA with respect to designators; this is discussed in detail before the "designation"
+// grammar rule.
+
+%{
+#define YYDEBUG_LEXER_TEXT (yylval)						// lexer loads this up each time
+#define YYDEBUG 1										// get the pretty debugging code to compile
+extern char *yytext;
+
+#undef __GNUC_MINOR__
+
+#include <cstdio>
+#include <stack>
+#include "TypedefTable.h"
+#include "lex.h"
+#include "ParseNode.h"
+#include "LinkageSpec.h"
+
+DeclarationNode *theTree = 0;							// the resulting parse tree
+LinkageSpec::Type linkage = LinkageSpec::Cforall;
+std::stack< LinkageSpec::Type > linkageStack;
+TypedefTable typedefTable;
+%}
+
+//************************* TERMINAL TOKENS ********************************
+
+// keywords
+%token TYPEDEF
+%token AUTO EXTERN REGISTER STATIC
+%token INLINE											// C99
+%token FORTRAN											// C99, extension ISO/IEC 9899:1999 Section J.5.9(1)
+%token CONST VOLATILE
+%token RESTRICT											// C99
+%token FORALL LVALUE									// CFA
+%token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED
+%token BOOL COMPLEX IMAGINARY							// C99
+%token TYPEOF LABEL										// GCC
+%token ENUM STRUCT UNION
+%token TYPE FTYPE DTYPE CONTEXT							// CFA
+%token SIZEOF
+%token ATTRIBUTE EXTENSION								// GCC
+%token IF ELSE SWITCH CASE DEFAULT DO WHILE FOR BREAK CONTINUE GOTO RETURN
+%token CHOOSE FALLTHRU TRY CATCH FINALLY THROW			// CFA
+%token ASM												// C99, extension ISO/IEC 9899:1999 Section J.5.10(1)
+%token ALIGNAS ALIGNOF ATOMIC GENERIC NORETURN STATICASSERT THREADLOCAL // C11
+
+// names and constants: lexer differentiates between identifier and typedef names
+%token<tok> IDENTIFIER			QUOTED_IDENTIFIER		TYPEDEFname				TYPEGENname
+%token<tok> ATTR_IDENTIFIER		ATTR_TYPEDEFname		ATTR_TYPEGENname
+%token<tok> INTEGERconstant		FLOATINGconstant		CHARACTERconstant		STRINGliteral
+%token<tok> ZERO				ONE						// CFA
+
+// multi-character operators
+%token ARROW											// ->
+%token ICR DECR											// ++	--
+%token LS RS											// <<	>>
+%token LE GE EQ NE										// <=	>=	==	!=
+%token ANDAND OROR										// &&	||
+%token ELLIPSIS											// ...
+
+%token MULTassign	DIVassign	MODassign				// *=	/=	%=/
+%token PLUSassign	MINUSassign							// +=	-=
+%token LSassign		RSassign							// <<=	>>=
+%token ANDassign	ERassign	ORassign				// &=	^=	|=
+
+// Types declaration
+%union
+{
+	Token tok;
+	ParseNode *pn;
+	ExpressionNode *en;
+	DeclarationNode *decl;
+	DeclarationNode::Aggregate aggKey;
+	DeclarationNode::TypeClass tclass;
+	StatementNode *sn;
+	ConstantNode *constant;
+	InitializerNode *in;
+}
+
+%type<tok> zero_one  identifier  no_attr_identifier  no_01_identifier
+%type<tok> identifier_or_typedef_name  no_attr_identifier_or_typedef_name  no_01_identifier_or_typedef_name
+%type<constant> string_literal_list
+
+// expressions
+%type<constant> constant
+%type<en> tuple							tuple_expression_list
+%type<en> unary_operator				assignment_operator
+%type<en> primary_expression			postfix_expression			unary_expression
+%type<en> cast_expression				multiplicative_expression	additive_expression			shift_expression
+%type<en> relational_expression			equality_expression			AND_expression				exclusive_OR_expression
+%type<en> inclusive_OR_expression		logical_AND_expression		logical_OR_expression		conditional_expression
+%type<en> constant_expression			assignment_expression		assignment_expression_opt
+%type<en> comma_expression				comma_expression_opt
+%type<en> argument_expression_list		argument_expression			for_control_expression		assignment_opt
+%type<en> subrange
+
+// statements
+%type<sn> labeled_statement				compound_statement			expression_statement		selection_statement
+%type<sn> iteration_statement			jump_statement				exception_statement			asm_statement
+%type<sn> fall_through_opt				fall_through
+%type<sn> statement						statement_list
+%type<sn> block_item_list				block_item
+%type<sn> case_clause
+%type<en> case_value					case_value_list
+%type<sn> case_label					case_label_list
+%type<sn> switch_clause_list_opt		switch_clause_list			choose_clause_list_opt		choose_clause_list
+%type<pn> handler_list					handler_clause				finally_clause
+
+// declarations
+%type<decl> abstract_array abstract_declarator abstract_function abstract_parameter_array
+%type<decl> abstract_parameter_declaration abstract_parameter_declarator abstract_parameter_function
+%type<decl> abstract_parameter_ptr abstract_ptr
+
+%type<aggKey> aggregate_key
+%type<decl>  aggregate_name
+
+%type<decl> array_dimension array_parameter_1st_dimension array_parameter_dimension multi_array_dimension
+
+%type<decl> assertion assertion_list_opt
+
+%type<en>   bit_subrange_size_opt bit_subrange_size
+
+%type<decl> basic_declaration_specifier basic_type_name basic_type_specifier direct_type_name indirect_type_name
+
+%type<decl> context_declaration context_declaration_list context_declaring_list context_specifier
+
+%type<decl> declaration declaration_list declaration_list_opt declaration_qualifier_list
+%type<decl> declaration_specifier declarator declaring_list
+
+%type<decl> elaborated_type_name
+
+%type<decl> enumerator_list enum_name
+%type<en> enumerator_value_opt
+
+%type<decl> exception_declaration external_definition external_definition_list external_definition_list_opt
+
+%type<decl> field_declaration field_declaration_list field_declarator field_declaring_list
+%type<en> field field_list
+
+%type<decl> external_function_definition function_definition function_array function_declarator function_no_ptr function_ptr
+
+%type<decl> identifier_parameter_array identifier_parameter_declarator identifier_parameter_function
+%type<decl> identifier_parameter_ptr identifier_list
+
+%type<decl> new_abstract_array new_abstract_declarator_no_tuple new_abstract_declarator_tuple
+%type<decl> new_abstract_function new_abstract_parameter_declaration new_abstract_parameter_list
+%type<decl> new_abstract_ptr new_abstract_tuple
+
+%type<decl> new_array_parameter_1st_dimension
+
+%type<decl> new_context_declaring_list new_declaration new_field_declaring_list
+%type<decl> new_function_declaration new_function_return new_function_specifier
+
+%type<decl> new_identifier_parameter_array new_identifier_parameter_declarator_no_tuple
+%type<decl> new_identifier_parameter_declarator_tuple new_identifier_parameter_ptr
+
+%type<decl> new_parameter_declaration new_parameter_list new_parameter_type_list new_parameter_type_list_opt
+
+%type<decl> new_typedef_declaration new_variable_declaration new_variable_specifier
+
+%type<decl> old_declaration old_declaration_list old_declaration_list_opt old_function_array
+%type<decl> old_function_declarator old_function_no_ptr old_function_ptr
+
+%type<decl> parameter_declaration parameter_list parameter_type_list
+%type<decl> parameter_type_list_opt
+
+%type<decl> paren_identifier paren_typedef
+
+%type<decl> storage_class storage_class_name storage_class_list
+
+%type<decl> sue_declaration_specifier sue_type_specifier
+
+%type<tclass> type_class
+%type<decl> type_declarator type_declarator_name type_declaring_list
+
+%type<decl> typedef typedef_array typedef_declaration typedef_declaration_specifier typedef_expression
+%type<decl> typedef_function typedef_parameter_array typedef_parameter_function typedef_parameter_ptr
+%type<decl> typedef_parameter_redeclarator typedef_ptr typedef_redeclarator typedef_type_specifier
+%type<decl> typegen_declaration_specifier typegen_type_specifier
+
+%type<decl> type_name type_name_no_function
+%type<decl> type_parameter type_parameter_list
+
+%type<en> type_name_list
+
+%type<decl> type_qualifier type_qualifier_name type_qualifier_list type_qualifier_list_opt type_specifier
+
+%type<decl> variable_abstract_array variable_abstract_declarator variable_abstract_function
+%type<decl> variable_abstract_ptr variable_array variable_declarator variable_function variable_ptr
+
+// initializers
+%type<in>  initializer initializer_list initializer_opt
+
+// designators
+%type<en>  designator designator_list designation
+
+
+// Handle single shift/reduce conflict for dangling else by shifting the ELSE token. For example, this string
+// is ambiguous:
+// .---------.				matches IF '(' comma_expression ')' statement
+// if ( C ) S1 else S2
+// `-----------------'		matches IF '(' comma_expression ')' statement ELSE statement */
+
+%nonassoc THEN	// rule precedence for IF '(' comma_expression ')' statement
+%nonassoc ELSE	// token precedence for start of else clause in IF statement
+
+%start translation_unit									// parse-tree root
+
+%%
+//************************* Namespace Management ********************************
+
+// The grammar in the ANSI C standard is not strictly context-free, since it relies upon the distinct terminal symbols
+// "identifier" and "TYPEDEFname" that are lexically identical.  While it is possible to write a purely context-free
+// grammar, such a grammar would obscure the relationship between syntactic and semantic constructs.  Hence, this
+// grammar uses the ANSI style.
+//
+// Cforall compounds this problem by introducing type names local to the scope of a declaration (for instance, those
+// introduced through "forall" qualifiers), and by introducing "type generators" -- parametrized types.  This latter
+// type name creates a third class of identifiers that must be distinguished by the scanner.
+//
+// Since the scanner cannot distinguish among the different classes of identifiers without some context information, it
+// accesses a data structure (the TypedefTable) to allow classification of an identifier that it has just read.
+// Semantic actions during the parser update this data structure when the class of identifiers change.
+//
+// Because the Cforall language is block-scoped, there is the possibility that an identifier can change its class in a
+// local scope; it must revert to its original class at the end of the block.  Since type names can be local to a
+// particular declaration, each declaration is itself a scope.  This requires distinguishing between type names that are
+// local to the current declaration scope and those that persist past the end of the declaration (i.e., names defined in
+// "typedef" or "type" declarations).
+//
+// The non-terminals "push" and "pop" derive the empty string; their only use is to denote the opening and closing of
+// scopes.  Every push must have a matching pop, although it is regrettable the matching pairs do not always occur
+// within the same rule.  These non-terminals may appear in more contexts than strictly necessary from a semantic point
+// of view.  Unfortunately, these extra rules are necessary to prevent parsing conflicts -- the parser may not have
+// enough context and look-ahead information to decide whether a new scope is necessary, so the effect of these extra
+// rules is to open a new scope unconditionally.  As the grammar evolves, it may be neccesary to add or move around
+// "push" and "pop" nonterminals to resolve conflicts of this sort.
+
+push:
+		{
+			typedefTable.enterScope();
+		}
+	;
+
+pop:
+		{
+			typedefTable.leaveScope();
+		}
+	;
+
+//************************* CONSTANTS ********************************
+
+constant:
+		// ENUMERATIONconstant is not included here; it is treated as a variable with type "enumeration constant".
+	INTEGERconstant								{ $$ = new ConstantNode( ConstantNode::Integer, $1 ); }
+	| FLOATINGconstant							{ $$ = new ConstantNode( ConstantNode::Float, $1 ); }
+	| CHARACTERconstant							{ $$ = new ConstantNode( ConstantNode::Character, $1 ); }
+	;
+
+identifier:
+	IDENTIFIER
+	| ATTR_IDENTIFIER									// CFA
+	| zero_one											// CFA
+	;
+
+no_01_identifier:
+	IDENTIFIER
+	| ATTR_IDENTIFIER									// CFA
+	;
+
+no_attr_identifier:
+	IDENTIFIER
+	;
+
+zero_one:												// CFA
+	ZERO
+	| ONE
+	;
+
+string_literal_list:									// juxtaposed strings are concatenated
+	STRINGliteral								{ $$ = new ConstantNode( ConstantNode::String, $1 ); }
+	| string_literal_list STRINGliteral			{ $$ = $1->appendstr( $2 ); }
+	;
+
+//************************* EXPRESSIONS ********************************
+
+primary_expression:
+	IDENTIFIER											// typedef name cannot be used as a variable name
+		{ $$ = new VarRefNode( $1 ); }
+	| zero_one
+		{ $$ = new VarRefNode( $1 ); }
+	| constant
+		{ $$ = $1; }
+	| string_literal_list
+		{ $$ = $1; }
+	| '(' comma_expression ')'
+		{ $$ = $2; }
+	| '(' compound_statement ')'						// GCC, lambda expression
+		{ $$ = new ValofExprNode( $2 ); }
+	;
+
+postfix_expression:
+	primary_expression
+	| postfix_expression '[' push assignment_expression pop ']'
+		// CFA, comma_expression disallowed in the context because it results in a commom user error: subscripting a
+		// matrix with x[i,j] instead of x[i][j]. While this change is not backwards compatible, there seems to be
+		// little advantage to this feature and many disadvantages. It is possible to write x[(i,j)] in CFA, which is
+		// equivalent to the old x[i,j].
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), $1, $4 ); }
+	| postfix_expression '(' argument_expression_list ')'
+		{ $$ = new CompositeExprNode( $1, $3 ); }
+	| postfix_expression '.' no_attr_identifier
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), $1, new VarRefNode( $3 )); }
+	| postfix_expression '.' '[' push field_list pop ']' // CFA, tuple field selector
+	| postfix_expression ARROW no_attr_identifier
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), $1, new VarRefNode( $3 )); }
+	| postfix_expression ARROW '[' push field_list pop ']' // CFA, tuple field selector
+	| postfix_expression ICR
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), $1 ); }
+	| postfix_expression DECR
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), $1 ); }
+		// GCC has priority: cast_expression
+	| '(' type_name_no_function ')' '{' initializer_list comma_opt '}' // C99
+		{ $$ = 0; }
+	;
+
+argument_expression_list:
+	argument_expression
+	| argument_expression_list ',' argument_expression
+		{ $$ = (ExpressionNode *)( $1->set_link( $3 )); }
+	;
+
+argument_expression:
+	// empty
+		{ $$ = 0; }										// use default argument
+	| assignment_expression
+	| no_attr_identifier ':' assignment_expression
+		{ $$ = $3->set_asArgName( $1 ); }
+		// Only a list of no_attr_identifier_or_typedef_name is allowed in this context. However, there is insufficient
+		// look ahead to distinguish between this list of parameter names and a tuple, so the tuple form must be used
+		// with an appropriate semantic check.
+	| '[' push assignment_expression pop ']' ':' assignment_expression
+		{ $$ = $7->set_asArgName( $3 ); }
+	| '[' push assignment_expression ',' tuple_expression_list pop ']' ':' assignment_expression
+		{ $$ = $9->set_asArgName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)$3->set_link( flattenCommas( $5 )))); }
+	;
+
+field_list:												// CFA, tuple field selector
+	field
+	| field_list ',' field						{ $$ = (ExpressionNode *)$1->set_link( $3 ); }
+	;
+
+field:													// CFA, tuple field selector
+	no_attr_identifier
+		{ $$ = new VarRefNode( $1 ); }
+	| no_attr_identifier '.' field
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( $1 ), $3 ); }
+	| no_attr_identifier '.' '[' push field_list pop ']'
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( $1 ), $5 ); }
+	| no_attr_identifier ARROW field
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( $1 ), $3 ); }
+	| no_attr_identifier ARROW '[' push field_list pop ']'
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( $1 ), $5 ); }
+	;
+
+unary_expression:
+	postfix_expression
+	| ICR unary_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), $2 ); }
+	| DECR unary_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), $2 ); }
+	| EXTENSION cast_expression							// GCC
+		{ $$ = $2; }
+	| unary_operator cast_expression
+		{ $$ = new CompositeExprNode( $1, $2 ); }
+	| '!' cast_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), $2 ); }
+	| '*' cast_expression								// CFA
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), $2 ); }
+		// '*' is is separated from unary_operator because of shift/reduce conflict in:
+		//		{ * X; } // dereference X
+		//		{ * int X; } // CFA declaration of pointer to int
+		// '&' must be moved here if C++ reference variables are supported.
+	| SIZEOF unary_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), $2 ); }
+	| SIZEOF '(' type_name_no_function ')'
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( $3 )); }
+	| ATTR_IDENTIFIER
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 )); }
+	| ATTR_IDENTIFIER '(' type_name ')'
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 ), new TypeValueNode( $3 )); }
+	| ATTR_IDENTIFIER '(' argument_expression ')'
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 ), $3 ); }
+	| ALIGNOF unary_expression							// GCC, variable alignment
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), $2 ); }
+	| ALIGNOF '(' type_name_no_function ')'				// GCC, type alignment
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( $3 )); }
+	| ANDAND no_attr_identifier							// GCC, address of label
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( $2, true )); }
+	;
+
+unary_operator:
+	'&'											{ $$ = new OperatorNode( OperatorNode::AddressOf ); }
+	| '+'										{ $$ = new OperatorNode( OperatorNode::UnPlus ); }
+	| '-'										{ $$ = new OperatorNode( OperatorNode::UnMinus ); }
+	| '~'										{ $$ = new OperatorNode( OperatorNode::BitNeg ); }
+	;
+
+cast_expression:
+	unary_expression
+	| '(' type_name_no_function ')' cast_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( $2 ), $4 ); }
+	| '(' type_name_no_function ')' tuple
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( $2 ), $4 ); }
+	;
+
+multiplicative_expression:
+	cast_expression
+	| multiplicative_expression '*' cast_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), $1, $3 ); }
+	| multiplicative_expression '/' cast_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), $1, $3 ); }
+	| multiplicative_expression '%' cast_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), $1, $3 ); }
+	;
+
+additive_expression:
+	multiplicative_expression
+	| additive_expression '+' multiplicative_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), $1, $3 ); }
+	| additive_expression '-' multiplicative_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), $1, $3 ); }
+	;
+
+shift_expression:
+	additive_expression
+	| shift_expression LS additive_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), $1, $3 ); }
+	| shift_expression RS additive_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), $1, $3 ); }
+	;
+
+relational_expression:
+	shift_expression
+	| relational_expression '<' shift_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), $1, $3 ); }
+	| relational_expression '>' shift_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), $1, $3 ); }
+	| relational_expression LE shift_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), $1, $3 ); }
+	| relational_expression GE shift_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), $1, $3 ); }
+	;
+
+equality_expression:
+	relational_expression
+	| equality_expression EQ relational_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), $1, $3 ); }
+	| equality_expression NE relational_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), $1, $3 ); }
+	;
+
+AND_expression:
+	equality_expression
+	| AND_expression '&' equality_expression
+		{ $$ =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), $1, $3 ); }
+	;
+
+exclusive_OR_expression:
+	AND_expression
+	| exclusive_OR_expression '^' AND_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), $1, $3 ); }
+	;
+
+inclusive_OR_expression:
+	exclusive_OR_expression
+	| inclusive_OR_expression '|' exclusive_OR_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), $1, $3 ); }
+	;
+
+logical_AND_expression:
+	inclusive_OR_expression
+	| logical_AND_expression ANDAND inclusive_OR_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::And ), $1, $3 ); }
+	;
+
+logical_OR_expression:
+	logical_AND_expression
+	| logical_OR_expression OROR logical_AND_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), $1, $3 ); }
+	;
+
+conditional_expression:
+	logical_OR_expression
+	| logical_OR_expression '?' comma_expression ':' conditional_expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*$1, *$3, *$5 ) ) ); }
+	| logical_OR_expression '?' /* empty */ ':' conditional_expression // GCC, omitted first operand
+		{ $$=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), $1, $4 ); }
+	| logical_OR_expression '?' comma_expression ':' tuple // CFA, tuple expression
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*$1, *$3, *$5 ) ) ); }
+	;
+
+constant_expression:
+	conditional_expression
+	;
+
+assignment_expression:
+		// CFA, assignment is separated from assignment_operator to ensure no assignment operations for tuples
+	conditional_expression
+	| unary_expression '=' assignment_expression
+		{ $$ =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), $1, $3 ); }
+	| unary_expression assignment_operator assignment_expression
+		{ $$ =new CompositeExprNode( $2, $1, $3 ); }
+	| tuple assignment_opt								// CFA, tuple expression
+		{ $$ = ( $2 == 0 ) ? $1 : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), $1, $2 ); }
+	;
+
+assignment_expression_opt:
+	// empty
+		{ $$ = new NullExprNode; }
+	| assignment_expression
+	;
+
+tuple:													// CFA, tuple
+		// CFA, one assignment_expression is factored out of comma_expression to eliminate a shift/reduce conflict with
+		// comma_expression in new_identifier_parameter_array and new_abstract_array
+	'[' push pop ']'
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
+	| '[' push assignment_expression pop ']'
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), $3 ); }
+	| '[' push ',' tuple_expression_list pop ']'
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( $4 ) ); }
+	| '[' push assignment_expression ',' tuple_expression_list pop ']'
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)$3->set_link( flattenCommas( $5 ) ) ); }
+	;
+
+tuple_expression_list:
+	assignment_expression_opt
+	| tuple_expression_list ',' assignment_expression_opt
+		{ $$ = (ExpressionNode *)$1->set_link( $3 ); }
+	;
+
+assignment_operator:
+	MULTassign									{ $$ = new OperatorNode( OperatorNode::MulAssn ); }
+	| DIVassign									{ $$ = new OperatorNode( OperatorNode::DivAssn ); }
+	| MODassign									{ $$ = new OperatorNode( OperatorNode::ModAssn ); }
+	| PLUSassign								{ $$ = new OperatorNode( OperatorNode::PlusAssn ); }
+	| MINUSassign								{ $$ = new OperatorNode( OperatorNode::MinusAssn ); }
+	| LSassign									{ $$ = new OperatorNode( OperatorNode::LSAssn ); }
+	| RSassign									{ $$ = new OperatorNode( OperatorNode::RSAssn ); }
+	| ANDassign									{ $$ = new OperatorNode( OperatorNode::AndAssn ); }
+	| ERassign									{ $$ = new OperatorNode( OperatorNode::ERAssn ); }
+	| ORassign									{ $$ = new OperatorNode( OperatorNode::OrAssn ); }
+	;
+
+comma_expression:
+	assignment_expression
+	| comma_expression ',' assignment_expression	// { $$ = (ExpressionNode *)$1->add_to_list( $3 ); }
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), $1, $3 ); }
+	;
+
+comma_expression_opt:
+	// empty
+		{ $$ = 0; }
+	| comma_expression
+	;
+
+//*************************** STATEMENTS *******************************
+
+statement:
+	labeled_statement
+	| compound_statement
+	| expression_statement						{ $$ = $1; }
+	| selection_statement
+	| iteration_statement
+	| jump_statement
+	| exception_statement
+	| asm_statement
+	;
+
+labeled_statement:
+	no_attr_identifier ':' attribute_list_opt statement
+		{ $$ = $4->add_label( $1 );}
+	;
+
+compound_statement:
+	'{' '}'
+		{ $$ = new CompoundStmtNode( (StatementNode *)0 ); }
+	| '{'
+		// Two scopes are necessary because the block itself has a scope, but every declaration within the block also
+		// requires its own scope
+	  push push
+	  label_declaration_opt								// GCC, local labels
+	  block_item_list pop '}'							// C99, intermix declarations and statements
+		{ $$ = new CompoundStmtNode( $5 ); }
+	;
+
+block_item_list:										// C99
+	block_item
+	| block_item_list push block_item
+		{ if ( $1 != 0 ) { $1->set_link( $3 ); $$ = $1; } }
+	;
+
+block_item:
+	declaration											// CFA, new & old style declarations
+		{ $$ = new StatementNode( $1 ); }
+	| EXTENSION declaration								// GCC
+		{ $$ = new StatementNode( $2 ); }
+	| function_definition
+		{ $$ = new StatementNode( $1 ); }
+	| statement pop
+	;
+
+statement_list:
+	statement
+	| statement_list statement
+		{ if ( $1 != 0 ) { $1->set_link( $2 ); $$ = $1; } }
+	;
+
+expression_statement:
+	comma_expression_opt ';'
+		{ $$ = new StatementNode( StatementNode::Exp, $1, 0 ); }
+	;
+
+selection_statement:
+	IF '(' comma_expression ')' statement				%prec THEN
+		// explicitly deal with the shift/reduce conflict on if/else
+		{ $$ = new StatementNode( StatementNode::If, $3, $5 ); }
+	| IF '(' comma_expression ')' statement ELSE statement
+		{ $$ = new StatementNode( StatementNode::If, $3, (StatementNode *)mkList((*$5, *$7 )) ); }
+	| SWITCH '(' comma_expression ')' case_clause		// CFA
+		{ $$ = new StatementNode( StatementNode::Switch, $3, $5 ); }
+	| SWITCH '(' comma_expression ')' '{' push declaration_list_opt switch_clause_list_opt '}' // CFA
+		{ $$ = new StatementNode( StatementNode::Switch, $3, $8 ); /* xxx */ }
+		// The semantics of the declaration list is changed to include any associated initialization, which is performed
+		// *before* the transfer to the appropriate case clause.  Statements after the initial declaration list can
+		// never be executed, and therefore, are removed from the grammar even though C allows it.
+	| CHOOSE '(' comma_expression ')' case_clause		// CFA
+		{ $$ = new StatementNode( StatementNode::Choose, $3, $5 ); }
+	| CHOOSE '(' comma_expression ')' '{' push declaration_list_opt choose_clause_list_opt '}' // CFA
+		{ $$ = new StatementNode( StatementNode::Choose, $3, $8 ); }
+	;
+
+// CASE and DEFAULT clauses are only allowed in the SWITCH statement, precluding Duff's device. In addition, a case
+// clause allows a list of values and subranges.
+
+case_value:												// CFA
+	constant_expression							{ $$ = $1; }
+	| constant_expression ELLIPSIS constant_expression	// GCC, subrange
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), $1, $3 ); }
+	| subrange											// CFA, subrange
+	;
+
+case_value_list:										// CFA
+	case_value
+	| case_value_list ',' case_value
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( $1 ))->set_link( $3 ) ); }
+	;
+
+case_label:												// CFA
+	CASE case_value_list ':'					{ $$ = new StatementNode( StatementNode::Case, $2, 0 ); }
+	| DEFAULT ':'								{ $$ = new StatementNode( StatementNode::Default ); }
+		// A semantic check is required to ensure only one default clause per switch/choose statement.
+	;
+
+case_label_list:										// CFA
+	case_label
+	| case_label_list case_label				{ $$ = (StatementNode *)( $1->set_link( $2 )); }
+	;
+
+case_clause:											// CFA
+	case_label_list statement					{ $$ = $1->append_last_case( $2 ); }
+	;
+
+switch_clause_list_opt:									// CFA
+	// empty
+		{ $$ = 0; }
+	| switch_clause_list
+	;
+
+switch_clause_list:										// CFA
+	case_label_list statement_list
+		{ $$ = $1->append_last_case( $2 ); }
+	| switch_clause_list case_label_list statement_list
+		{ $$ = (StatementNode *)( $1->set_link( $2->append_last_case( $3 ))); }
+	;
+
+choose_clause_list_opt:									// CFA
+	// empty
+		{ $$ = 0; }
+	| choose_clause_list
+	;
+
+choose_clause_list:										// CFA
+	case_label_list fall_through
+		{ $$ = $1->append_last_case( $2 ); }
+	| case_label_list statement_list fall_through_opt
+		{ $$ = $1->append_last_case((StatementNode *)mkList((*$2,*$3 ))); }
+	| choose_clause_list case_label_list fall_through
+		{ $$ = (StatementNode *)( $1->set_link( $2->append_last_case( $3 ))); }
+	| choose_clause_list case_label_list statement_list fall_through_opt
+		{ $$ = (StatementNode *)( $1->set_link( $2->append_last_case((StatementNode *)mkList((*$3,*$4 ))))); }
+	;
+
+fall_through_opt:										// CFA
+	// empty
+		{ $$ = 0; }
+	| fall_through
+	;
+
+fall_through:											// CFA
+	FALLTHRU									{ $$ = new StatementNode( StatementNode::Fallthru, 0, 0 ); }
+	| FALLTHRU ';'								{ $$ = new StatementNode( StatementNode::Fallthru, 0, 0 ); }
+	;
+
+iteration_statement:
+	WHILE '(' comma_expression ')' statement
+		{ $$ = new StatementNode( StatementNode::While, $3, $5 ); }
+	| DO statement WHILE '(' comma_expression ')' ';'
+		{ $$ = new StatementNode( StatementNode::Do, $5, $2 ); }
+	| FOR '(' push for_control_expression ')' statement
+		{ $$ = new StatementNode( StatementNode::For, $4, $6 ); }
+	;
+
+for_control_expression:
+	comma_expression_opt pop ';' comma_expression_opt ';' comma_expression_opt
+		{ $$ = new ForCtlExprNode( $1, $4, $6 ); }
+	| declaration comma_expression_opt ';' comma_expression_opt // C99
+		{ $$ = new ForCtlExprNode( $1, $2, $4 ); }
+	;
+
+jump_statement:
+	GOTO no_attr_identifier ';'
+		{ $$ = new StatementNode( StatementNode::Goto, $2 ); }
+	| GOTO '*' comma_expression ';'						// GCC, computed goto
+		// The syntax for the GCC computed goto violates normal expression precedence, e.g., goto *i+3; => goto *(i+3 );
+		// whereas normal operator precedence yields goto (*i)+3;
+		{ $$ = new StatementNode( StatementNode::Goto, $3 ); }
+	| CONTINUE ';'
+		// A semantic check is required to ensure this statement appears only in the body of an iteration statement.
+		{ $$ = new StatementNode( StatementNode::Continue, 0, 0 ); }
+	| CONTINUE no_attr_identifier ';'					// CFA, multi-level continue
+		// A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
+		// the target of the transfer appears only at the start of an iteration statement.
+		{ $$ = new StatementNode( StatementNode::Continue, $2 ); }
+	| BREAK ';'
+		// A semantic check is required to ensure this statement appears only in the body of an iteration statement.
+		{ $$ = new StatementNode( StatementNode::Break, 0, 0 ); }
+	| BREAK no_attr_identifier ';'						// CFA, multi-level exit
+		// A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
+		// the target of the transfer appears only at the start of an iteration statement.
+		{ $$ = new StatementNode( StatementNode::Break, $2 ); }
+	| RETURN comma_expression_opt ';'
+		{ $$ = new StatementNode( StatementNode::Return, $2, 0 ); }
+	| THROW assignment_expression ';'
+		{ $$ = new StatementNode( StatementNode::Throw, $2, 0 ); }
+	| THROW ';'
+		{ $$ = new StatementNode( StatementNode::Throw, 0, 0 ); }
+	;
+
+exception_statement:
+	TRY compound_statement handler_list
+		{ $$ = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3 )))); }
+	| TRY compound_statement finally_clause
+		{ $$ = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3 )))); }
+	| TRY compound_statement handler_list finally_clause
+		{
+			$3->set_link( $4 );
+			$$ = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3 ))));
+		}
+	;
+
+handler_list:
+		// There must be at least one catch clause
+	handler_clause
+		// ISO/IEC 9899:1999 Section 15.3(6 ) If present, a "..." handler shall be the last handler for its try block.
+	| CATCH '(' ELLIPSIS ')' compound_statement
+		{ $$ = StatementNode::newCatchStmt( 0, $5, true ); }
+	| handler_clause CATCH '(' ELLIPSIS ')' compound_statement
+		{ $$ = $1->set_link( StatementNode::newCatchStmt( 0, $6, true ) ); }
+	;
+
+handler_clause:
+	CATCH '(' push push exception_declaration pop ')' compound_statement pop
+		{ $$ = StatementNode::newCatchStmt( $5, $8 ); }
+	| handler_clause CATCH '(' push push exception_declaration pop ')' compound_statement pop
+		{ $$ = $1->set_link( StatementNode::newCatchStmt( $6, $9 ) ); }
+	;
+
+finally_clause:
+	FINALLY compound_statement
+		{
+			$$ = new StatementNode( StatementNode::Finally, 0, $2 );
+			std::cout << "Just created a finally node" << std::endl;
+		}
+	;
+
+exception_declaration:
+		// A semantic check is required to ensure type_specifier does not create a new type, e.g.:
+		//
+		//		catch ( struct { int i; } x ) ...
+		//
+		// This new type cannot catch any thrown type because of name equivalence among types.
+	type_specifier
+	| type_specifier declarator
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			$$ = $2->addType( $1 );
+		}
+	| type_specifier variable_abstract_declarator
+		{ $$ = $2->addType( $1 ); }
+	| new_abstract_declarator_tuple no_attr_identifier	// CFA
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			$$ = $1->addName( $2 );
+		}
+	| new_abstract_declarator_tuple						// CFA
+	;
+
+asm_statement:
+	ASM type_qualifier_list_opt '(' constant_expression ')' ';'
+		{ $$ = new StatementNode( StatementNode::Asm, 0, 0 ); }
+	| ASM type_qualifier_list_opt '(' constant_expression ':' asm_operands_opt ')' ';' // remaining GCC
+		{ $$ = new StatementNode( StatementNode::Asm, 0, 0 ); }
+	| ASM type_qualifier_list_opt '(' constant_expression ':' asm_operands_opt ':' asm_operands_opt ')' ';'
+		{ $$ = new StatementNode( StatementNode::Asm, 0, 0 ); }
+	| ASM type_qualifier_list_opt '(' constant_expression ':' asm_operands_opt ':' asm_operands_opt ':' asm_clobbers_list ')' ';'
+		{ $$ = new StatementNode( StatementNode::Asm, 0, 0 ); }
+	;
+
+asm_operands_opt:										// GCC
+	// empty
+	| asm_operands_list
+	;
+
+asm_operands_list:										// GCC
+	asm_operand
+	| asm_operands_list ',' asm_operand
+	;
+
+asm_operand:											// GCC
+	STRINGliteral '(' constant_expression ')'	{}
+	;
+
+asm_clobbers_list:										// GCC
+	STRINGliteral								{}
+	| asm_clobbers_list ',' STRINGliteral
+	;
+
+//******************************* DECLARATIONS *********************************
+
+declaration_list_opt:									// used at beginning of switch statement
+	pop
+		{ $$ = 0; }
+	| declaration_list
+	;
+
+declaration_list:
+	declaration
+	| declaration_list push declaration
+		{ $$ = $1->appendList( $3 ); }
+	;
+
+old_declaration_list_opt:								// used to declare parameter types in K&R style functions
+	pop
+		{ $$ = 0; }
+	| old_declaration_list
+	;
+
+old_declaration_list:
+	old_declaration
+	| old_declaration_list push old_declaration
+		{ $$ = $1->appendList( $3 ); }
+	;
+
+label_declaration_opt:									// GCC, local label
+	// empty
+	| label_declaration_list
+	;
+
+label_declaration_list:									// GCC, local label
+	LABEL label_list ';'
+	| label_declaration_list LABEL label_list ';'
+	;
+
+label_list:												// GCC, local label
+	no_attr_identifier_or_typedef_name			{}
+	| label_list ',' no_attr_identifier_or_typedef_name {}
+	;
+
+declaration:											// CFA, new & old style declarations
+	new_declaration
+	| old_declaration
+	;
+
+// C declaration syntax is notoriously confusing and error prone. Cforall provides its own type, variable and function
+// declarations. CFA declarations use the same declaration tokens as in C; however, CFA places declaration modifiers to
+// the left of the base type, while C declarations place modifiers to the right of the base type. CFA declaration
+// modifiers are interpreted from left to right and the entire type specification is distributed across all variables in
+// the declaration list (as in Pascal).  ANSI C and the new CFA declarations may appear together in the same program
+// block, but cannot be mixed within a specific declaration.
+//
+//			CFA					C
+//		[10] int x;			int x[10];		// array of 10 integers
+//		[10] * char y;		char *y[10];	// array of 10 pointers to char
+
+new_declaration:										// CFA
+	new_variable_declaration pop ';'
+	| new_typedef_declaration pop ';'
+	| new_function_declaration pop ';'
+	| type_declaring_list pop ';'
+	| context_specifier pop ';'
+	;
+
+new_variable_declaration:								// CFA
+	new_variable_specifier initializer_opt
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			$$ = $1;
+		}
+	| declaration_qualifier_list new_variable_specifier initializer_opt
+		// declaration_qualifier_list also includes type_qualifier_list, so a semantic check is necessary to preclude
+		// them as a type_qualifier cannot appear in that context.
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			$$ = $2->addQualifiers( $1 );
+		}
+	| new_variable_declaration pop ',' push identifier_or_typedef_name initializer_opt
+		{
+			typedefTable.addToEnclosingScope( *$5, TypedefTable::ID );
+			$$ = $1->appendList( $1->cloneType( $5 ) );
+		}
+	;
+
+new_variable_specifier:									// CFA
+		// A semantic check is required to ensure asm_name only appears on declarations with implicit or explicit static
+		// storage-class
+	new_abstract_declarator_no_tuple identifier_or_typedef_name asm_name_opt
+		{
+			typedefTable.setNextIdentifier( *$2 );
+			$$ = $1->addName( $2 );
+		}
+	| new_abstract_tuple identifier_or_typedef_name asm_name_opt
+		{
+			typedefTable.setNextIdentifier( *$2 );
+			$$ = $1->addName( $2 );
+		}
+	| type_qualifier_list new_abstract_tuple identifier_or_typedef_name asm_name_opt
+		{
+			typedefTable.setNextIdentifier( *$3 );
+			$$ = $2->addQualifiers( $1 )->addName( $3 );
+		}
+	;
+
+new_function_declaration:								// CFA
+	new_function_specifier
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			$$ = $1;
+		}
+	| type_qualifier_list new_function_specifier
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			$$ = $2->addQualifiers( $1 );
+		}
+	| declaration_qualifier_list new_function_specifier
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			$$ = $2->addQualifiers( $1 );
+		}
+	| declaration_qualifier_list type_qualifier_list new_function_specifier
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			$$ = $3->addQualifiers( $1 )->addQualifiers( $2 );
+		}
+	| new_function_declaration pop ',' push identifier_or_typedef_name
+		{
+			typedefTable.addToEnclosingScope( *$5, TypedefTable::ID );
+			$$ = $1->appendList( $1->cloneType( $5 ) );
+		}
+	;
+
+new_function_specifier:									// CFA
+	'[' push pop ']' identifier '(' push new_parameter_type_list_opt pop ')'
+		{
+			typedefTable.setNextIdentifier( *( $5 ) );
+			$$ = DeclarationNode::newFunction( $5, DeclarationNode::newTuple( 0 ), $8, 0, true );
+		}
+	| '[' push pop ']' TYPEDEFname '(' push new_parameter_type_list_opt pop ')'
+		{
+			typedefTable.setNextIdentifier( *( $5 ) );
+			$$ = DeclarationNode::newFunction( $5, DeclarationNode::newTuple( 0 ), $8, 0, true );
+		}
+		// identifier_or_typedef_name must be broken apart because of the sequence:
+		//
+		//   '[' ']' identifier_or_typedef_name '(' new_parameter_type_list_opt ')'
+		//   '[' ']' type_specifier
+		//
+		// type_specifier can resolve to just TYPEDEFname (e.g. typedef int T; int f( T );). Therefore this must be
+		// flattened to allow lookahead to the '(' without having to reduce identifier_or_typedef_name.
+	| new_abstract_tuple identifier_or_typedef_name '(' push new_parameter_type_list_opt pop ')'
+		// To obtain LR(1 ), this rule must be factored out from function return type (see new_abstract_declarator).
+		{
+			$$ = DeclarationNode::newFunction( $2, $1, $5, 0, true );
+		}
+	| new_function_return identifier_or_typedef_name '(' push new_parameter_type_list_opt pop ')'
+		{
+			$$ = DeclarationNode::newFunction( $2, $1, $5, 0, true );
+		}
+	;
+
+new_function_return:									// CFA
+	'[' push new_parameter_list pop ']'
+		{ $$ = DeclarationNode::newTuple( $3 ); }
+	| '[' push new_parameter_list pop ',' push new_abstract_parameter_list pop ']'
+		// To obtain LR(1 ), the last new_abstract_parameter_list is added into this flattened rule to lookahead to the
+		// ']'.
+		{ $$ = DeclarationNode::newTuple( $3->appendList( $7 ) ); }
+	;
+
+new_typedef_declaration:								// CFA
+	TYPEDEF new_variable_specifier
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::TD );
+			$$ = $2->addTypedef();
+		}
+	| TYPEDEF new_function_specifier
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::TD );
+			$$ = $2->addTypedef();
+		}
+	| new_typedef_declaration pop ',' push no_attr_identifier
+		{
+			typedefTable.addToEnclosingScope( *$5, TypedefTable::TD );
+			$$ = $1->appendList( $1->cloneType( $5 ) );
+		}
+	;
+
+// Traditionally typedef is part of storage-class specifier for syntactic convenience only. Here, it is factored out as
+// a separate form of declaration, which syntactically precludes storage-class specifiers and initialization.
+
+typedef_declaration:
+	TYPEDEF type_specifier declarator
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::TD );
+			$$ = $3->addType( $2 )->addTypedef();
+		}
+	| typedef_declaration pop ',' push declarator
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::TD );
+			$$ = $1->appendList( $1->cloneBaseType( $5 )->addTypedef() );
+		}
+	| type_qualifier_list TYPEDEF type_specifier declarator // remaining OBSOLESCENT (see 2 )
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::TD );
+			$$ = $4->addType( $3 )->addQualifiers( $1 )->addTypedef();
+		}
+	| type_specifier TYPEDEF declarator
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::TD );
+			$$ = $3->addType( $1 )->addTypedef();
+		}
+	| type_specifier TYPEDEF type_qualifier_list declarator
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::TD );
+			$$ = $4->addQualifiers( $1 )->addTypedef()->addType( $1 );
+		}
+	;
+
+typedef_expression:										// GCC, naming expression type
+	TYPEDEF no_attr_identifier '=' assignment_expression
+		{
+			typedefTable.addToEnclosingScope( *$2, TypedefTable::TD );
+			$$ = DeclarationNode::newName( 0 ); // XXX
+		}
+	| typedef_expression pop ',' push no_attr_identifier '=' assignment_expression
+		{
+			typedefTable.addToEnclosingScope( *$5, TypedefTable::TD );
+			$$ = DeclarationNode::newName( 0 ); // XXX
+		}
+	;
+
+old_declaration:
+	declaring_list pop ';'
+	| typedef_declaration pop ';'
+	| typedef_expression pop ';'						// GCC, naming expression type
+	| sue_declaration_specifier pop ';'
+	;
+
+declaring_list:
+		// A semantic check is required to ensure asm_name only appears on declarations with implicit or explicit static
+		// storage-class
+	declaration_specifier declarator asm_name_opt initializer_opt
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			$$ = ( $2->addType( $1 ))->addInitializer( $4 );
+		}
+	| declaring_list ',' attribute_list_opt declarator asm_name_opt initializer_opt
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			$$ = $1->appendList( $1->cloneBaseType( $4->addInitializer( $6 ) ) );
+		}
+	;
+
+declaration_specifier:									// type specifier + storage class
+	basic_declaration_specifier
+	| sue_declaration_specifier
+	| typedef_declaration_specifier
+	| typegen_declaration_specifier
+	;
+
+type_specifier:											// declaration specifier - storage class
+	basic_type_specifier
+	| sue_type_specifier
+	| typedef_type_specifier
+	| typegen_type_specifier
+	;
+
+type_qualifier_list_opt:								// GCC, used in asm_statement
+	// empty
+		{ $$ = 0; }
+	| type_qualifier_list
+	;
+
+type_qualifier_list:
+		// A semantic check is necessary to ensure a type qualifier is appropriate for the kind of declaration.
+		//
+		// ISO/IEC 9899:1999 Section 6.7.3(4 ) : If the same qualifier appears more than once in the same
+		// specifier-qualifier-list, either directly or via one or more typedefs, the behavior is the same as if it
+		// appeared only once.
+	type_qualifier
+	| type_qualifier_list type_qualifier
+		{ $$ = $1->addQualifiers( $2 ); }
+	;
+
+type_qualifier:
+	type_qualifier_name
+	| attribute
+		{ $$ = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
+	;
+
+type_qualifier_name:
+	CONST
+		{ $$ = DeclarationNode::newQualifier( DeclarationNode::Const ); }
+	| RESTRICT
+		{ $$ = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
+	| VOLATILE
+		{ $$ = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
+	| LVALUE											// CFA
+		{ $$ = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
+	| ATOMIC
+		{ $$ = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
+	| FORALL '('
+		{
+			typedefTable.enterScope();
+		}
+	  type_parameter_list ')'							// CFA
+		{
+			typedefTable.leaveScope();
+			$$ = DeclarationNode::newForall( $4 );
+		}
+	;
+
+declaration_qualifier_list:
+	storage_class_list
+	| type_qualifier_list storage_class_list			// remaining OBSOLESCENT (see 2 )
+		{ $$ = $1->addQualifiers( $2 ); }
+	| declaration_qualifier_list type_qualifier_list storage_class_list
+		{ $$ = $1->addQualifiers( $2 )->addQualifiers( $3 ); }
+	;
+
+storage_class_list:
+		// A semantic check is necessary to ensure a storage class is appropriate for the kind of declaration and that
+		// only one of each is specified, except for inline, which can appear with the others.
+		//
+		// ISO/IEC 9899:1999 Section 6.7.1(2) : At most, one storage-class specifier may be given in the declaration
+		// specifiers in a declaration.
+	storage_class
+	| storage_class_list storage_class
+		{ $$ = $1->addQualifiers( $2 ); }
+	;
+
+storage_class:
+	storage_class_name
+	;
+
+storage_class_name:
+	EXTERN
+		{ $$ = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
+	| STATIC
+		{ $$ = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
+	| AUTO
+		{ $$ = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
+	| REGISTER
+		{ $$ = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
+	| INLINE											// C99
+		{ $$ = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
+	| FORTRAN											// C99
+		{ $$ = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
+	| NORETURN											// C11
+		{ $$ = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
+	| THREADLOCAL										// C11
+		{ $$ = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
+	;
+
+basic_type_name:
+	CHAR
+		{ $$ = DeclarationNode::newBasicType( DeclarationNode::Char ); }
+	| DOUBLE
+		{ $$ = DeclarationNode::newBasicType( DeclarationNode::Double ); }
+	| FLOAT
+		{ $$ = DeclarationNode::newBasicType( DeclarationNode::Float ); }
+	| INT
+		{ $$ = DeclarationNode::newBasicType( DeclarationNode::Int ); }
+	| LONG
+		{ $$ = DeclarationNode::newModifier( DeclarationNode::Long ); }
+	| SHORT
+		{ $$ = DeclarationNode::newModifier( DeclarationNode::Short ); }
+	| SIGNED
+		{ $$ = DeclarationNode::newModifier( DeclarationNode::Signed ); }
+	| UNSIGNED
+		{ $$ = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
+	| VOID
+		{ $$ = DeclarationNode::newBasicType( DeclarationNode::Void ); }
+	| BOOL												// C99
+		{ $$ = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
+	| COMPLEX											// C99
+		{ $$ = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
+	| IMAGINARY											// C99
+		{ $$ = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
+	;
+
+basic_declaration_specifier:
+		// A semantic check is necessary for conflicting storage classes.
+	basic_type_specifier
+	| declaration_qualifier_list basic_type_specifier
+		{ $$ = $2->addQualifiers( $1 ); }
+	| basic_declaration_specifier storage_class			// remaining OBSOLESCENT (see 2)
+		{ $$ = $1->addQualifiers( $2 ); }
+	| basic_declaration_specifier storage_class type_qualifier_list
+		{ $$ = $1->addQualifiers( $2 )->addQualifiers( $3 ); }
+	| basic_declaration_specifier storage_class basic_type_specifier
+		{ $$ = $3->addQualifiers( $2 )->addType( $1 ); }
+	;
+
+basic_type_specifier:
+	direct_type_name
+	| type_qualifier_list_opt indirect_type_name type_qualifier_list_opt
+		{ $$ = $2->addQualifiers( $1 )->addQualifiers( $3 ); }
+	;
+
+direct_type_name:
+		// A semantic check is necessary for conflicting type qualifiers.
+	basic_type_name
+	| type_qualifier_list basic_type_name
+		{ $$ = $2->addQualifiers( $1 ); }
+	| direct_type_name type_qualifier
+		{ $$ = $1->addQualifiers( $2 ); }
+	| direct_type_name basic_type_name
+		{ $$ = $1->addType( $2 ); }
+	;
+
+indirect_type_name:
+	TYPEOF '(' type_name ')'							// GCC: typeof(x) y;
+		{ $$ = $3; }
+	| TYPEOF '(' comma_expression ')'					// GCC: typeof(a+b) y;
+		{ $$ = DeclarationNode::newTypeof( $3 ); }
+	| ATTR_TYPEGENname '(' type_name ')'				// CFA: e.g., @type(x) y;
+		{ $$ = DeclarationNode::newAttr( $1, $3 ); }
+	| ATTR_TYPEGENname '(' comma_expression ')'			// CFA: e.g., @type(a+b) y;
+		{ $$ = DeclarationNode::newAttr( $1, $3 ); }
+	;
+
+sue_declaration_specifier:
+	sue_type_specifier
+	| declaration_qualifier_list sue_type_specifier
+		{ $$ = $2->addQualifiers( $1 ); }
+	| sue_declaration_specifier storage_class			// remaining OBSOLESCENT (see 2)
+		{ $$ = $1->addQualifiers( $2 ); }
+	| sue_declaration_specifier storage_class type_qualifier_list
+		{ $$ = $1->addQualifiers( $2 )->addQualifiers( $3 ); }
+	;
+
+sue_type_specifier:
+	elaborated_type_name								// struct, union, enum
+	| type_qualifier_list elaborated_type_name
+		{ $$ = $2->addQualifiers( $1 ); }
+	| sue_type_specifier type_qualifier
+		{ $$ = $1->addQualifiers( $2 ); }
+	;
+
+typedef_declaration_specifier:
+	typedef_type_specifier
+	| declaration_qualifier_list typedef_type_specifier
+		{ $$ = $2->addQualifiers( $1 ); }
+	| typedef_declaration_specifier storage_class		// remaining OBSOLESCENT (see 2)
+		{ $$ = $1->addQualifiers( $2 ); }
+	| typedef_declaration_specifier storage_class type_qualifier_list
+		{ $$ = $1->addQualifiers( $2 )->addQualifiers( $3 ); }
+	;
+
+typedef_type_specifier:									// typedef types
+	TYPEDEFname
+		{ $$ = DeclarationNode::newFromTypedef( $1 ); }
+	| type_qualifier_list TYPEDEFname
+		{ $$ = DeclarationNode::newFromTypedef( $2 )->addQualifiers( $1 ); }
+	| typedef_type_specifier type_qualifier
+		{ $$ = $1->addQualifiers( $2 ); }
+	;
+
+elaborated_type_name:
+	aggregate_name
+	| enum_name
+	;
+
+aggregate_name:
+	aggregate_key '{' field_declaration_list '}'
+		{ $$ = DeclarationNode::newAggregate( $1, 0, 0, 0, $3 ); }
+	| aggregate_key no_attr_identifier_or_typedef_name
+		{ $$ = DeclarationNode::newAggregate( $1, $2, 0, 0, 0 ); }
+	| aggregate_key no_attr_identifier_or_typedef_name '{' field_declaration_list '}'
+		{ $$ = DeclarationNode::newAggregate( $1, $2, 0, 0, $4 ); }
+	| aggregate_key '(' push type_parameter_list pop ')' '{' field_declaration_list '}' // CFA
+		{ $$ = DeclarationNode::newAggregate( $1, 0, $4, 0, $8 ); }
+	| aggregate_key '(' push type_parameter_list pop ')' no_attr_identifier_or_typedef_name // CFA
+		{ $$ = DeclarationNode::newAggregate( $1, $7, $4, 0, 0 ); }
+	| aggregate_key '(' push type_parameter_list pop ')' no_attr_identifier_or_typedef_name '{' field_declaration_list '}' // CFA
+		{ $$ = DeclarationNode::newAggregate( $1, $7, $4, 0, $9 ); }
+	| aggregate_key '(' push type_parameter_list pop ')' '(' type_name_list ')' '{' field_declaration_list '}' // CFA
+		{ $$ = DeclarationNode::newAggregate( $1, 0, $4, $8, $11 ); }
+	| aggregate_key TYPEGENname '(' type_name_list ')' // CFA
+		{}
+	| aggregate_key '(' push type_name_list pop ')' no_attr_identifier_or_typedef_name // CFA
+		// push and pop are only to prevent S/R conflicts
+		{ $$ = DeclarationNode::newAggregate( $1, $7, 0, $4, 0 ); }
+	| aggregate_key '(' push type_parameter_list pop ')' '(' type_name_list ')' no_attr_identifier_or_typedef_name '{' field_declaration_list '}' // CFA
+		{ $$ = DeclarationNode::newAggregate( $1, $10, $4, $8, $12 ); }
+	;
+
+aggregate_key:
+	STRUCT attribute_list_opt
+		{ $$ = DeclarationNode::Struct; }
+	| UNION attribute_list_opt
+		{ $$ = DeclarationNode::Union; }
+	;
+
+field_declaration_list:
+	field_declaration
+		{ $$ = $1; }
+	| field_declaration_list field_declaration
+		{ $$ = $1->appendList( $2 ); }
+	;
+
+field_declaration:
+	new_field_declaring_list ';'						// CFA, new style field declaration
+	| EXTENSION new_field_declaring_list ';'			// GCC
+		{ $$ = $2; }
+	| field_declaring_list ';'
+	| EXTENSION field_declaring_list ';'				// GCC
+		{ $$ = $2; }
+	;
+
+new_field_declaring_list:								// CFA, new style field declaration
+	new_abstract_declarator_tuple						// CFA, no field name
+	| new_abstract_declarator_tuple no_attr_identifier_or_typedef_name
+		{ $$ = $1->addName( $2 ); }
+	| new_field_declaring_list ',' no_attr_identifier_or_typedef_name
+		{ $$ = $1->appendList( $1->cloneType( $3 ) ); }
+	| new_field_declaring_list ','						// CFA, no field name
+		{ $$ = $1->appendList( $1->cloneType( 0 ) ); }
+	;
+
+field_declaring_list:
+	type_specifier field_declarator
+		{ $$ = $2->addType( $1 ); }
+	| field_declaring_list ',' attribute_list_opt field_declarator
+		{ $$ = $1->appendList( $1->cloneBaseType( $4 ) ); }
+	;
+
+field_declarator:
+	// empty
+		{ $$ = DeclarationNode::newName( 0 ); /* XXX */ } // CFA, no field name
+	| bit_subrange_size									// no field name
+		{ $$ = DeclarationNode::newBitfield( $1 ); }
+	| variable_declarator bit_subrange_size_opt
+		// A semantic check is required to ensure bit_subrange only appears on base type int.
+		{ $$ = $1->addBitfield( $2 ); }
+	| typedef_redeclarator bit_subrange_size_opt
+		// A semantic check is required to ensure bit_subrange only appears on base type int.
+		{ $$ = $1->addBitfield( $2 ); }
+	| variable_abstract_declarator						// CFA, no field name
+	;
+
+bit_subrange_size_opt:
+	// empty
+		{ $$ = 0; }
+	| bit_subrange_size
+		{ $$ = $1; }
+	;
+
+bit_subrange_size:
+	':' constant_expression
+		{ $$ = $2; }
+	;
+
+enum_key:
+	ENUM attribute_list_opt
+	;
+
+enum_name:
+	enum_key '{' enumerator_list comma_opt '}'
+		{ $$ = DeclarationNode::newEnum( 0, $3 ); }
+	| enum_key no_attr_identifier_or_typedef_name '{' enumerator_list comma_opt '}'
+		{ $$ = DeclarationNode::newEnum( $2, $4 ); }
+	| enum_key no_attr_identifier_or_typedef_name
+		{ $$ = DeclarationNode::newEnum( $2, 0 ); }
+	;
+
+enumerator_list:
+	no_attr_identifier_or_typedef_name enumerator_value_opt
+		{ $$ = DeclarationNode::newEnumConstant( $1, $2 ); }
+	| enumerator_list ',' no_attr_identifier_or_typedef_name enumerator_value_opt
+		{ $$ = $1->appendList( DeclarationNode::newEnumConstant( $3, $4 ) ); }
+	;
+
+enumerator_value_opt:
+	// empty
+		{ $$ = 0; }
+	| '=' constant_expression
+		{ $$ = $2; }
+	;
+
+// Minimum of one parameter after which ellipsis is allowed only at the end.
+
+new_parameter_type_list_opt:							// CFA
+	// empty
+		{ $$ = 0; }
+	| new_parameter_type_list
+	;
+
+new_parameter_type_list:								// CFA, abstract + real
+	new_abstract_parameter_list
+	| new_parameter_list
+	| new_parameter_list pop ',' push new_abstract_parameter_list
+		{ $$ = $1->appendList( $5 ); }
+	| new_abstract_parameter_list pop ',' push ELLIPSIS
+		{ $$ = $1->addVarArgs(); }
+	| new_parameter_list pop ',' push ELLIPSIS
+		{ $$ = $1->addVarArgs(); }
+	;
+
+new_parameter_list:										// CFA
+		// To obtain LR(1) between new_parameter_list and new_abstract_tuple, the last new_abstract_parameter_list is
+		// factored out from new_parameter_list, flattening the rules to get lookahead to the ']'.
+	new_parameter_declaration
+	| new_abstract_parameter_list pop ',' push new_parameter_declaration
+		{ $$ = $1->appendList( $5 ); }
+	| new_parameter_list pop ',' push new_parameter_declaration
+		{ $$ = $1->appendList( $5 ); }
+	| new_parameter_list pop ',' push new_abstract_parameter_list pop ',' push new_parameter_declaration
+		{ $$ = $1->appendList( $5 )->appendList( $9 ); }
+	;
+
+new_abstract_parameter_list:							// CFA, new & old style abstract
+	new_abstract_parameter_declaration
+	| new_abstract_parameter_list pop ',' push new_abstract_parameter_declaration
+		{ $$ = $1->appendList( $5 ); }
+	;
+
+parameter_type_list_opt:
+	// empty
+		{ $$ = 0; }
+	| parameter_type_list
+	;
+
+parameter_type_list:
+	parameter_list
+	| parameter_list pop ',' push ELLIPSIS
+		{ $$ = $1->addVarArgs(); }
+	;
+
+parameter_list:											// abstract + real
+	abstract_parameter_declaration
+	| parameter_declaration
+	| parameter_list pop ',' push abstract_parameter_declaration
+		{ $$ = $1->appendList( $5 ); }
+	| parameter_list pop ',' push parameter_declaration
+		{ $$ = $1->appendList( $5 ); }
+	;
+
+// Provides optional identifier names (abstract_declarator/variable_declarator), no initialization, different semantics
+// for typedef name by using typedef_parameter_redeclarator instead of typedef_redeclarator, and function prototypes.
+
+new_parameter_declaration:								// CFA, new & old style parameter declaration
+	parameter_declaration
+	| new_identifier_parameter_declarator_no_tuple identifier_or_typedef_name assignment_opt
+		{ $$ = $1->addName( $2 ); }
+	| new_abstract_tuple identifier_or_typedef_name assignment_opt
+		// To obtain LR(1), these rules must be duplicated here (see new_abstract_declarator).
+		{ $$ = $1->addName( $2 ); }
+	| type_qualifier_list new_abstract_tuple identifier_or_typedef_name assignment_opt
+		{ $$ = $2->addName( $3 )->addQualifiers( $1 ); }
+	| new_function_specifier
+	;
+
+new_abstract_parameter_declaration:						// CFA, new & old style parameter declaration
+	abstract_parameter_declaration
+	| new_identifier_parameter_declarator_no_tuple
+	| new_abstract_tuple
+		// To obtain LR(1), these rules must be duplicated here (see new_abstract_declarator).
+	| type_qualifier_list new_abstract_tuple
+		{ $$ = $2->addQualifiers( $1 ); }
+	| new_abstract_function
+	;
+
+parameter_declaration:
+	declaration_specifier identifier_parameter_declarator assignment_opt
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			$$ = $2->addType( $1 )->addInitializer( new InitializerNode( $3 ) );
+		}
+	| declaration_specifier typedef_parameter_redeclarator assignment_opt
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			$$ = $2->addType( $1 )->addInitializer( new InitializerNode( $3 ) );
+		}
+	;
+
+abstract_parameter_declaration:
+	declaration_specifier
+	| declaration_specifier abstract_parameter_declarator
+		{ $$ = $2->addType( $1 ); }
+	;
+
+// ISO/IEC 9899:1999 Section 6.9.1(6) : "An identifier declared as a typedef name shall not be redeclared as a
+// parameter." Because the scope of the K&R-style parameter-list sees the typedef first, the following is based only on
+// identifiers.  The ANSI-style parameter-list can redefine a typedef name.
+
+identifier_list:										// K&R-style parameter list => no types
+	no_attr_identifier
+		{ $$ = DeclarationNode::newName( $1 ); }
+	| identifier_list ',' no_attr_identifier
+		{ $$ = $1->appendList( DeclarationNode::newName( $3 ) ); }
+	;
+
+identifier_or_typedef_name:
+	identifier
+	| TYPEDEFname
+	| TYPEGENname
+	;
+
+no_01_identifier_or_typedef_name:
+	no_01_identifier
+	| TYPEDEFname
+	| TYPEGENname
+	;
+
+no_attr_identifier_or_typedef_name:
+	no_attr_identifier
+	| TYPEDEFname
+	//	| TYPEGENname
+	;
+
+type_name_no_function:									// sizeof, alignof, cast (constructor)
+	new_abstract_declarator_tuple						// CFA
+	| type_specifier
+	| type_specifier variable_abstract_declarator
+		{ $$ = $2->addType( $1 ); }
+	;
+
+type_name:												// typeof, assertion
+	new_abstract_declarator_tuple						// CFA
+	| new_abstract_function								// CFA
+	| type_specifier
+	| type_specifier abstract_declarator
+		{ $$ = $2->addType( $1 ); }
+	;
+
+initializer_opt:
+	// empty
+		{ $$ = 0; }
+	| '=' initializer							{ $$ = $2; }
+	;
+
+initializer:
+	assignment_expression						{ $$ = new InitializerNode( $1 ); }
+	| '{' initializer_list comma_opt '}'		{ $$ = new InitializerNode( $2, true ); }
+	;
+
+initializer_list:
+	initializer
+	| designation initializer					{ $$ = $2->set_designators( $1 ); }
+	| initializer_list ',' initializer			{ $$ = (InitializerNode *)( $1->set_link( $3 ) ); }
+	| initializer_list ',' designation initializer
+		{ $$ = (InitializerNode *)( $1->set_link( $4->set_designators( $3 ) ) ); }
+	;
+
+// There is an unreconcileable parsing problem between C99 and CFA with respect to designators. The problem is use of
+// '=' to separator the designator from the initializer value, as in:
+//
+//		int x[10] = { [1] = 3 };
+//
+// The string "[1] = 3" can be parsed as a designator assignment or a tuple assignment.  To disambiguate this case, CFA
+// changes the syntax from "=" to ":" as the separator between the designator and initializer. GCC does uses ":" for
+// field selection. The optional use of the "=" in GCC, or in this case ":", cannot be supported either due to
+// shift/reduce conflicts
+
+designation:
+	designator_list ':'									// C99, CFA uses ":" instead of "="
+	| no_attr_identifier_or_typedef_name ':'			// GCC, field name
+				{ $$ = new VarRefNode( $1 ); }
+	;
+
+designator_list:										// C99
+	designator
+	| designator_list designator					{ $$ = (ExpressionNode *)( $1->set_link( $2 )); }
+	//| designator_list designator						{ $$ = new CompositeExprNode( $1, $2 ); }
+	;
+
+designator:
+	'.' no_attr_identifier_or_typedef_name				// C99, field name
+		{ $$ = new VarRefNode( $2 ); }
+	| '[' push assignment_expression pop ']'			// C99, single array element
+		// assignment_expression used instead of constant_expression because of shift/reduce conflicts with tuple.
+		{ $$ = $3; }
+	| '[' push subrange pop ']'							// CFA, multiple array elements
+		{ $$ = $3; }
+	| '[' push constant_expression ELLIPSIS constant_expression pop ']' // GCC, multiple array elements
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), $3, $5 ); }
+	| '.' '[' push field_list pop ']'					// CFA, tuple field selector
+		{ $$ = $4; }
+	;
+
+// The CFA type system is based on parametric polymorphism, the ability to declare functions with type parameters,
+// rather than an object-oriented type system. This required four groups of extensions:
+//
+// Overloading: function, data, and operator identifiers may be overloaded.
+//
+// Type declarations: "type" is used to generate new types for declaring objects. Similarly, "dtype" is used for object
+//     and incomplete types, and "ftype" is used for function types. Type declarations with initializers provide
+//     definitions of new types. Type declarations with storage class "extern" provide opaque types.
+//
+// Polymorphic functions: A forall clause declares a type parameter. The corresponding argument is inferred at the call
+//     site. A polymorphic function is not a template; it is a function, with an address and a type.
+//
+// Specifications and Assertions: Specifications are collections of declarations parameterized by one or more
+//     types. They serve many of the purposes of abstract classes, and specification hierarchies resemble subclass
+//     hierarchies. Unlike classes, they can define relationships between types.  Assertions declare that a type or
+//     types provide the operations declared by a specification.  Assertions are normally used to declare requirements
+//     on type arguments of polymorphic functions.
+
+typegen_declaration_specifier:							// CFA
+	typegen_type_specifier
+	| declaration_qualifier_list typegen_type_specifier
+		{ $$ = $2->addQualifiers( $1 ); }
+	| typegen_declaration_specifier storage_class		// remaining OBSOLESCENT (see 2)
+		{ $$ = $1->addQualifiers( $2 ); }
+	| typegen_declaration_specifier storage_class type_qualifier_list
+		{ $$ = $1->addQualifiers( $2 )->addQualifiers( $3 ); }
+	;
+
+typegen_type_specifier:									// CFA
+	TYPEGENname '(' type_name_list ')'
+		{ $$ = DeclarationNode::newFromTypeGen( $1, $3 ); }
+	| type_qualifier_list TYPEGENname '(' type_name_list ')'
+		{ $$ = DeclarationNode::newFromTypeGen( $2, $4 )->addQualifiers( $1 ); }
+	| typegen_type_specifier type_qualifier
+		{ $$ = $1->addQualifiers( $2 ); }
+	;
+
+type_parameter_list:									// CFA
+	type_parameter assignment_opt
+	| type_parameter_list ',' type_parameter assignment_opt
+		{ $$ = $1->appendList( $3 ); }
+	;
+
+type_parameter:											// CFA
+	type_class no_attr_identifier_or_typedef_name
+		{ typedefTable.addToEnclosingScope(*( $2 ), TypedefTable::TD ); }
+	  assertion_list_opt
+		{ $$ = DeclarationNode::newTypeParam( $1, $2 )->addAssertions( $4 ); }
+	| type_specifier identifier_parameter_declarator
+	;
+
+type_class:												// CFA
+	TYPE
+		{ $$ = DeclarationNode::Type; }
+	| DTYPE
+		{ $$ = DeclarationNode::Ftype; }
+	| FTYPE
+		{ $$ = DeclarationNode::Dtype; }
+	;
+
+assertion_list_opt:										// CFA
+	// empty
+		{ $$ = 0; }
+	| assertion_list_opt assertion
+		{ $$ = $1 == 0 ? $2 : $1->appendList( $2 ); }
+	;
+
+assertion:												// CFA
+	'|' no_attr_identifier_or_typedef_name '(' type_name_list ')'
+		{
+			typedefTable.openContext( *( $2 ) );
+			$$ = DeclarationNode::newContextUse( $2, $4 );
+		}
+	| '|' '{' push context_declaration_list '}'
+		{ $$ = $4; }
+	| '|' '(' push type_parameter_list pop ')' '{' push context_declaration_list '}' '(' type_name_list ')'
+		{ $$ = 0; }
+	;
+
+type_name_list:											// CFA
+	type_name
+		{ $$ = new TypeValueNode( $1 ); }
+	| assignment_expression
+	| type_name_list ',' type_name
+		{ $$ = (ExpressionNode *)( $1->set_link( new TypeValueNode( $3 ))); }
+	| type_name_list ',' assignment_expression
+		{ $$ = (ExpressionNode *)( $1->set_link( $3 )); }
+	;
+
+type_declaring_list:									// CFA
+	TYPE type_declarator
+		{ $$ = $2; }
+	| storage_class_list TYPE type_declarator
+		{ $$ = $3->addQualifiers( $1 ); }
+	| type_declaring_list ',' type_declarator
+		{ $$ = $1->appendList( $3->copyStorageClasses( $1 ) ); }
+	;
+
+type_declarator:										// CFA
+	type_declarator_name assertion_list_opt
+		{ $$ = $1->addAssertions( $2 ); }
+	| type_declarator_name assertion_list_opt '=' type_name
+		{ $$ = $1->addAssertions( $2 )->addType( $4 ); }
+	;
+
+type_declarator_name:									// CFA
+	no_attr_identifier_or_typedef_name
+		{
+			typedefTable.addToEnclosingScope( *$1, TypedefTable::TD );
+			$$ = DeclarationNode::newTypeDecl( $1, 0 );
+		}
+	| no_01_identifier_or_typedef_name '(' push type_parameter_list pop ')'
+		{
+			typedefTable.addToEnclosingScope( *$1, TypedefTable::TG );
+			$$ = DeclarationNode::newTypeDecl( $1, $4 );
+		}
+	;
+
+context_specifier:										// CFA
+	CONTEXT no_attr_identifier_or_typedef_name '(' push type_parameter_list pop ')' '{' '}'
+		{
+			typedefTable.addToEnclosingScope( *$2, TypedefTable::ID );
+			$$ = DeclarationNode::newContext( $2, $5, 0 );
+		}
+	| CONTEXT no_attr_identifier_or_typedef_name '(' push type_parameter_list pop ')' '{'
+		{
+			typedefTable.enterContext( *$2 );
+			typedefTable.enterScope();
+		}
+	  context_declaration_list '}'
+		{
+			typedefTable.leaveContext();
+			typedefTable.addToEnclosingScope( *$2, TypedefTable::ID );
+			$$ = DeclarationNode::newContext( $2, $5, $10 );
+		}
+	;
+
+context_declaration_list:								// CFA
+	context_declaration
+	| context_declaration_list push context_declaration
+		{ $$ = $1->appendList( $3 ); }
+	;
+
+context_declaration:									// CFA
+	new_context_declaring_list pop ';'
+	| context_declaring_list pop ';'
+	;
+
+new_context_declaring_list:								// CFA
+	new_variable_specifier
+		{
+			typedefTable.addToEnclosingScope2( TypedefTable::ID );
+			$$ = $1;
+		}
+	| new_function_specifier
+		{
+			typedefTable.addToEnclosingScope2( TypedefTable::ID );
+			$$ = $1;
+		}
+	| new_context_declaring_list pop ',' push identifier_or_typedef_name
+		{
+			typedefTable.addToEnclosingScope2( *$5, TypedefTable::ID );
+			$$ = $1->appendList( $1->cloneType( $5 ) );
+		}
+	;
+
+context_declaring_list:									// CFA
+	type_specifier declarator
+		{
+			typedefTable.addToEnclosingScope2( TypedefTable::ID );
+			$$ = $2->addType( $1 );
+		}
+	| context_declaring_list pop ',' push declarator
+		{
+			typedefTable.addToEnclosingScope2( TypedefTable::ID );
+			$$ = $1->appendList( $1->cloneBaseType( $5 ) );
+		}
+	;
+
+//***************************** EXTERNAL DEFINITIONS *****************************
+
+translation_unit:
+	// empty
+		{}												// empty input file
+	| external_definition_list
+		{
+			if ( theTree ) {
+				theTree->appendList( $1 );
+			} else {
+				theTree = $1;
+			}
+		}
+	;
+
+external_definition_list:
+	external_definition
+	| external_definition_list push external_definition
+		{ $$ = ( $1 != NULL ) ? $1->appendList( $3 ) : $3; }
+	;
+
+external_definition_list_opt:
+	// empty
+		{ $$ = 0; }
+	| external_definition_list
+	;
+
+external_definition:
+	declaration
+	| external_function_definition
+	| asm_statement										// GCC, global assembler statement
+		{}
+	| EXTERN STRINGliteral
+		{
+			linkageStack.push( linkage );
+			linkage = LinkageSpec::fromString( *$2 );
+		}
+	  '{' external_definition_list_opt '}'				// C++-style linkage specifier
+		{
+			linkage = linkageStack.top();
+			linkageStack.pop();
+			$$ = $5;
+		}
+	| EXTENSION external_definition
+		{ $$ = $2; }
+	;
+
+external_function_definition:
+	function_definition
+
+		// These rules are a concession to the "implicit int" type_specifier because there is a significant amount of
+		// code with functions missing a type-specifier on the return type.  Parsing is possible because
+		// function_definition does not appear in the context of an expression (nested functions would preclude this
+		// concession). A function prototype declaration must still have a type_specifier.  OBSOLESCENT (see 1)
+	| function_declarator compound_statement
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			$$ = $1->addFunctionBody( $2 );
+		}
+	| old_function_declarator push old_declaration_list_opt compound_statement
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			$$ = $1->addOldDeclList( $3 )->addFunctionBody( $4 );
+		}
+	;
+
+function_definition:
+	new_function_declaration compound_statement			// CFA
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			$$ = $1->addFunctionBody( $2 );
+		}
+	| declaration_specifier function_declarator compound_statement
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			$$ = $2->addFunctionBody( $3 )->addType( $1 );
+		}
+	| type_qualifier_list function_declarator compound_statement
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			$$ = $2->addFunctionBody( $3 )->addQualifiers( $1 );
+		}
+	| declaration_qualifier_list function_declarator compound_statement
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			$$ = $2->addFunctionBody( $3 )->addQualifiers( $1 );
+		}
+	| declaration_qualifier_list type_qualifier_list function_declarator compound_statement
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			$$ = $3->addFunctionBody( $4 )->addQualifiers( $2 )->addQualifiers( $1 );
+		}
+
+		// Old-style K&R function definition, OBSOLESCENT (see 4)
+	| declaration_specifier old_function_declarator push old_declaration_list_opt compound_statement
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			$$ = $2->addOldDeclList( $4 )->addFunctionBody( $5 )->addType( $1 );
+		}
+	| type_qualifier_list old_function_declarator push old_declaration_list_opt compound_statement
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			$$ = $2->addOldDeclList( $4 )->addFunctionBody( $5 )->addQualifiers( $1 );
+		}
+
+		// Old-style K&R function definition with "implicit int" type_specifier, OBSOLESCENT (see 4)
+	| declaration_qualifier_list old_function_declarator push old_declaration_list_opt compound_statement
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			$$ = $2->addOldDeclList( $4 )->addFunctionBody( $5 )->addQualifiers( $1 );
+		}
+	| declaration_qualifier_list type_qualifier_list old_function_declarator push old_declaration_list_opt compound_statement
+		{
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			$$ = $3->addOldDeclList( $5 )->addFunctionBody( $6 )->addQualifiers( $2 )->addQualifiers( $1 );
+		}
+	;
+
+declarator:
+	variable_declarator
+	| function_declarator
+	| typedef_redeclarator
+	;
+
+subrange:
+	constant_expression '~' constant_expression			// CFA, integer subrange
+		{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), $1, $3 ); }
+	;
+
+asm_name_opt:											// GCC
+	// empty
+	| ASM '(' string_literal_list ')' attribute_list_opt
+	;
+
+attribute_list_opt:										// GCC
+	// empty
+	| attribute_list
+	;
+
+attribute_list:											// GCC
+	attribute
+	| attribute_list attribute
+	;
+
+attribute:												// GCC
+	ATTRIBUTE '(' '(' attribute_parameter_list ')' ')'
+	;
+
+attribute_parameter_list:								// GCC
+	attrib
+	| attribute_parameter_list ',' attrib
+	;
+
+attrib:													// GCC
+	// empty
+	| any_word
+	| any_word '(' comma_expression_opt ')'
+	;
+
+any_word:												// GCC
+	identifier_or_typedef_name {}
+	| storage_class_name {}
+	| basic_type_name {}
+	| type_qualifier {}
+	;
+
+// ============================================================================
+// The following sections are a series of grammar patterns used to parse declarators. Multiple patterns are necessary
+// because the type of an identifier in wrapped around the identifier in the same form as its usage in an expression, as
+// in:
+//
+//		int (*f())[10] { ... };
+//		... (*f())[3] += 1;		// definition mimics usage
+//
+// Because these patterns are highly recursive, changes at a lower level in the recursion require copying some or all of
+// the pattern. Each of these patterns has some subtle variation to ensure correct syntax in a particular context.
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// The set of valid declarators before a compound statement for defining a function is less than the set of declarators
+// to define a variable or function prototype, e.g.:
+//
+//		valid declaration		invalid definition
+//		-----------------		------------------
+//		int f;					int f {}
+//		int *f;					int *f {}
+//		int f[10];				int f[10] {}
+//		int (*f)(int);			int (*f)(int) {}
+//
+// To preclude this syntactic anomaly requires separating the grammar rules for variable and function declarators, hence
+// variable_declarator and function_declarator.
+// ----------------------------------------------------------------------------
+
+// This pattern parses a declaration of a variable that is not redefining a typedef name. The pattern precludes
+// declaring an array of functions versus a pointer to an array of functions.
+
+variable_declarator:
+	paren_identifier attribute_list_opt
+	| variable_ptr
+	| variable_array attribute_list_opt
+	| variable_function attribute_list_opt
+	;
+
+paren_identifier:
+	identifier
+		{
+			typedefTable.setNextIdentifier( *$1 );
+			$$ = DeclarationNode::newName( $1 );
+		}
+	| '(' paren_identifier ')'							// redundant parenthesis
+		{ $$ = $2; }
+	;
+
+variable_ptr:
+	'*' variable_declarator
+		{ $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
+	| '*' type_qualifier_list variable_declarator
+		{ $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
+	| '(' variable_ptr ')'
+		{ $$ = $2; }
+	;
+
+variable_array:
+	paren_identifier array_dimension
+		{ $$ = $1->addArray( $2 ); }
+	| '(' variable_ptr ')' array_dimension
+		{ $$ = $2->addArray( $4 ); }
+	| '(' variable_array ')' multi_array_dimension		// redundant parenthesis
+		{ $$ = $2->addArray( $4 ); }
+	| '(' variable_array ')'							// redundant parenthesis
+		{ $$ = $2; }
+	;
+
+variable_function:
+	'(' variable_ptr ')' '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
+		{ $$ = $2->addParamList( $6 ); }
+	| '(' variable_function ')'							// redundant parenthesis
+		{ $$ = $2; }
+	;
+
+// This pattern parses a function declarator that is not redefining a typedef name. Because functions cannot be nested,
+// there is no context where a function definition can redefine a typedef name. To allow nested functions requires
+// further separation of variable and function declarators in typedef_redeclarator.  The pattern precludes returning
+// arrays and functions versus pointers to arrays and functions.
+
+function_declarator:
+	function_no_ptr attribute_list_opt
+	| function_ptr
+	| function_array attribute_list_opt
+	;
+
+function_no_ptr:
+	paren_identifier '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
+		{ $$ = $1->addParamList( $4 ); }
+	| '(' function_ptr ')' '(' push parameter_type_list_opt pop ')'
+		{ $$ = $2->addParamList( $6 ); }
+	| '(' function_no_ptr ')'							// redundant parenthesis
+		{ $$ = $2; }
+	;
+
+function_ptr:
+	'*' function_declarator
+		{ $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
+	| '*' type_qualifier_list function_declarator
+		{ $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
+	| '(' function_ptr ')'
+		{ $$ = $2; }
+	;
+
+function_array:
+	'(' function_ptr ')' array_dimension
+		{ $$ = $2->addArray( $4 ); }
+	| '(' function_array ')' multi_array_dimension		// redundant parenthesis
+		{ $$ = $2->addArray( $4 ); }
+	| '(' function_array ')'							// redundant parenthesis
+		{ $$ = $2; }
+	;
+
+// This pattern parses an old-style K&R function declarator (OBSOLESCENT, see 4) that is not redefining a typedef name
+// (see function_declarator for additional comments). The pattern precludes returning arrays and functions versus
+// pointers to arrays and functions.
+
+old_function_declarator:
+	old_function_no_ptr
+	| old_function_ptr
+	| old_function_array
+	;
+
+old_function_no_ptr:
+	paren_identifier '(' identifier_list ')'			// function_declarator handles empty parameter
+		{ $$ = $1->addIdList( $3 ); }
+	| '(' old_function_ptr ')' '(' identifier_list ')'
+		{ $$ = $2->addIdList( $5 ); }
+	| '(' old_function_no_ptr ')'						// redundant parenthesis
+		{ $$ = $2; }
+	;
+
+old_function_ptr:
+	'*' old_function_declarator
+		{ $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
+	| '*' type_qualifier_list old_function_declarator
+		{ $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
+	| '(' old_function_ptr ')'
+		{ $$ = $2; }
+	;
+
+old_function_array:
+	'(' old_function_ptr ')' array_dimension
+		{ $$ = $2->addArray( $4 ); }
+	| '(' old_function_array ')' multi_array_dimension	// redundant parenthesis
+		{ $$ = $2->addArray( $4 ); }
+	| '(' old_function_array ')'						// redundant parenthesis
+		{ $$ = $2; }
+	;
+
+// This pattern parses a declaration for a variable or function prototype that redefines a typedef name, e.g.:
+//
+//		typedef int foo;
+//		{
+//		   int foo; // redefine typedef name in new scope
+//		}
+//
+// The pattern precludes declaring an array of functions versus a pointer to an array of functions, and returning arrays
+// and functions versus pointers to arrays and functions.
+
+typedef_redeclarator:
+	paren_typedef attribute_list_opt
+	| typedef_ptr
+	| typedef_array attribute_list_opt
+	| typedef_function attribute_list_opt
+	;
+
+paren_typedef:
+	TYPEDEFname
+		{
+			typedefTable.setNextIdentifier( *( $1 ) );
+			$$ = DeclarationNode::newName( $1 );
+		}
+	| '(' paren_typedef ')'
+		{ $$ = $2; }
+	;
+
+typedef_ptr:
+	'*' typedef_redeclarator
+		{ $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
+	| '*' type_qualifier_list typedef_redeclarator
+		{ $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
+	| '(' typedef_ptr ')'
+		{ $$ = $2; }
+	;
+
+typedef_array:
+	paren_typedef array_dimension
+		{ $$ = $1->addArray( $2 ); }
+	| '(' typedef_ptr ')' array_dimension
+		{ $$ = $2->addArray( $4 ); }
+	| '(' typedef_array ')' multi_array_dimension		// redundant parenthesis
+		{ $$ = $2->addArray( $4 ); }
+	| '(' typedef_array ')'								// redundant parenthesis
+		{ $$ = $2; }
+	;
+
+typedef_function:
+	paren_typedef '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
+		{ $$ = $1->addParamList( $4 ); }
+	| '(' typedef_ptr ')' '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
+		{ $$ = $2->addParamList( $6 ); }
+	| '(' typedef_function ')'							// redundant parenthesis
+		{ $$ = $2; }
+	;
+
+// This pattern parses a declaration for a parameter variable or function prototype that is not redefining a typedef
+// name and allows the C99 array options, which can only appear in a parameter list.  The pattern precludes declaring an
+// array of functions versus a pointer to an array of functions, and returning arrays and functions versus pointers to
+// arrays and functions.
+
+identifier_parameter_declarator:
+	paren_identifier attribute_list_opt
+	| identifier_parameter_ptr
+	| identifier_parameter_array attribute_list_opt
+	| identifier_parameter_function attribute_list_opt
+	;
+
+identifier_parameter_ptr:
+	'*' identifier_parameter_declarator
+		{ $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
+	| '*' type_qualifier_list identifier_parameter_declarator
+		{ $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
+	| '(' identifier_parameter_ptr ')'
+		{ $$ = $2; }
+	;
+
+identifier_parameter_array:
+	paren_identifier array_parameter_dimension
+		{ $$ = $1->addArray( $2 ); }
+	| '(' identifier_parameter_ptr ')' array_dimension
+		{ $$ = $2->addArray( $4 ); }
+	| '(' identifier_parameter_array ')' multi_array_dimension // redundant parenthesis
+		{ $$ = $2->addArray( $4 ); }
+	| '(' identifier_parameter_array ')'				// redundant parenthesis
+		{ $$ = $2; }
+	;
+
+identifier_parameter_function:
+	paren_identifier '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
+		{ $$ = $1->addParamList( $4 ); }
+	| '(' identifier_parameter_ptr ')' '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
+		{ $$ = $2->addParamList( $6 ); }
+	| '(' identifier_parameter_function ')'				// redundant parenthesis
+		{ $$ = $2; }
+	;
+
+// This pattern parses a declaration for a parameter variable or function prototype that is redefining a typedef name,
+// e.g.:
+//
+//		typedef int foo;
+//		int f( int foo ); // redefine typedef name in new scope
+//
+// and allows the C99 array options, which can only appear in a parameter list.  In addition, the pattern handles the
+// special meaning of parenthesis around a typedef name:
+//
+//		ISO/IEC 9899:1999 Section 6.7.5.3(11) : "In a parameter declaration, a single typedef name in
+//		parentheses is taken to be an abstract declarator that specifies a function with a single parameter,
+//		not as redundant parentheses around the identifier."
+//
+// which precludes the following cases:
+//
+//		typedef float T;
+//		int f( int ( T [5] ) );					// see abstract_parameter_declarator
+//		int g( int ( T ( int ) ) );				// see abstract_parameter_declarator
+//		int f( int f1( T a[5] ) );				// see identifier_parameter_declarator
+//		int g( int g1( T g2( int p ) ) );		// see identifier_parameter_declarator
+//
+// In essence, a '(' immediately to the left of typedef name, T, is interpreted as starting a parameter type list, and
+// not as redundant parentheses around a redeclaration of T. Finally, the pattern also precludes declaring an array of
+// functions versus a pointer to an array of functions, and returning arrays and functions versus pointers to arrays and
+// functions.
+
+typedef_parameter_redeclarator:
+	typedef attribute_list_opt
+	| typedef_parameter_ptr
+	| typedef_parameter_array attribute_list_opt
+	| typedef_parameter_function attribute_list_opt
+	;
+
+typedef:
+	TYPEDEFname
+		{
+			typedefTable.setNextIdentifier( *$1 );
+			$$ = DeclarationNode::newName( $1 );
+		}
+	;
+
+typedef_parameter_ptr:
+	'*' typedef_parameter_redeclarator
+		{ $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
+	| '*' type_qualifier_list typedef_parameter_redeclarator
+		{ $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
+	| '(' typedef_parameter_ptr ')'
+		{ $$ = $2; }
+	;
+
+typedef_parameter_array:
+	typedef array_parameter_dimension
+		{ $$ = $1->addArray( $2 ); }
+	| '(' typedef_parameter_ptr ')' array_parameter_dimension
+		{ $$ = $2->addArray( $4 ); }
+	;
+
+typedef_parameter_function:
+	typedef '(' push parameter_type_list_opt pop ')'	// empty parameter list OBSOLESCENT (see 3)
+		{ $$ = $1->addParamList( $4 ); }
+	| '(' typedef_parameter_ptr ')' '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
+		{ $$ = $2->addParamList( $6 ); }
+	;
+
+// This pattern parses a declaration of an abstract variable or function prototype, i.e., there is no identifier to
+// which the type applies, e.g.:
+//
+//		sizeof( int );
+//		sizeof( int [10] );
+//
+// The pattern precludes declaring an array of functions versus a pointer to an array of functions, and returning arrays
+// and functions versus pointers to arrays and functions.
+
+abstract_declarator:
+	abstract_ptr
+	| abstract_array attribute_list_opt
+	| abstract_function attribute_list_opt
+	;
+
+abstract_ptr:
+	'*'
+		{ $$ = DeclarationNode::newPointer( 0 ); }
+	| '*' type_qualifier_list
+		{ $$ = DeclarationNode::newPointer( $2 ); }
+	| '*' abstract_declarator
+		{ $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
+	| '*' type_qualifier_list abstract_declarator
+		{ $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
+	| '(' abstract_ptr ')'
+		{ $$ = $2; }
+	;
+
+abstract_array:
+	array_dimension
+	| '(' abstract_ptr ')' array_dimension
+		{ $$ = $2->addArray( $4 ); }
+	| '(' abstract_array ')' multi_array_dimension		// redundant parenthesis
+		{ $$ = $2->addArray( $4 ); }
+	| '(' abstract_array ')'							// redundant parenthesis
+		{ $$ = $2; }
+	;
+
+abstract_function:
+	'(' push parameter_type_list_opt pop ')'			// empty parameter list OBSOLESCENT (see 3)
+		{ $$ = DeclarationNode::newFunction( 0, 0, $3, 0 ); }
+	| '(' abstract_ptr ')' '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
+		{ $$ = $2->addParamList( $6 ); }
+	| '(' abstract_function ')'							// redundant parenthesis
+		{ $$ = $2; }
+	;
+
+array_dimension:
+		// Only the first dimension can be empty.
+	'[' push pop ']'
+		{ $$ = DeclarationNode::newArray( 0, 0, false ); }
+	| '[' push pop ']' multi_array_dimension
+		{ $$ = DeclarationNode::newArray( 0, 0, false )->addArray( $5 ); }
+	| multi_array_dimension
+	;
+
+multi_array_dimension:
+	'[' push assignment_expression pop ']'
+		{ $$ = DeclarationNode::newArray( $3, 0, false ); }
+	| '[' push '*' pop ']'								// C99
+		{ $$ = DeclarationNode::newVarArray( 0 ); }
+	| multi_array_dimension '[' push assignment_expression pop ']'
+		{ $$ = $1->addArray( DeclarationNode::newArray( $4, 0, false ) ); }
+	| multi_array_dimension '[' push '*' pop ']'		// C99
+		{ $$ = $1->addArray( DeclarationNode::newVarArray( 0 ) ); }
+	;
+
+// This pattern parses a declaration of a parameter abstract variable or function prototype, i.e., there is no
+// identifier to which the type applies, e.g.:
+//
+//		int f( int );			// abstract variable parameter; no parameter name specified
+//		int f( int (int) );		// abstract function-prototype parameter; no parameter name specified
+//
+// The pattern precludes declaring an array of functions versus a pointer to an array of functions, and returning arrays
+// and functions versus pointers to arrays and functions.
+
+abstract_parameter_declarator:
+	abstract_parameter_ptr
+	| abstract_parameter_array attribute_list_opt
+	| abstract_parameter_function attribute_list_opt
+	;
+
+abstract_parameter_ptr:
+	'*'
+		{ $$ = DeclarationNode::newPointer( 0 ); }
+	| '*' type_qualifier_list
+		{ $$ = DeclarationNode::newPointer( $2 ); }
+	| '*' abstract_parameter_declarator
+		{ $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
+	| '*' type_qualifier_list abstract_parameter_declarator
+		{ $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
+	| '(' abstract_parameter_ptr ')'
+		{ $$ = $2; }
+	;
+
+abstract_parameter_array:
+	array_parameter_dimension
+	| '(' abstract_parameter_ptr ')' array_parameter_dimension
+		{ $$ = $2->addArray( $4 ); }
+	| '(' abstract_parameter_array ')' multi_array_dimension // redundant parenthesis
+		{ $$ = $2->addArray( $4 ); }
+	| '(' abstract_parameter_array ')'					// redundant parenthesis
+		{ $$ = $2; }
+	;
+
+abstract_parameter_function:
+	'(' push parameter_type_list_opt pop ')'			// empty parameter list OBSOLESCENT (see 3)
+		{ $$ = DeclarationNode::newFunction( 0, 0, $3, 0 ); }
+	| '(' abstract_parameter_ptr ')' '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
+		{ $$ = $2->addParamList( $6 ); }
+	| '(' abstract_parameter_function ')'				// redundant parenthesis
+		{ $$ = $2; }
+	;
+
+array_parameter_dimension:
+		// Only the first dimension can be empty or have qualifiers.
+	array_parameter_1st_dimension
+	| array_parameter_1st_dimension multi_array_dimension
+		{ $$ = $1->addArray( $2 ); }
+	| multi_array_dimension
+	;
+
+// The declaration of an array parameter has additional syntax over arrays in normal variable declarations:
+//
+//		ISO/IEC 9899:1999 Section 6.7.5.2(1) : "The optional type qualifiers and the keyword static shall appear only in
+//		a declaration of a function parameter with an array type, and then only in the outermost array type derivation."
+
+array_parameter_1st_dimension:
+	'[' push pop ']'
+		{ $$ = DeclarationNode::newArray( 0, 0, false ); }
+	// multi_array_dimension handles the '[' '*' ']' case
+	| '[' push type_qualifier_list '*' pop ']'			// remaining C99
+		{ $$ = DeclarationNode::newVarArray( $3 ); }
+	| '[' push type_qualifier_list pop ']'
+		{ $$ = DeclarationNode::newArray( 0, $3, false ); }
+	// multi_array_dimension handles the '[' assignment_expression ']' case
+	| '[' push type_qualifier_list assignment_expression pop ']'
+		{ $$ = DeclarationNode::newArray( $4, $3, false ); }
+	| '[' push STATIC type_qualifier_list_opt assignment_expression pop ']'
+		{ $$ = DeclarationNode::newArray( $5, $4, true ); }
+	| '[' push type_qualifier_list STATIC assignment_expression pop ']'
+		{ $$ = DeclarationNode::newArray( $5, $3, true ); }
+	;
+
+// This pattern parses a declaration of an abstract variable, i.e., there is no identifier to which the type applies,
+// e.g.:
+//
+//		sizeof( int ); // abstract variable; no identifier name specified
+//
+// The pattern precludes declaring an array of functions versus a pointer to an array of functions, and returning arrays
+// and functions versus pointers to arrays and functions.
+
+variable_abstract_declarator:
+	variable_abstract_ptr
+	| variable_abstract_array attribute_list_opt
+	| variable_abstract_function attribute_list_opt
+	;
+
+variable_abstract_ptr:
+	'*'
+		{ $$ = DeclarationNode::newPointer( 0 ); }
+	| '*' type_qualifier_list
+		{ $$ = DeclarationNode::newPointer( $2 ); }
+	| '*' variable_abstract_declarator
+		{ $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
+	| '*' type_qualifier_list variable_abstract_declarator
+		{ $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
+	| '(' variable_abstract_ptr ')'
+		{ $$ = $2; }
+	;
+
+variable_abstract_array:
+	array_dimension
+	| '(' variable_abstract_ptr ')' array_dimension
+		{ $$ = $2->addArray( $4 ); }
+	| '(' variable_abstract_array ')' multi_array_dimension // redundant parenthesis
+		{ $$ = $2->addArray( $4 ); }
+	| '(' variable_abstract_array ')'					// redundant parenthesis
+		{ $$ = $2; }
+	;
+
+variable_abstract_function:
+	'(' variable_abstract_ptr ')' '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
+		{ $$ = $2->addParamList( $6 ); }
+	| '(' variable_abstract_function ')'				// redundant parenthesis
+		{ $$ = $2; }
+	;
+
+// This pattern parses a new-style declaration for a parameter variable or function prototype that is either an
+// identifier or typedef name and allows the C99 array options, which can only appear in a parameter list.
+
+new_identifier_parameter_declarator_tuple:				// CFA
+	new_identifier_parameter_declarator_no_tuple
+	| new_abstract_tuple
+	| type_qualifier_list new_abstract_tuple
+		{ $$ = $2->addQualifiers( $1 ); }
+	;
+
+new_identifier_parameter_declarator_no_tuple:			// CFA
+	new_identifier_parameter_ptr
+	| new_identifier_parameter_array
+	;
+
+new_identifier_parameter_ptr:							// CFA
+	'*' type_specifier
+		{ $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+	| type_qualifier_list '*' type_specifier
+		{ $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
+	| '*' new_abstract_function
+		{ $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+	| type_qualifier_list '*' new_abstract_function
+		{ $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
+	| '*' new_identifier_parameter_declarator_tuple
+		{ $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+	| type_qualifier_list '*' new_identifier_parameter_declarator_tuple
+		{ $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
+	;
+
+new_identifier_parameter_array:							// CFA
+		// Only the first dimension can be empty or have qualifiers. Empty dimension must be factored out due to
+		// shift/reduce conflict with new-style empty (void) function return type.
+	'[' push pop ']' type_specifier
+		{ $$ = $5->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+	| new_array_parameter_1st_dimension type_specifier
+		{ $$ = $2->addNewArray( $1 ); }
+	| '[' push pop ']' multi_array_dimension type_specifier
+		{ $$ = $6->addNewArray( $5 )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+	| new_array_parameter_1st_dimension multi_array_dimension type_specifier
+		{ $$ = $3->addNewArray( $2 )->addNewArray( $1 ); }
+	| multi_array_dimension type_specifier
+		{ $$ = $2->addNewArray( $1 ); }
+	| '[' push pop ']' new_identifier_parameter_ptr
+		{ $$ = $5->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+	| new_array_parameter_1st_dimension new_identifier_parameter_ptr
+		{ $$ = $2->addNewArray( $1 ); }
+	| '[' push pop ']' multi_array_dimension new_identifier_parameter_ptr
+		{ $$ = $6->addNewArray( $5 )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+	| new_array_parameter_1st_dimension multi_array_dimension new_identifier_parameter_ptr
+		{ $$ = $3->addNewArray( $2 )->addNewArray( $1 ); }
+	| multi_array_dimension new_identifier_parameter_ptr
+		{ $$ = $2->addNewArray( $1 ); }
+	;
+
+new_array_parameter_1st_dimension:
+	'[' push type_qualifier_list '*' pop ']'			// remaining C99
+		{ $$ = DeclarationNode::newVarArray( $3 ); }
+	| '[' push type_qualifier_list assignment_expression pop ']'
+		{ $$ = DeclarationNode::newArray( $4, $3, false ); }
+	| '[' push declaration_qualifier_list assignment_expression pop ']'
+		// declaration_qualifier_list must be used because of shift/reduce conflict with
+		// assignment_expression, so a semantic check is necessary to preclude them as a type_qualifier cannot
+		// appear in this context.
+		{ $$ = DeclarationNode::newArray( $4, $3, true ); }
+	| '[' push declaration_qualifier_list type_qualifier_list assignment_expression pop ']'
+		{ $$ = DeclarationNode::newArray( $5, $4->addQualifiers( $3 ), true ); }
+	;
+
+// This pattern parses a new-style declaration of an abstract variable or function prototype, i.e., there is no
+// identifier to which the type applies, e.g.:
+//
+//		[int] f( int );				// abstract variable parameter; no parameter name specified
+//		[int] f( [int] (int) );		// abstract function-prototype parameter; no parameter name specified
+//
+// These rules need LR(3):
+//
+//		new_abstract_tuple identifier_or_typedef_name
+//		'[' new_parameter_list ']' identifier_or_typedef_name '(' new_parameter_type_list_opt ')'
+//
+// since a function return type can be syntactically identical to a tuple type:
+//
+//		[int, int] t;
+//		[int, int] f( int );
+//
+// Therefore, it is necessary to look at the token after identifier_or_typedef_name to know when to reduce
+// new_abstract_tuple. To make this LR(1), several rules have to be flattened (lengthened) to allow the necessary
+// lookahead. To accomplish this, new_abstract_declarator has an entry point without tuple, and tuple declarations are
+// duplicated when appearing with new_function_specifier.
+
+new_abstract_declarator_tuple:							// CFA
+	new_abstract_tuple
+	| type_qualifier_list new_abstract_tuple
+		{ $$ = $2->addQualifiers( $1 ); }
+	| new_abstract_declarator_no_tuple
+	;
+
+new_abstract_declarator_no_tuple:						// CFA
+	new_abstract_ptr
+	| new_abstract_array
+	;
+
+new_abstract_ptr:										// CFA
+	'*' type_specifier
+		{ $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+	| type_qualifier_list '*' type_specifier
+		{ $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
+	| '*' new_abstract_function
+		{ $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+	| type_qualifier_list '*' new_abstract_function
+		{ $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
+	| '*' new_abstract_declarator_tuple
+		{ $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+	| type_qualifier_list '*' new_abstract_declarator_tuple
+		{ $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
+	;
+
+new_abstract_array:										// CFA
+		// Only the first dimension can be empty. Empty dimension must be factored out due to shift/reduce conflict with
+		// empty (void) function return type.
+	'[' push pop ']' type_specifier
+		{ $$ = $5->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+	| '[' push pop ']' multi_array_dimension type_specifier
+		{ $$ = $6->addNewArray( $5 )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+	| multi_array_dimension type_specifier
+		{ $$ = $2->addNewArray( $1 ); }
+	| '[' push pop ']' new_abstract_ptr
+		{ $$ = $5->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+	| '[' push pop ']' multi_array_dimension new_abstract_ptr
+		{ $$ = $6->addNewArray( $5 )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+	| multi_array_dimension new_abstract_ptr
+		{ $$ = $2->addNewArray( $1 ); }
+	;
+
+new_abstract_tuple:										// CFA
+	'[' push new_abstract_parameter_list pop ']'
+		{ $$ = DeclarationNode::newTuple( $3 ); }
+	;
+
+new_abstract_function:									// CFA
+	'[' push pop ']' '(' new_parameter_type_list_opt ')'
+		{ $$ = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), $6, 0 ); }
+	| new_abstract_tuple '(' push new_parameter_type_list_opt pop ')'
+		{ $$ = DeclarationNode::newFunction( 0, $1, $4, 0 ); }
+	| new_function_return '(' push new_parameter_type_list_opt pop ')'
+		{ $$ = DeclarationNode::newFunction( 0, $1, $4, 0 ); }
+	;
+
+// 1) ISO/IEC 9899:1999 Section 6.7.2(2) : "At least one type specifier shall be given in the declaration specifiers in
+//    each declaration, and in the specifier-qualifier list in each structure declaration and type name."
+//
+// 2) ISO/IEC 9899:1999 Section 6.11.5(1) : "The placement of a storage-class specifier other than at the beginning of
+//    the declaration specifiers in a declaration is an obsolescent feature."
+//
+// 3) ISO/IEC 9899:1999 Section 6.11.6(1) : "The use of function declarators with empty parentheses (not
+//    prototype-format parameter type declarators) is an obsolescent feature."
+//
+// 4) ISO/IEC 9899:1999 Section 6.11.7(1) : "The use of function definitions with separate parameter identifier and
+//    declaration lists (not prototype-format parameter type and identifier declarators) is an obsolescent feature.
+
+//************************* MISCELLANEOUS ********************************
+
+comma_opt:												// redundant comma
+	// empty
+	| ','
+	;
+
+assignment_opt:
+	// empty
+		{ $$ = 0; }
+	| '=' assignment_expression
+		{ $$ = $2; }
+	;
+
+%%
+// ----end of grammar----
+
+void yyerror( const char * ) {
+	std::cout << "Error ";
+	if ( yyfilename ) {
+	    std::cout << "in file " << yyfilename << " ";
+	} // if
+	std::cout << "at line " << yylineno << " reading token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << "\"" << std::endl;
+}
+
+// Local Variables: //
+// mode: c++ //
+// tab-width: 4 //
+// compile-command: "make install" //
+// End: //
Index: src/ResolvExpr/AlternativeFinder.cc
===================================================================
--- src/ResolvExpr/AlternativeFinder.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/ResolvExpr/AlternativeFinder.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 23:52:08 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May 16 23:55:30 2015
-// Update Count     : 3
+// Last Modified On : Mon Jun 22 17:19:54 2015
+// Update Count     : 17
 //
 
@@ -108,10 +108,10 @@
 						PRINT(
 							std::cout << "cost " << candidate->cost << " beats " << mapPlace->second.candidate->cost << std::endl;
-							)
+						)
 						selected[ mangleName ] = current;
 					} else if ( candidate->cost == mapPlace->second.candidate->cost ) {
 						PRINT(
 							std::cout << "marking ambiguous" << std::endl;
-							)
+						)
 						mapPlace->second.isAmbiguous = true;
 					}
@@ -123,5 +123,5 @@
 			PRINT(
 				std::cout << "there are " << selected.size() << " alternatives before elimination" << std::endl;
-				)
+			)
 
 			// accept the alternatives that were unambiguous
@@ -184,5 +184,5 @@
 				std::cout << "findSubExprs" << std::endl;
 				printAlts( finder.alternatives, std::cout );
-				)
+			)
 			*out++ = finder;
 		}
@@ -206,9 +206,9 @@
 			std::cout << "alternatives before prune:" << std::endl;
 			printAlts( alternatives, std::cout );
-			)
+		)
 		AltList::iterator oldBegin = alternatives.begin();
 		pruneAlternatives( alternatives.begin(), alternatives.end(), front_inserter( alternatives ), indexer );
 		if ( alternatives.begin() == oldBegin ) {
-			std::ostrstream stream;
+			std::ostringstream stream;
 			stream << "Can't choose between alternatives for expression ";
 			expr->print( stream );
@@ -217,10 +217,10 @@
 			findMinCost( alternatives.begin(), alternatives.end(), back_inserter( winners ) );
 			printAlts( winners, stream, 8 );
-			throw SemanticError( std::string( stream.str(), stream.pcount() ) );
+			throw SemanticError( stream.str() );
 		}
 		alternatives.erase( oldBegin, alternatives.end() );
 		PRINT(
 			std::cout << "there are " << alternatives.size() << " alternatives after elimination" << std::endl;
-			)
+		)
 	}
 
@@ -265,6 +265,6 @@
 				std::cout << "--- results are" << std::endl;
 				printAll( (*actualExpr)->get_results(), std::cout, 8 );
-				)
-				std::list< DeclarationWithType* >::iterator startFormal = formal;
+			)
+			std::list< DeclarationWithType* >::iterator startFormal = formal;
 			Cost actualCost;
 			for ( std::list< Type* >::iterator actual = (*actualExpr)->get_results().begin(); actual != (*actualExpr)->get_results().end(); ++actual ) {
@@ -282,13 +282,13 @@
 					std::cout << std::endl << " to ";
 					(*formal)->get_type()->print( std::cout, 8 );
-					)
-					Cost newCost = conversionCost( *actual, (*formal)->get_type(), indexer, alt.env );
+				)
+				Cost newCost = conversionCost( *actual, (*formal)->get_type(), indexer, alt.env );
 				PRINT(
 					std::cout << std::endl << "cost is" << newCost << std::endl;
-					)
-
-					if ( newCost == Cost::infinity ) {
-						return newCost;
-					}
+				)
+
+				if ( newCost == Cost::infinity ) {
+					return newCost;
+				}
 				convCost += newCost;
 				actualCost += newCost;
@@ -381,5 +381,5 @@
 					(*actual)->print( std::cerr );
 					std::cerr << std::endl;
-					)
+				)
 				if ( ! unify( (*formal)->get_type(), *actual, resultEnv, resultNeed, resultHave, openVars, indexer ) ) {
 					return false;
@@ -429,5 +429,5 @@
 					std::cerr << "recursing with new set:" << std::endl;
 					printAssertionSet( newNeed, std::cerr, 8 );
-					)
+				)
 				inferRecursive( newNeed.begin(), newNeed.end(), newAlt, openVars, decls, newerNeed, level+1, indexer, out );
 				return;
@@ -444,5 +444,5 @@
 			curDecl->print( std::cerr );
 			std::cerr << std::endl;
-			)
+		)
 		std::list< DeclarationWithType* > candidates;
 		decls.lookupId( curDecl->get_name(), candidates );
@@ -453,5 +453,5 @@
 				(*candidate)->print( std::cout );
 				std::cout << std::endl;
-				)
+			)
 			AssertionSet newHave, newerNeed( newNeed );
 			TypeEnvironment newEnv( newAlt.env );
@@ -466,9 +466,9 @@
 				adjType->print( std::cerr );
 				std::cerr << std::endl;
-				)
+			)
 			if ( unify( curDecl->get_type(), adjType, newEnv, newerNeed, newHave, newOpenVars, indexer ) ) {
 				PRINT(
 					std::cerr << "success!" << std::endl;
-					)
+				)
 				SymTab::Indexer newDecls( decls );
 				addToIndexer( newHave, newDecls );
@@ -486,5 +486,5 @@
 					(*candidate)->print( std::cout );
 					std::cout << std::endl;
-					)
+				)
 				ApplicationExpr *appExpr = static_cast< ApplicationExpr* >( newerAlt.expr );
 				// XXX: this is a memory leak, but adjType can't be deleted because it might contain assertions
@@ -509,5 +509,5 @@
 			std::cout << "============= new indexer" << std::endl;
 			decls.print( std::cout );
-			)
+		)
 		addToIndexer( have, decls );
 		AssertionSet newNeed;
@@ -533,5 +533,5 @@
 				std::cout << "need assertions:" << std::endl;
 				printAssertionSet( resultNeed, std::cout, 8 );
-				)
+			)
 			inferParameters( resultNeed, resultHave, newAlt, openVars, out );
 		}
@@ -542,11 +542,9 @@
 		AlternativeFinder funcOpFinder( indexer, env );
 
-		AlternativeFinder funcFinder( indexer, env );
-
-		{
+		AlternativeFinder funcFinder( indexer, env ); {
 			NameExpr *fname;
 			if ( ( fname = dynamic_cast<NameExpr *>( untypedExpr->get_function()))
-				 && ( fname->get_name() == std::string("LabAddress")) ) {
-				alternatives.push_back( Alternative( untypedExpr, env, Cost()) );
+				 && ( fname->get_name() == std::string("&&")) ) {
+				alternatives.push_back( Alternative( untypedExpr->clone(), env, Cost()) );
 				return;
 			}
@@ -562,5 +560,5 @@
 		Tuples::TupleAssignSpotter tassign( this );
 		if ( tassign.isTupleAssignment( untypedExpr, possibilities ) ) {
-			// TODO take care of possible tuple assignments, or discard expression
+			// take care of possible tuple assignments, or discard expression
 			return;
 		} // else ...
@@ -572,5 +570,5 @@
 				std::cout << "working on alternative: " << std::endl;
 				func->print( std::cout, 8 );
-				)
+			)
 			// check if the type is pointer to function
 			PointerType *pointer;
@@ -605,5 +603,5 @@
 						std::cout << "known function ops:" << std::endl;
 						printAlts( funcOpFinder.alternatives, std::cout, 8 );
-						)
+					)
 				}
 
@@ -644,9 +642,9 @@
 				withFunc->env.print( std::cout, 8 );
 				std::cout << "cost of conversion is:" << cvtCost << std::endl;
-				)
-				if ( cvtCost != Cost::infinity ) {
-					withFunc->cvtCost = cvtCost;
-					alternatives.push_back( *withFunc );
-				} // if
+			)
+			if ( cvtCost != Cost::infinity ) {
+				withFunc->cvtCost = cvtCost;
+				alternatives.push_back( *withFunc );
+			} // if
 		} // for
 		candidates.clear();
@@ -749,5 +747,5 @@
 				newExpr.print( std::cerr );
 				std::cerr << std::endl;
-				)
+			)
 			renameTypes( alternatives.back().expr );
 			if ( StructInstType *structInst = dynamic_cast< StructInstType* >( (*i)->get_type() ) ) {
@@ -796,11 +794,11 @@
 			argType->print( std::cout );
 			std::cout << std::endl;
-			)
-			if ( typesCompatibleIgnoreQualifiers( argType, function->get_parameters().front()->get_type(), indexer, env ) ) {
-				alternatives.push_back( Alternative( new AttrExpr( new VariableExpr( funcDecl ), argType->clone() ), env, Cost::zero ) );
-				for ( std::list< DeclarationWithType* >::iterator i = function->get_returnVals().begin(); i != function->get_returnVals().end(); ++i ) {
-					alternatives.back().expr->get_results().push_back( (*i)->get_type()->clone() );
-				} // for
-			} // if
+		)
+		if ( typesCompatibleIgnoreQualifiers( argType, function->get_parameters().front()->get_type(), indexer, env ) ) {
+			alternatives.push_back( Alternative( new AttrExpr( new VariableExpr( funcDecl ), argType->clone() ), env, Cost::zero ) );
+			for ( std::list< DeclarationWithType* >::iterator i = function->get_returnVals().begin(); i != function->get_returnVals().end(); ++i ) {
+				alternatives.back().expr->get_results().push_back( (*i)->get_type()->clone() );
+			} // for
+		} // if
 	}
 
Index: src/ResolvExpr/RenameVars.cc
===================================================================
--- src/ResolvExpr/RenameVars.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/ResolvExpr/RenameVars.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,9 +10,9 @@
 // Created On       : Sun May 17 12:05:18 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun May 17 12:07:59 2015
-// Update Count     : 2
+// Last Modified On : Mon Jun  8 14:51:35 2015
+// Update Count     : 4
 //
 
-#include <strstream>
+#include <sstream>
 
 #include "RenameVars.h"
@@ -122,7 +122,7 @@
 			// renames all "forall" type names to `_${level}_${name}'
 			for ( std::list< TypeDecl* >::iterator i = type->get_forall().begin(); i != type->get_forall().end(); ++i ) {
-				std::ostrstream output;
+				std::ostringstream output;
 				output << "_" << level << "_" << (*i)->get_name();
-				std::string newname( output.str(), output.pcount() );
+				std::string newname( output.str() );
 				mapStack.front()[ (*i)->get_name() ] = newname;
 				(*i)->set_name( newname );
Index: src/ResolvExpr/Resolver.cc
===================================================================
--- src/ResolvExpr/Resolver.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/ResolvExpr/Resolver.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Sun May 17 12:17:01 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sun May 17 12:18:17 2015
-// Update Count     : 2
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Jun 24 16:20:35 2015
+// Update Count     : 156
 //
 
@@ -38,4 +38,6 @@
 		virtual void visit( TypeDecl *typeDecl );
 
+		virtual void visit( ArrayType * at );
+
 		virtual void visit( ExprStmt *exprStmt );
 		virtual void visit( IfStmt *ifStmt );
@@ -45,4 +47,5 @@
 		virtual void visit( ChooseStmt *switchStmt );
 		virtual void visit( CaseStmt *caseStmt );
+		virtual void visit( BranchStmt *branchStmt );
 		virtual void visit( ReturnStmt *returnStmt );
 
@@ -50,4 +53,9 @@
 		virtual void visit( ListInit *listInit );
 	  private:
+  	typedef std::list< Initializer * >::iterator InitIterator;
+
+	  void resolveAggrInit( AggregateDecl *, InitIterator &, InitIterator & );
+	  void resolveSingleAggrInit( Declaration *, InitIterator &, InitIterator & );
+
 		std::list< Type * > functionReturn;
 		Type *initContext;
@@ -158,5 +166,16 @@
 		SymTab::Indexer::visit( objectDecl );
 	}
-  
+
+	void Resolver::visit( ArrayType * at ) {
+		if ( at->get_dimension() ) {
+			BasicType arrayLenType = BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt );
+			CastExpr *castExpr = new CastExpr( at->get_dimension(), arrayLenType.clone() );
+			Expression *newExpr = findSingleExpression( castExpr, *this );
+			delete at->get_dimension();
+			at->set_dimension( newExpr );
+		}
+		Visitor::visit( at );
+	}
+
 	void Resolver::visit( TypeDecl *typeDecl ) {
 		if ( typeDecl->get_base() ) {
@@ -166,5 +185,5 @@
 		SymTab::Indexer::visit( typeDecl );
 	}
-  
+
 	void Resolver::visit( FunctionDecl *functionDecl ) {
 #if 0
@@ -252,4 +271,17 @@
 	}
 
+	void Resolver::visit( BranchStmt *branchStmt ) {
+		// must resolve the argument for a computed goto
+		if ( branchStmt->get_type() == BranchStmt::Goto ) { // check for computed goto statement
+			if ( NameExpr * arg = dynamic_cast< NameExpr * >( branchStmt->get_computedTarget() ) ) {
+				VoidType v = Type::Qualifiers();		// cast to void * for the alternative finder
+				PointerType pt( Type::Qualifiers(), v.clone() );
+				CastExpr * castExpr = new CastExpr( arg, pt.clone() );
+				Expression * newExpr = findSingleExpression( castExpr, *this ); // find best expression
+				branchStmt->set_target( newExpr );
+			} // if
+		} // if
+	}
+
 	void Resolver::visit( ReturnStmt *returnStmt ) {
 		if ( returnStmt->get_expr() ) {
@@ -260,4 +292,13 @@
 			returnStmt->set_expr( newExpr );
 		} // if
+	}
+
+	template< typename T >
+	bool isCharType( T t ) {
+		if ( BasicType * bt = dynamic_cast< BasicType * >( t ) ) {
+			return bt->get_kind() == BasicType::Char || bt->get_kind() == BasicType::SignedChar || 
+				bt->get_kind() == BasicType::UnsignedChar;
+		}
+		return false;
 	}
 
@@ -286,10 +327,81 @@
 			delete castExpr;
 			singleInit->set_value( newExpr );
+
+			// check if initializing type is char[]
+			if ( ArrayType * at = dynamic_cast< ArrayType * >( initContext ) ) {
+				if ( isCharType( at->get_base() ) ) {
+					// check if the resolved type is char *
+					if ( PointerType * pt = dynamic_cast< PointerType *>( newExpr->get_results().front() ) ) {
+						if ( isCharType( pt->get_base() ) ) {
+							// strip cast if we're initializing a char[] with a char *, e.g.
+							// char x[] = "hello";
+							CastExpr *ce = dynamic_cast< CastExpr * >( newExpr );
+							singleInit->set_value( ce->get_arg() );
+							ce->set_arg( NULL );
+							delete ce;									
+						}
+					}
+				}
+			}
 		} // if
 //	singleInit->get_value()->accept( *this );
 	}
 
-	void Resolver::visit( ListInit *listInit ) {
-		Visitor::visit(listInit);
+	void Resolver::resolveSingleAggrInit( Declaration * dcl, InitIterator & init, InitIterator & initEnd ) {
+		DeclarationWithType * dt = dynamic_cast< DeclarationWithType * >( dcl );
+		assert( dt );
+		initContext = dt->get_type();
+		try {
+			if ( init == initEnd ) return; // stop when there are no more initializers
+			(*init)->accept( *this );
+			++init; // made it past an initializer
+		} catch( SemanticError & ) {
+			// need to delve deeper, if you can
+			if ( StructInstType * sit = dynamic_cast< StructInstType * >( dt->get_type() ) ) {
+				resolveAggrInit( sit->get_baseStruct(), init, initEnd );
+			} else if ( UnionInstType * uit = dynamic_cast< UnionInstType * >( dt->get_type() ) ) {
+				resolveAggrInit( uit->get_baseUnion(), init, initEnd );
+			} else {
+				// member is not an aggregate type, so can't go any deeper
+
+				// might need to rethink what is being thrown
+				throw;
+			} // if
+		}
+	}
+
+	void Resolver::resolveAggrInit( AggregateDecl * aggr, InitIterator & init, InitIterator & initEnd ) {
+		if ( StructDecl * st = dynamic_cast< StructDecl * >( aggr ) ) {
+			// want to resolve each initializer to the members of the struct,
+			// but if there are more initializers than members we should stop
+			list< Declaration * >::iterator it = st->get_members().begin();
+			for ( ; it != st->get_members().end(); ++it) {
+				resolveSingleAggrInit( *it, init, initEnd );
+			}
+		} else if ( UnionDecl * un = dynamic_cast< UnionDecl * >( aggr ) ) {
+			// only resolve to the first member of a union
+			resolveSingleAggrInit( *un->get_members().begin(), init, initEnd );
+		} // if
+	}
+
+	void Resolver::visit( ListInit * listInit ) {
+		InitIterator iter = listInit->begin_initializers();
+		InitIterator end = listInit->end_initializers();
+
+		if ( ArrayType * at = dynamic_cast< ArrayType * >( initContext ) ) {
+			// resolve each member to the base type of the array
+			for ( ; iter != end; ++iter ) {
+				initContext = at->get_base();
+				(*iter)->accept( *this );
+			} // for
+		} else if ( StructInstType * st = dynamic_cast< StructInstType * >( initContext ) ) {
+			resolveAggrInit( st->get_baseStruct(), iter, end );
+		} else if ( UnionInstType *st = dynamic_cast< UnionInstType * >( initContext ) ) {
+			resolveAggrInit( st->get_baseUnion(), iter, end );
+		} else {
+			// basic types are handled here
+			Visitor::visit( listInit );
+		}
+
 #if 0
 		if ( ArrayType *at = dynamic_cast<ArrayType*>(initContext) ) {
Index: src/ResolvExpr/module.mk
===================================================================
--- src/ResolvExpr/module.mk	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/ResolvExpr/module.mk	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,4 +1,20 @@
+######################### -*- Mode: Makefile-Gmake -*- ########################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## module.mk -- 
+##
+## Author           : Richard C. Bilson
+## Created On       : Mon Jun  1 17:49:17 2015
+## Last Modified By : Peter A. Buhr
+## Last Modified On : Mon Jun  1 17:53:28 2015
+## Update Count     : 1
+###############################################################################
+
 SRC += ResolvExpr/AlternativeFinder.cc \
-      ResolvExpr/Alternative.cc \
+       ResolvExpr/Alternative.cc \
        ResolvExpr/Unify.cc \
        ResolvExpr/PtrsAssignable.cc \
@@ -16,3 +32,2 @@
        ResolvExpr/Occurs.cc \
        ResolvExpr/TypeEnvironment.cc
-       
Index: src/SymTab/Indexer.cc
===================================================================
--- src/SymTab/Indexer.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SymTab/Indexer.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Sun May 17 21:37:33 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 16:49:55 2015
-// Update Count     : 3
+// Last Modified On : Fri Jun  5 08:05:17 2015
+// Update Count     : 5
 //
 
@@ -51,27 +51,29 @@
 	}
 
-/********
- * A NOTE ON THE ORDER OF TRAVERSAL
- *
- * Types and typedefs have their base types visited before they are added to the type table.
- * This is ok, since there is no such thing as a recursive type or typedef.
- *             typedef struct { T *x; } T; // never allowed
- *
- * for structs/unions, it is possible to have recursion, so the decl should be added as if it's
- * incomplete to begin, the members are traversed, and then the complete type should be added
- * (assuming the type is completed by this particular declaration).
- *             struct T { struct T *x; }; // allowed
- *
- * It's important to add the complete type to the symbol table *after* the members/base has been
- * traversed, since that traversal may modify the definition of the type and these modifications
- * should be visible when the symbol table is queried later in this pass.
- *
- * TODO: figure out whether recursive contexts are sensible/possible/reasonable.
- */
+
+// A NOTE ON THE ORDER OF TRAVERSAL
+//
+// Types and typedefs have their base types visited before they are added to the type table.  This is ok, since there is
+// no such thing as a recursive type or typedef.
+//
+//             typedef struct { T *x; } T; // never allowed
+//
+// for structs/unions, it is possible to have recursion, so the decl should be added as if it's incomplete to begin, the
+// members are traversed, and then the complete type should be added (assuming the type is completed by this particular
+// declaration).
+//
+//             struct T { struct T *x; }; // allowed
+//
+// It is important to add the complete type to the symbol table *after* the members/base has been traversed, since that
+// traversal may modify the definition of the type and these modifications should be visible when the symbol table is
+// queried later in this pass.
+//
+// TODO: figure out whether recursive contexts are sensible/possible/reasonable.
+
 
 	void Indexer::visit( TypeDecl *typeDecl ) {
 		// see A NOTE ON THE ORDER OF TRAVERSAL, above
-		// note that assertions come after the type is added to the symtab, since they aren't part
-		// of the type proper and may depend on the type itself
+		// note that assertions come after the type is added to the symtab, since they are not part of the type proper
+		// and may depend on the type itself
 		enterScope();
 		acceptAll( typeDecl->get_parameters(), *this );
Index: src/SymTab/Mangler.cc
===================================================================
--- src/SymTab/Mangler.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SymTab/Mangler.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Sun May 17 21:40:29 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 16:50:47 2015
-// Update Count     : 3
+// Last Modified On : Mon Jun  8 15:12:12 2015
+// Update Count     : 8
 //
 
@@ -160,7 +160,6 @@
 		} else {
 			printQualifiers( typeInst );
-			std::ostrstream numStream;
+			std::ostringstream numStream;
 			numStream << varNum->second.first;
-			mangleName << (numStream.pcount() + 1);
 			switch ( (TypeDecl::Kind )varNum->second.second ) {
 			  case TypeDecl::Any:
@@ -174,5 +173,5 @@
 				break;
 			} // switch
-			mangleName << std::string( numStream.str(), numStream.pcount() );
+			mangleName << numStream.str();
 		} // if
 	}
@@ -220,5 +219,5 @@
 					sub_mangler.varNums = varNums;
 					(*assert)->accept( sub_mangler );
-					assertionNames.push_back( std::string( sub_mangler.mangleName.str(), sub_mangler.mangleName.pcount() ) );
+					assertionNames.push_back( sub_mangler.mangleName.str() );
 				} // for
 			} // for
Index: src/SymTab/Mangler.h
===================================================================
--- src/SymTab/Mangler.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SymTab/Mangler.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Sun May 17 21:44:03 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 16:49:21 2015
-// Update Count     : 3
+// Last Modified On : Mon Jun  8 14:47:14 2015
+// Update Count     : 5
 //
 
@@ -17,5 +17,5 @@
 #define MANGLER_H
 
-#include <strstream>
+#include <sstream>
 #include "SynTree/SynTree.h"
 #include "SynTree/Visitor.h"
@@ -43,7 +43,7 @@
 		virtual void visit( TupleType *tupleType );
   
-		std::string get_mangleName() { return std::string( mangleName.str(), mangleName.pcount() ); }
+		std::string get_mangleName() { return mangleName.str(); }
 	  private:
-		std::ostrstream mangleName;
+		std::ostringstream mangleName;
 		typedef std::map< std::string, std::pair< int, int > > VarMapType;
 		VarMapType varNums;
Index: src/SymTab/Validate.cc
===================================================================
--- src/SymTab/Validate.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SymTab/Validate.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Sun May 17 21:50:04 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 16:50:09 2015
-// Update Count     : 3
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Jun 24 16:20:50 2015
+// Update Count     : 30
 //
 
@@ -45,6 +45,6 @@
 #include "SynTree/Type.h"
 #include "SynTree/Statement.h"
+#include "SynTree/TypeSubstitution.h"
 #include "Indexer.h"
-#include "SynTree/TypeSubstitution.h"
 #include "FixFunction.h"
 #include "ImplementationType.h"
@@ -176,4 +176,6 @@
 		acceptAll( translationUnit, pass1 );
 		acceptAll( translationUnit, pass2 );
+		// need to collect all of the assignment operators prior to
+		// this point and only generate assignment operators if one doesn't exist
 		AddStructAssignment::addStructAssignment( translationUnit );
 		acceptAll( translationUnit, pass3 );
@@ -506,5 +508,5 @@
 		if ( ! array->get_dimension() ) return;
   
-		ObjectDecl *index = new ObjectDecl( indexName.newName(), Declaration::NoStorageClass, LinkageSpec::C, 0, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), 0 );
+		ObjectDecl *index = new ObjectDecl( indexName.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), 0 );
 		*out++ = new DeclStmt( noLabels, index );
   
@@ -544,20 +546,32 @@
 		FunctionType *assignType = new FunctionType( Type::Qualifiers(), false );
   
-		ObjectDecl *returnVal = new ObjectDecl( "", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, refType->clone(), 0 );
+		ObjectDecl *returnVal = new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, refType->clone(), 0 );
 		assignType->get_returnVals().push_back( returnVal );
   
-		ObjectDecl *dstParam = new ObjectDecl( "_dst", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), refType->clone() ), 0 );
+		ObjectDecl *dstParam = new ObjectDecl( "_dst", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), refType->clone() ), 0 );
 		assignType->get_parameters().push_back( dstParam );
   
-		ObjectDecl *srcParam = new ObjectDecl( "_src", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, refType, 0 );
+		ObjectDecl *srcParam = new ObjectDecl( "_src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, refType, 0 );
 		assignType->get_parameters().push_back( srcParam );
 
 		// Routines at global scope marked "static" to prevent multiple definitions is separate translation units
 		// because each unit generates copies of the default routines for each aggregate.
-		FunctionDecl *assignDecl = new FunctionDecl( "?=?", functionNesting > 0 ? Declaration::NoStorageClass : Declaration::Static, LinkageSpec::AutoGen, assignType, new CompoundStmt( noLabels ), true );
+		FunctionDecl *assignDecl = new FunctionDecl( "?=?", functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::AutoGen, assignType, new CompoundStmt( noLabels ), true, false );
 		assignDecl->fixUniqueId();
   
 		for ( std::list< Declaration * >::const_iterator member = aggregateDecl->get_members().begin(); member != aggregateDecl->get_members().end(); ++member ) {
 			if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( *member ) ) {
+				// query the type qualifiers of this field and skip assigning it if it is marked const. 
+				// If it is an array type, we need to strip off the array layers to find its qualifiers.
+				Type * type = dwt->get_type();
+				while ( ArrayType * at = dynamic_cast< ArrayType * >( type ) ) {
+					type = at->get_base();
+				}
+
+				if ( type->get_qualifiers().isConst ) {
+					// don't assign const members
+					continue;
+				}
+
 				if ( ArrayType *array = dynamic_cast< ArrayType * >( dwt->get_type() ) ) {
 					makeArrayAssignment( srcParam, dstParam, dwt, array, back_inserter( assignDecl->get_statements()->get_kids() ) );
@@ -575,16 +589,16 @@
 		FunctionType *assignType = new FunctionType( Type::Qualifiers(), false );
   
-		ObjectDecl *returnVal = new ObjectDecl( "", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, refType->clone(), 0 );
+		ObjectDecl *returnVal = new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, refType->clone(), 0 );
 		assignType->get_returnVals().push_back( returnVal );
   
-		ObjectDecl *dstParam = new ObjectDecl( "_dst", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), refType->clone() ), 0 );
+		ObjectDecl *dstParam = new ObjectDecl( "_dst", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), refType->clone() ), 0 );
 		assignType->get_parameters().push_back( dstParam );
   
-		ObjectDecl *srcParam = new ObjectDecl( "_src", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, refType, 0 );
+		ObjectDecl *srcParam = new ObjectDecl( "_src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, refType, 0 );
 		assignType->get_parameters().push_back( srcParam );
   
 		// Routines at global scope marked "static" to prevent multiple definitions is separate translation units
 		// because each unit generates copies of the default routines for each aggregate.
-		FunctionDecl *assignDecl = new FunctionDecl( "?=?",  functionNesting > 0 ? Declaration::NoStorageClass : Declaration::Static, LinkageSpec::AutoGen, assignType, new CompoundStmt( noLabels ), true );
+		FunctionDecl *assignDecl = new FunctionDecl( "?=?",  functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::AutoGen, assignType, new CompoundStmt( noLabels ), true, false );
 		assignDecl->fixUniqueId();
   
@@ -621,6 +635,6 @@
 		TypeInstType *typeInst = new TypeInstType( Type::Qualifiers(), typeDecl->get_name(), false );
 		typeInst->set_baseType( typeDecl );
-		ObjectDecl *src = new ObjectDecl( "_src", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, typeInst->clone(), 0 );
-		ObjectDecl *dst = new ObjectDecl( "_dst", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), typeInst->clone() ), 0 );
+		ObjectDecl *src = new ObjectDecl( "_src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, typeInst->clone(), 0 );
+		ObjectDecl *dst = new ObjectDecl( "_dst", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), typeInst->clone() ), 0 );
 		if ( typeDecl->get_base() ) {
 			stmts = new CompoundStmt( std::list< Label >() );
@@ -631,18 +645,16 @@
 		} // if
 		FunctionType *type = new FunctionType( Type::Qualifiers(), false );
-		type->get_returnVals().push_back( new ObjectDecl( "", Declaration::NoStorageClass, LinkageSpec::Cforall, 0, typeInst, 0 ) );
+		type->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, typeInst, 0 ) );
 		type->get_parameters().push_back( dst );
 		type->get_parameters().push_back( src );
-		FunctionDecl *func = new FunctionDecl( "?=?", Declaration::NoStorageClass, LinkageSpec::AutoGen, type, stmts, false );
+		FunctionDecl *func = new FunctionDecl( "?=?", DeclarationNode::NoStorageClass, LinkageSpec::AutoGen, type, stmts, false, false );
 		declsToAdd.push_back( func );
 	}
 
 	void addDecls( std::list< Declaration * > &declsToAdd, std::list< Statement * > &statements, std::list< Statement * >::iterator i ) {
-		if ( ! declsToAdd.empty() ) {
-			for ( std::list< Declaration * >::iterator decl = declsToAdd.begin(); decl != declsToAdd.end(); ++decl ) {
-				statements.insert( i, new DeclStmt( noLabels, *decl ) );
-			} // for
-			declsToAdd.clear();
-		} // if
+		for ( std::list< Declaration * >::iterator decl = declsToAdd.begin(); decl != declsToAdd.end(); ++decl ) {
+			statements.insert( i, new DeclStmt( noLabels, *decl ) );
+		} // for
+		declsToAdd.clear();
 	}
 
Index: src/SymTab/module.mk
===================================================================
--- src/SymTab/module.mk	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SymTab/module.mk	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,2 +1,18 @@
+######################### -*- Mode: Makefile-Gmake -*- ########################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## module.mk -- 
+##
+## Author           : Richard C. Bilson
+## Created On       : Mon Jun  1 17:49:17 2015
+## Last Modified By : Peter A. Buhr
+## Last Modified On : Mon Jun  1 17:53:50 2015
+## Update Count     : 1
+###############################################################################
+
 SRC += SymTab/IdTable.cc \
        SymTab/Indexer.cc \
Index: src/SynTree/AggregateDecl.cc
===================================================================
--- src/SynTree/AggregateDecl.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SynTree/AggregateDecl.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Sun May 17 23:56:39 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 16:52:08 2015
-// Update Count     : 5
+// Last Modified On : Sat Jun 13 08:12:49 2015
+// Update Count     : 6
 //
 
@@ -19,5 +19,5 @@
 
 
-AggregateDecl::AggregateDecl( const std::string &name ) : Parent( name, Declaration::NoStorageClass, LinkageSpec::Cforall ) {
+AggregateDecl::AggregateDecl( const std::string &name ) : Parent( name, DeclarationNode::NoStorageClass, LinkageSpec::Cforall ) {
 }
 
Index: src/SynTree/ArrayType.cc
===================================================================
--- src/SynTree/ArrayType.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SynTree/ArrayType.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 07:52:08 2015
-// Update Count     : 2
+// Last Modified On : Sat Jun  6 14:11:48 2015
+// Update Count     : 9
 //
 
@@ -25,6 +25,6 @@
 
 ArrayType::ArrayType( const ArrayType &other )
-	: Type( other ), base( maybeClone( other.base ) ), dimension( maybeClone( other.dimension ) ),
-	  isVarLen( other.isVarLen ), isStatic( other.isStatic ) {
+		: Type( other ), base( maybeClone( other.base ) ), dimension( maybeClone( other.dimension ) ),
+		  isVarLen( other.isVarLen ), isStatic( other.isStatic ) {
 }
 
@@ -43,5 +43,4 @@
 	} else if ( dimension ) {
 		os << "array of ";
-		dimension->print( os, indent );
 	} else {
 		os << "open array of ";
@@ -49,4 +48,8 @@
 	if ( base ) {
 		base->print( os, indent );
+	} // if
+	if ( dimension ) {
+		os << "with dimension of ";
+		dimension->print( os, indent );
 	} // if
 }
Index: src/SynTree/BasicType.cc
===================================================================
--- src/SynTree/BasicType.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SynTree/BasicType.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 07:55:16 2015
-// Update Count     : 1
+// Last Modified On : Sun Jun  7 08:44:36 2015
+// Update Count     : 5
 //
 
Index: src/SynTree/CompoundStmt.cc
===================================================================
--- src/SynTree/CompoundStmt.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SynTree/CompoundStmt.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 08:11:02 2015
-// Update Count     : 1
+// Last Modified On : Tue Jun 23 11:37:49 2015
+// Update Count     : 3
 //
 
@@ -33,7 +33,7 @@
 }
 
-void CompoundStmt::print( std::ostream &os, int indent ) {
-	os << "\r" << string(indent, ' ') << "CompoundStmt" << endl ;
-	printAll( kids, os, indent+2 );
+void CompoundStmt::print( std::ostream &os, int indent ) const {
+	os << string( indent, ' ' ) << "CompoundStmt" << endl ;
+	printAll( kids, os, indent + 2 );
 }
 
Index: src/SynTree/Constant.cc
===================================================================
--- src/SynTree/Constant.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SynTree/Constant.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 08:13:25 2015
-// Update Count     : 1
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Jun 10 14:41:03 2015
+// Update Count     : 8
 //
 
@@ -20,5 +20,5 @@
 #include "Type.h"
 
-Constant::Constant( Type *_type, std::string _value ) : type(_type), value(_value) {}
+Constant::Constant( Type *type_, std::string value_ ) : type( type_ ), value( value_ ) {}
 
 Constant::~Constant() {}
@@ -27,10 +27,10 @@
 
 void Constant::print( std::ostream &os ) const {
-	os << value;
+	os << "(" << value;
 	if ( type ) {
-		os << " (type: ";
+		os << ": ";
 		type->print( os );
-		os << ")";
 	} // if
+  os << ")";
 }
 
Index: src/SynTree/DeclStmt.cc
===================================================================
--- src/SynTree/DeclStmt.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SynTree/DeclStmt.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 08:16:03 2015
-// Update Count     : 2
+// Last Modified On : Tue Jun 23 11:38:15 2015
+// Update Count     : 4
 //
 
@@ -28,9 +28,8 @@
 }
 
-void DeclStmt::print( std::ostream &os, int indent ) {
+void DeclStmt::print( std::ostream &os, int indent ) const {
+	assert( decl != 0 );
 	os << "Declaration of ";
-	if ( decl ) {
-		decl->print( os, indent );
-	} // if
+	decl->print( os, indent );
 }
 
Index: src/SynTree/Declaration.cc
===================================================================
--- src/SynTree/Declaration.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SynTree/Declaration.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 08:18:35 2015
-// Update Count     : 2
+// Last Modified On : Sat Jun 13 08:07:20 2015
+// Update Count     : 9
 //
 
@@ -22,16 +22,14 @@
 #include "utility.h"
 
-const char* Declaration::storageClassName[] = { "", "auto", "static", "extern", "register" };  
-
 static UniqueId lastUniqueId = 0;
 typedef std::map< UniqueId, Declaration* > IdMapType;
 static IdMapType idMap;
 
-Declaration::Declaration( const std::string &name, StorageClass sc, LinkageSpec::Type linkage )
-	: name( name ), storageClass( sc ), linkage( linkage ), uniqueId( 0 ) {
+Declaration::Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage )
+		: name( name ), storageClass( sc ), linkage( linkage ), uniqueId( 0 ) {
 }
 
 Declaration::Declaration( const Declaration &other )
-	: name( other.name ), storageClass( other.storageClass ), linkage( other.linkage ), uniqueId( other.uniqueId ) {
+		: name( other.name ), storageClass( other.storageClass ), linkage( other.linkage ), uniqueId( other.uniqueId ) {
 }
 
@@ -44,15 +42,9 @@
 }
 
-/* static class method */
 Declaration *Declaration::declFromId( UniqueId id ) {
 	IdMapType::const_iterator i = idMap.find( id );
-	if ( i != idMap.end() ) {
-		return i->second;
-	} else {
-		return 0;
-	} // if
+	return i != idMap.end() ? i->second : 0;
 }
 
-/* static class method */
 void Declaration::dumpIds( std::ostream &os ) {
 	for ( IdMapType::const_iterator i = idMap.begin(); i != idMap.end(); ++i ) {
Index: src/SynTree/Declaration.h
===================================================================
--- src/SynTree/Declaration.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SynTree/Declaration.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 08:46:25 2015
-// Update Count     : 2
+// Last Modified On : Sat Jun 13 09:10:31 2015
+// Update Count     : 25
 //
 
@@ -21,25 +21,16 @@
 #include "Mutator.h"
 #include "Parser/LinkageSpec.h"
+#include "Parser/ParseNode.h"
 
 class Declaration {
   public:
-	enum StorageClass {  
-		NoStorageClass,
-		Extern,
-		Static,
-		Auto,
-		Register,
-		Inline,
-		Fortran,
-	};	
-
-	Declaration( const std::string &name, StorageClass sc, LinkageSpec::Type linkage );
+	Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage );
 	Declaration( const Declaration &other );
 	virtual ~Declaration();
 
-	std::string get_name() const { return name; }
+	const std::string &get_name() const { return name; }
 	void set_name( std::string newValue ) { name = newValue; }
-	StorageClass get_storageClass() const { return storageClass; }
-	void set_storageClass( StorageClass newValue ) { storageClass = newValue; }
+	DeclarationNode::StorageClass get_storageClass() const { return storageClass; }
+	void set_storageClass( DeclarationNode::StorageClass newValue ) { storageClass = newValue; }
 	LinkageSpec::Type get_linkage() const { return linkage; }
 	void set_linkage( LinkageSpec::Type newValue ) { linkage = newValue; }
@@ -53,11 +44,9 @@
 	virtual void printShort( std::ostream &os, int indent = 0 ) const = 0;
 
-	static const char* storageClassName[];  
-
 	static void dumpIds( std::ostream &os );
 	static Declaration *declFromId( UniqueId id );
   private:
 	std::string name;
-	StorageClass storageClass;
+	DeclarationNode::StorageClass storageClass;
 	LinkageSpec::Type linkage;
 	UniqueId uniqueId;
@@ -66,5 +55,5 @@
 class DeclarationWithType : public Declaration {
   public:
-	DeclarationWithType( const std::string &name, StorageClass sc, LinkageSpec::Type linkage );
+	DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage );
 	DeclarationWithType( const DeclarationWithType &other );
 	virtual ~DeclarationWithType();
@@ -86,5 +75,5 @@
 	typedef DeclarationWithType Parent;
   public:
-	ObjectDecl( const std::string &name, StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init );
+	ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init );
 	ObjectDecl( const ObjectDecl &other );
 	virtual ~ObjectDecl();
@@ -112,5 +101,5 @@
 	typedef DeclarationWithType Parent;
   public:
-	FunctionDecl( const std::string &name, StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline );
+	FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn );
 	FunctionDecl( const FunctionDecl &other );
 	virtual ~FunctionDecl();
@@ -123,6 +112,6 @@
 	CompoundStmt *get_statements() const { return statements; }
 	void set_statements( CompoundStmt *newValue ) { statements = newValue; }
-//    bool get_isInline() const { return isInline; }
-//    void set_isInline( bool newValue ) { isInline = newValue; }
+	bool get_isInline() const { return isInline; }
+	bool get_isNoreturn() const { return isNoreturn; }
 	std::list< std::string >& get_oldIdents() { return oldIdents; }
 	std::list< Declaration* >& get_oldDecls() { return oldDecls; }
@@ -136,5 +125,5 @@
 	FunctionType *type;
 	CompoundStmt *statements;
-	bool isInline;
+	bool isInline, isNoreturn;
 	std::list< std::string > oldIdents;
 	std::list< Declaration* > oldDecls;
@@ -144,5 +133,5 @@
 	typedef Declaration Parent;
   public:
-	NamedTypeDecl( const std::string &name, StorageClass sc, Type *type );
+	NamedTypeDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *type );
 	NamedTypeDecl( const TypeDecl &other );
 	virtual ~NamedTypeDecl();
@@ -169,5 +158,5 @@
 	enum Kind { Any, Dtype, Ftype };
 
-	TypeDecl( const std::string &name, StorageClass sc, Type *type, Kind kind );
+	TypeDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *type, Kind kind );
 	TypeDecl( const TypeDecl &other );
 
@@ -185,5 +174,5 @@
 	typedef NamedTypeDecl Parent;
   public:
-	TypedefDecl( const std::string &name, StorageClass sc, Type *type ) : Parent( name, sc, type ) {}
+	TypedefDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *type ) : Parent( name, sc, type ) {}
 	TypedefDecl( const TypedefDecl &other ) : Parent( other ) {}
 
Index: src/SynTree/DeclarationWithType.cc
===================================================================
--- src/SynTree/DeclarationWithType.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SynTree/DeclarationWithType.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 08:20:23 2015
-// Update Count     : 2
+// Last Modified On : Sat Jun 13 08:08:07 2015
+// Update Count     : 3
 //
 
@@ -18,5 +18,5 @@
 #include "utility.h"
 
-DeclarationWithType::DeclarationWithType( const std::string &name, StorageClass sc, LinkageSpec::Type linkage )
+DeclarationWithType::DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage )
 		: Declaration( name, sc, linkage ) {
 }
Index: src/SynTree/Expression.cc
===================================================================
--- src/SynTree/Expression.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SynTree/Expression.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 08:27:07 2015
-// Update Count     : 2
+// Last Modified On : Sun Jun  7 08:40:46 2015
+// Update Count     : 16
 //
 
@@ -50,12 +50,12 @@
 }
 
-void Expression::print(std::ostream &os, int indent) const {
+void Expression::print( std::ostream &os, int indent ) const {
 	if ( env ) {
-		os << std::string(indent, ' ') << "with environment:" << std::endl;
+		os << std::string( indent, ' ' ) << "with environment:" << std::endl;
 		env->print( os, indent+2 );
 	} // if
 
 	if ( argName ) {
-		os << std::string(indent, ' ') << "with designator:";
+		os << std::string( indent, ' ' ) << "with designator:";
 		argName->print( os, indent+2 );
 	} // if
@@ -72,7 +72,6 @@
 
 void ConstantExpr::print( std::ostream &os, int indent ) const {
-	os << std::string(indent, ' ') << "Constant Expression: " ;
-	constant.print(os);
-	os << std::endl;
+	os << "constant expression " ;
+	constant.print( os );
 	Expression::print( os, indent );
 }
@@ -93,5 +92,5 @@
 
 void VariableExpr::print( std::ostream &os, int indent ) const {
-	os << std::string(indent, ' ') << "Variable Expression: ";
+	os << std::string( indent, ' ' ) << "Variable Expression: ";
 
 	Declaration *decl = get_var();
@@ -122,5 +121,5 @@
 
 void SizeofExpr::print( std::ostream &os, int indent) const {
-	os << std::string(indent, ' ') << "Sizeof Expression on: ";
+	os << std::string( indent, ' ' ) << "Sizeof Expression on: ";
 
 	if (isType)
@@ -152,5 +151,5 @@
 
 void AttrExpr::print( std::ostream &os, int indent) const {
-	os << std::string(indent, ' ') << "Attr ";
+	os << std::string( indent, ' ' ) << "Attr ";
 	attr->print( os, indent + 2 );
 	if ( isType || expr ) {
@@ -184,9 +183,9 @@
 
 void CastExpr::print( std::ostream &os, int indent ) const {
-	os << std::string(indent, ' ') << "Cast of:" << std::endl;
+	os << std::string( indent, ' ' ) << "Cast of:" << std::endl;
 	arg->print(os, indent+2);
-	os << std::endl << std::string(indent, ' ') << "to:" << std::endl;
+	os << std::endl << std::string( indent, ' ' ) << "to:" << std::endl;
 	if ( results.empty() ) {
-		os << std::string(indent+2, ' ') << "nothing" << std::endl;
+		os << std::string( indent+2, ' ' ) << "nothing" << std::endl;
 	} else {
 		printAll(results, os, indent+2);
@@ -207,8 +206,8 @@
 
 void UntypedMemberExpr::print( std::ostream &os, int indent ) const {
-	os << std::string(indent, ' ') << "Member Expression, with field: " << get_member();
+	os << std::string( indent, ' ' ) << "Member Expression, with field: " << get_member();
 
 	Expression *agg = get_aggregate();
-	os << std::string(indent, ' ') << "from aggregate: ";
+	os << std::string( indent, ' ' ) << "from aggregate: ";
 	if (agg != 0) agg->print(os, indent + 2);
 	Expression::print( os, indent );
@@ -234,13 +233,13 @@
 
 void MemberExpr::print( std::ostream &os, int indent ) const {
-	os << std::string(indent, ' ') << "Member Expression, with field: " << std::endl;
+	os << std::string( indent, ' ' ) << "Member Expression, with field: " << std::endl;
 
 	assert( member );
-	os << std::string(indent + 2, ' ');
+	os << std::string( indent + 2, ' ' );
 	member->print( os, indent + 2 );
 	os << std::endl;
 
 	Expression *agg = get_aggregate();
-	os << std::string(indent, ' ') << "from aggregate: " << std::endl;
+	os << std::string( indent, ' ' ) << "from aggregate: " << std::endl;
 	if (agg != 0) agg->print(os, indent + 2);
 	Expression::print( os, indent );
@@ -261,7 +260,7 @@
 
 void UntypedExpr::print( std::ostream &os, int indent ) const {
-	os << std::string(indent, ' ') << "Applying untyped: " << std::endl;
+	os << std::string( indent, ' ' ) << "Applying untyped: " << std::endl;
 	function->print(os, indent + 4);
-	os << "\r" << std::string(indent, ' ') << "...to: " << std::endl;
+	os << std::string( indent, ' ' ) << "...to: " << std::endl;
 	printArgs(os, indent + 4);
 	Expression::print( os, indent );
@@ -282,5 +281,5 @@
 
 void NameExpr::print( std::ostream &os, int indent ) const {
-	os << std::string(indent, ' ') << "Name: " << get_name() << std::endl;
+	os << std::string( indent, ' ' ) << "Name: " << get_name() << std::endl;
 	Expression::print( os, indent );
 }
@@ -301,5 +300,5 @@
 
 void LogicalExpr::print( std::ostream &os, int indent )const {
-	os << std::string(indent, ' ') << "Short-circuited operation (" << (isAnd?"and":"or") << ") on: ";
+	os << std::string( indent, ' ' ) << "Short-circuited operation (" << (isAnd?"and":"or") << ") on: ";
 	arg1->print(os);
 	os << " and ";
@@ -323,9 +322,9 @@
 
 void ConditionalExpr::print( std::ostream &os, int indent ) const {
-	os << std::string(indent, ' ') << "Conditional expression on: " << std::endl;
+	os << std::string( indent, ' ' ) << "Conditional expression on: " << std::endl;
 	arg1->print( os, indent+2 );
-	os << std::string(indent, ' ') << "First alternative:" << std::endl;
+	os << std::string( indent, ' ' ) << "First alternative:" << std::endl;
 	arg2->print( os, indent+2 );
-	os << std::string(indent, ' ') << "Second alternative:" << std::endl;
+	os << std::string( indent, ' ' ) << "Second alternative:" << std::endl;
 	arg3->print( os, indent+2 );
 	os << std::endl;
@@ -334,5 +333,5 @@
 
 void UntypedValofExpr::print( std::ostream &os, int indent ) const {
-	os << std::string(indent, ' ') << "Valof Expression: " << std::endl;
+	os << std::string( indent, ' ' ) << "Valof Expression: " << std::endl;
 	if ( get_body() != 0 )
 		get_body()->print( os, indent + 2 );
Index: src/SynTree/Expression.h
===================================================================
--- src/SynTree/Expression.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SynTree/Expression.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 08:46:15 2015
-// Update Count     : 3
+// Last Modified On : Sun Jun  7 22:03:44 2015
+// Update Count     : 4
 //
 
@@ -125,5 +125,5 @@
 	virtual ~NameExpr();
 
-	std::string get_name() const { return name; }
+	const std::string &get_name() const { return name; }
 	void set_name( std::string newValue ) { name = newValue; }
 
Index: src/SynTree/FunctionDecl.cc
===================================================================
--- src/SynTree/FunctionDecl.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SynTree/FunctionDecl.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu May 21 21:31:16 2015
-// Update Count     : 11
+// Last Modified On : Sat Jun 13 09:10:32 2015
+// Update Count     : 16
 //
 
@@ -21,6 +21,6 @@
 #include "utility.h"
 
-FunctionDecl::FunctionDecl( const std::string &name, StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline )
-		: Parent( name, sc, linkage ), type( type ), statements( statements ), isInline( isInline ) {
+FunctionDecl::FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn )
+		: Parent( name, sc, linkage ), type( type ), statements( statements ), isInline( isInline ), isNoreturn( isNoreturn ) {
 	// this is a brazen hack to force the function "main" to have C linkage
 	if ( name == "main" ) {
@@ -30,5 +30,5 @@
 
 FunctionDecl::FunctionDecl( const FunctionDecl &other )
-		: Parent( other ), type( maybeClone( other.type ) ), statements( maybeClone( other.statements ) ), isInline( other.isInline ) {
+	: Parent( other ), type( maybeClone( other.type ) ), statements( maybeClone( other.statements ) ), isInline( other.isInline ), isNoreturn( other.isNoreturn ) {
 }
 
@@ -52,5 +52,5 @@
 	
 	if ( get_name() != "" ) {
-		os << get_name() << ": a ";
+		os << get_name() << ": ";
 	} // if
 	if ( get_linkage() != LinkageSpec::Cforall ) {
@@ -60,6 +60,9 @@
 		os << "inline ";
 	} // if
-	if ( get_storageClass() != NoStorageClass ) {
-		os << storageClassName[ get_storageClass() ] << ' ';
+	if ( isNoreturn ) {
+		os << "_Noreturn ";
+	} // if
+	if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
+		os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
 	} // if
 	if ( get_type() ) {
@@ -70,17 +73,17 @@
 
 	if ( ! oldIdents.empty() ) {
-		os << string( indent+2, ' ' ) << "with parameter names" << endl;
+		os << string( indent + 2, ' ' ) << "with parameter names" << endl;
 		for ( std::list< std::string >::const_iterator i = oldIdents.begin(); i != oldIdents.end(); ++i ) {
-			os << string( indent+4, ' ' ) << *i << endl;
+			os << string( indent + 4, ' ' ) << *i << endl;
 		} // for
 	} // if
 
 	if ( ! oldDecls.empty() ) {
-		os << string( indent+2, ' ' ) << "with parameter declarations" << endl;
-		printAll( oldDecls, os, indent+4 );
+		os << string( indent + 2, ' ' ) << "with parameter declarations" << endl;
+		printAll( oldDecls, os, indent + 4 );
 	} // if
 	if ( statements ) {
-		os << string( indent+2, ' ' ) << "with body " << endl;
-		statements->print( os, indent+4 );
+		os << string( indent + 2, ' ' ) << "with body " << endl;
+		statements->print( os, indent + 4 );
 	} // if
 }
@@ -91,11 +94,14 @@
 	
 	if ( get_name() != "" ) {
-		os << get_name() << ": a ";
+		os << get_name() << ": ";
 	} // if
 	if ( isInline ) {
 		os << "inline ";
 	} // if
-	if ( get_storageClass() != NoStorageClass ) {
-		os << storageClassName[ get_storageClass() ] << ' ';
+	if ( isNoreturn ) {
+		os << "_Noreturn ";
+	} // if
+	if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
+		os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
 	} // if
 	if ( get_type() ) {
Index: src/SynTree/Mutator.h
===================================================================
--- src/SynTree/Mutator.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SynTree/Mutator.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 10:12:28 2015
-// Update Count     : 3
+// Last Modified By : Rob Schluntz
+// Last Modified On : Fri May 29 16:34:08 2015
+// Update Count     : 4
 //
 #include <cassert>
@@ -104,5 +104,4 @@
 		assert( newnode );
 		return newnode;
-///	    return tree->acceptMutator( mutator );
 	} else {
 		return 0;
Index: src/SynTree/NamedTypeDecl.cc
===================================================================
--- src/SynTree/NamedTypeDecl.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SynTree/NamedTypeDecl.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 10:13:19 2015
-// Update Count     : 1
+// Last Modified On : Sat Jun 13 08:13:55 2015
+// Update Count     : 3
 //
 
@@ -18,5 +18,5 @@
 #include "utility.h"
 
-NamedTypeDecl::NamedTypeDecl( const std::string &name, StorageClass sc, Type *base )
+NamedTypeDecl::NamedTypeDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *base )
 	: Parent( name, sc, LinkageSpec::Cforall ), base( base ) {}
 
@@ -37,8 +37,8 @@
 	
 	if ( get_name() != "" ) {
-		os << get_name() << ": a ";
+		os << get_name() << ": ";
 	} // if
-	if ( get_storageClass() != NoStorageClass ) {
-		os << storageClassName[ get_storageClass() ] << ' ';
+	if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
+		os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
 	} // if
 	os << typeString();
@@ -61,8 +61,8 @@
 	
 	if ( get_name() != "" ) {
-		os << get_name() << ": a ";
+		os << get_name() << ": ";
 	} // if
-	if ( get_storageClass() != NoStorageClass ) {
-		os << storageClassName[ get_storageClass() ] << ' ';
+	if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
+		os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
 	} // if
 	os << typeString();
Index: src/SynTree/ObjectDecl.cc
===================================================================
--- src/SynTree/ObjectDecl.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SynTree/ObjectDecl.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 10:14:18 2015
-// Update Count     : 2
+// Last Modified On : Sat Jun 13 08:10:16 2015
+// Update Count     : 15
 //
 
@@ -20,5 +20,5 @@
 #include "utility.h"
 
-ObjectDecl::ObjectDecl( const std::string &name, StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init )
+ObjectDecl::ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init )
 	: Parent( name, sc, linkage ), type( type ), init( init ), bitfieldWidth( bitfieldWidth ) {
 }
@@ -36,5 +36,5 @@
 void ObjectDecl::print( std::ostream &os, int indent ) const {
 	if ( get_name() != "" ) {
-		os << get_name() << ": a ";
+		os << get_name() << ": ";
 	} // if
 
@@ -43,6 +43,6 @@
 	} // if
 
-	if ( get_storageClass() != NoStorageClass ) {
-		os << storageClassName[ get_storageClass() ] << ' ';
+	if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
+		os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
 	} // if
 
@@ -65,10 +65,15 @@
 
 void ObjectDecl::printShort( std::ostream &os, int indent ) const {
+#if 0
+	if ( get_mangleName() != "") {
+		os << get_mangleName() << ": "; 
+	} else 
+#endif
 	if ( get_name() != "" ) {
-		os << get_name() << ": a ";
+		os << get_name() << ": ";
 	} // if
 
-	if ( get_storageClass() != NoStorageClass ) {
-		os << storageClassName[ get_storageClass() ] << ' ';
+	if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
+		os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
 	} // if
 
Index: src/SynTree/ReferenceToType.cc
===================================================================
--- src/SynTree/ReferenceToType.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SynTree/ReferenceToType.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 16:52:40 2015
-// Update Count     : 3
+// Last Modified On : Sun Jun  7 08:31:48 2015
+// Update Count     : 4
 //
 
@@ -101,5 +101,5 @@
 	
 	Type::print( os, indent );
-	os << "instance of " << typeString() << " " << get_name() << " (" << ( isFtype ? "" : "not" ) << " a function type) ";
+	os << "instance of " << typeString() << " " << get_name() << " (" << ( isFtype ? "" : "not" ) << " function type) ";
 	if ( ! parameters.empty() ) {
 		os << endl << std::string( indent, ' ' ) << "with parameters" << endl;
Index: src/SynTree/Statement.cc
===================================================================
--- src/SynTree/Statement.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SynTree/Statement.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 10:55:19 2015
-// Update Count     : 2
+// Last Modified On : Tue Jun 23 11:42:09 2015
+// Update Count     : 21
 //
 
@@ -30,5 +30,5 @@
 Statement::Statement( std::list<Label> _labels ) : labels(_labels ) {}
 
-void Statement::print( std::ostream &, int indent ) {}
+void Statement::print( std::ostream &, int indent ) const {}
 
 Statement::~Statement() {}
@@ -38,6 +38,6 @@
 ExprStmt::~ExprStmt() {}
 
-void ExprStmt::print( std::ostream &os, int indent ) {
-	os << "\r" << string(indent, ' ') << "Expression Statement:" << endl;
+void ExprStmt::print( std::ostream &os, int indent ) const {
+	os << string( indent, ' ' ) << "Expression Statement:" << endl;
 	expr->print( os, indent + 2 );
 } 
@@ -46,5 +46,5 @@
 
 BranchStmt::BranchStmt( std::list<Label> labels, Label _target, Type _type ) throw ( SemanticError ) :
-	Statement( labels ), target(_target ), type(_type ) {
+	Statement( labels ), originalTarget(_target ), target(_target ), type(_type ) {
 	//actually this is a syntactic error signaled by the parser
 	if ( type == BranchStmt::Goto && target.size() == 0 )
@@ -58,6 +58,6 @@
 }
 
-void BranchStmt::print( std::ostream &os, int indent ) {
-	os << "\r" << string( indent, ' ') << "Branch (" << brType[type] << ")" << endl ;
+void BranchStmt::print( std::ostream &os, int indent ) const {
+	os << string( indent, ' ' ) << "Branch (" << brType[type] << ")" << endl ;
 }
 
@@ -68,6 +68,6 @@
 }
 
-void ReturnStmt::print( std::ostream &os, int indent ) {
-	os << "\r" << std::string( indent, ' ') << string ( isThrow? "Throw":"Return" ) << " Statement, returning: ";
+void ReturnStmt::print( std::ostream &os, int indent ) const {
+	os << std::string( indent, ' ' ) << string ( isThrow? "Throw":"Return" ) << " Statement, returning: ";
 	if ( expr != 0 ) expr->print( os );
 	os << endl;
@@ -79,9 +79,9 @@
 IfStmt::~IfStmt() {}
 
-void IfStmt::print( std::ostream &os, int indent ) {
-	os << "\r" << string( indent, ' ') << "If on condition: " << endl ;
+void IfStmt::print( std::ostream &os, int indent ) const {
+	os << string( indent, ' ' ) << "If on condition: " << endl ;
 	condition->print( os, indent + 4 );
 
-	os << string( indent, ' ') << ".... and branches: " << endl;
+	os << string( indent, ' ' ) << ".... and branches: " << endl;
 
 	thenPart->print( os, indent + 4 );
@@ -103,13 +103,13 @@
 void SwitchStmt::add_case( CaseStmt *c ) {}
 
-void SwitchStmt::print( std::ostream &os, int indent ) {
-	os << "\r" << string( indent, ' ') << "Switch on condition: ";
+void SwitchStmt::print( std::ostream &os, int indent ) const {
+	os << string( indent, ' ' ) << "Switch on condition: ";
 	condition->print( os );
 	os << endl;
 
 	// branches
-	std::list<Statement *>::iterator i;
+	std::list<Statement *>::const_iterator i;
 	for ( i = branches.begin(); i != branches.end(); i++)
-		(*i )->print( os, indent + 4 );
+		(*i)->print( os, indent + 4 );
 
 	//for_each( branches.begin(), branches.end(), mem_fun( bind1st(&Statement::print ), os ));
@@ -126,8 +126,12 @@
 }
 
-void CaseStmt::print( std::ostream &os, int indent ) {
-	os << "\r" << string( indent, ' ');
-
-	if ( isDefault())
+CaseStmt * CaseStmt::makeDefault( std::list<Label> labels, std::list<Statement *> branches ) {
+	return new CaseStmt( labels, 0, branches, true );
+}
+
+void CaseStmt::print( std::ostream &os, int indent ) const {
+	os << string( indent, ' ' );
+
+	if ( isDefault() )
 		os << "Default ";
 	else {
@@ -138,5 +142,5 @@
 	os << endl;
 
-	std::list<Statement *>::iterator i;
+	std::list<Statement *>::const_iterator i;
 	for ( i = stmts.begin(); i != stmts.end(); i++)
 		(*i )->print( os, indent + 4 );
@@ -154,11 +158,11 @@
 void ChooseStmt::add_case( CaseStmt *c ) {}
 
-void ChooseStmt::print( std::ostream &os, int indent ) {
-	os << "\r" << string( indent, ' ') << "Choose on condition: ";
+void ChooseStmt::print( std::ostream &os, int indent ) const {
+	os << string( indent, ' ' ) << "Choose on condition: ";
 	condition->print( os );
 	os << endl;
 
 	// branches
-	std::list<Statement *>::iterator i;
+	std::list<Statement *>::const_iterator i;
 	for ( i = branches.begin(); i != branches.end(); i++)
 		(*i )->print( os, indent + 4 );
@@ -167,6 +171,6 @@
 }
 
-void FallthruStmt::print( std::ostream &os, int indent ) {
-	os << "\r" << string( indent, ' ') << "Fall-through statement" << endl;
+void FallthruStmt::print( std::ostream &os, int indent ) const {
+	os << string( indent, ' ' ) << "Fall-through statement" << endl;
 }
 
@@ -179,9 +183,9 @@
 }
 
-void WhileStmt::print( std::ostream &os, int indent ) {
-	os << "\r" << string( indent, ' ') << "While on condition: " << endl ;
+void WhileStmt::print( std::ostream &os, int indent ) const {
+	os << string( indent, ' ' ) << "While on condition: " << endl ;
 	condition->print( os, indent + 4 );
 
-	os << string( indent, ' ') << ".... with body: " << endl;
+	os << string( indent, ' ' ) << ".... with body: " << endl;
 
 	if ( body != 0 ) body->print( os, indent + 4 );
@@ -199,20 +203,26 @@
 }
 
-void ForStmt::print( std::ostream &os, int indent ) {
-	os << "\r" << string( indent, ' ') << "For Statement" << endl ;
-
-	os << "\r" << string( indent + 2, ' ') << "initialization: \n"; 
+void ForStmt::print( std::ostream &os, int indent ) const {
+	os << string( indent, ' ' ) << "Labels: {";
+	for ( std::list<Label>::const_iterator it = get_labels().begin(); it != get_labels().end(); ++it) {
+		os << *it << ",";
+	}
+	os << "}" << endl;
+
+	os << string( indent, ' ' ) << "For Statement" << endl ;
+
+	os << string( indent + 2, ' ' ) << "initialization: \n"; 
 	if ( initialization != 0 )
 		initialization->print( os, indent + 4 );
 
-	os << "\n\r" << string( indent + 2, ' ') << "condition: \n"; 
+	os << "\n" << string( indent + 2, ' ' ) << "condition: \n"; 
 	if ( condition != 0 )
 		condition->print( os, indent + 4 );
 
-	os << "\n\r" << string( indent + 2, ' ') << "increment: \n"; 
+	os << "\n" << string( indent + 2, ' ' ) << "increment: \n"; 
 	if ( increment != 0 )
 		increment->print( os, indent + 4 );
 
-	os << "\n\r" << string( indent + 2, ' ') << "statement block: \n"; 
+	os << "\n" << string( indent + 2, ' ' ) << "statement block: \n"; 
 	if ( body != 0 )
 		body->print( os, indent + 4 );
@@ -235,18 +245,17 @@
 }
 
-void TryStmt::print( std::ostream &os, int indent ) {
-	os << "\r" << string( indent, ' ') << "Try Statement" << endl;
-	os << string( indent + 2, ' ') << "with block: " << endl;
+void TryStmt::print( std::ostream &os, int indent ) const {
+	os << string( indent, ' ' ) << "Try Statement" << endl;
+	os << string( indent + 2, ' ' ) << "with block: " << endl;
 	block->print( os, indent + 4 );
 
 	// handlers
-	os << string( indent + 2, ' ') << "and handlers: " << endl;
-	std::list<Statement *>::iterator i;
-	for ( i = handlers.begin(); i != handlers.end(); i++)
+	os << string( indent + 2, ' ' ) << "and handlers: " << endl;
+	for ( std::list<Statement *>::const_iterator i = handlers.begin(); i != handlers.end(); i++)
 		(*i )->print( os, indent + 4 );
 
 	// finally block
 	if ( finallyBlock != 0 ) {
-		os << string( indent + 2, ' ') << "Finally block: " << endl;
+		os << string( indent + 2, ' ' ) << "Finally block: " << endl;
 		finallyBlock->print( os, indent + 4 );
 	} // if
@@ -262,15 +271,15 @@
 }
 
-void CatchStmt::print( std::ostream &os, int indent ) {
-	os << "\r" << string( indent, ' ') << "Catch Statement" << endl;
-
-	os << "\r" << string( indent, ' ') << "... catching" << endl;
+void CatchStmt::print( std::ostream &os, int indent ) const {
+	os << string( indent, ' ' ) << "Catch Statement" << endl;
+
+	os << string( indent, ' ' ) << "... catching" << endl;
 	if ( decl ) {
 		decl->printShort( os, indent + 4 );
 		os << endl;
 	} else if ( catchRest )
-		os << "\r" << string( indent + 4 , ' ') << "the rest" << endl;
+		os << string( indent + 4 , ' ' ) << "the rest" << endl;
 	else
-		os << "\r" << string( indent + 4 , ' ') << ">>> Error:  this catch clause must have a declaration <<<" << endl;
+		os << string( indent + 4 , ' ' ) << ">>> Error:  this catch clause must have a declaration <<<" << endl;
 }
 
@@ -284,7 +293,7 @@
 }
 
-void FinallyStmt::print( std::ostream &os, int indent ) {
-	os << "\r" << string( indent, ' ') << "Finally Statement" << endl;
-	os << string( indent + 2, ' ') << "with block: " << endl;
+void FinallyStmt::print( std::ostream &os, int indent ) const {
+	os << string( indent, ' ' ) << "Finally Statement" << endl;
+	os << string( indent + 2, ' ' ) << "with block: " << endl;
 	block->print( os, indent + 4 );
 }
@@ -294,6 +303,6 @@
 NullStmt::~NullStmt() {}
 
-void NullStmt::print( std::ostream &os, int indent ) {
-	os << "\r" << string( indent, ' ') << "Null Statement" << endl ;
+void NullStmt::print( std::ostream &os, int indent ) const {
+	os << string( indent, ' ' ) << "Null Statement" << endl ;
 }
 
Index: src/SynTree/Statement.h
===================================================================
--- src/SynTree/Statement.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SynTree/Statement.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 10:57:40 2015
-// Update Count     : 2
+// Last Modified On : Tue Jun 23 11:44:27 2015
+// Update Count     : 20
 //
 
@@ -28,9 +28,10 @@
 
 	std::list<Label> & get_labels() { return labels; }
+	const std::list<Label> & get_labels() const { return labels; }
 
 	virtual Statement *clone() const = 0;
 	virtual void accept( Visitor &v ) = 0;
 	virtual Statement *acceptMutator( Mutator &m ) = 0;
-	virtual void print( std::ostream &os, int indent = 0 );
+	virtual void print( std::ostream &os, int indent = 0 ) const;
   protected:
 	std::list<Label> labels;
@@ -48,5 +49,5 @@
 	virtual void accept( Visitor &v ) { v.visit( this ); }
 	virtual CompoundStmt *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-	virtual void print( std::ostream &os, int indent = 0 );
+	virtual void print( std::ostream &os, int indent = 0 ) const;
   private:
 	std::list<Statement*> kids;
@@ -64,5 +65,5 @@
 	virtual void accept( Visitor &v ) { v.visit( this ); }
 	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-	virtual void print( std::ostream &os, int indent = 0 );
+	virtual void print( std::ostream &os, int indent = 0 ) const;
   private:
 	Expression *expr;
@@ -84,5 +85,5 @@
 	virtual void accept( Visitor &v ) { v.visit( this ); }
 	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-	virtual void print( std::ostream &os, int indent = 0 );
+	virtual void print( std::ostream &os, int indent = 0 ) const;
   private:
 	Expression *condition;
@@ -106,5 +107,5 @@
 
 	virtual SwitchStmt *clone() const { return new SwitchStmt( *this ); }
-	virtual void print( std::ostream &os, int indent = 0 );
+	virtual void print( std::ostream &os, int indent = 0 ) const;
   private:
 	Expression * condition;
@@ -127,5 +128,5 @@
 
 	virtual ChooseStmt *clone() const { return new ChooseStmt( *this ); }
-	virtual void print( std::ostream &os, int indent = 0 );
+	virtual void print( std::ostream &os, int indent = 0 ) const;
   private:
 	Expression *condition;
@@ -141,5 +142,5 @@
 
 	virtual FallthruStmt *clone() const { return new FallthruStmt( *this ); }
-	virtual void print( std::ostream &os, int indent = 0 );
+	virtual void print( std::ostream &os, int indent = 0 ) const;
 };
 
@@ -150,5 +151,8 @@
 	virtual ~CaseStmt();
 
-	bool isDefault() { return _isDefault; }
+	static CaseStmt * makeDefault( std::list<Label> labels = std::list<Label>(),
+		std::list<Statement *> stmts = std::list<Statement *>() );
+
+	bool isDefault() const { return _isDefault; }
 	void set_default(bool b) { _isDefault = b; }
 
@@ -163,5 +167,5 @@
 
 	virtual CaseStmt *clone() const { return new CaseStmt( *this ); }
-	virtual void print( std::ostream &os, int indent = 0 );
+	virtual void print( std::ostream &os, int indent = 0 ) const;
   private:
 	Expression * condition;
@@ -186,5 +190,5 @@
 	virtual void accept( Visitor &v ) { v.visit( this ); }
 	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-	virtual void print( std::ostream &os, int indent = 0 );
+	virtual void print( std::ostream &os, int indent = 0 ) const;
   private:
 	Expression *condition;
@@ -211,5 +215,5 @@
 	virtual void accept( Visitor &v ) { v.visit( this ); }
 	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-	virtual void print( std::ostream &os, int indent = 0 );
+	virtual void print( std::ostream &os, int indent = 0 ) const;
   private:
 	Statement *initialization;
@@ -221,5 +225,5 @@
 class BranchStmt : public Statement {
   public:
-	enum Type { Goto = 0 , Break, Continue };
+	enum Type { Goto = 0, Break, Continue };
 
 	BranchStmt( std::list<Label> labels, Label target, Type ) throw (SemanticError);
@@ -227,4 +231,5 @@
 	virtual ~BranchStmt() {}
 
+	Label get_originalTarget() { return originalTarget; }
 	Label get_target() { return target; }
 	void set_target( Label newValue ) { target = newValue; }
@@ -239,7 +244,8 @@
 	virtual void accept( Visitor &v ) { v.visit( this ); }
 	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-	virtual void print( std::ostream &os, int indent = 0 );
+	virtual void print( std::ostream &os, int indent = 0 ) const;
   private:
 	static const char *brType[];
+	Label originalTarget;  // can give better error messages if we remember the label name that the user entered
 	Label target;
 	Expression *computedTarget;
@@ -258,5 +264,5 @@
 	virtual void accept( Visitor &v ) { v.visit( this ); }
 	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-	virtual void print( std::ostream &os, int indent = 0 );
+	virtual void print( std::ostream &os, int indent = 0 ) const;
   private:
 	Expression *expr;
@@ -274,5 +280,5 @@
 	virtual void accept( Visitor &v ) { v.visit( this ); }
 	virtual NullStmt *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-	virtual void print( std::ostream &os, int indent = 0 );
+	virtual void print( std::ostream &os, int indent = 0 ) const;
 	
   private:
@@ -295,5 +301,5 @@
 	virtual void accept( Visitor &v ) { v.visit( this ); }
 	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-	virtual void print( std::ostream &os, int indent = 0 );
+	virtual void print( std::ostream &os, int indent = 0 ) const;
 	
   private:
@@ -317,5 +323,5 @@
 	virtual void accept( Visitor &v ) { v.visit( this ); }
 	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-	virtual void print( std::ostream &os, int indent = 0 );
+	virtual void print( std::ostream &os, int indent = 0 ) const;
 	
   private:
@@ -336,5 +342,5 @@
 	virtual void accept( Visitor &v ) { v.visit( this ); }
 	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-	virtual void print( std::ostream &os, int indent = 0 );
+	virtual void print( std::ostream &os, int indent = 0 ) const;
   private:
 	CompoundStmt *block;
@@ -355,5 +361,5 @@
 	virtual void accept( Visitor &v ) { v.visit( this ); }
 	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-	virtual void print( std::ostream &os, int indent = 0 );
+	virtual void print( std::ostream &os, int indent = 0 ) const;
   private:
 	Declaration *decl;
Index: src/SynTree/Type.h
===================================================================
--- src/SynTree/Type.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SynTree/Type.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 11:01:40 2015
-// Update Count     : 1
+// Last Modified On : Sun Jun  7 21:50:38 2015
+// Update Count     : 12
 //
 
@@ -110,5 +110,5 @@
 	};  
 
-	static const char *typeNames[];			// string names for basic types, MUST MATCH with Kind
+	static const char *typeNames[];						// string names for basic types, MUST MATCH with Kind
 
 	BasicType( const Type::Qualifiers &tq, Kind bt );
@@ -214,5 +214,5 @@
 	virtual ~ReferenceToType();
 
-	std::string get_name() const { return name; }
+	const std::string &get_name() const { return name; }
 	void set_name( std::string newValue ) { name = newValue; }
 	std::list< Expression* >& get_parameters() { return parameters; }
@@ -372,5 +372,5 @@
 	virtual ~AttrType();
 
-	std::string get_name() const { return name; }
+	const std::string &get_name() const { return name; }
 	void set_name( const std::string &newValue ) { name = newValue; }
 	Expression *get_expr() const { return expr; }
Index: src/SynTree/TypeDecl.cc
===================================================================
--- src/SynTree/TypeDecl.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SynTree/TypeDecl.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 11:02:11 2015
-// Update Count     : 1
+// Last Modified On : Sat Jun 13 08:14:35 2015
+// Update Count     : 2
 //
 
@@ -18,5 +18,5 @@
 #include "utility.h"
 
-TypeDecl::TypeDecl( const std::string &name, StorageClass sc, Type *type, Kind kind ) : Parent( name, sc, type ), kind( kind ) {
+TypeDecl::TypeDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *type, Kind kind ) : Parent( name, sc, type ), kind( kind ) {
 }
 
Index: src/SynTree/module.mk
===================================================================
--- src/SynTree/module.mk	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/SynTree/module.mk	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,2 +1,18 @@
+######################### -*- Mode: Makefile-Gmake -*- ########################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## module.mk -- 
+##
+## Author           : Richard C. Bilson
+## Created On       : Mon Jun  1 17:49:17 2015
+## Last Modified By : Peter A. Buhr
+## Last Modified On : Mon Jun  1 17:54:09 2015
+## Update Count     : 1
+###############################################################################
+
 SRC += SynTree/Type.cc \
        SynTree/VoidType.cc \
@@ -30,5 +46,4 @@
        SynTree/Mutator.cc \
        SynTree/CodeGenVisitor.cc \
-       SynTree/TypeSubstitution.cc \
-	$(NULL)
+       SynTree/TypeSubstitution.cc
 
Index: src/Tests/Abstype.c
===================================================================
--- src/Tests/Abstype.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Abstype.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,27 @@
+type T | { T x( T ); };
+
+T y( T t ) {
+	T t_instance;
+	return x( t );
+}
+
+forall( type T ) lvalue T *?( T * );
+int ?++( int * );
+int ?=?( int *, int );
+forall( dtype DT ) DT * ?=?( DT **, DT * );
+
+type U = int *;
+
+U x( U u ) {
+	U u_instance = u;
+	(*u)++;
+	return u;
+}
+
+int *break_abstraction( U u ) {
+	return u;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/Array.c
===================================================================
--- src/Tests/Array.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Array.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,37 @@
+int a1[];
+int a2[*];
+double a4[3.0];
+
+int m1[][3];
+int m2[*][*];
+int m4[3][3];
+
+typedef int T;
+
+int fred() {
+	int a1[];
+	int a2[*];
+	int a4[3];
+	int T[3];
+}
+
+int mary( int T[3],
+		  int p1[const 3],
+		  int p2[static 3],
+		  int p3[static const 3]
+	) {
+}
+
+int (*tom())[3] {
+}
+
+int (*(jane)())( int T[3],
+				 int p1[const 3],
+				 int p2[static 3],
+				 int p3[static const 3]
+	) {
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/AsmName.c
===================================================================
--- src/Tests/AsmName.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/AsmName.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,14 @@
+extern int x asm( "xx" );
+
+int fred( int x ) {
+    static int y asm( "yy" );
+
+// Cforall extensions
+
+    static * int z asm( "zz" );
+}
+
+// errors
+
+//typedef int t asm( "tt" );
+//int mary( int p asm( "pp" ) ) {}
Index: src/Tests/Attributes.c
===================================================================
--- src/Tests/Attributes.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Attributes.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,92 @@
+// I Compile-time resolution
+// =========================
+// 
+// 1. an isolated name, where the argument is implicitly determined by the result context
+// 
+//    @max
+// 
+// 2. a direct application to a manifest type
+// 
+//    @max( int )
+// 
+// 3. constraining a type variable; the application is implicitly performed at the call site as in (2)
+// 
+//    forall( type T | { T @max( T ); } ) T x( T t );
+// 
+// 
+// II Run-time resolution
+// ======================
+// 
+// 1. an indirect reference, where the argument is implicitly determined by the result context
+// 
+//    attr_var = &@max;
+//    x = (*attr_var);
+// 
+// 2. an indirect application to a manifest type
+// 
+//    (*attr_var)( int )
+// 
+// 3. a direct application to a type variable
+// 
+//    @max( T )
+// 
+// Under what circumstances can this be done at compile/link time?
+// 
+// 
+// III Declaration forms
+// =====================
+// 
+// 1. monomorphic with implicit argument
+// 
+//    int @max;
+// 
+// 2. monomorphic with explicit argument
+// 
+//    int @max( int );
+// 
+// 3. polymorphic
+// 
+//    forall( type T | constraint( T ) ) int @attr( T );
+
+int @max = 3;
+
+int main() {
+    int x;
+    type @type(type t);									// compiler intrinsic
+    type @widest(type t);
+    @type(x) *y;										// gcc: typeof(x) *y;
+    const @widest(double) *w;							// gcc: const typeof(x) *w;
+    * @type(3 + 4) z;									// cfa declaration syntax
+    y = @max;		
+    z = @max(x) + @size(int);
+    y = @min(3 + 4);
+    if ( @const(x) ) { }
+    if ( @volatile(y) ) { }
+    if ( @extern(y) ) { }
+    if ( @static(y) ) { }
+    @max;
+}
+
+int @foo(int) {
+    return 7;
+}
+
+int @voon;
+double @voon;
+
+int @bort(int);
+int @bort(double);
+
+void g( int );
+
+void f() {
+	float x;
+	double x;
+	@bort(x);
+	@bort(int);
+	g( @voon );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/Cast.c
===================================================================
--- src/Tests/Cast.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Cast.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,15 @@
+char f;
+
+void f() {
+	char f;
+	double f;
+	(int)f;
+	short f;
+	(int)f;
+	(void(*)())f;
+	([long, long double, *[]()])([f, f, f]);
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/CastError.c
===================================================================
--- src/Tests/CastError.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/CastError.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,12 @@
+int f;
+
+void f() {
+	int f;
+	double f;
+	(char)f;
+	(int(*)())f;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/CharStringConstants.c
===================================================================
--- src/Tests/CharStringConstants.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/CharStringConstants.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,87 @@
+int main() {
+// character constants
+
+    ' ';
+    'a';
+    '"';
+    '_';
+
+    '\a';				// simple escape
+    '\b';
+    '\e';				// GCC
+    '\f';
+    '\n';
+    '\r';
+    '\t';
+    '\v';
+    '\'';
+    '\"';
+    '\?';
+    '\\';
+
+    '\0';				// octal escape
+
+    '\377';
+
+    '\xf';				// hex escape
+    '\xff';
+
+// warnings/errors
+
+    '';					// empty character
+    'aa';				// multi-character
+    'a\na';				// multi-character, embedded escape
+    'a\0a';
+    '\xfff';				// hex escape out of range
+    '_\377_';				// multi-character
+    '_\xff_';
+    '\xffff';				// hex escape out of range
+    'a\xff34w';
+    '\xf_f';				// multi-character
+    '\xff_ff';
+
+// string constants
+
+    " ";
+    "a";
+    "'";
+    '_';
+
+    "\a";				// simple escape
+    "\b";
+    "\e";				// GCC
+    "\f";
+    "\n";
+    "\r";
+    "\t";
+    "\v";
+    "\'";
+    "\"";
+    "\?";
+    "\\";
+
+    "\0";				// octal escape
+    "\377";
+
+    "\xf";				// hex escape
+    "\xff";
+
+    "";
+    "aa";
+    "a\na";
+    "a\0a";
+    "_\377_";
+    "_\xff_";
+    "\xf_f";
+
+// warnings/errors
+
+    "\xff_ff";
+    "\xfff";				// hex escape out of range
+    "a\xff34w";
+    "\xffff";
+}
+
+// Local Variables: //
+// compile-command: "../../../bin/cfa -std=c99 CharStringConstants.c" //
+// End: //
Index: src/Tests/CommentMisc.c
===================================================================
--- src/Tests/CommentMisc.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/CommentMisc.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,44 @@
+/* single line */
+// single line
+
+// single line containing */
+// single line containing /*
+// single line containing /* */
+
+/* 1st */ int i;
+int i; /* 2nd */
+/* 1st */ int i; /* 2nd */
+/* 1st */ /* 2nd */
+
+/* 1st
+   2nd */ int i;
+
+/*
+*/
+
+/*
+
+*/
+
+/*
+  1st
+*/
+
+/*
+  1st
+  2nd
+*/
+
+// ignore preprocessor directives
+
+#line 2
+ #
+ #include <fred>
+	#define mary abc
+
+// alternative ANSI99 brackets
+
+int main() <%
+    int x<:10:>;
+%>
+
Index: src/Tests/Constant0-1.c
===================================================================
--- src/Tests/Constant0-1.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Constant0-1.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,46 @@
+// Cforall extension
+
+// value
+
+int 0;
+const int 0;
+static const int 0;
+int 1;
+const int 1;
+static const int 1;
+int 0, 1;
+const int 0, 1;
+int (0), (1);
+int ((0)), ((1));
+static const int 0, 1;
+struct { int i; } 0;
+const struct { int i; } 1;
+static const struct { int i; } 1;
+
+// pointer
+
+int *0, *1;
+int *(0), *(1);
+int (*0), (*1);
+int ((*0)), ((*1));
+int * const (0), * const 1;
+int (* const 0), (* const 1);
+int ((* const 0)), ((* const 1));
+struct { int i; } *0;
+
+// Cforall style
+
+* int x, 0;
+const * int x, 0;
+static const * int x, 0;
+* struct { int i; } 0;
+const * struct { int i; } 0;
+static const * struct { int i; } 0;
+static * int x, 0;
+static const * int x, 0;
+const * * int x, 0;
+
+int main() {
+    int 1, * 0;
+    * int x, 0;
+}
Index: src/Tests/Context.c
===================================================================
--- src/Tests/Context.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Context.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,15 @@
+context has_q( type T ) {
+	T q( T );
+};
+
+forall( type z | has_q( z ) ) void f() {
+	context has_r( type T, type U ) {
+		T r( T, T (T,U) );
+	};
+  
+	extern type x, y | has_r( x, y );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/DeclarationErrors.c
===================================================================
--- src/Tests/DeclarationErrors.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/DeclarationErrors.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,9 @@
+static short int volatile static const x9;		// duplicate static
+struct { int i; } const static volatile static x18;	// duplicate static
+struct { int i; } const static volatile static volatile x19; // duplicate static & volatile
+typedef int Int;
+static Int volatile static const x28;			// duplicate static
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/DeclarationSpecifier.c
===================================================================
--- src/Tests/DeclarationSpecifier.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/DeclarationSpecifier.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,93 @@
+typedef short int Int;
+
+
+const short int volatile x1;
+static const short int volatile x2;
+const static short int volatile x3;
+const short static int volatile x4;
+const static volatile short int x4;
+const short int static volatile x5;
+const short int volatile static x6;
+const short volatile int static x7;
+short int volatile static const x8;
+static short int volatile static const x9;		// duplicate static
+
+const volatile struct { int i; } x10;
+const struct { int i; } volatile x11;
+struct { int i; } const volatile x12;
+static const volatile struct { int i; } x13;
+const static struct { int i; } volatile x14;
+struct { int i; } static const volatile x15;
+struct { int i; } const static volatile x16;
+struct { int i; } const volatile static x17;
+struct { int i; } const static volatile static x18;	// duplicate static
+struct { int i; } const static volatile static volatile x19; // duplicate static & volatile
+
+const Int volatile x20;
+static const Int volatile x21;
+const static Int volatile x22;
+const static Int volatile x23;
+const Int static volatile x24;
+const Int volatile static x25;
+const volatile Int static x26;
+Int volatile static const x27;
+static Int volatile static const x28;			// duplicate static
+
+const volatile struct { Int i; } x29;
+const struct { Int i; } volatile x30;
+struct { Int i; } const volatile x31;
+static const volatile struct { Int i; } x32;
+const static struct { Int i; } volatile x33;
+struct { Int i; } static const volatile x34;
+struct { Int i; } const static volatile x35;
+struct { Int i; } const volatile static x36;
+
+
+const static inline const volatile int f01();		// duplicate const
+volatile inline const volatile static int f02();	// duplicate volatile
+const inline const volatile int static f03();		// duplicate const
+volatile inline static const volatile int f04();	// duplicate volatile
+const static const inline volatile int f05();		// duplicate const
+volatile static const volatile inline int f06();	// duplicate volatile
+const static const volatile int inline f07();		// duplicate const
+volatile static const int inline volatile f08();	// duplicate volatile
+
+static inline const volatile int f11();
+inline const volatile static int f12();
+inline const volatile int static f13();
+inline static const volatile int f14();
+static const inline volatile int f15();
+static const volatile inline int f16();
+static const volatile int inline f17();
+static const int inline volatile f18();
+
+short static inline const volatile int f21();
+inline short const volatile static int f22();
+inline const short volatile int static f23();
+inline static const short volatile int f24();
+static const inline volatile short int f25();
+static const volatile inline int short f26();
+static const volatile int inline short f27();
+static const int inline volatile short f28();
+
+static inline const volatile struct { int i; } f31();
+inline const volatile static struct { int i; } f32();
+inline const volatile struct { int i; } static f33();
+inline static const volatile struct { int i; } f34();
+static const inline volatile struct { int i; } f35();
+static const volatile inline struct { int i; } f36();
+static const volatile struct { int i; } inline f37();
+static const struct { int i; } inline volatile f38();
+
+static inline const volatile Int f41();
+inline const volatile static Int f42();
+inline const volatile Int static f43();
+inline static const volatile Int f44();
+static const inline volatile Int f45();
+static const volatile inline Int f46();
+static const volatile Int inline f47();
+static const Int inline volatile f48();
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/Enum.c
===================================================================
--- src/Tests/Enum.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Enum.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,22 @@
+enum Colors {
+	Red,
+	Yellow,
+	Pink,
+	Blue,
+	Purple,
+	Orange,
+	Green
+};
+
+void f( void ) {
+	enum Fruits {
+		Apple,
+		Banana,
+		Pear,
+		Mango
+	} fruit = Mango;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/Exception.c
===================================================================
--- src/Tests/Exception.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Exception.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,24 @@
+int fred() {
+    int x;
+    throw 3;
+    throw x = 5;
+
+    try {
+    } catch( int i ) {}
+
+    try {
+	x/4;
+    } catch( int) {
+    } catch( int x ) {
+    } catch( struct { int i; } ) {
+    } catch( struct { int i; } x ) {
+    } catch( struct { int i; } *x ) {
+
+// Cforall extensions
+
+    } catch( * struct { int i; } ) {
+    } catch( * struct { int i; } x ) {
+    } catch( ... ) {
+//    } finally {
+    } // try
+}
Index: src/Tests/Expect-a/Abstype.txt
===================================================================
--- src/Tests/Expect-a/Abstype.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Abstype.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,99 @@
+T: type
+  with assertions
+    x: function
+        with parameters
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+
+y: function
+    with parameters
+      t: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+    with body 
+      CompoundStmt
+        Declaration of t_instance: instance of type T (not function type) 
+                  Return Statement, returning: Applying untyped: 
+    Name: x
+...to: 
+    Name: t
+
+
+
+*?: forall
+      T: type
+        with assertions
+          ?=?: function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      pointer to instance of type T (not function type) 
+    returning 
+      lvalue instance of type T (not function type) 
+
+?++: function
+    with parameters
+      pointer to signed int 
+    returning 
+      signed int 
+
+?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+U: type for pointer to signed int 
+x: function
+    with parameters
+      u: instance of type U (not function type) 
+    returning 
+      instance of type U (not function type) 
+    with body 
+      CompoundStmt
+        Declaration of u_instance: instance of type U (not function type) with initializer 
+          Simple Initializer:             Name: u
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?++
+            ...to: 
+                Address of:
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Name: u
+
+                  Return Statement, returning: Name: u
+
+
+
+break_abstraction: function
+    with parameters
+      u: instance of type U (not function type) 
+    returning 
+      pointer to signed int 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Name: u
+
+
+
Index: src/Tests/Expect-a/Array.txt
===================================================================
--- src/Tests/Expect-a/Array.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Array.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,51 @@
+a1: open array of signed int 
+a2: variable length array of signed int 
+a4: array of double with dimension of constant expression 3.0 double 
+m1: open array of array of signed int with dimension of constant expression 3 signed int 
+m2: variable length array of variable length array of signed int 
+m4: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+T: typedef for signed int 
+fred: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of a1: open array of signed int 
+        Declaration of a2: variable length array of signed int 
+        Declaration of a4: array of signed int with dimension of constant expression 3 signed int 
+        Declaration of T: array of signed int with dimension of constant expression 3 signed int 
+
+mary: function
+    with parameters
+      T: array of signed int with dimension of constant expression 3 signed int 
+      p1: const array of signed int with dimension of constant expression 3 signed int 
+      p2: static array of signed int with dimension of constant expression 3 signed int 
+      p3: const static array of signed int with dimension of constant expression 3 signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+tom: function
+      accepting unspecified arguments
+    returning 
+      pointer to array of signed int with dimension of constant expression 3 signed int 
+    with body 
+      CompoundStmt
+
+jane: function
+      accepting unspecified arguments
+    returning 
+      pointer to function
+          with parameters
+            T: array of signed int with dimension of constant expression 3 signed int 
+            p1: const array of signed int with dimension of constant expression 3 signed int 
+            p2: static array of signed int with dimension of constant expression 3 signed int 
+            p3: const static array of signed int with dimension of constant expression 3 signed int 
+          returning 
+            signed int 
+
+    with body 
+      CompoundStmt
+
Index: src/Tests/Expect-a/AsmName.txt
===================================================================
--- src/Tests/Expect-a/AsmName.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/AsmName.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,11 @@
+x: extern signed int 
+fred: function
+    with parameters
+      x: signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of y: static signed int 
+        Declaration of z: static pointer to signed int 
+
Index: src/Tests/Expect-a/Attributes.txt
===================================================================
--- src/Tests/Expect-a/Attributes.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Attributes.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,1 @@
+Error at line 58 reading token "*"
Index: src/Tests/Expect-a/Cast.txt
===================================================================
--- src/Tests/Expect-a/Cast.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Cast.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,55 @@
+f: char 
+f: function
+      accepting unspecified arguments
+    returning 
+      void 
+    with body 
+      CompoundStmt
+        Declaration of f: char 
+        Declaration of f: double 
+                  Expression Statement:
+            Cast of:
+              Name: f
+
+            to:
+              signed int 
+
+        Declaration of f: short signed int 
+                  Expression Statement:
+            Cast of:
+              Name: f
+
+            to:
+              signed int 
+
+                  Expression Statement:
+            Cast of:
+              Name: f
+
+            to:
+              pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    void 
+
+
+                  Expression Statement:
+            Cast of:
+              Tuple:
+                                  Name: f
+
+                                  Name: f
+
+                                  Name: f
+
+
+            to:
+              long signed int 
+              long double 
+              pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    nothing 
+
+
+
Index: src/Tests/Expect-a/CastError.txt
===================================================================
--- src/Tests/Expect-a/CastError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/CastError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,28 @@
+f: signed int 
+f: function
+      accepting unspecified arguments
+    returning 
+      void 
+    with body 
+      CompoundStmt
+        Declaration of f: signed int 
+        Declaration of f: double 
+                  Expression Statement:
+            Cast of:
+              Name: f
+
+            to:
+              char 
+
+                  Expression Statement:
+            Cast of:
+              Name: f
+
+            to:
+              pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+
+
Index: src/Tests/Expect-a/CharStringConstants.txt
===================================================================
--- src/Tests/Expect-a/CharStringConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/CharStringConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,131 @@
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+constant expression ' ' char 
+                  Expression Statement:
+constant expression 'a' char 
+                  Expression Statement:
+constant expression '"' char 
+                  Expression Statement:
+constant expression '_' char 
+                  Expression Statement:
+constant expression '\a' char 
+                  Expression Statement:
+constant expression '\b' char 
+                  Expression Statement:
+constant expression '\e' char 
+                  Expression Statement:
+constant expression '\f' char 
+                  Expression Statement:
+constant expression '\n' char 
+                  Expression Statement:
+constant expression '\r' char 
+                  Expression Statement:
+constant expression '\t' char 
+                  Expression Statement:
+constant expression '\v' char 
+                  Expression Statement:
+constant expression '\'' char 
+                  Expression Statement:
+constant expression '\"' char 
+                  Expression Statement:
+constant expression '\?' char 
+                  Expression Statement:
+constant expression '\\' char 
+                  Expression Statement:
+constant expression '\0' char 
+                  Expression Statement:
+constant expression '\377' char 
+                  Expression Statement:
+constant expression '\xf' char 
+                  Expression Statement:
+constant expression '\xff' char 
+                  Expression Statement:
+constant expression '' char 
+                  Expression Statement:
+constant expression 'aa' char 
+                  Expression Statement:
+constant expression 'a\na' char 
+                  Expression Statement:
+constant expression 'a\0a' char 
+                  Expression Statement:
+constant expression '\xfff' char 
+                  Expression Statement:
+constant expression '_\377_' char 
+                  Expression Statement:
+constant expression '_\xff_' char 
+                  Expression Statement:
+constant expression '\xffff' char 
+                  Expression Statement:
+constant expression 'a\xff34w' char 
+                  Expression Statement:
+constant expression '\xff' char 
+                  Expression Statement:
+constant expression '\xffff' char 
+                  Expression Statement:
+constant expression " " array of char with dimension of constant expression 4 unsigned int 
+                  Expression Statement:
+constant expression "a" array of char with dimension of constant expression 4 unsigned int 
+                  Expression Statement:
+constant expression "'" array of char with dimension of constant expression 4 unsigned int 
+                  Expression Statement:
+constant expression '_' char 
+                  Expression Statement:
+constant expression "\a" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\b" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\e" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\f" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\n" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\r" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\t" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\v" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\'" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\"" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\?" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\\" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\0" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\377" array of char with dimension of constant expression 7 unsigned int 
+                  Expression Statement:
+constant expression "\xf" array of char with dimension of constant expression 6 unsigned int 
+                  Expression Statement:
+constant expression "\xff" array of char with dimension of constant expression 7 unsigned int 
+                  Expression Statement:
+constant expression "" array of char with dimension of constant expression 3 unsigned int 
+                  Expression Statement:
+constant expression "aa" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "a\na" array of char with dimension of constant expression 7 unsigned int 
+                  Expression Statement:
+constant expression "a\0a" array of char with dimension of constant expression 7 unsigned int 
+                  Expression Statement:
+constant expression "_\377_" array of char with dimension of constant expression 9 unsigned int 
+                  Expression Statement:
+constant expression "_\xff_" array of char with dimension of constant expression 9 unsigned int 
+                  Expression Statement:
+constant expression "\xff" array of char with dimension of constant expression 7 unsigned int 
+                  Expression Statement:
+constant expression "\xffff" array of char with dimension of constant expression 9 unsigned int 
+                  Expression Statement:
+constant expression "\xfff" array of char with dimension of constant expression 8 unsigned int 
+                  Expression Statement:
+constant expression "a\xff34w" array of char with dimension of constant expression 11 unsigned int 
+                  Expression Statement:
+constant expression "\xffff" array of char with dimension of constant expression 9 unsigned int 
+
Index: src/Tests/Expect-a/CommentMisc.txt
===================================================================
--- src/Tests/Expect-a/CommentMisc.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/CommentMisc.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,12 @@
+i: signed int 
+i: signed int 
+i: signed int 
+i: signed int 
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of x: array of signed int with dimension of constant expression 10 signed int 
+
Index: src/Tests/Expect-a/Constant0-1.txt
===================================================================
--- src/Tests/Expect-a/Constant0-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Constant0-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,88 @@
+0: signed int 
+0: const signed int 
+0: static const signed int 
+1: signed int 
+1: const signed int 
+1: static const signed int 
+0: signed int 
+1: signed int 
+0: const signed int 
+1: const signed int 
+0: signed int 
+1: signed int 
+0: signed int 
+1: signed int 
+0: static const signed int 
+1: static const signed int 
+struct __anonymous0
+    with members
+      i: signed int 
+
+0: instance of struct __anonymous0 
+struct __anonymous1
+    with members
+      i: signed int 
+
+1: const instance of struct __anonymous1 
+struct __anonymous2
+    with members
+      i: signed int 
+
+1: static const instance of struct __anonymous2 
+0: pointer to signed int 
+1: pointer to signed int 
+0: pointer to signed int 
+1: pointer to signed int 
+0: pointer to signed int 
+1: pointer to signed int 
+0: pointer to signed int 
+1: pointer to signed int 
+0: const pointer to signed int 
+1: const pointer to signed int 
+0: const pointer to signed int 
+1: const pointer to signed int 
+0: const pointer to signed int 
+1: const pointer to signed int 
+struct __anonymous3
+    with members
+      i: signed int 
+
+0: pointer to instance of struct __anonymous3 
+x: pointer to signed int 
+0: pointer to signed int 
+x: const pointer to signed int 
+0: const pointer to signed int 
+x: static const pointer to signed int 
+0: static const pointer to signed int 
+struct __anonymous4
+    with members
+      i: signed int 
+
+0: pointer to instance of struct __anonymous4 
+struct __anonymous5
+    with members
+      i: signed int 
+
+0: const pointer to instance of struct __anonymous5 
+struct __anonymous6
+    with members
+      i: signed int 
+
+0: static const pointer to instance of struct __anonymous6 
+x: static pointer to signed int 
+0: static pointer to signed int 
+x: static const pointer to signed int 
+0: static const pointer to signed int 
+x: const pointer to pointer to signed int 
+0: const pointer to pointer to signed int 
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of 1: signed int 
+        Declaration of 0: pointer to signed int 
+        Declaration of x: pointer to signed int 
+        Declaration of 0: pointer to signed int 
+
Index: src/Tests/Expect-a/Context.txt
===================================================================
--- src/Tests/Expect-a/Context.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Context.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,63 @@
+context has_q
+    with parameters
+      T: type
+
+    with members
+      q: function
+          with parameters
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+
+f: forall
+      z: type
+        with assertions
+          ?=?: function
+              with parameters
+                pointer to instance of type z (not function type) 
+                instance of type z (not function type) 
+              returning 
+                instance of type z (not function type) 
+
+          instance of context has_q 
+            with parameters
+              instance of type z (not function type) 
+
+
+    function
+      accepting unspecified arguments
+    returning 
+      void 
+    with body 
+      CompoundStmt
+        Declaration of context has_r
+            with parameters
+              T: type
+              U: type
+
+            with members
+              r: function
+                  with parameters
+                    instance of type T (not function type) 
+                    function
+                        with parameters
+                          instance of type T (not function type) 
+                          instance of type U (not function type) 
+                        returning 
+                          instance of type T (not function type) 
+
+                  returning 
+                    instance of type T (not function type) 
+
+
+        Declaration of x: extern type
+        Declaration of y: extern type
+          with assertions
+            instance of context has_r 
+              with parameters
+                instance of type x (not function type) 
+                instance of type y (not function type) 
+
+
+
Index: src/Tests/Expect-a/DeclarationErrors.txt
===================================================================
--- src/Tests/Expect-a/DeclarationErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/DeclarationErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,14 @@
+Error: invalid combination of storage classes in declaration of x9: static static volatile const short int 
+
+Error: invalid combination of storage classes in declaration of x18: static static const volatile instance of struct __anonymous0
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x19: static static const volatile volatile instance of struct __anonymous1
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x28: static static volatile const instance of type Int
+
Index: src/Tests/Expect-a/DeclarationSpecifier.txt
===================================================================
--- src/Tests/Expect-a/DeclarationSpecifier.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/DeclarationSpecifier.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,14 @@
+Error: invalid combination of storage classes in declaration of x9: static static volatile const short int 
+
+Error: invalid combination of storage classes in declaration of x18: static static const volatile instance of struct __anonymous8
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x19: static static const volatile volatile instance of struct __anonymous9
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x28: static static volatile const instance of type Int
+
Index: src/Tests/Expect-a/Enum.txt
===================================================================
--- src/Tests/Expect-a/Enum.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Enum.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,28 @@
+enum Colors
+    with members
+      Red: untyped entity 
+      Yellow: untyped entity 
+      Pink: untyped entity 
+      Blue: untyped entity 
+      Purple: untyped entity 
+      Orange: untyped entity 
+      Green: untyped entity 
+
+f: function
+    with parameters
+      void 
+    returning 
+      void 
+    with body 
+      CompoundStmt
+        Declaration of enum Fruits
+            with members
+              Apple: untyped entity 
+              Banana: untyped entity 
+              Pear: untyped entity 
+              Mango: untyped entity 
+
+        Declaration of fruit: instance of enum Fruits with initializer 
+          Simple Initializer:             Name: Mango
+
+
Index: src/Tests/Expect-a/Exception.txt
===================================================================
--- src/Tests/Expect-a/Exception.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Exception.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,60 @@
+fred: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of x: signed int 
+                  Throw Statement, returning: constant expression 3 signed int 
+
+                  Throw Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: x
+constant expression 5 signed int 
+
+                  Try Statement
+            with block: 
+              CompoundStmt
+            and handlers: 
+              Catch Statement
+              ... catching
+i: signed int 
+
+                  Try Statement
+            with block: 
+              CompoundStmt
+                                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?/?
+                    ...to: 
+                        Name: x
+constant expression 4 signed int 
+            and handlers: 
+              Catch Statement
+              ... catching
+signed int 
+              Catch Statement
+              ... catching
+x: signed int 
+              Catch Statement
+              ... catching
+struct __anonymous0
+              Catch Statement
+              ... catching
+x: instance of struct __anonymous1 
+              Catch Statement
+              ... catching
+x: pointer to instance of struct __anonymous2 
+              Catch Statement
+              ... catching
+pointer to instance of struct __anonymous3 
+              Catch Statement
+              ... catching
+x: pointer to instance of struct __anonymous4 
+              Catch Statement
+              ... catching
+                  the rest
+
+
Index: src/Tests/Expect-a/Expression.txt
===================================================================
--- src/Tests/Expect-a/Expression.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Expression.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,336 @@
+fred: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of struct s
+            with members
+              i: signed int 
+
+        Declaration of p: pointer to instance of struct s 
+        Declaration of i: signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: !?
+            ...to: 
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ~?
+            ...to: 
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: +?
+            ...to: 
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: -?
+            ...to: 
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: *?
+            ...to: 
+                Name: p
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Name: p
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: --?
+            ...to: 
+                Address of:
+                  Name: p
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?++
+            ...to: 
+                Address of:
+                  Name: p
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?--
+            ...to: 
+                Address of:
+                  Name: p
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?+?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?-?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?*?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?/?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?%?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?^?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?&?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?|?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?>?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?==?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?!=?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?<<?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?>>?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?<=?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?>=?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Short-circuited operation (and) on: Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Name: i
+      Name: 0
+
+to:
+  signed int 
+ and Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Name: i
+      Name: 0
+
+to:
+  signed int 
+
+
+                  Expression Statement:
+            Short-circuited operation (or) on: Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Name: i
+      Name: 0
+
+to:
+  signed int 
+ and Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Name: i
+      Name: 0
+
+to:
+  signed int 
+
+
+                  Expression Statement:
+            Member Expression, with field: i            from aggregate:               Applying untyped: 
+                  Name: *?
+              ...to: 
+                  Name: p
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?+=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?-=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?*=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?/=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?%=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?&=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?|=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?^=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?<<=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?>>=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: i
+
+                  Expression Statement:
+            Conditional expression on: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Name: i
+                    Name: 0
+
+              to:
+                signed int 
+            First alternative:
+              Name: i
+            Second alternative:
+              Name: i
+
+
+
Index: src/Tests/Expect-a/Forall.txt
===================================================================
--- src/Tests/Expect-a/Forall.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Forall.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,603 @@
+?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+?=?: function
+    with parameters
+      pointer to pointer to function
+          with parameters
+            void 
+          returning 
+            void 
+
+      pointer to function
+          with parameters
+            void 
+          returning 
+            void 
+
+    returning 
+      pointer to function
+          with parameters
+            void 
+          returning 
+            void 
+
+
+g1: function
+      accepting unspecified arguments
+    returning 
+      void 
+    with body 
+      CompoundStmt
+        Declaration of f: forall
+              T: type
+                with assertions
+                  ?=?: function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+        Declaration of f: function
+            with parameters
+              signed int 
+            returning 
+              void 
+
+        Declaration of h: function
+            with parameters
+              p: pointer to function
+                  with parameters
+                    void 
+                  returning 
+                    void 
+
+            returning 
+              void 
+
+        Declaration of x: signed int 
+        Declaration of y: pointer to function
+            with parameters
+              void 
+            returning 
+              void 
+
+        Declaration of z: char 
+        Declaration of w: float 
+                  Expression Statement:
+            Applying untyped: 
+                Name: f
+            ...to: 
+                Name: x
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: f
+            ...to: 
+                Name: y
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: f
+            ...to: 
+                Name: z
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: f
+            ...to: 
+                Name: w
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: h
+            ...to: 
+                Applying untyped: 
+                    Name: f
+                ...to: 
+                    Name: y
+
+
+g2: function
+      accepting unspecified arguments
+    returning 
+      void 
+    with body 
+      CompoundStmt
+        Declaration of f: forall
+              T: type
+                with assertions
+                  ?=?: function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              void 
+
+        Declaration of f: forall
+              T: type
+                with assertions
+                  ?=?: function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+              U: type
+                with assertions
+                  ?=?: function
+                      with parameters
+                        pointer to instance of type U (not function type) 
+                        instance of type U (not function type) 
+                      returning 
+                        instance of type U (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+              instance of type U (not function type) 
+            returning 
+              void 
+
+        Declaration of x: signed int 
+        Declaration of y: float 
+        Declaration of z: pointer to signed int 
+        Declaration of w: pointer to float 
+                  Expression Statement:
+            Applying untyped: 
+                Name: f
+            ...to: 
+                Name: x
+                Name: y
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: f
+            ...to: 
+                Name: z
+                Name: w
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: f
+            ...to: 
+                Name: x
+                Name: z
+
+
+f: typedef for pointer to forall
+      T: type
+        with assertions
+          ?=?: function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+swap: forall
+      T: type
+        with assertions
+          ?=?: function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      left: instance of type T (not function type) 
+      right: instance of type T (not function type) 
+    returning 
+      void 
+    with body 
+      CompoundStmt
+        Declaration of temp: instance of type T (not function type) with initializer 
+          Simple Initializer:             Name: left
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: left
+                Name: right
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: right
+                Name: temp
+
+
+context sumable
+    with parameters
+      T: type
+
+    with members
+      0: const instance of type T (not function type) 
+      ?+?: function
+          with parameters
+            instance of type T (not function type) 
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+      ?++: function
+          with parameters
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+      ?+=?: function
+          with parameters
+            instance of type T (not function type) 
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+
+T1: type
+  with assertions
+    0: const instance of type T1 (not function type) 
+    ?+?: function
+        with parameters
+          instance of type T1 (not function type) 
+          instance of type T1 (not function type) 
+        returning 
+          instance of type T1 (not function type) 
+
+    ?++: function
+        with parameters
+          instance of type T1 (not function type) 
+        returning 
+          instance of type T1 (not function type) 
+
+    ?+=?: function
+        with parameters
+          instance of type T1 (not function type) 
+          instance of type T1 (not function type) 
+        returning 
+          instance of type T1 (not function type) 
+
+
+T2: type
+  with parameters
+    P1: type
+    P2: type
+
+T3: type
+  with assertions
+    instance of context sumable 
+      with parameters
+        instance of type T3 (not function type) 
+
+
+struct __anonymous0
+    with members
+      i: instance of type P1 (not function type) 
+      j: instance of type P2 (not function type) 
+
+T2: type for instance of struct __anonymous0 
+  with parameters
+    P1: type
+    P2: type
+
+  with assertions
+    instance of context sumable 
+      with parameters
+        instance of type T2 (not function type) 
+          with parameters
+            instance of type P1 (not function type) 
+            instance of type P2 (not function type) 
+
+
+
+w1: instance of type T2 (not function type) 
+  with parameters
+    signed int 
+    signed int 
+
+w2: typedef for instance of type T2 (not function type) 
+  with parameters
+    signed int 
+    signed int 
+
+g2: instance of type w2 (not function type) 
+w3: type for instance of type T2 (not function type) 
+  with parameters
+    signed int 
+    signed int 
+
+g3: instance of type w3 (not function type) 
+sum: forall
+      T: type
+        with assertions
+          ?=?: function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          instance of context sumable 
+            with parameters
+              instance of type T (not function type) 
+
+
+    function
+    with parameters
+      n: signed int 
+      a: open array of instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+    with body 
+      CompoundStmt
+        Declaration of total: instance of type T (not function type) with initializer 
+          Simple Initializer:             Name: 0
+
+        Declaration of i: signed int 
+                  Labels: {}
+          For Statement
+            initialization: 
+              Expression Statement:
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Name: i
+                    Name: 0
+
+            condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Applying untyped: 
+                        Name: ?<?
+                    ...to: 
+                        Name: i
+                        Name: n
+                    Name: 0
+
+              to:
+                signed int 
+
+            increment: 
+              Applying untyped: 
+                  Name: ?+=?
+              ...to: 
+                  Address of:
+                    Name: i
+                  Name: 1
+
+            statement block: 
+              Expression Statement:
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Name: total
+                    Applying untyped: 
+                        Name: ?+?
+                    ...to: 
+                        Name: total
+                        Applying untyped: 
+                            Name: ?[?]
+                        ...to: 
+                            Name: a
+                            Name: i
+
+
+                  Return Statement, returning: Name: total
+
+
+
+twice: forall
+      T: type
+        with assertions
+          ?=?: function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          0: const instance of type T (not function type) 
+          ?+?: function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?++: function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?+=?: function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      t: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Applying untyped: 
+    Name: ?+?
+...to: 
+    Name: t
+    Name: t
+
+
+
+min: forall
+      T: type
+        with assertions
+          ?=?: function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          0: const instance of type T (not function type) 
+          ?!=?: function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                signed int 
+
+          ?<?: function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                signed int 
+
+
+    function
+    with parameters
+      t1: instance of type T (not function type) 
+      t2: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Conditional expression on: 
+  Cast of:
+    Applying untyped: 
+        Name: ?!=?
+    ...to: 
+        Applying untyped: 
+            Name: ?<?
+        ...to: 
+            Name: t1
+            Name: t2
+        Name: 0
+
+  to:
+    signed int 
+First alternative:
+  Name: t1
+Second alternative:
+  Name: t2
+
+
+
+
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of x: signed int with initializer 
+          Simple Initializer:             Name: 1
+
+        Declaration of y: signed int with initializer 
+          Simple Initializer: constant expression 2 signed int 
+        Declaration of a: array of signed int with dimension of constant expression 10 signed int 
+        Declaration of f: float 
+                  Expression Statement:
+            Applying untyped: 
+                Name: swap
+            ...to: 
+                Name: x
+                Name: y
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: twice
+            ...to: 
+                Name: x
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: f
+                Applying untyped: 
+                    Name: min
+                ...to: 
+constant expression 4.0 double constant expression 3.0 double 
+                  Expression Statement:
+            Applying untyped: 
+                Name: sum
+            ...to: 
+constant expression 10 signed int                 Name: a
+
+
Index: src/Tests/Expect-a/Function.txt
===================================================================
--- src/Tests/Expect-a/Function.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Function.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,126 @@
+a: signed int 
+a: float 
+f: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f: function
+    with parameters
+      float 
+    returning 
+      float 
+
+g: function
+      accepting unspecified arguments
+    returning 
+      void 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: f
+            ...to: 
+                Cast of:
+                  Name: a
+
+                to:
+                  signed int 
+
+                  Expression Statement:
+            Cast of:
+              Applying untyped: 
+                  Name: f
+              ...to: 
+                  Name: a
+
+            to:
+              signed int 
+
+
+p: tuple of types
+    signed int 
+
+p: tuple of types
+    signed int 
+    double 
+
+p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+
+p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+q: tuple of types
+    char 
+
+q: tuple of types
+    signed int 
+    signed int 
+
+q: tuple of types
+    signed int 
+    signed int 
+    float 
+
+q: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+r: function
+    with parameters
+      signed int 
+      signed int 
+      signed int 
+      signed int 
+    returning 
+      signed int 
+      signed int 
+
+s: function
+      accepting unspecified arguments
+    returning 
+      void 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: r
+            ...to: 
+                Name: p
+                Name: q
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: r
+            ...to: 
+                Tuple:
+                                      Name: q
+
+                                      Name: p
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: r
+            ...to: 
+                Applying untyped: 
+                    Name: r
+                ...to: 
+                    Name: p
+                    Name: q
+                Applying untyped: 
+                    Name: r
+                ...to: 
+                    Name: q
+                    Name: q
+
+
Index: src/Tests/Expect-a/Functions.txt
===================================================================
--- src/Tests/Expect-a/Functions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Functions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,690 @@
+h: function
+    with parameters
+      void 
+    returning 
+      void 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      function
+          with parameters
+            void 
+          returning 
+            signed int 
+
+      function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      function
+          with parameters
+            void 
+          returning 
+            signed int 
+
+      function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      g: function
+          with parameters
+            void 
+          returning 
+            void 
+
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Applying untyped: 
+                    Name: *?
+                ...to: 
+                    Name: g
+            ...to: 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: g
+                Name: h
+
+
+f1: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+f2: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+f3: function
+      accepting unspecified arguments
+    returning 
+      pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+    with body 
+      CompoundStmt
+
+f4: function
+      accepting unspecified arguments
+    returning 
+      pointer to signed int 
+    with body 
+      CompoundStmt
+
+f5: function
+      accepting unspecified arguments
+    returning 
+      pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+    with body 
+      CompoundStmt
+
+f6: function
+      accepting unspecified arguments
+    returning 
+      pointer to signed int 
+    with body 
+      CompoundStmt
+
+f7: function
+      accepting unspecified arguments
+    returning 
+      pointer to signed int 
+    with body 
+      CompoundStmt
+
+f8: function
+      accepting unspecified arguments
+    returning 
+      pointer to pointer to signed int 
+    with body 
+      CompoundStmt
+
+f9: function
+      accepting unspecified arguments
+    returning 
+      pointer to const pointer to signed int 
+    with body 
+      CompoundStmt
+
+f10: function
+      accepting unspecified arguments
+    returning 
+      pointer to open array of signed int 
+    with body 
+      CompoundStmt
+
+f11: function
+      accepting unspecified arguments
+    returning 
+      pointer to open array of array of signed int with dimension of constant expression 3 signed int 
+    with body 
+      CompoundStmt
+
+f12: function
+      accepting unspecified arguments
+    returning 
+      pointer to open array of array of signed int with dimension of constant expression 3 signed int 
+    with body 
+      CompoundStmt
+
+fII1: function
+    with parameters
+      i: signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+fII2: function
+    with parameters
+      i: signed int 
+    returning 
+      const signed int 
+    with body 
+      CompoundStmt
+
+fII3: extern function
+    with parameters
+      i: signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+fII4: extern function
+    with parameters
+      i: signed int 
+    returning 
+      const signed int 
+    with body 
+      CompoundStmt
+
+fII5: function
+      accepting unspecified arguments
+    returning 
+      pointer to signed int 
+    with body 
+      CompoundStmt
+
+fII6: function
+      accepting unspecified arguments
+    returning 
+      const pointer to signed int 
+    with body 
+      CompoundStmt
+
+fII7: function
+      accepting unspecified arguments
+    returning 
+      pointer to const long signed int 
+    with body 
+      CompoundStmt
+
+fII8: static function
+      accepting unspecified arguments
+    returning 
+      pointer to const long signed int 
+    with body 
+      CompoundStmt
+
+fII9: static function
+      accepting unspecified arguments
+    returning 
+      pointer to const long signed int 
+    with body 
+      CompoundStmt
+
+fO1: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with parameter names
+      i
+    with parameter declarations
+      i: signed int 
+    with body 
+      CompoundStmt
+
+fO2: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with parameter names
+      i
+    with parameter declarations
+      i: signed int 
+    with body 
+      CompoundStmt
+
+fO3: function
+      accepting unspecified arguments
+    returning 
+      const signed int 
+    with parameter names
+      i
+    with parameter declarations
+      i: signed int 
+    with body 
+      CompoundStmt
+
+fO4: extern function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with parameter names
+      i
+    with parameter declarations
+      i: signed int 
+    with body 
+      CompoundStmt
+
+fO5: extern function
+      accepting unspecified arguments
+    returning 
+      const signed int 
+    with parameter names
+      i
+    with parameter declarations
+      i: signed int 
+    with body 
+      CompoundStmt
+
+f: function
+    returning 
+      nothing 
+
+f: function
+    returning 
+      signed int 
+
+f: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+f: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f: function
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+
+f: function
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+f: function
+    returning 
+      x: signed int 
+
+f: function
+    with parameters
+      x: signed int 
+    returning 
+      nothing 
+
+f: function
+    with parameters
+      x: signed int 
+    returning 
+      x: signed int 
+
+f: function
+    returning 
+      x: signed int 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      x: signed int 
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      x: signed int 
+    returning 
+      x: signed int 
+    with body 
+      CompoundStmt
+
+f: function
+    returning 
+      signed int 
+      x: signed int 
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+    returning 
+      nothing 
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+    returning 
+      signed int 
+      x: signed int 
+
+f: function
+    returning 
+      signed int 
+      x: signed int 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+    returning 
+      signed int 
+      x: signed int 
+    with body 
+      CompoundStmt
+
+f: function
+    returning 
+      signed int 
+      x: signed int 
+      signed int 
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+      signed int 
+    returning 
+      nothing 
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+      signed int 
+    returning 
+      signed int 
+      x: signed int 
+      signed int 
+
+f: function
+    returning 
+      signed int 
+      x: signed int 
+      signed int 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+      signed int 
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+      signed int 
+    returning 
+      signed int 
+      x: signed int 
+      signed int 
+    with body 
+      CompoundStmt
+
+f: function
+    returning 
+      signed int 
+      x: signed int 
+      y: pointer to signed int 
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+      y: pointer to signed int 
+    returning 
+      nothing 
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+      y: pointer to signed int 
+    returning 
+      signed int 
+      x: signed int 
+      y: pointer to signed int 
+
+f: function
+    returning 
+      signed int 
+      x: signed int 
+      y: pointer to signed int 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+      y: pointer to signed int 
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+      y: pointer to signed int 
+    returning 
+      signed int 
+      x: signed int 
+      y: pointer to signed int 
+    with body 
+      CompoundStmt
+
+f11: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f12: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f: function
+    with parameters
+      function
+          with parameters
+            signed int 
+            p: signed int 
+          returning 
+            signed int 
+
+      function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of p: pointer to open array of array of pointer to open array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 10 signed int 
+        Declaration of p: pointer to open array of array of pointer to open array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 10 signed int 
+        Declaration of p: pointer to open array of pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+
+f1: static function
+      accepting unspecified arguments
+    returning 
+      pointer to const signed int 
+    with body 
+      CompoundStmt
+
+f2: static function
+    returning 
+      const signed int 
+    with body 
+      CompoundStmt
+
+f3: inline static function
+    returning 
+      const pointer to signed int 
+    with body 
+      CompoundStmt
+
+f4: inline static function
+    returning 
+      const tuple of types
+          pointer to signed int 
+          signed int 
+
+    with body 
+      CompoundStmt
+
+f5: static function
+    returning 
+      const tuple of types
+          pointer to signed int 
+          const signed int 
+
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+      function
+            accepting unspecified arguments
+          returning 
+            pointer to signed int 
+
+      function
+            accepting unspecified arguments
+          returning 
+            pointer to pointer to signed int 
+
+      function
+            accepting unspecified arguments
+          returning 
+            pointer to const pointer to signed int 
+
+      function
+            accepting unspecified arguments
+          returning 
+            const pointer to const pointer to signed int 
+
+      open array of signed int 
+      array of signed int with dimension of constant expression 10 signed int 
+      open array of pointer to signed int 
+      array of pointer to signed int with dimension of constant expression 10 signed int 
+      open array of pointer to pointer to signed int 
+      array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+      open array of pointer to const pointer to signed int 
+      array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+      open array of const pointer to const pointer to signed int 
+      array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+    returning 
+      signed int 
+
+f: function
+    with parameters
+      function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+      function
+            accepting unspecified arguments
+          returning 
+            pointer to signed int 
+
+      function
+            accepting unspecified arguments
+          returning 
+            pointer to pointer to signed int 
+
+      function
+            accepting unspecified arguments
+          returning 
+            pointer to const pointer to signed int 
+
+      function
+            accepting unspecified arguments
+          returning 
+            const pointer to const pointer to signed int 
+
+      open array of signed int 
+      array of signed int with dimension of constant expression 10 signed int 
+      open array of pointer to signed int 
+      array of pointer to signed int with dimension of constant expression 10 signed int 
+      open array of pointer to pointer to signed int 
+      array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+      open array of pointer to const pointer to signed int 
+      array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+      open array of const pointer to const pointer to signed int 
+      array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+T: typedef for signed int 
+f: function
+    with parameters
+      f: pointer to instance of type T (not function type) 
+      t: instance of type T (not function type) 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of T: instance of type T (not function type) 
+
Index: src/Tests/Expect-a/GccExtensions.txt
===================================================================
--- src/Tests/Expect-a/GccExtensions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/GccExtensions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,60 @@
+fred: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of c1: double _Complex 
+        Declaration of c2: double _Complex 
+        Declaration of i1: const signed int 
+        Declaration of i2: const signed int 
+        Declaration of i3: const signed int 
+        Declaration of ex: const signed int 
+        Declaration of f1: inline function
+              accepting unspecified arguments
+            returning 
+              signed int 
+
+        Declaration of f2: inline function
+              accepting unspecified arguments
+            returning 
+              signed int 
+
+        Declaration of s1: signed int 
+        Declaration of s2: signed int 
+        Declaration of t1: type-of expression           Name: s1
+
+        Declaration of t2: type-of expression           Name: s1
+
+        Declaration of v1: volatile signed int 
+        Declaration of v2: volatile signed int 
+        Declaration of a1: signed int 
+        Declaration of a2: const signed int 
+        Declaration of a3: static const signed int 
+        Declaration of a4: static const signed int 
+        Declaration of a5: static const signed int 
+        Declaration of a6: static const signed int 
+        Declaration of a7: static const signed int 
+        Declaration of p1: pointer to signed int 
+        Declaration of p2: pointer to signed int 
+        Declaration of struct s1
+        Declaration of struct s2
+            with members
+              i: signed int 
+
+        Declaration of struct s3
+            with members
+              i: signed int 
+
+        Declaration of x1: instance of struct s3 
+        Declaration of y1: instance of struct s3 
+        Declaration of struct s4
+            with members
+              i: signed int 
+
+        Declaration of x2: instance of struct s4 
+        Declaration of y2: instance of struct s4 
+        Declaration of m1: array of signed int with dimension of constant expression 10 signed int 
+        Declaration of m2: array of array of signed int with dimension of constant expression 10 signed int with dimension of constant expression 10 signed int 
+        Declaration of m3: array of array of signed int with dimension of constant expression 10 signed int with dimension of constant expression 10 signed int 
+
Index: src/Tests/Expect-a/IdentFuncDeclarator.txt
===================================================================
--- src/Tests/Expect-a/IdentFuncDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/IdentFuncDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,185 @@
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of f1: signed int 
+        Declaration of f2: signed int 
+        Declaration of f3: pointer to signed int 
+        Declaration of f4: pointer to pointer to signed int 
+        Declaration of f5: pointer to const pointer to signed int 
+        Declaration of f6: const pointer to const pointer to signed int 
+        Declaration of f7: pointer to signed int 
+        Declaration of f8: pointer to pointer to signed int 
+        Declaration of f9: pointer to const pointer to signed int 
+        Declaration of f10: const pointer to const pointer to signed int 
+        Declaration of f11: pointer to signed int 
+        Declaration of f12: pointer to pointer to signed int 
+        Declaration of f13: pointer to const pointer to signed int 
+        Declaration of f14: const pointer to const pointer to signed int 
+        Declaration of f15: open array of signed int 
+        Declaration of f16: array of signed int with dimension of constant expression 10 signed int 
+        Declaration of f17: open array of signed int 
+        Declaration of f18: array of signed int with dimension of constant expression 10 signed int 
+        Declaration of f19: open array of pointer to signed int 
+        Declaration of f20: array of pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f21: open array of pointer to pointer to signed int 
+        Declaration of f22: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f23: open array of pointer to const pointer to signed int 
+        Declaration of f24: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f25: open array of const pointer to const pointer to signed int 
+        Declaration of f26: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f27: open array of pointer to signed int 
+        Declaration of f28: array of pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f29: open array of pointer to pointer to signed int 
+        Declaration of f30: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f31: open array of pointer to const pointer to signed int 
+        Declaration of f32: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f33: open array of const pointer to const pointer to signed int 
+        Declaration of f34: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f35: open array of pointer to signed int 
+        Declaration of f36: array of pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f37: open array of pointer to pointer to signed int 
+        Declaration of f38: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f39: open array of pointer to const pointer to signed int 
+        Declaration of f40: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f41: open array of const pointer to const pointer to signed int 
+        Declaration of f42: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f43: open array of array of signed int with dimension of constant expression 3 signed int 
+        Declaration of f44: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f45: open array of array of signed int with dimension of constant expression 3 signed int 
+        Declaration of f46: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f47: open array of array of signed int with dimension of constant expression 3 signed int 
+        Declaration of f48: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f49: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f50: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f51: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f52: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f53: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f54: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f55: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f56: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f57: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f58: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f59: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f60: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f61: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f62: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f63: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f64: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f65: function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f66: function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f67: function
+            with parameters
+              signed int 
+            returning 
+              pointer to signed int 
+
+        Declaration of f68: function
+            with parameters
+              signed int 
+            returning 
+              pointer to pointer to signed int 
+
+        Declaration of f69: function
+            with parameters
+              signed int 
+            returning 
+              pointer to const pointer to signed int 
+
+        Declaration of f70: function
+            with parameters
+              signed int 
+            returning 
+              const pointer to const pointer to signed int 
+
+        Declaration of f71: function
+            with parameters
+              signed int 
+            returning 
+              pointer to signed int 
+
+        Declaration of f72: function
+            with parameters
+              signed int 
+            returning 
+              pointer to pointer to signed int 
+
+        Declaration of f73: function
+            with parameters
+              signed int 
+            returning 
+              pointer to const pointer to signed int 
+
+        Declaration of f74: function
+            with parameters
+              signed int 
+            returning 
+              const pointer to const pointer to signed int 
+
+        Declaration of f75: pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f76: pointer to pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f77: pointer to const pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f78: const pointer to const pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f79: pointer to function
+            with parameters
+              signed int 
+            returning 
+              pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+
+        Declaration of f80: const pointer to function
+            with parameters
+              signed int 
+            returning 
+              pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+
+        Declaration of f81: const pointer to function
+            with parameters
+              signed int 
+            returning 
+              const pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+
+
Index: src/Tests/Expect-a/IdentFuncParamDeclarator.txt
===================================================================
--- src/Tests/Expect-a/IdentFuncParamDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/IdentFuncParamDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,221 @@
+fred: function
+    with parameters
+      f1: signed int 
+      f2: signed int 
+      f3: pointer to signed int 
+      f4: pointer to pointer to signed int 
+      f5: pointer to const pointer to signed int 
+      f6: const pointer to const pointer to signed int 
+      f7: pointer to signed int 
+      f8: pointer to pointer to signed int 
+      f9: pointer to const pointer to signed int 
+      f10: const pointer to const pointer to signed int 
+      f11: pointer to signed int 
+      f12: pointer to pointer to signed int 
+      f13: pointer to const pointer to signed int 
+      f14: const pointer to const pointer to signed int 
+      f15: open array of signed int 
+      f16: array of signed int with dimension of constant expression 10 signed int 
+      f17: open array of signed int 
+      f18: array of signed int with dimension of constant expression 10 signed int 
+      f19: open array of pointer to signed int 
+      f20: array of pointer to signed int with dimension of constant expression 10 signed int 
+      f21: open array of pointer to pointer to signed int 
+      f22: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+      f23: open array of pointer to const pointer to signed int 
+      f24: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+      f25: open array of const pointer to const pointer to signed int 
+      f26: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+      f27: open array of pointer to signed int 
+      f28: array of pointer to signed int with dimension of constant expression 10 signed int 
+      f29: open array of pointer to pointer to signed int 
+      f30: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+      f31: open array of pointer to const pointer to signed int 
+      f32: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+      f33: open array of const pointer to const pointer to signed int 
+      f34: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+      f35: open array of pointer to signed int 
+      f36: array of pointer to signed int with dimension of constant expression 10 signed int 
+      f37: open array of pointer to pointer to signed int 
+      f38: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+      f39: open array of pointer to const pointer to signed int 
+      f40: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+      f41: open array of const pointer to const pointer to signed int 
+      f42: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+      f43: open array of array of signed int with dimension of constant expression 3 signed int 
+      f44: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f45: open array of array of signed int with dimension of constant expression 3 signed int 
+      f46: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f47: open array of array of signed int with dimension of constant expression 3 signed int 
+      f48: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f49: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+      f50: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f51: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f52: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f53: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f54: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f55: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f56: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f57: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+      f58: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f59: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f60: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f61: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f62: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f63: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f64: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f65: function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f66: function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f67: function
+          with parameters
+            signed int 
+          returning 
+            pointer to signed int 
+
+      f68: function
+          with parameters
+            signed int 
+          returning 
+            pointer to pointer to signed int 
+
+      f69: function
+          with parameters
+            signed int 
+          returning 
+            pointer to const pointer to signed int 
+
+      f70: function
+          with parameters
+            signed int 
+          returning 
+            const pointer to const pointer to signed int 
+
+      f71: function
+          with parameters
+            signed int 
+          returning 
+            pointer to signed int 
+
+      f72: function
+          with parameters
+            signed int 
+          returning 
+            pointer to pointer to signed int 
+
+      f73: function
+          with parameters
+            signed int 
+          returning 
+            pointer to const pointer to signed int 
+
+      f74: function
+          with parameters
+            signed int 
+          returning 
+            const pointer to const pointer to signed int 
+
+      f75: pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f76: pointer to pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f77: pointer to const pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f78: const pointer to const pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f79: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  signed int 
+
+
+      f80: const pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  signed int 
+
+
+      f81: const pointer to function
+          with parameters
+            signed int 
+          returning 
+            const pointer to function
+                  accepting unspecified arguments
+                returning 
+                  signed int 
+
+
+      f82: const variable length array of signed int 
+      f83: const array of signed int with dimension of constant expression 3 signed int 
+      f84: static array of signed int with dimension of constant expression 3 signed int 
+      f85: const static array of signed int with dimension of constant expression 3 signed int 
+      f86: const variable length array of signed int 
+      f87: const array of signed int with dimension of constant expression 3 signed int 
+      f88: static array of signed int with dimension of constant expression 3 signed int 
+      f89: const static array of signed int with dimension of constant expression 3 signed int 
+      f90: const variable length array of pointer to signed int 
+      f91: const array of pointer to signed int with dimension of constant expression 3 signed int 
+      f92: static array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f93: const static array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f94: const static array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f95: const variable length array of pointer to signed int 
+      f96: const array of pointer to signed int with dimension of constant expression 3 signed int 
+      f97: static array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f98: const static array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f99: const static array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f100: const variable length array of array of signed int with dimension of constant expression 3 signed int 
+      f101: const array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f102: static array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f103: const static array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f104: const variable length array of array of signed int with dimension of constant expression 3 signed int 
+      f105: const array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f106: static array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f107: const static array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f108: const variable length array of array of pointer to signed int with dimension of constant expression 3 signed int 
+      f109: const array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f110: static array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f111: const static array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f112: const static array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f113: const variable length array of array of pointer to signed int with dimension of constant expression 3 signed int 
+      f114: const array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f115: static array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f116: const static array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f117: const static array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
Index: src/Tests/Expect-a/InferParam.txt
===================================================================
--- src/Tests/Expect-a/InferParam.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/InferParam.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,165 @@
+?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+?=?: function
+    with parameters
+      pointer to double 
+      double 
+    returning 
+      double 
+
+g: forall
+      T: type
+        with assertions
+          ?=?: function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+      U: type
+        with assertions
+          ?=?: function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+          f: function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type U (not function type) 
+
+f: function
+    with parameters
+      signed int 
+    returning 
+      float 
+
+f: function
+    with parameters
+      signed int 
+    returning 
+      double 
+
+i: function
+    with parameters
+      float 
+    returning 
+      void 
+
+h: function
+      accepting unspecified arguments
+    returning 
+      void 
+    with body 
+      CompoundStmt
+        Declaration of a: signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: i
+            ...to: 
+                Applying untyped: 
+                    Name: g
+                ...to: 
+                    Name: a
+
+
+context has_f_and_j
+    with parameters
+      T: type
+      U: type
+
+    with members
+      f: function
+          with parameters
+            instance of type T (not function type) 
+          returning 
+            instance of type U (not function type) 
+
+      j: function
+          with parameters
+            instance of type T (not function type) 
+            instance of type U (not function type) 
+          returning 
+            instance of type U (not function type) 
+
+
+j: function
+    with parameters
+      signed int 
+      float 
+    returning 
+      float 
+
+k: forall
+      T: type
+        with assertions
+          ?=?: function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+      U: type
+        with assertions
+          ?=?: function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+          instance of context has_f_and_j 
+            with parameters
+              instance of type T (not function type) 
+              instance of type U (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type U (not function type) 
+
+l: function
+      accepting unspecified arguments
+    returning 
+      void 
+    with body 
+      CompoundStmt
+        Declaration of b: signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: i
+            ...to: 
+                Applying untyped: 
+                    Name: k
+                ...to: 
+                    Name: b
+
+
Index: src/Tests/Expect-a/Initialization.txt
===================================================================
--- src/Tests/Expect-a/Initialization.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Initialization.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,139 @@
+x11: pointer to signed int with initializer 
+  Simple Initializer:     Name: 0
+
+x12: signed int with initializer 
+  Simple Initializer:     Name: 0
+
+x21: pointer to signed int with initializer 
+  Simple Initializer:     Name: 0
+
+x22: signed int with initializer 
+  Simple Initializer:     Name: 0
+
+y1: array of signed int with dimension of constant expression 20 signed int 
+y2: array of signed int with dimension of constant expression 20 signed int 
+struct __anonymous0
+    with members
+      w: tuple of types
+          signed int 
+
+
+a: instance of struct __anonymous0 with initializer 
+  Compound initializer:  
+    Simple Initializer:       Tuple:
+        constant expression 2 signed int 
+
+      designated by:         Name: w
+
+struct __anonymous1
+    with members
+      a: array of signed int with dimension of constant expression 3 signed int 
+      b: signed int 
+
+w: open array of instance of struct __anonymous1 with initializer 
+  Compound initializer:  
+    Compound initializer:        designated by: [        Name: 0
+        Name: a
+      ]
+      Simple Initializer:         Name: 1
+
+    Simple Initializer:       Name: 1
+
+      designated by:         Name: 0
+        Name: b
+
+    Simple Initializer: constant expression 2 signed int 
+      designated by:         Name: 1
+        Name: a
+        Name: 0
+
+struct __anonymous3
+    with members
+      f1: signed int 
+      f2: signed int 
+      f3: signed int 
+      struct __anonymous2
+          with members
+            g1: signed int 
+            g2: signed int 
+            g3: signed int 
+
+      f4: array of instance of struct __anonymous2 with dimension of constant expression 4 signed int 
+
+v7: instance of struct __anonymous3 with initializer 
+  Compound initializer:  
+    Simple Initializer: constant expression 4 signed int 
+      designated by:         Name: f1
+
+    Simple Initializer: constant expression 3 signed int 
+      designated by:         Name: f2
+
+    Compound initializer:        designated by: [        Name: f4
+constant expression 2 signed int       ]
+      Simple Initializer: constant expression 3 signed int 
+        designated by:           Name: g1
+
+      Simple Initializer:         Name: 0
+
+        designated by:           Name: g3
+
+    Simple Initializer: constant expression 7 signed int 
+      designated by:         Name: f4
+constant expression 3 signed int         Name: g3
+
+struct point
+    with members
+      x: signed int 
+      z: signed int 
+      struct __anonymous4
+          with members
+            y1: signed int 
+            y2: signed int 
+            y3: signed int 
+
+      y: instance of struct __anonymous4 
+      w: signed int 
+
+struct quintet
+    with members
+      v: signed int 
+      w: signed int 
+      x: signed int 
+      y: signed int 
+      z: signed int 
+
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of p1: instance of struct point with initializer 
+          Compound initializer:  
+            Simple Initializer: constant expression 3 signed int 
+              designated by:                 Name: x
+
+        Declaration of p2: instance of struct point with initializer 
+          Compound initializer:  
+            Simple Initializer: constant expression 3 signed int 
+            Simple Initializer: constant expression 4 signed int 
+        Declaration of p3: instance of struct point with initializer 
+          Compound initializer:  
+            Simple Initializer: constant expression 5 signed int 
+              designated by:                 Name: x
+                Name: z
+
+            Compound initializer:                designated by: [                Name: y
+              ]
+              Simple Initializer: constant expression 6 signed int 
+                designated by:                   Name: y3
+                  Name: y1
+
+              Simple Initializer: constant expression 17 signed int 
+        Declaration of p4: instance of struct point with initializer 
+          Compound initializer:  
+            Simple Initializer: constant expression 5 signed int 
+              designated by:                 Name: w
+
+            Simple Initializer: constant expression 4 signed int 
+
Index: src/Tests/Expect-a/Initialization2.txt
===================================================================
--- src/Tests/Expect-a/Initialization2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Initialization2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,142 @@
+a: signed int with initializer 
+  Simple Initializer: constant expression 3 signed int 
+struct __anonymous0
+    with members
+      x: signed int 
+      y: signed int 
+
+z: instance of struct __anonymous0 with initializer 
+  Compound initializer:  
+    Simple Initializer: constant expression 3 signed int 
+    Simple Initializer: constant expression 7 signed int 
+struct __anonymous1
+    with members
+      x: signed int 
+      y: signed int 
+
+z1: instance of struct __anonymous1 with initializer 
+  Compound initializer:  
+    Simple Initializer: constant expression 3 signed int 
+      designated by:         Name: x
+        Name: y
+
+struct __anonymous2
+    with members
+      x: signed int 
+      y: signed int 
+
+z2: instance of struct __anonymous2 with initializer 
+  Compound initializer:  
+    Simple Initializer: constant expression 3 signed int 
+      designated by:         Name: y
+
+    Simple Initializer: constant expression 4 signed int 
+      designated by:         Name: x
+
+struct __anonymous4
+    with members
+      x: signed int 
+      struct __anonymous3
+          with members
+            y1: signed int 
+            y2: signed int 
+
+      y: instance of struct __anonymous3 
+
+z3: instance of struct __anonymous4 with initializer 
+  Compound initializer:  
+    Simple Initializer: constant expression 3 signed int 
+      designated by:         Name: x
+
+    Compound initializer:        designated by: [        Name: y
+      ]
+      Simple Initializer: constant expression 4 signed int 
+        designated by:           Name: y1
+
+      Simple Initializer: constant expression 5 signed int 
+        designated by:           Name: y2
+
+struct __anonymous6
+    with members
+      x: signed int 
+      struct __anonymous5
+          with members
+            y1: signed int 
+            y2: signed int 
+
+      y: instance of struct __anonymous5 
+
+z3: instance of struct __anonymous6 with initializer 
+  Compound initializer:  
+    Compound initializer:        designated by: [        Name: y
+      ]
+      Simple Initializer: constant expression 9 signed int 
+        designated by:           Name: y2
+
+      Simple Initializer: constant expression 8 signed int 
+        designated by:           Name: y1
+
+    Simple Initializer: constant expression 7 signed int 
+      designated by:         Name: x
+
+struct __anonymous8
+    with members
+      x: signed int 
+      struct __anonymous7
+          with members
+            y1: signed int 
+            y2: signed int 
+
+      y: instance of struct __anonymous7 
+
+z3: instance of struct __anonymous8 with initializer 
+  Compound initializer:  
+    Simple Initializer: constant expression 7 signed int 
+      designated by:         Name: x
+
+    Compound initializer:  
+      Simple Initializer: constant expression 9 signed int 
+        designated by:           Name: y2
+
+      Simple Initializer: constant expression 8 signed int 
+        designated by:           Name: y1
+
+struct __anonymous10
+    with members
+      x: signed int 
+      struct __anonymous9
+          with members
+            y1: signed int 
+            y2: signed int 
+
+      y: instance of struct __anonymous9 
+
+z3: instance of struct __anonymous10 with initializer 
+  Compound initializer:  
+    Simple Initializer: constant expression 3 signed int 
+    Compound initializer:  
+      Simple Initializer: constant expression 4 signed int 
+      Simple Initializer: constant expression 5 signed int 
+struct t
+    with members
+      a: signed int 
+      b: signed int 
+
+x: instance of struct t with initializer 
+  Compound initializer:  
+    Simple Initializer: constant expression 4 signed int 
+      designated by:         Name: b
+
+    Simple Initializer: constant expression 3 signed int 
+      designated by:         Name: a
+
+struct __anonymous11
+    with members
+      x: signed int 
+      y: signed int 
+
+z6: instance of struct __anonymous11 with initializer 
+  Compound initializer:  
+    Simple Initializer: constant expression 5 signed int 
+    Simple Initializer: constant expression 6 signed int 
+    Simple Initializer: constant expression 4 signed int 
Index: src/Tests/Expect-a/LabelledExit.txt
===================================================================
--- src/Tests/Expect-a/LabelledExit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/LabelledExit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,743 @@
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of i: signed int 
+        Declaration of x: signed int 
+        Declaration of y: signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: x
+                Name: 0
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: y
+                Name: 0
+
+                  CompoundStmt
+                          If on condition: 
+                  Cast of:
+                    Applying untyped: 
+                        Name: ?!=?
+                    ...to: 
+                        Applying untyped: 
+                            Name: ?==?
+                        ...to: 
+                            Name: x
+                            Name: y
+                        Name: 0
+
+                  to:
+                    signed int 
+              .... and branches: 
+                  CompoundStmt
+                                          Labels: {}
+                      For Statement
+                        initialization: 
+
+                        condition: 
+                          Cast of:
+                            Applying untyped: 
+                                Name: ?!=?
+                            ...to: 
+                                Applying untyped: 
+                                    Name: ?<?
+                                ...to: 
+                                    Name: i
+                                    Name: y
+                                Name: 0
+
+                          to:
+                            signed int 
+
+                        increment: 
+
+                        statement block: 
+                          CompoundStmt
+                                                          Expression Statement:
+                                Applying untyped: 
+                                    Name: ?+=?
+                                ...to: 
+                                    Address of:
+                                      Name: y
+                                    Name: 1
+
+                                                          If on condition: 
+                                  Cast of:
+                                    Applying untyped: 
+                                        Name: ?!=?
+                                    ...to: 
+                                        Applying untyped: 
+                                            Name: ?<?
+                                        ...to: 
+                                            Name: y
+constant expression 10 signed int                                         Name: 0
+
+                                  to:
+                                    signed int 
+                              .... and branches: 
+                                  Branch (Break)
+
+
+
+
+
+                  While on condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Applying untyped: 
+                        Name: ?==?
+                    ...to: 
+                        Name: y
+constant expression 10 signed int                     Name: 0
+
+              to:
+                signed int 
+          .... with body: 
+              Null Statement
+
+                  While on condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Applying untyped: 
+                        Name: ?<?
+                    ...to: 
+                        Name: x
+constant expression 10 signed int                     Name: 0
+
+              to:
+                signed int 
+          .... with body: 
+              CompoundStmt
+                                  While on condition: 
+                      Cast of:
+                        Applying untyped: 
+                            Name: ?!=?
+                        ...to: 
+                            Applying untyped: 
+                                Name: ?<?
+                            ...to: 
+                                Name: y
+constant expression 5 signed int                             Name: 0
+
+                      to:
+                        signed int 
+                  .... with body: 
+                      CompoundStmt
+                                                  If on condition: 
+                              Cast of:
+                                Applying untyped: 
+                                    Name: ?!=?
+                                ...to: 
+                                    Applying untyped: 
+                                        Name: ?==?
+                                    ...to: 
+                                        Name: y
+constant expression 3 signed int                                     Name: 0
+
+                              to:
+                                signed int 
+                          .... and branches: 
+                              Branch (Break)
+
+
+                                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?+=?
+                    ...to: 
+                        Address of:
+                          Name: x
+                        Name: 1
+
+
+                  Labels: {A,}
+          For Statement
+            initialization: 
+              Expression Statement:
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Name: i
+                    Name: 0
+
+            condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Applying untyped: 
+                        Name: ?<?
+                    ...to: 
+                        Name: i
+constant expression 10 signed int                     Name: 0
+
+              to:
+                signed int 
+
+            increment: 
+              Applying untyped: 
+                  Name: ?+=?
+              ...to: 
+                  Address of:
+                    Name: i
+                  Name: 1
+
+            statement block: 
+              CompoundStmt
+                                  Labels: {B,}
+                  For Statement
+                    initialization: 
+                      Expression Statement:
+                        Applying untyped: 
+                            Name: ?=?
+                        ...to: 
+                            Address of:
+                              Name: i
+                            Name: 0
+
+                    condition: 
+                      Cast of:
+                        Applying untyped: 
+                            Name: ?!=?
+                        ...to: 
+                            Applying untyped: 
+                                Name: ?<?
+                            ...to: 
+                                Name: i
+constant expression 10 signed int                             Name: 0
+
+                      to:
+                        signed int 
+
+                    increment: 
+                      Applying untyped: 
+                          Name: ?+=?
+                      ...to: 
+                          Address of:
+                            Name: i
+                          Name: 1
+
+                    statement block: 
+                      CompoundStmt
+                                                  Labels: {C,}
+                          For Statement
+                            initialization: 
+                              Expression Statement:
+                                Applying untyped: 
+                                    Name: ?=?
+                                ...to: 
+                                    Address of:
+                                      Name: i
+                                    Name: 0
+
+                            condition: 
+                              Cast of:
+                                Applying untyped: 
+                                    Name: ?!=?
+                                ...to: 
+                                    Applying untyped: 
+                                        Name: ?<?
+                                    ...to: 
+                                        Name: i
+constant expression 10 signed int                                     Name: 0
+
+                              to:
+                                signed int 
+
+                            increment: 
+                              Applying untyped: 
+                                  Name: ?+=?
+                              ...to: 
+                                  Address of:
+                                    Name: i
+                                  Name: 1
+
+                            statement block: 
+                              CompoundStmt
+                                                                  Branch (Goto)
+
+                                                                  Branch (Goto)
+
+                                                                  Branch (Goto)
+
+                                                                  Branch (Continue)
+
+                                                                  Branch (Continue)
+
+                                                                  Branch (Continue)
+
+                                                                  Branch (Continue)
+
+                                                                  Branch (Break)
+
+                                                                  Branch (Break)
+
+                                                                  Branch (Break)
+
+                                                                  Branch (Break)
+
+
+
+
+
+
+
+                  Labels: {D,}
+          For Statement
+            initialization: 
+
+            condition: 
+
+            increment: 
+
+            statement block: 
+              CompoundStmt
+                                  Branch (Break)
+
+                                  Branch (Continue)
+
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?+=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: 1
+
+                  Branch (Goto)
+
+                  Labels: {X,Y,}
+          For Statement
+            initialization: 
+
+            condition: 
+
+            increment: 
+
+            statement block: 
+              CompoundStmt
+                                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?+=?
+                    ...to: 
+                        Address of:
+                          Name: i
+                        Name: 1
+
+                                  If on condition: 
+                      Cast of:
+                        Applying untyped: 
+                            Name: ?!=?
+                        ...to: 
+                            Applying untyped: 
+                                Name: ?>?
+                            ...to: 
+                                Name: i
+constant expression 5 signed int                             Name: 0
+
+                      to:
+                        signed int 
+                  .... and branches: 
+                      Branch (Continue)
+
+                                  If on condition: 
+                      Cast of:
+                        Applying untyped: 
+                            Name: ?!=?
+                        ...to: 
+                            Applying untyped: 
+                                Name: ?<?
+                            ...to: 
+                                Name: i
+constant expression 5 signed int                             Name: 0
+
+                      to:
+                        signed int 
+                  .... and branches: 
+                      Branch (Break)
+
+                                  If on condition: 
+                      Cast of:
+                        Applying untyped: 
+                            Name: ?!=?
+                        ...to: 
+                            Applying untyped: 
+                                Name: ?<?
+                            ...to: 
+                                Name: i
+constant expression 5 signed int                             Name: 0
+
+                      to:
+                        signed int 
+                  .... and branches: 
+                      Branch (Break)
+
+                                  Branch (Break)
+
+
+
+                  Labels: {XX,}
+          For Statement
+            initialization: 
+
+            condition: 
+
+            increment: 
+
+            statement block: 
+              CompoundStmt
+                                  Labels: {YY,}
+                  For Statement
+                    initialization: 
+
+                    condition: 
+
+                    increment: 
+
+                    statement block: 
+                      CompoundStmt
+                                                  Labels: {ZZ,}
+                          For Statement
+                            initialization: 
+
+                            condition: 
+
+                            increment: 
+
+                            statement block: 
+                              CompoundStmt
+                                                                  Expression Statement:
+                                    Applying untyped: 
+                                        Name: ?+=?
+                                    ...to: 
+                                        Address of:
+                                          Name: i
+                                        Name: 1
+
+                                                                  If on condition: 
+                                      Cast of:
+                                        Applying untyped: 
+                                            Name: ?!=?
+                                        ...to: 
+                                            Applying untyped: 
+                                                Name: ?>?
+                                            ...to: 
+                                                Name: i
+constant expression 5 signed int                                             Name: 0
+
+                                      to:
+                                        signed int 
+                                  .... and branches: 
+                                      Branch (Continue)
+
+                                                                  If on condition: 
+                                      Cast of:
+                                        Applying untyped: 
+                                            Name: ?!=?
+                                        ...to: 
+                                            Applying untyped: 
+                                                Name: ?<?
+                                            ...to: 
+                                                Name: i
+constant expression 5 signed int                                             Name: 0
+
+                                      to:
+                                        signed int 
+                                  .... and branches: 
+                                      Branch (Continue)
+
+                                                                  If on condition: 
+                                      Cast of:
+                                        Applying untyped: 
+                                            Name: ?!=?
+                                        ...to: 
+                                            Applying untyped: 
+                                                Name: ?<?
+                                            ...to: 
+                                                Name: i
+constant expression 5 signed int                                             Name: 0
+
+                                      to:
+                                        signed int 
+                                  .... and branches: 
+                                      Branch (Continue)
+
+                                                                  If on condition: 
+                                      Cast of:
+                                        Applying untyped: 
+                                            Name: ?!=?
+                                        ...to: 
+                                            Applying untyped: 
+                                                Name: ?>?
+                                            ...to: 
+                                                Name: i
+constant expression 5 signed int                                             Name: 0
+
+                                      to:
+                                        signed int 
+                                  .... and branches: 
+                                      Branch (Break)
+
+                                                                  If on condition: 
+                                      Cast of:
+                                        Applying untyped: 
+                                            Name: ?!=?
+                                        ...to: 
+                                            Applying untyped: 
+                                                Name: ?<?
+                                            ...to: 
+                                                Name: i
+constant expression 5 signed int                                             Name: 0
+
+                                      to:
+                                        signed int 
+                                  .... and branches: 
+                                      Branch (Break)
+
+                                                                  If on condition: 
+                                      Cast of:
+                                        Applying untyped: 
+                                            Name: ?!=?
+                                        ...to: 
+                                            Applying untyped: 
+                                                Name: ?<?
+                                            ...to: 
+                                                Name: i
+constant expression 5 signed int                                             Name: 0
+
+                                      to:
+                                        signed int 
+                                  .... and branches: 
+                                      Branch (Break)
+
+                                                                  Branch (Break)
+
+
+
+
+
+
+
+                  Labels: {}
+          For Statement
+            initialization: 
+
+            condition: 
+
+            increment: 
+
+            statement block: 
+              Null Statement
+
+
+                  Labels: {}
+          For Statement
+            initialization: 
+Declaration of i: signed int with initializer 
+              Simple Initializer:                 Name: 0
+
+            condition: 
+
+            increment: 
+
+            statement block: 
+              Null Statement
+
+
+                  Labels: {}
+          For Statement
+            initialization: 
+
+            condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Applying untyped: 
+                        Name: ?<?
+                    ...to: 
+                        Name: i
+                        Name: 0
+                    Name: 0
+
+              to:
+                signed int 
+
+            increment: 
+
+            statement block: 
+              Null Statement
+
+
+                  Labels: {}
+          For Statement
+            initialization: 
+
+            condition: 
+
+            increment: 
+              Applying untyped: 
+                  Name: ?+=?
+              ...to: 
+                  Address of:
+                    Name: i
+                  Name: 1
+
+            statement block: 
+              Null Statement
+
+
+                  Labels: {L0,L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,L13,L14,L15,L16,L17,L18,L19,L20,L21,L22,L23,L24,L25,L26,L27,L28,L29,L31,L32,L33,L34,}
+          For Statement
+            initialization: 
+
+            condition: 
+
+            increment: 
+
+            statement block: 
+              CompoundStmt
+                                  Branch (Break)
+
+
+
+                  Switch on condition: Name: i
+
+              Default 
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?+=?
+                    ...to: 
+                        Address of:
+                          Name: i
+                        Name: 1
+              Case Name: 0
+
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?+=?
+                    ...to: 
+                        Address of:
+                          Name: i
+                        Name: 1
+                  Branch (Break)
+              Case Name: 1
+
+                  Switch on condition: Name: i
+
+                      Case Name: 0
+
+                          Branch (Break)
+                      Default 
+                          Branch (Break)
+
+                  Choose on condition: Name: i
+
+              Default 
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?+=?
+                    ...to: 
+                        Address of:
+                          Name: i
+                        Name: 1
+              Case Name: 0
+
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?+=?
+                    ...to: 
+                        Address of:
+                          Name: i
+                        Name: 1
+                  Branch (Break)
+              Case Name: 1
+
+                  Choose on condition: Name: i
+
+                      Case Name: 0
+
+                          Branch (Break)
+                      Default 
+                          Branch (Break)
+                  Fall-through statement
+              Case constant expression 2 signed int 
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?+=?
+                    ...to: 
+                        Address of:
+                          Name: i
+                        Name: 1
+
+                  CompoundStmt
+            Declaration of array: static open array of pointer to void with initializer 
+              Compound initializer:  
+                Simple Initializer:                   Applying untyped: 
+                      Name: LabAddress
+                  ...to: 
+                      Name: foo
+
+                Simple Initializer:                   Applying untyped: 
+                      Name: LabAddress
+                  ...to: 
+                      Name: bar
+
+                Simple Initializer:                   Applying untyped: 
+                      Name: LabAddress
+                  ...to: 
+                      Name: hack
+
+                          Branch (Goto)
+
+
+                  If on condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Applying untyped: 
+                        Name: ?>?
+                    ...to: 
+                        Name: i
+constant expression 5 signed int                     Name: 0
+
+              to:
+                signed int 
+          .... and branches: 
+              CompoundStmt
+                                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?+=?
+                    ...to: 
+                        Address of:
+                          Name: i
+                        Name: 1
+
+                                  Branch (Break)
+
+              Expression Statement:
+                Applying untyped: 
+                    Name: ?+=?
+                ...to: 
+                    Address of:
+                      Name: i
+                    Name: 1
+
+
Index: src/Tests/Expect-a/Members.txt
===================================================================
--- src/Tests/Expect-a/Members.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Members.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,186 @@
+?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+*?: forall
+      T: type
+        with assertions
+          ?=?: function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      pointer to instance of type T (not function type) 
+    returning 
+      lvalue instance of type T (not function type) 
+
+__builtin_memcpy: function
+      accepting unspecified arguments
+    returning 
+      pointer to char 
+
+a: function
+    with parameters
+      char 
+    returning 
+      void 
+
+b: function
+    with parameters
+      signed int 
+    returning 
+      void 
+
+c: function
+    with parameters
+      pointer to signed int 
+    returning 
+      void 
+
+d: function
+    with parameters
+      pointer to float 
+    returning 
+      void 
+
+struct a_struct
+    with members
+      a: signed int 
+      a: char 
+      a: float 
+
+union b_struct
+    with members
+      a: pointer to signed int 
+      a: pointer to char 
+      a: pointer to float 
+
+f: function
+      accepting unspecified arguments
+    returning 
+      void 
+    with body 
+      CompoundStmt
+        Declaration of the_struct: instance of struct a_struct 
+        Declaration of the_struct: instance of union b_struct 
+                  Expression Statement:
+            Applying untyped: 
+                Name: a
+            ...to: 
+                Member Expression, with field: a                from aggregate:                   Name: the_struct
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: b
+            ...to: 
+                Member Expression, with field: a                from aggregate:                   Name: the_struct
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: c
+            ...to: 
+                Member Expression, with field: a                from aggregate:                   Name: the_struct
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: d
+            ...to: 
+                Member Expression, with field: a                from aggregate:                   Name: the_struct
+
+
+struct c_struct
+    with members
+      signed int 
+      char 
+      float 
+
+union d_struct
+    with members
+      pointer to signed int 
+      pointer to char 
+      pointer to float 
+
+g: function
+      accepting unspecified arguments
+    returning 
+      void 
+    with body 
+      CompoundStmt
+        Declaration of x: short unsigned int 
+        Declaration of x: instance of struct c_struct 
+        Declaration of x: instance of union d_struct 
+                  Expression Statement:
+            Applying untyped: 
+                Name: a
+            ...to: 
+                Name: x
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: b
+            ...to: 
+                Name: x
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: c
+            ...to: 
+                Name: x
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: d
+            ...to: 
+                Name: x
+
+
+struct forward
+q: pointer to instance of struct forward 
+struct forward
+    with members
+      y: signed int 
+
+h: function
+      accepting unspecified arguments
+    returning 
+      void 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Member Expression, with field: y            from aggregate:               Applying untyped: 
+                  Name: *?
+              ...to: 
+                  Name: q
+
+
Index: src/Tests/Expect-a/Misc.txt
===================================================================
--- src/Tests/Expect-a/Misc.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Misc.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,57 @@
+a: signed int 
+b: signed int 
+b: float 
+g: function
+    with parameters
+      signed int 
+    returning 
+      void 
+
+g: function
+    with parameters
+      unsigned int 
+    returning 
+      void 
+
+f: function
+    with parameters
+      void 
+    returning 
+      void 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Comma Expression:
+                  Name: a
+
+                  Name: b
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Comma Expression:
+                  Comma Expression:
+                    Name: a
+
+                    Name: a
+
+                  Name: b
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Sizeof Expression on:                   Name: a
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Sizeof Expression on: signed int 
+
+
Index: src/Tests/Expect-a/MiscError.txt
===================================================================
--- src/Tests/Expect-a/MiscError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/MiscError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,54 @@
+a: signed int 
+b: signed int 
+b: float 
+g: function
+    with parameters
+      signed int 
+    returning 
+      void 
+
+f: function
+    with parameters
+      void 
+    returning 
+      void 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Comma Expression:
+                  Name: b
+
+                  Name: a
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Comma Expression:
+                  Comma Expression:
+                    Name: b
+
+                    Name: a
+
+                  Name: b
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Comma Expression:
+                  Comma Expression:
+                    Name: a
+
+                    Name: b
+
+                  Name: b
+
+                  Expression Statement:
+            Sizeof Expression on:               Name: b
+
+
+
Index: src/Tests/Expect-a/NamedParmArg.txt
===================================================================
--- src/Tests/Expect-a/NamedParmArg.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/NamedParmArg.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,94 @@
+f1: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer: constant expression 3 signed int 
+      j: pointer to signed int with initializer 
+        Simple Initializer:           Name: 0
+
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+f2: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer: constant expression 3 signed int 
+      j: pointer to signed int 
+    returning 
+      signed int 
+      signed int 
+    with body 
+      CompoundStmt
+
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: f1
+            ...to: 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: f1
+            ...to: 
+constant expression 3 signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: f1
+            ...to: 
+constant expression 3 signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: f1
+            ...to: 
+constant expression 3 signed int                 Name: 0
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: f1
+            ...to: 
+constant expression 3 signed int                 Name: 0
+                with designator:                  Name: j
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: f1
+            ...to: 
+                Name: 0
+                with designator:                  Name: j
+constant expression 3 signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: f1
+            ...to: 
+constant expression 3 signed int                 with designator:                  Name: i
+                Name: 0
+                with designator:                  Name: j
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: f1
+            ...to: 
+                Name: 0
+                with designator:                  Name: j
+constant expression 3 signed int                 with designator:                  Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: f1
+            ...to: 
+                Applying untyped: 
+                    Name: f2
+                ...to: 
+                with designator:                  Tuple:
+                                          Name: j
+
+                                          Name: i
+
+
+
Index: src/Tests/Expect-a/NumericConstants.txt
===================================================================
--- src/Tests/Expect-a/NumericConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/NumericConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,88 @@
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Name: 1
+
+                  Expression Statement:
+constant expression 21 signed int 
+                  Expression Statement:
+constant expression 2147483647 signed int 
+                  Expression Statement:
+constant expression 37LL long long signed int 
+                  Expression Statement:
+constant expression 45ull long long unsigned int 
+                  Expression Statement:
+constant expression 89llu long long unsigned int 
+                  Expression Statement:
+constant expression 99LLu long long unsigned int 
+                  Expression Statement:
+constant expression 56lu long unsigned int 
+                  Expression Statement:
+constant expression 88LLu long long unsigned int 
+                  Expression Statement:
+constant expression 0u unsigned int 
+                  Expression Statement:
+constant expression 0377 signed int 
+                  Expression Statement:
+constant expression 0377ul long unsigned int 
+                  Expression Statement:
+constant expression 0x1 signed int 
+                  Expression Statement:
+constant expression 0x1u unsigned int 
+                  Expression Statement:
+constant expression 0xabL long signed int 
+                  Expression Statement:
+constant expression 0x80000000 unsigned int 
+                  Expression Statement:
+constant expression 0xfff signed int 
+                  Expression Statement:
+constant expression 0xef3daa5c unsigned int 
+                  Expression Statement:
+constant expression 0x3LL long long signed int 
+                  Expression Statement:
+constant expression 3. double 
+                  Expression Statement:
+constant expression 3100. double 
+                  Expression Statement:
+constant expression 1000000. double 
+                  Expression Statement:
+constant expression 3.1 double 
+                  Expression Statement:
+constant expression 3.141592654L long double 
+                  Expression Statement:
+constant expression 123456.123456 double 
+                  Expression Statement:
+constant expression 3E1 double 
+                  Expression Statement:
+constant expression 3e1f float 
+                  Expression Statement:
+constant expression 3E11F float 
+                  Expression Statement:
+constant expression 3E11 double 
+                  Expression Statement:
+constant expression 3e+11 double 
+                  Expression Statement:
+constant expression 3E-11 double 
+                  Expression Statement:
+constant expression 3.0E1 double 
+                  Expression Statement:
+constant expression 3.0E1L long double 
+                  Expression Statement:
+constant expression 3.0e11 double 
+                  Expression Statement:
+constant expression 3.0E11l long double 
+                  Expression Statement:
+constant expression 3.0e+11l long double 
+                  Expression Statement:
+constant expression 3.0E-11 double 
+                  Expression Statement:
+constant expression 123456.123456E-16 double 
+                  Expression Statement:
+constant expression 0xff.ffp0 double 
+                  Expression Statement:
+constant expression 0x1.ffffffffp128l long double 
+
Index: src/Tests/Expect-a/OccursError.txt
===================================================================
--- src/Tests/Expect-a/OccursError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/OccursError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,54 @@
+f: forall
+      T: type
+        with assertions
+          ?=?: function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      pointer to function
+          with parameters
+            instance of type T (not function type) 
+            pointer to instance of type T (not function type) 
+          returning 
+            void 
+
+    returning 
+      void 
+
+g: forall
+      U: type
+        with assertions
+          ?=?: function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      pointer to instance of type U (not function type) 
+      instance of type U (not function type) 
+    returning 
+      void 
+
+test: function
+      accepting unspecified arguments
+    returning 
+      void 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: f
+            ...to: 
+                Name: g
+
+
Index: src/Tests/Expect-a/Operators.txt
===================================================================
--- src/Tests/Expect-a/Operators.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Operators.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,87 @@
+?*?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+?(): function
+    with parameters
+      number1: signed int 
+      number2: signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Applying untyped: 
+    Name: ?*?
+...to: 
+    Name: number1
+    Name: number2
+
+
+
+?+?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+struct accumulator
+    with members
+      total: signed int 
+
+?(): function
+    with parameters
+      a: instance of struct accumulator 
+      number1: char 
+      number2: char 
+    returning 
+      char 
+
+f: function
+    with parameters
+      void 
+    returning 
+      void 
+    with body 
+      CompoundStmt
+        Declaration of a: char 
+        Declaration of b: char 
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?()
+            ...to: 
+                Name: a
+                Name: b
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: a
+            ...to: 
+                Name: b
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?+?
+            ...to: 
+                Name: a
+                Name: b
+
+        Declaration of ?+?: instance of struct accumulator 
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?+?
+            ...to: 
+                Name: a
+                Name: b
+
+
Index: src/Tests/Expect-a/Quad.txt
===================================================================
--- src/Tests/Expect-a/Quad.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Quad.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,93 @@
+?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+?*?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+square: forall
+      T: type
+        with assertions
+          ?=?: function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?*?: function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      t: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Applying untyped: 
+    Name: ?*?
+...to: 
+    Name: t
+    Name: t
+
+
+
+quad: forall
+      U: type
+        with assertions
+          ?=?: function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+          square: function
+              with parameters
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      u: instance of type U (not function type) 
+    returning 
+      instance of type U (not function type) 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Applying untyped: 
+    Name: square
+...to: 
+    Applying untyped: 
+        Name: square
+    ...to: 
+        Name: u
+
+
+
+f: function
+      accepting unspecified arguments
+    returning 
+      void 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: quad
+            ...to: 
+constant expression 7 signed int 
+
Index: src/Tests/Expect-a/Rank2.txt
===================================================================
--- src/Tests/Expect-a/Rank2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Rank2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,117 @@
+?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+a: function
+      accepting unspecified arguments
+    returning 
+      void 
+    with body 
+      CompoundStmt
+        Declaration of f: forall
+              T: type
+                with assertions
+                  ?=?: function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              void 
+
+        Declaration of g: function
+            with parameters
+              p: forall
+                    U: type
+                      with assertions
+                        ?=?: function
+                            with parameters
+                              pointer to instance of type U (not function type) 
+                              instance of type U (not function type) 
+                            returning 
+                              instance of type U (not function type) 
+
+
+                  function
+                  with parameters
+                    instance of type U (not function type) 
+                  returning 
+                    void 
+
+            returning 
+              void 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Name: f
+
+
+g: function
+      accepting unspecified arguments
+    returning 
+      void 
+    with body 
+      CompoundStmt
+        Declaration of h: function
+            with parameters
+              null: pointer to signed int 
+            returning 
+              void 
+
+        Declaration of id: forall
+              T: type
+                with assertions
+                  ?=?: function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+        Declaration of 0: forall
+              T: incomplete type
+            pointer to instance of type T (not function type) 
+        Declaration of 0: signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: h
+            ...to: 
+                Applying untyped: 
+                    Name: id
+                ...to: 
+                    Applying untyped: 
+                        Name: id
+                    ...to: 
+                        Applying untyped: 
+                            Name: id
+                        ...to: 
+                            Name: 0
+
+
Index: src/Tests/Expect-a/Scope.txt
===================================================================
--- src/Tests/Expect-a/Scope.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Scope.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,157 @@
+x: signed int 
+y: typedef for double 
+t: typedef for float 
+z: instance of type y (not function type) 
+struct __anonymous0
+    with members
+      a: signed int 
+      b: double 
+
+u: type for instance of struct __anonymous0 
+f: function
+    with parameters
+      y: signed int 
+    returning 
+      signed int 
+
+q: instance of type y (not function type) 
+w: function
+    with parameters
+      y: instance of type y (not function type) 
+      v: instance of type u (not function type) 
+    returning 
+      instance of type y (not function type) 
+    with body 
+      CompoundStmt
+        Declaration of x: type
+          with assertions
+            t: function
+                with parameters
+                  instance of type u (not function type) 
+                returning 
+                  instance of type x (not function type) 
+
+
+        Declaration of u: instance of type u (not function type) with initializer 
+          Simple Initializer:             Name: y
+
+        Declaration of z: instance of type x (not function type) with initializer 
+          Simple Initializer:             Applying untyped: 
+                Name: t
+            ...to: 
+                Name: u
+
+
+p: instance of type y (not function type) 
+context has_u
+    with parameters
+      z: type
+
+    with members
+      u: function
+          with parameters
+            instance of type z (not function type) 
+          returning 
+            instance of type z (not function type) 
+
+
+q: forall
+      t: type
+        with assertions
+          ?=?: function
+              with parameters
+                pointer to instance of type t (not function type) 
+                instance of type t (not function type) 
+              returning 
+                instance of type t (not function type) 
+
+          instance of context has_u 
+            with parameters
+              instance of type t (not function type) 
+
+
+    function
+    with parameters
+      the_t: instance of type t (not function type) 
+    returning 
+      instance of type y (not function type) 
+    with body 
+      CompoundStmt
+        Declaration of y: instance of type t (not function type) with initializer 
+          Simple Initializer:             Applying untyped: 
+                Name: u
+            ...to: 
+                Name: the_t
+
+
+f: function
+    with parameters
+      p: instance of type y (not function type) 
+    returning 
+      instance of type t (not function type) 
+    with body 
+      CompoundStmt
+        Declaration of y: signed int 
+        Declaration of x: typedef for char 
+                  CompoundStmt
+            Declaration of y: instance of type x (not function type) 
+            Declaration of z: typedef for instance of type x (not function type) 
+                          CompoundStmt
+                Declaration of x: instance of type z (not function type) 
+                Declaration of y: typedef for instance of type z (not function type) 
+                Declaration of z: instance of type y (not function type) with initializer 
+                  Simple Initializer:                     Name: x
+
+
+            Declaration of x: instance of type z (not function type) with initializer 
+              Simple Initializer:                 Name: y
+
+
+        Declaration of q: instance of type x (not function type) with initializer 
+          Simple Initializer:             Name: y
+
+
+g: function
+    with parameters
+      void 
+    returning 
+      instance of type t (not function type) 
+    with body 
+      CompoundStmt
+        Declaration of x: typedef for char 
+                  Try Statement
+            with block: 
+              CompoundStmt
+                                  Expression Statement:
+                    Applying untyped: 
+                        Name: some_func
+                    ...to: 
+
+            and handlers: 
+              Catch Statement
+              ... catching
+x: instance of type x (not function type) 
+
+        Declaration of z: instance of type x (not function type) 
+
+q: function
+      accepting unspecified arguments
+    returning 
+      instance of type y (not function type) 
+    with parameter names
+      i
+    with parameter declarations
+      i: signed int 
+    with body 
+      CompoundStmt
+                  Switch on condition: Name: i
+
+              Case Name: 0
+
+                  Return Statement, returning: Name: q
+
+              Default 
+                  Return Statement, returning: Name: i
+
+
+
Index: src/Tests/Expect-a/ScopeErrors.txt
===================================================================
--- src/Tests/Expect-a/ScopeErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/ScopeErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,48 @@
+thisIsAnError: signed int 
+thisIsAnError: signed int 
+thisIsNotAnError: signed int 
+thisIsNotAnError: float 
+thisIsAlsoNotAnError: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of thisIsNotAnError: signed int 
+
+thisIsAlsoNotAnError: function
+    with parameters
+      x: double 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+thisIsStillNotAnError: function
+    with parameters
+      double 
+    returning 
+      double 
+
+thisIsStillNotAnError: function
+    with parameters
+      double 
+    returning 
+      double 
+
+butThisIsAnError: function
+    with parameters
+      double 
+    returning 
+      double 
+    with body 
+      CompoundStmt
+
+butThisIsAnError: function
+    with parameters
+      double 
+    returning 
+      double 
+    with body 
+      CompoundStmt
+
Index: src/Tests/Expect-a/ShortCircuit.txt
===================================================================
--- src/Tests/Expect-a/ShortCircuit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/ShortCircuit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,105 @@
+?!=?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+?!=?: function
+    with parameters
+      float 
+      float 
+    returning 
+      signed int 
+
+0: signed int 
+g: function
+    with parameters
+      float 
+    returning 
+      void 
+
+g: function
+    with parameters
+      signed int 
+    returning 
+      void 
+
+f: function
+    with parameters
+      a: signed int 
+    returning 
+      void 
+    with body 
+      CompoundStmt
+        Declaration of b: signed int 
+        Declaration of c: float 
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Conditional expression on: 
+                  Cast of:
+                    Applying untyped: 
+                        Name: ?!=?
+                    ...to: 
+                        Name: a
+                        Name: 0
+
+                  to:
+                    signed int 
+                First alternative:
+                  Name: b
+                Second alternative:
+                  Name: c
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Short-circuited operation (and) on: Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Name: a
+      Name: 0
+
+to:
+  signed int 
+ and Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Name: c
+      Name: 0
+
+to:
+  signed int 
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Short-circuited operation (or) on: Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Name: a
+      Name: 0
+
+to:
+  signed int 
+ and Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Name: b
+      Name: 0
+
+to:
+  signed int 
+
+
+
Index: src/Tests/Expect-a/Statement.txt
===================================================================
--- src/Tests/Expect-a/Statement.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Statement.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,79 @@
+?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+?!=?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+0: signed int 
+f: function
+      accepting unspecified arguments
+    returning 
+      void 
+    with body 
+      CompoundStmt
+        Declaration of a: signed int 
+        Declaration of struct __anonymous0
+            with members
+              b: signed int 
+
+        Declaration of a: instance of struct __anonymous0 
+                  If on condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Name: a
+                    Name: 0
+
+              to:
+                signed int 
+          .... and branches: 
+              CompoundStmt
+                                  While on condition: 
+                      Cast of:
+                        Applying untyped: 
+                            Name: ?!=?
+                        ...to: 
+                            Name: a
+                            Name: 0
+
+                      to:
+                        signed int 
+                  .... with body: 
+                      CompoundStmt
+                        Declaration of b: pointer to signed int 
+                                                  Labels: {}
+                          For Statement
+                            initialization: 
+                              Expression Statement:
+                                Name: b
+
+                            condition: 
+                              Cast of:
+                                Applying untyped: 
+                                    Name: ?!=?
+                                ...to: 
+                                    Name: a
+                                    Name: 0
+
+                              to:
+                                signed int 
+
+                            increment: 
+                              Name: b
+
+                            statement block: 
+                              CompoundStmt
+
+
+
+
+
Index: src/Tests/Expect-a/StructMember.txt
===================================================================
--- src/Tests/Expect-a/StructMember.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/StructMember.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,71 @@
+T: typedef for signed int 
+struct S
+    with members
+      m1: signed int with bitfield width constant expression 3 signed int 
+      m2: signed int with bitfield width constant expression 4 signed int 
+      signed int with bitfield width constant expression 2 signed int 
+      signed int with bitfield width constant expression 3 signed int 
+      signed int with bitfield width constant expression 4 signed int 
+      m3: signed int 
+      m4: signed int 
+      m5: signed int 
+      m6: signed int 
+      m7: pointer to signed int 
+      m8: pointer to signed int 
+      m9: pointer to signed int 
+      m10: pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+      m11: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to signed int 
+
+      T: instance of type T (not function type) 
+      T: instance of type T (not function type) 
+      m12: pointer to signed int 
+      m13: pointer to signed int 
+      m14: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to signed int 
+
+      signed int 
+      signed int 
+      signed int 
+      signed int 
+      pointer to signed int 
+      signed int 
+      signed int 
+      pointer to signed int 
+      pointer to signed int 
+      pointer to signed int 
+      pointer to signed int 
+      pointer to signed int 
+      pointer to signed int 
+      pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+      pointer to pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      instance of type T (not function type) 
+
+s: instance of struct S 
+union U
+    with members
+      m1: array of signed int with dimension of constant expression 5 signed int 
+      m2: array of signed int with dimension of constant expression 5 signed int 
+      m3: pointer to signed int 
+      m4: pointer to signed int 
+
+u: instance of union U 
Index: src/Tests/Expect-a/Subrange.txt
===================================================================
--- src/Tests/Expect-a/Subrange.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Subrange.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,365 @@
+context ordered
+    with parameters
+      T: type
+
+    with members
+      ?<?: function
+          with parameters
+            instance of type T (not function type) 
+            instance of type T (not function type) 
+          returning 
+            signed int 
+
+      ?<=?: function
+          with parameters
+            instance of type T (not function type) 
+            instance of type T (not function type) 
+          returning 
+            signed int 
+
+
+subrange: type for instance of type base_t (not function type) 
+  with parameters
+    base_t: type
+      with assertions
+        instance of context ordered 
+          with parameters
+            instance of type base_t (not function type) 
+
+
+
+day_of_month: instance of type subrange (not function type) 
+  with parameters
+    unsigned int 
+          Name: 1
+
+    constant expression 31 signed int 
+
+lcase: instance of type subrange (not function type) 
+  with parameters
+    char 
+    constant expression 'a' char 
+    constant expression 'z' char 
+
+foo: instance of type subrange (not function type) 
+  with parameters
+    signed int 
+          Name: 0
+
+          Applying untyped: 
+          Name: ?&?
+      ...to: 
+          Applying untyped: 
+              Name: rand
+          ...to: 
+constant expression 0xF signed int 
+
+lbound: forall
+      T: type
+        with assertions
+          ?=?: function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      v: instance of type subrange (not function type) 
+        with parameters
+          instance of type T (not function type) 
+                      Name: low
+
+                      Name: high
+
+
+    returning 
+      instance of type T (not function type) 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Name: low
+
+
+
+hbound: forall
+      T: type
+        with assertions
+          ?=?: function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      v: instance of type subrange (not function type) 
+        with parameters
+          instance of type T (not function type) 
+                      Name: low
+
+                      Name: high
+
+
+    returning 
+      instance of type T (not function type) 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Name: high
+
+
+
+lday: unsigned int with initializer 
+  Simple Initializer:     Applying untyped: 
+        Name: lbound
+    ...to: 
+        Name: day_of_month
+
+?=?: inline forall
+      T: type
+        with assertions
+          ?=?: function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          instance of context ordered 
+            with parameters
+              instance of type T (not function type) 
+
+
+    function
+    with parameters
+      target: pointer to instance of type subrange (not function type) 
+        with parameters
+          instance of type T (not function type) 
+                      Name: low
+
+                      Name: high
+
+
+      source: instance of type T (not function type) 
+    returning 
+      instance of type subrange (not function type) 
+        with parameters
+          instance of type T (not function type) 
+                      Name: low
+
+                      Name: high
+
+
+    with body 
+      CompoundStmt
+                  If on condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Short-circuited operation (and) on: Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Applying untyped: 
+          Name: ?<=?
+      ...to: 
+          Name: low
+          Name: source
+      Name: 0
+
+to:
+  signed int 
+ and Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Applying untyped: 
+          Name: ?<=?
+      ...to: 
+          Name: source
+          Name: high
+      Name: 0
+
+to:
+  signed int 
+
+                    Name: 0
+
+              to:
+                signed int 
+          .... and branches: 
+              Expression Statement:
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Applying untyped: 
+                          Name: *?
+                      ...to: 
+                          Cast of:
+                            Name: target
+
+                          to:
+                            pointer to instance of type T (not function type) 
+                    Name: source
+              Expression Statement:
+                Applying untyped: 
+                    Name: abort
+                ...to: 
+
+                  Return Statement, returning: Name: target
+
+
+
+?=?: inline forall
+      T: type
+        with assertions
+          ?=?: function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          instance of context ordered 
+            with parameters
+              instance of type T (not function type) 
+
+
+    function
+    with parameters
+      target: pointer to instance of type subrange (not function type) 
+        with parameters
+          instance of type T (not function type) 
+                      Name: t_low
+
+                      Name: t_high
+
+
+      source: instance of type subrange (not function type) 
+        with parameters
+          instance of type T (not function type) 
+                      Name: s_low
+
+                      Name: s_high
+
+
+    returning 
+      instance of type subrange (not function type) 
+        with parameters
+          instance of type T (not function type) 
+                      Name: t_low
+
+                      Name: t_high
+
+
+    with body 
+      CompoundStmt
+                  If on condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Short-circuited operation (and) on: Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Short-circuited operation (or) on: Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Applying untyped: 
+          Name: ?<=?
+      ...to: 
+          Name: t_low
+          Name: s_low
+      Name: 0
+
+to:
+  signed int 
+ and Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Applying untyped: 
+          Name: ?<=?
+      ...to: 
+          Name: t_low
+          Name: source
+      Name: 0
+
+to:
+  signed int 
+
+      Name: 0
+
+to:
+  signed int 
+ and Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Short-circuited operation (or) on: Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Applying untyped: 
+          Name: ?<=?
+      ...to: 
+          Name: s_high
+          Name: t_high
+      Name: 0
+
+to:
+  signed int 
+ and Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Applying untyped: 
+          Name: ?<=?
+      ...to: 
+          Name: source
+          Name: t_high
+      Name: 0
+
+to:
+  signed int 
+
+      Name: 0
+
+to:
+  signed int 
+
+                    Name: 0
+
+              to:
+                signed int 
+          .... and branches: 
+              Expression Statement:
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Applying untyped: 
+                          Name: *?
+                      ...to: 
+                          Cast of:
+                            Name: target
+
+                          to:
+                            pointer to instance of type T (not function type) 
+                    Name: source
+              Expression Statement:
+                Applying untyped: 
+                    Name: abort
+                ...to: 
+
+                  Return Statement, returning: Name: target
+
+
+
Index: src/Tests/Expect-a/Switch.txt
===================================================================
--- src/Tests/Expect-a/Switch.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Switch.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,131 @@
+fred: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of i: signed int 
+                  Switch on condition: Name: i
+
+              Case constant expression 3 signed int 
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Name: i
+                        Name: 1
+
+                  Switch on condition: Name: i
+
+              Default 
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Name: i
+                        Name: 1
+
+                  Switch on condition: constant expression 3 signed int 
+              Default 
+              Case constant expression 2 signed int 
+              Case constant expression 3 signed int 
+                  Expression Statement:
+constant expression 3 signed int 
+                  Switch on condition: Name: i
+
+
+                  Switch on condition: Name: i
+
+              Case Applying untyped: 
+    Name: Range
+...to: 
+constant expression 8 signed int constant expression 10 signed int 
+              Default 
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Name: i
+constant expression 3 signed int               Case constant expression 3 signed int 
+              Case Applying untyped: 
+    Name: Range
+...to: 
+constant expression 'A' char constant expression 'Z' char 
+              Case Applying untyped: 
+    Name: Range
+...to: 
+constant expression 5 signed int constant expression 6 signed int 
+              Case Tuple:
+  constant expression 2 signed int 
+  constant expression 4 signed int 
+
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Name: i
+constant expression 3 signed int                   Branch (Break)
+
+                  Choose on condition: Name: i
+
+              Case constant expression 3 signed int 
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Name: i
+                        Name: 1
+
+                  Choose on condition: Name: i
+
+              Default 
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Name: i
+                        Name: 1
+
+                  Choose on condition: Name: i
+
+              Case constant expression 3 signed int 
+              Case Applying untyped: 
+    Name: Range
+...to: 
+constant expression 'A' char constant expression 'Z' char 
+              Case Applying untyped: 
+    Name: Range
+...to: 
+constant expression 5 signed int constant expression 6 signed int 
+              Case Tuple:
+  constant expression 2 signed int 
+  constant expression 4 signed int 
+  constant expression 7 signed int 
+
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Name: i
+constant expression 3 signed int                   Fall-through statement
+              Default 
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Name: i
+constant expression 3 signed int               Case Applying untyped: 
+    Name: Range
+...to: 
+constant expression 8 signed int constant expression 10 signed int 
+                  Fall-through statement
+
+
Index: src/Tests/Expect-a/Tuple.txt
===================================================================
--- src/Tests/Expect-a/Tuple.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Tuple.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,561 @@
+f: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+g: function
+    with parameters
+      signed int 
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+h: static function
+    with parameters
+      a: signed int 
+      b: signed int 
+      c: pointer to signed int 
+      d: open array of char 
+    returning 
+      signed int 
+      pointer to signed int 
+      pointer to signed int 
+      signed int 
+
+struct inner
+    with members
+      f2: signed int 
+      f3: signed int 
+
+struct outer
+    with members
+      f1: signed int 
+      i: instance of struct inner 
+      f4: double 
+
+s: instance of struct outer 
+sp: pointer to instance of struct outer 
+t1: const volatile tuple of types
+    signed int 
+    signed int 
+
+t2: static const tuple of types
+    signed int 
+    const signed int 
+
+t3: static const tuple of types
+    signed int 
+    const signed int 
+
+printf: function
+    with parameters
+      fmt: pointer to char 
+      and a variable number of other arguments
+    returning 
+      rc: signed int 
+
+printf: function
+    with parameters
+      fmt: pointer to char 
+      and a variable number of other arguments
+    returning 
+      signed int 
+
+f1: function
+    with parameters
+      w: signed int 
+    returning 
+      x: short signed int 
+      y: unsigned int 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: y
+
+                                          Name: x
+
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Tuple:
+                                                  Name: x
+
+                                                  Name: y
+
+                    Tuple:
+                                              Name: w
+
+                      constant expression 23 signed int 
+
+
+g1: function
+    returning 
+      r: tuple of types
+          signed int 
+          char 
+          long signed int 
+          signed int 
+
+    with body 
+      CompoundStmt
+        Declaration of x: short signed int 
+        Declaration of p: short signed int 
+        Declaration of y: unsigned int 
+        Declaration of z: tuple of types
+            signed int 
+            signed int 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: x
+
+                                          Name: y
+
+                                          Name: z
+
+                Tuple:
+                                      Name: p
+
+                                      Applying untyped: 
+                        Name: f
+                    ...to: 
+constant expression 17 signed int 
+                  constant expression 3 signed int 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: x
+
+                                          Name: y
+
+                                          Name: z
+
+                Cast of:
+                  Tuple:
+                                          Name: p
+
+                                          Applying untyped: 
+                          Name: f
+                      ...to: 
+constant expression 17 signed int 
+                    constant expression 3 signed int 
+
+                to:
+                  short signed int 
+                  unsigned int 
+                  tuple of types
+                      signed int 
+                      signed int 
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: r
+                Tuple:
+                                      Name: x
+
+                                      Name: y
+
+                                      Name: z
+
+
+
+main: C function
+    with parameters
+      argc: signed int 
+      argv: pointer to pointer to char 
+    returning 
+      rc: signed int 
+    with body 
+      CompoundStmt
+        Declaration of a: signed int 
+        Declaration of b: signed int 
+        Declaration of c: signed int 
+        Declaration of d: signed int 
+        Declaration of t: instance of struct outer with initializer 
+          Compound initializer:  
+            Simple Initializer:               Tuple:
+                                  Name: 1
+
+                constant expression 7.0 double 
+
+              designated by:                 Name: f1
+                Name: f4
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: f
+            ...to: 
+                Tuple:
+                  constant expression 3 signed int 
+                  constant expression 5 signed int 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Tuple:
+                  constant expression 3 signed int 
+                  constant expression 5 signed int 
+constant expression 3 signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: f
+            ...to: 
+                Name: t1
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Name: t1
+constant expression 3 signed int 
+                  Expression Statement:
+            Tuple:
+
+                  Expression Statement:
+            Tuple:
+              constant expression 3 signed int 
+              constant expression 5 signed int 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: a
+
+                                          Name: b
+
+constant expression 3 signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: a
+
+                                          Name: b
+
+                Tuple:
+                  constant expression 4.6 double 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: a
+
+                                          Name: b
+
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Tuple:
+                                                  Name: c
+
+                                                  Name: d
+
+                    Tuple:
+                      constant expression 3 signed int 
+                      constant expression 5 signed int 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: a
+
+                                          Name: b
+
+                                          Tuple:
+                                                  Name: c
+
+
+                Tuple:
+                  constant expression 2 signed int 
+                                      Tuple:
+                                              Name: a
+
+                                              Name: b
+
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: a
+
+                                          Name: b
+
+                Conditional expression on: 
+                  Cast of:
+                    Applying untyped: 
+                        Name: ?!=?
+                    ...to: 
+                        Applying untyped: 
+                            Name: ?>?
+                        ...to: 
+constant expression 3 signed int constant expression 4 signed int                         Name: 0
+
+                  to:
+                    signed int 
+                First alternative:
+                  Tuple:
+                                          Name: b
+
+                    constant expression 6 signed int 
+                Second alternative:
+                  Tuple:
+                    constant expression 7 signed int 
+                    constant expression 8 signed int 
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: t1
+                Tuple:
+                                      Name: a
+
+                                      Name: b
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: t1
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Name: t2
+                    Tuple:
+                                              Name: a
+
+                                              Name: b
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: a
+
+                                          Name: b
+
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Tuple:
+                                                  Name: c
+
+                                                  Name: d
+
+                    Applying untyped: 
+                        Name: ?+=?
+                    ...to: 
+                        Address of:
+                          Name: d
+                        Applying untyped: 
+                            Name: ?+=?
+                        ...to: 
+                            Address of:
+                              Name: c
+                            Name: 1
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: a
+
+                                          Name: b
+
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Tuple:
+                                                  Name: c
+
+                                                  Name: d
+
+                    Name: t1
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: a
+
+                                          Name: b
+
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Name: t1
+                    Tuple:
+                                              Name: c
+
+                                              Name: d
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: a
+
+                                          Name: b
+
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Name: t1
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Name: t2
+                        Tuple:
+                                                      Name: c
+
+                                                      Name: d
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: t1
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Tuple:
+                        constant expression 3 signed int 
+                        constant expression 4 signed int 
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Tuple:
+                            constant expression 3 signed int 
+                            constant expression 4 signed int 
+                        Applying untyped: 
+                            Name: ?=?
+                        ...to: 
+                            Address of:
+                              Name: t1
+                            Tuple:
+                              constant expression 3 signed int 
+                              constant expression 4 signed int 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: s
+                Tuple:
+                  constant expression 11 signed int 
+                  constant expression 12 signed int 
+                  constant expression 13 signed int 
+                  constant expression 3.14159 double 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: s
+                Applying untyped: 
+                    Name: h
+                ...to: 
+constant expression 3 signed int constant expression 3 signed int                     Name: 0
+constant expression "abc" array of char with dimension of constant expression 6 unsigned int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: a
+
+                                          Name: b
+
+                Applying untyped: 
+                    Name: h
+                ...to: 
+constant expression 3 signed int constant expression 3 signed int                     Name: 0
+constant expression "abc" array of char with dimension of constant expression 6 unsigned int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: sp
+                Name: sp
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: printf
+            ...to: 
+constant expression "expecting 3, 17, 23, 4; got %d, %d, %d, %d\n" array of char with dimension of constant expression 47 unsigned int                 Name: s
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: rc
+                Name: 0
+
+
Index: src/Tests/Expect-a/TypeGenerator.txt
===================================================================
--- src/Tests/Expect-a/TypeGenerator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/TypeGenerator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,155 @@
+context addable
+    with parameters
+      T: type
+
+    with members
+      ?+?: function
+          with parameters
+            instance of type T (not function type) 
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+      ?=?: function
+          with parameters
+            pointer to instance of type T (not function type) 
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+
+struct __anonymous0
+    with members
+      data: instance of type T (not function type) 
+      next: pointer to instance of type List1 (not function type) 
+        with parameters
+          instance of type T (not function type) 
+
+
+List1: type for pointer to instance of struct __anonymous0 
+  with parameters
+    T: type
+      with assertions
+        instance of context addable 
+          with parameters
+            instance of type T (not function type) 
+
+
+
+ListOfIntegers: typedef for instance of type List1 (not function type) 
+  with parameters
+    signed int 
+
+li: instance of type ListOfIntegers (not function type) 
+f: function
+    with parameters
+      g: pointer to function
+          with parameters
+            signed int 
+          returning 
+            instance of type List1 (not function type) 
+              with parameters
+                signed int 
+
+
+    returning 
+      signed int 
+
+h: function
+    with parameters
+      p: pointer to instance of type List1 (not function type) 
+        with parameters
+          signed int 
+
+    returning 
+      signed int 
+
+struct S2
+    with parameters
+      T: type
+
+    with members
+      i: instance of type T (not function type) 
+
+v1: instance of struct S3 
+  with parameters
+    signed int 
+
+p: pointer to instance of struct S3 
+  with parameters
+    signed int 
+
+struct S24
+    with parameters
+      T: type
+
+    with members
+      i: instance of type T (not function type) 
+
+v2: instance of struct S24 
+  with parameters
+    signed int 
+
+struct __anonymous1
+    with parameters
+      T: type
+
+    with members
+      i: instance of type T (not function type) 
+
+v2: instance of struct __anonymous1 
+  with parameters
+    signed int 
+
+struct node
+    with parameters
+      T: type
+        with assertions
+          instance of context addable 
+            with parameters
+              instance of type T (not function type) 
+
+
+
+    with members
+      data: instance of type T (not function type) 
+      next: pointer to instance of struct node 
+        with parameters
+          instance of type T (not function type) 
+
+
+List: type for pointer to instance of struct node 
+  with parameters
+    instance of type T (not function type) 
+
+  with parameters
+    T: type
+
+my_list: instance of type List (not function type) 
+  with parameters
+    signed int 
+
+Complex: type
+  with assertions
+    instance of context addable 
+      with parameters
+        instance of type Complex (not function type) 
+
+
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Cast of:
+              Name: my_list
+
+            to:
+              instance of struct node 
+                with parameters
+                  signed int 
+
+
+
Index: src/Tests/Expect-a/Typedef.txt
===================================================================
--- src/Tests/Expect-a/Typedef.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Typedef.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,104 @@
+T: typedef for signed int 
+f: function
+    with parameters
+      void 
+    returning 
+      void 
+    with body 
+      CompoundStmt
+        Declaration of T: function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              signed int 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: T
+            ...to: 
+constant expression 3 signed int 
+
+struct __anonymous0
+    with members
+      T: instance of type T (not function type) 
+
+fred: instance of struct __anonymous0 with initializer 
+  Compound initializer:  
+    Simple Initializer: constant expression 3 signed int 
+a: typedef for pointer to function
+    with parameters
+      signed int 
+      char 
+    returning 
+      signed int 
+
+b: instance of type a (not function type) 
+g: function
+    with parameters
+      void 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of a: double 
+
+c: instance of type a (not function type) 
+x: typedef for type-of expression constant expression 3 signed int 
+y: typedef for type-of expression constant expression 3 signed int 
+p: instance of type x (not function type) 
+q: instance of type y (not function type) 
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of z: typedef for type-of expression constant expression 3 signed int 
+        Declaration of p: typedef for type-of expression constant expression 3 signed int 
+        Declaration of w: instance of type z (not function type) 
+        Declaration of x: instance of type p (not function type) 
+
+arrayOf10Pointers: typedef for array of pointer to signed int with dimension of constant expression 10 signed int 
+array: instance of type arrayOf10Pointers (not function type) 
+constantPointer: typedef for const pointer to signed int 
+funcPtr: typedef for pointer to function
+    with parameters
+      open array of signed int 
+    returning 
+      signed int 
+
+funcProto: typedef for function
+    with parameters
+      open array of signed int 
+    returning 
+      signed int 
+
+tupleType: typedef for tuple of types
+    signed int 
+    signed int 
+
+tupleTypePtr: typedef for pointer to tuple of types
+    signed int 
+    signed int 
+
+a: typedef for pointer to signed int 
+b: typedef for pointer to signed int 
+f: typedef for function
+    with parameters
+      pointer to signed int 
+    returning 
+      signed int 
+
+g: typedef for function
+    with parameters
+      pointer to signed int 
+    returning 
+      signed int 
+
+t: typedef for tuple of types
+    pointer to static array of signed int with dimension of constant expression 10 signed int 
+
+f: typedef for function
+    returning 
+      x: pointer to static array of signed int with dimension of constant expression 10 signed int 
+
Index: src/Tests/Expect-a/TypedefDeclarator.txt
===================================================================
--- src/Tests/Expect-a/TypedefDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/TypedefDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,275 @@
+f0: typedef for signed int 
+f1: typedef for signed int 
+f2: typedef for signed int 
+f3: typedef for signed int 
+f4: typedef for signed int 
+f5: typedef for signed int 
+f6: typedef for signed int 
+f7: typedef for signed int 
+f8: typedef for signed int 
+f9: typedef for signed int 
+f10: typedef for signed int 
+f11: typedef for signed int 
+f12: typedef for signed int 
+f13: typedef for signed int 
+f14: typedef for signed int 
+f15: typedef for signed int 
+f16: typedef for signed int 
+f17: typedef for signed int 
+f18: typedef for signed int 
+f19: typedef for signed int 
+f20: typedef for signed int 
+f21: typedef for signed int 
+f22: typedef for signed int 
+f23: typedef for signed int 
+f24: typedef for signed int 
+f25: typedef for signed int 
+f26: typedef for signed int 
+f27: typedef for signed int 
+f28: typedef for signed int 
+f29: typedef for signed int 
+f30: typedef for signed int 
+f31: typedef for signed int 
+f32: typedef for signed int 
+f33: typedef for signed int 
+f34: typedef for signed int 
+f35: typedef for signed int 
+f36: typedef for signed int 
+f37: typedef for signed int 
+f38: typedef for signed int 
+f39: typedef for signed int 
+f40: typedef for signed int 
+f41: typedef for signed int 
+f42: typedef for signed int 
+f43: typedef for signed int 
+f44: typedef for signed int 
+f45: typedef for signed int 
+f46: typedef for signed int 
+f47: typedef for signed int 
+f48: typedef for signed int 
+f49: typedef for signed int 
+f50: typedef for signed int 
+f51: typedef for signed int 
+f52: typedef for signed int 
+f53: typedef for signed int 
+f54: typedef for signed int 
+f55: typedef for signed int 
+f56: typedef for signed int 
+f57: typedef for signed int 
+f58: typedef for signed int 
+f59: typedef for signed int 
+f60: typedef for signed int 
+f61: typedef for signed int 
+f62: typedef for signed int 
+f63: typedef for signed int 
+f64: typedef for signed int 
+f65: typedef for signed int 
+f66: typedef for signed int 
+f67: typedef for signed int 
+f68: typedef for signed int 
+f69: typedef for signed int 
+f70: typedef for signed int 
+f71: typedef for signed int 
+f72: typedef for signed int 
+f73: typedef for signed int 
+f74: typedef for signed int 
+f75: typedef for signed int 
+f76: typedef for signed int 
+f77: typedef for signed int 
+f78: typedef for signed int 
+f79: typedef for signed int 
+f80: typedef for signed int 
+f81: typedef for signed int 
+f82: typedef for signed int 
+f83: typedef for signed int 
+f84: typedef for signed int 
+f85: typedef for signed int 
+f86: typedef for signed int 
+f87: typedef for signed int 
+f88: typedef for signed int 
+f89: typedef for signed int 
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of f1: signed int 
+        Declaration of f2: signed int 
+        Declaration of f3: pointer to signed int 
+        Declaration of f4: pointer to pointer to signed int 
+        Declaration of f5: pointer to const pointer to signed int 
+        Declaration of f6: const pointer to const pointer to signed int 
+        Declaration of f7: pointer to signed int 
+        Declaration of f8: pointer to pointer to signed int 
+        Declaration of f9: pointer to const pointer to signed int 
+        Declaration of f10: const pointer to const pointer to signed int 
+        Declaration of f11: pointer to signed int 
+        Declaration of f12: pointer to pointer to signed int 
+        Declaration of f13: pointer to const pointer to signed int 
+        Declaration of f14: const pointer to const pointer to signed int 
+        Declaration of f15: open array of signed int 
+        Declaration of f16: array of signed int with dimension of constant expression 10 signed int 
+        Declaration of f17: open array of signed int 
+        Declaration of f18: array of signed int with dimension of constant expression 10 signed int 
+        Declaration of f19: open array of pointer to signed int 
+        Declaration of f20: array of pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f21: open array of pointer to pointer to signed int 
+        Declaration of f22: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f23: open array of pointer to const pointer to signed int 
+        Declaration of f24: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f25: open array of const pointer to const pointer to signed int 
+        Declaration of f26: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f27: open array of pointer to signed int 
+        Declaration of f28: array of pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f29: open array of pointer to pointer to signed int 
+        Declaration of f30: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f31: open array of pointer to const pointer to signed int 
+        Declaration of f32: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f33: open array of const pointer to const pointer to signed int 
+        Declaration of f34: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f35: open array of pointer to signed int 
+        Declaration of f36: array of pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f37: open array of pointer to pointer to signed int 
+        Declaration of f38: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f39: open array of pointer to const pointer to signed int 
+        Declaration of f40: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f41: open array of const pointer to const pointer to signed int 
+        Declaration of f42: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f43: open array of array of signed int with dimension of constant expression 3 signed int 
+        Declaration of f44: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f45: open array of array of signed int with dimension of constant expression 3 signed int 
+        Declaration of f46: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f47: open array of array of signed int with dimension of constant expression 3 signed int 
+        Declaration of f48: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f49: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f50: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f51: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f52: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f53: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f54: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f55: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f56: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f57: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f58: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f59: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f60: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f61: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f62: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f63: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f64: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f65: function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f66: function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f67: function
+            with parameters
+              signed int 
+            returning 
+              pointer to signed int 
+
+        Declaration of f68: function
+            with parameters
+              signed int 
+            returning 
+              pointer to pointer to signed int 
+
+        Declaration of f69: function
+            with parameters
+              signed int 
+            returning 
+              pointer to const pointer to signed int 
+
+        Declaration of f70: function
+            with parameters
+              signed int 
+            returning 
+              const pointer to const pointer to signed int 
+
+        Declaration of f71: function
+            with parameters
+              signed int 
+            returning 
+              pointer to signed int 
+
+        Declaration of f72: function
+            with parameters
+              signed int 
+            returning 
+              pointer to pointer to signed int 
+
+        Declaration of f73: function
+            with parameters
+              signed int 
+            returning 
+              pointer to const pointer to signed int 
+
+        Declaration of f74: function
+            with parameters
+              signed int 
+            returning 
+              const pointer to const pointer to signed int 
+
+        Declaration of f75: pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f76: pointer to pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f77: pointer to const pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f78: const pointer to const pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f79: pointer to function
+            with parameters
+              signed int 
+            returning 
+              pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+
+        Declaration of f80: const pointer to function
+            with parameters
+              signed int 
+            returning 
+              pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+
+        Declaration of f81: const pointer to function
+            with parameters
+              signed int 
+            returning 
+              const pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+
+
Index: src/Tests/Expect-a/TypedefParamDeclarator.txt
===================================================================
--- src/Tests/Expect-a/TypedefParamDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/TypedefParamDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,382 @@
+f0: typedef for signed int 
+f1: typedef for signed int 
+f2: typedef for signed int 
+f3: typedef for signed int 
+f4: typedef for signed int 
+f5: typedef for signed int 
+f6: typedef for signed int 
+f7: typedef for signed int 
+f8: typedef for signed int 
+f9: typedef for signed int 
+f10: typedef for signed int 
+f11: typedef for signed int 
+f12: typedef for signed int 
+f13: typedef for signed int 
+f14: typedef for signed int 
+f15: typedef for signed int 
+f16: typedef for signed int 
+f17: typedef for signed int 
+f18: typedef for signed int 
+f19: typedef for signed int 
+f20: typedef for signed int 
+f21: typedef for signed int 
+f22: typedef for signed int 
+f23: typedef for signed int 
+f24: typedef for signed int 
+f25: typedef for signed int 
+f26: typedef for signed int 
+f27: typedef for signed int 
+f28: typedef for signed int 
+f29: typedef for signed int 
+f30: typedef for signed int 
+f31: typedef for signed int 
+f32: typedef for signed int 
+f33: typedef for signed int 
+f34: typedef for signed int 
+f35: typedef for signed int 
+f36: typedef for signed int 
+f37: typedef for signed int 
+f38: typedef for signed int 
+f39: typedef for signed int 
+f40: typedef for signed int 
+f41: typedef for signed int 
+f42: typedef for signed int 
+f43: typedef for signed int 
+f44: typedef for signed int 
+f45: typedef for signed int 
+f46: typedef for signed int 
+f47: typedef for signed int 
+f48: typedef for signed int 
+f49: typedef for signed int 
+f50: typedef for signed int 
+f51: typedef for signed int 
+f52: typedef for signed int 
+f53: typedef for signed int 
+f54: typedef for signed int 
+f55: typedef for signed int 
+f56: typedef for signed int 
+f57: typedef for signed int 
+f58: typedef for signed int 
+f59: typedef for signed int 
+f60: typedef for signed int 
+f61: typedef for signed int 
+f62: typedef for signed int 
+f63: typedef for signed int 
+f64: typedef for signed int 
+f65: typedef for signed int 
+f66: typedef for signed int 
+f67: typedef for signed int 
+f68: typedef for signed int 
+f69: typedef for signed int 
+f70: typedef for signed int 
+f71: typedef for signed int 
+f72: typedef for signed int 
+f73: typedef for signed int 
+f74: typedef for signed int 
+f75: typedef for signed int 
+f76: typedef for signed int 
+f77: typedef for signed int 
+f78: typedef for signed int 
+f79: typedef for signed int 
+f80: typedef for signed int 
+f81: typedef for signed int 
+f82: typedef for signed int 
+f83: typedef for signed int 
+f84: typedef for signed int 
+f85: typedef for signed int 
+f86: typedef for signed int 
+f87: typedef for signed int 
+f88: typedef for signed int 
+f89: typedef for signed int 
+f90: typedef for signed int 
+f91: typedef for signed int 
+f92: typedef for signed int 
+f93: typedef for signed int 
+f94: typedef for signed int 
+f95: typedef for signed int 
+f96: typedef for signed int 
+f97: typedef for signed int 
+f98: typedef for signed int 
+f99: typedef for signed int 
+f100: typedef for signed int 
+f101: typedef for signed int 
+f102: typedef for signed int 
+f103: typedef for signed int 
+f104: typedef for signed int 
+f105: typedef for signed int 
+f106: typedef for signed int 
+f107: typedef for signed int 
+f108: typedef for signed int 
+f109: typedef for signed int 
+f110: typedef for signed int 
+f111: typedef for signed int 
+f112: typedef for signed int 
+f113: typedef for signed int 
+f114: typedef for signed int 
+f115: typedef for signed int 
+f116: typedef for signed int 
+f117: typedef for signed int 
+f118: typedef for signed int 
+f119: typedef for signed int 
+fred: function
+    with parameters
+      f1: signed int 
+      f3: pointer to signed int 
+      f4: pointer to pointer to signed int 
+      f5: pointer to const pointer to signed int 
+      f6: const pointer to const pointer to signed int 
+      f11: pointer to signed int 
+      f12: pointer to pointer to signed int 
+      f13: pointer to const pointer to signed int 
+      f14: const pointer to const pointer to signed int 
+      f15: open array of signed int 
+      f16: array of signed int with dimension of constant expression 10 signed int 
+      f19: open array of pointer to signed int 
+      f20: array of pointer to signed int with dimension of constant expression 10 signed int 
+      f21: open array of pointer to pointer to signed int 
+      f22: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+      f23: open array of pointer to const pointer to signed int 
+      f24: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+      f25: open array of const pointer to const pointer to signed int 
+      f26: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+      f35: open array of pointer to signed int 
+      f36: array of pointer to signed int with dimension of constant expression 10 signed int 
+      f37: open array of pointer to pointer to signed int 
+      f38: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+      f39: open array of pointer to const pointer to signed int 
+      f40: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+      f41: open array of const pointer to const pointer to signed int 
+      f42: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+      f43: open array of array of signed int with dimension of constant expression 3 signed int 
+      f44: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f49: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+      f50: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f51: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f52: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f53: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f54: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f55: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f56: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f57: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+      f58: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f59: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f60: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f61: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f62: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f63: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f64: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f65: function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f67: function
+          with parameters
+            signed int 
+          returning 
+            pointer to signed int 
+
+      f68: function
+          with parameters
+            signed int 
+          returning 
+            pointer to pointer to signed int 
+
+      f69: function
+          with parameters
+            signed int 
+          returning 
+            pointer to const pointer to signed int 
+
+      f70: function
+          with parameters
+            signed int 
+          returning 
+            const pointer to const pointer to signed int 
+
+      f75: pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f76: pointer to pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f77: pointer to const pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f78: const pointer to const pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f79: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  signed int 
+
+
+      f80: const pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  signed int 
+
+
+      f81: const pointer to function
+          with parameters
+            signed int 
+          returning 
+            const pointer to function
+                  accepting unspecified arguments
+                returning 
+                  signed int 
+
+
+      f82: const variable length array of signed int 
+      f83: const array of signed int with dimension of constant expression 3 signed int 
+      f84: static array of signed int with dimension of constant expression 3 signed int 
+      f85: const static array of signed int with dimension of constant expression 3 signed int 
+      function
+          with parameters
+            const variable length array of instance of type f86 (not function type) 
+          returning 
+            signed int 
+
+      function
+          with parameters
+            const array of instance of type f87 (not function type) with dimension of constant expression 3 signed int 
+          returning 
+            signed int 
+
+      function
+          with parameters
+            static array of instance of type f88 (not function type) with dimension of constant expression 3 signed int 
+          returning 
+            signed int 
+
+      function
+          with parameters
+            const static array of instance of type f89 (not function type) with dimension of constant expression 3 signed int 
+          returning 
+            signed int 
+
+      f90: const variable length array of pointer to signed int 
+      f91: const array of pointer to signed int with dimension of constant expression 3 signed int 
+      f92: static array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f93: const static array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f94: const static array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      function
+          with parameters
+            const variable length array of instance of type f95 (not function type) 
+          returning 
+            pointer to signed int 
+
+      function
+          with parameters
+            const array of instance of type f96 (not function type) with dimension of constant expression 3 signed int 
+          returning 
+            pointer to signed int 
+
+      function
+          with parameters
+            static array of instance of type f97 (not function type) with dimension of constant expression 3 signed int 
+          returning 
+            pointer to pointer to signed int 
+
+      function
+          with parameters
+            const static array of instance of type f98 (not function type) with dimension of constant expression 3 signed int 
+          returning 
+            pointer to const pointer to signed int 
+
+      function
+          with parameters
+            const static array of instance of type f99 (not function type) with dimension of constant expression 3 signed int 
+          returning 
+            const pointer to const pointer to signed int 
+
+      f100: const variable length array of array of signed int with dimension of constant expression 3 signed int 
+      f101: const array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f102: static array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f103: const static array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      function
+          with parameters
+            const variable length array of array of instance of type f104 (not function type) with dimension of constant expression 3 signed int 
+          returning 
+            signed int 
+
+      function
+          with parameters
+            const array of array of instance of type f105 (not function type) with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+          returning 
+            signed int 
+
+      function
+          with parameters
+            static array of array of instance of type f106 (not function type) with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+          returning 
+            signed int 
+
+      function
+          with parameters
+            const static array of array of instance of type f107 (not function type) with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+          returning 
+            signed int 
+
+      f108: const variable length array of array of pointer to signed int with dimension of constant expression 3 signed int 
+      f109: const array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f110: static array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f111: const static array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      f112: const static array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+      function
+          with parameters
+            const variable length array of array of instance of type f113 (not function type) with dimension of constant expression 3 signed int 
+          returning 
+            pointer to signed int 
+
+      function
+          with parameters
+            const array of array of instance of type f114 (not function type) with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+          returning 
+            pointer to signed int 
+
+      function
+          with parameters
+            static array of array of instance of type f115 (not function type) with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+          returning 
+            pointer to pointer to signed int 
+
+      function
+          with parameters
+            const static array of array of instance of type f116 (not function type) with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+          returning 
+            pointer to const pointer to signed int 
+
+      function
+          with parameters
+            const static array of array of instance of type f117 (not function type) with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+          returning 
+            const pointer to const pointer to signed int 
+
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
Index: src/Tests/Expect-a/Typeof.txt
===================================================================
--- src/Tests/Expect-a/Typeof.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/Typeof.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,32 @@
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of v1: pointer to signed int 
+        Declaration of v2: type-of expression           Name: v1
+
+        Declaration of v3: array of type-of expression           Applying untyped: 
+              Name: *?
+          ...to: 
+              Name: v1
+with dimension of constant expression 4 signed int 
+        Declaration of v4: array of pointer to char with dimension of constant expression 4 signed int 
+        Declaration of v5: array of pointer to char with dimension of constant expression 4 signed int 
+        Declaration of v6: pointer to signed int 
+        Declaration of v7: pointer to function
+            with parameters
+              signed int 
+              p: signed int 
+            returning 
+              signed int 
+
+        Declaration of v8: pointer to function
+            with parameters
+              signed int 
+              p: signed int 
+            returning 
+              signed int 
+
+
Index: src/Tests/Expect-a/VariableDeclarator.txt
===================================================================
--- src/Tests/Expect-a/VariableDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/VariableDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,253 @@
+f1: signed int 
+f2: signed int 
+f3: pointer to signed int 
+f4: pointer to pointer to signed int 
+f5: pointer to const pointer to signed int 
+f6: const pointer to const pointer to signed int 
+f7: pointer to signed int 
+f8: pointer to pointer to signed int 
+f9: pointer to const pointer to signed int 
+f10: const pointer to const pointer to signed int 
+f11: pointer to signed int 
+f12: pointer to pointer to signed int 
+f13: pointer to const pointer to signed int 
+f14: const pointer to const pointer to signed int 
+f15: open array of signed int 
+f16: array of signed int with dimension of constant expression 10 signed int 
+f17: open array of signed int 
+f18: array of signed int with dimension of constant expression 10 signed int 
+f19: open array of pointer to signed int 
+f20: array of pointer to signed int with dimension of constant expression 10 signed int 
+f21: open array of pointer to pointer to signed int 
+f22: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+f23: open array of pointer to const pointer to signed int 
+f24: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+f25: open array of const pointer to const pointer to signed int 
+f26: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+f27: open array of pointer to signed int 
+f28: array of pointer to signed int with dimension of constant expression 10 signed int 
+f29: open array of pointer to pointer to signed int 
+f30: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+f31: open array of pointer to const pointer to signed int 
+f32: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+f33: open array of const pointer to const pointer to signed int 
+f34: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+f35: pointer to open array of signed int 
+f36: pointer to array of signed int with dimension of constant expression 10 signed int 
+f37: pointer to pointer to open array of signed int 
+f38: pointer to pointer to array of signed int with dimension of constant expression 10 signed int 
+f39: pointer to const pointer to open array of signed int 
+f40: pointer to const pointer to array of signed int with dimension of constant expression 10 signed int 
+f41: const pointer to const pointer to open array of signed int 
+f42: const pointer to const pointer to array of signed int with dimension of constant expression 10 signed int 
+f43: open array of array of signed int with dimension of constant expression 3 signed int 
+f44: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+f45: open array of array of signed int with dimension of constant expression 3 signed int 
+f46: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+f47: open array of array of signed int with dimension of constant expression 3 signed int 
+f48: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+f49: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+f50: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+f51: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+f52: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+f53: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+f54: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+f55: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+f56: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+f57: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+f58: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+f59: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+f60: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+f61: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+f62: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+f63: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+f64: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+f65: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f66: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f67: function
+    with parameters
+      signed int 
+    returning 
+      pointer to signed int 
+
+f68: function
+    with parameters
+      signed int 
+    returning 
+      pointer to pointer to signed int 
+
+f69: function
+    with parameters
+      signed int 
+    returning 
+      pointer to const pointer to signed int 
+
+f70: function
+    with parameters
+      signed int 
+    returning 
+      const pointer to const pointer to signed int 
+
+f71: function
+    with parameters
+      signed int 
+    returning 
+      pointer to signed int 
+
+f72: function
+    with parameters
+      signed int 
+    returning 
+      pointer to pointer to signed int 
+
+f73: function
+    with parameters
+      signed int 
+    returning 
+      pointer to const pointer to signed int 
+
+f74: function
+    with parameters
+      signed int 
+    returning 
+      const pointer to const pointer to signed int 
+
+f75: pointer to function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f76: pointer to pointer to function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f77: pointer to const pointer to function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f78: const pointer to const pointer to function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f79: pointer to function
+    with parameters
+      signed int 
+    returning 
+      pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+
+f80: const pointer to function
+    with parameters
+      signed int 
+    returning 
+      pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+
+f81: const pointer to function
+    with parameters
+      signed int 
+    returning 
+      const pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+
+cf3: pointer to signed int 
+cf4: pointer to pointer to signed int 
+cf5: pointer to const pointer to signed int 
+cf6: const pointer to const pointer to signed int 
+cf15: open array of signed int 
+cf16: array of signed int with dimension of constant expression 10 signed int 
+cf19: open array of pointer to signed int 
+cf20: array of pointer to signed int with dimension of constant expression 10 signed int 
+cf21: open array of pointer to pointer to signed int 
+cf22: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+cf23: open array of pointer to const pointer to signed int 
+cf24: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+cf25: open array of const pointer to const pointer to signed int 
+cf26: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+cf35: pointer to open array of signed int 
+cf36: pointer to array of signed int with dimension of constant expression 10 signed int 
+cf37: pointer to pointer to open array of signed int 
+cf38: pointer to pointer to array of signed int with dimension of constant expression 10 signed int 
+cf39: pointer to const pointer to open array of signed int 
+cf40: pointer to const pointer to array of signed int with dimension of constant expression 10 signed int 
+cf41: const pointer to const pointer to open array of signed int 
+cf42: const pointer to const pointer to array of signed int with dimension of constant expression 10 signed int 
+cf43: open array of array of signed int with dimension of constant expression 3 signed int 
+cf44: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+cf49: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+cf50: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+cf51: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+cf52: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+cf53: open array of array of const pointer to signed int with dimension of constant expression 3 signed int 
+cf54: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+cf55: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+cf56: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+cf65: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+cf66: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+cf67: function
+    with parameters
+      signed int 
+    returning 
+      pointer to signed int 
+
+cf68: function
+    with parameters
+      signed int 
+    returning 
+      pointer to pointer to signed int 
+
+cf69: function
+    with parameters
+      signed int 
+    returning 
+      const pointer to pointer to signed int 
+
+cf70: function
+    with parameters
+      signed int 
+    returning 
+      const pointer to const pointer to signed int 
+
+v3: pointer to open array of pointer to open array of pointer to function
+    with parameters
+      pointer to open array of pointer to open array of signed int 
+      pointer to open array of pointer to open array of signed int 
+    returning 
+      pointer to open array of pointer to open array of signed int 
+
Index: src/Tests/Expect-a/gcc900407-1.txt
===================================================================
--- src/Tests/Expect-a/gcc900407-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/gcc900407-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,71 @@
+foo: function
+    with parameters
+      a: signed int 
+      b: signed int 
+      p: pointer to signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of c: signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Applying untyped: 
+                      Name: ?[?]
+                  ...to: 
+                      Name: p
+constant expression 2 signed int                 Applying untyped: 
+                    Name: ?+?
+                ...to: 
+                    Name: a
+constant expression 0x1000 signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: c
+                Applying untyped: 
+                    Name: ?+?
+                ...to: 
+                    Name: b
+constant expression 0xffff0000 unsigned int 
+                  If on condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Applying untyped: 
+                        Name: ?==?
+                    ...to: 
+                        Applying untyped: 
+                            Name: ?+?
+                        ...to: 
+                            Name: b
+constant expression 0xffff0000 unsigned int constant expression 2 signed int                     Name: 0
+
+              to:
+                signed int 
+          .... and branches: 
+              Expression Statement:
+                Applying untyped: 
+                    Name: ?++
+                ...to: 
+                    Address of:
+                      Name: c
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Applying untyped: 
+                      Name: ?[?]
+                  ...to: 
+                      Name: p
+constant expression 2 signed int                 Name: c
+
+
Index: src/Tests/Expect-a/gcc900516-1.txt
===================================================================
--- src/Tests/Expect-a/gcc900516-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/gcc900516-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,26 @@
+f: function
+    with parameters
+      c: signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Applying untyped: 
+    Name: !?
+...to: 
+    Conditional expression on: 
+      Cast of:
+        Applying untyped: 
+            Name: ?!=?
+        ...to: 
+            Name: c
+            Name: 0
+
+      to:
+        signed int 
+    First alternative:
+constant expression 2.0 double     Second alternative:
+constant expression 1.0 double 
+
+
+
Index: src/Tests/Expect-a/gcc920301-1.txt
===================================================================
--- src/Tests/Expect-a/gcc920301-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/gcc920301-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,18 @@
+f: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of t: static open array of pointer to void 
+                  Null Statement
+
+
+g: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of p: static array of unsigned int with dimension of constant expression 5 signed int 
+
Index: src/Tests/Expect-a/gcc920409-1.txt
===================================================================
--- src/Tests/Expect-a/gcc920409-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/gcc920409-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,32 @@
+x: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of y: signed int 
+                  Expression Statement:
+            Conditional expression on: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Applying untyped: 
+                        Name: ?>?
+                    ...to: 
+                        Name: y
+constant expression 0.0 double                     Name: 0
+
+              to:
+                signed int 
+            First alternative:
+              Name: y
+            Second alternative:
+              Applying untyped: 
+                  Name: ?-?
+              ...to: 
+                  Name: y
+                  Name: 1
+
+
+
Index: src/Tests/Expect-a/gcc920409-2.txt
===================================================================
--- src/Tests/Expect-a/gcc920409-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/gcc920409-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,90 @@
+x: function
+      accepting unspecified arguments
+    returning 
+      double 
+    with body 
+      CompoundStmt
+        Declaration of x1: signed int 
+        Declaration of x2: signed int 
+        Declaration of v: double 
+                  If on condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Applying untyped: 
+                        Name: ?<?
+                    ...to: 
+                        Cast of:
+                          Applying untyped: 
+                              Name: ?-?
+                          ...to: 
+                              Name: x1
+                              Name: x2
+
+                        to:
+                          long signed int 
+                        Name: 1
+                    Name: 0
+
+              to:
+                signed int 
+          .... and branches: 
+              Return Statement, returning: Applying untyped: 
+    Name: -?
+...to: 
+constant expression 1.0 double 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: v
+                Applying untyped: 
+                    Name: t
+                ...to: 
+                    Name: v
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: v
+                Applying untyped: 
+                    Name: y
+                ...to: 
+                    Name: 1
+                    Conditional expression on: 
+                      Cast of:
+                        Applying untyped: 
+                            Name: ?!=?
+                        ...to: 
+                            Applying untyped: 
+                                Name: ?>?
+                            ...to: 
+                                Name: v
+constant expression 0.0 double                             Name: 0
+
+                      to:
+                        signed int 
+                    First alternative:
+                      Cast of:
+                        Name: v
+
+                      to:
+                        signed int 
+                    Second alternative:
+                      Applying untyped: 
+                          Name: ?-?
+                      ...to: 
+                          Cast of:
+                            Name: v
+
+                          to:
+                            signed int 
+                          Name: 1
+
+
+
Index: src/Tests/Expect-a/gcc920410-2.txt
===================================================================
--- src/Tests/Expect-a/gcc920410-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/gcc920410-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,93 @@
+joe: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of j: signed int 
+                  While on condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Name: 1
+                    Name: 0
+
+              to:
+                signed int 
+          .... with body: 
+              CompoundStmt
+                                  Labels: {}
+                  For Statement
+                    initialization: 
+                      Expression Statement:
+                        Applying untyped: 
+                            Name: ?=?
+                        ...to: 
+                            Address of:
+                              Name: j
+                            Name: 0
+
+                    condition: 
+                      Cast of:
+                        Applying untyped: 
+                            Name: ?!=?
+                        ...to: 
+                            Applying untyped: 
+                                Name: ?<?
+                            ...to: 
+                                Name: j
+constant expression 4 signed int                             Name: 0
+
+                      to:
+                        signed int 
+
+                    increment: 
+                      Applying untyped: 
+                          Name: ?++
+                      ...to: 
+                          Address of:
+                            Name: j
+
+                    statement block: 
+                      Null Statement
+
+
+                                  Labels: {}
+                  For Statement
+                    initialization: 
+                      Expression Statement:
+                        Applying untyped: 
+                            Name: ?=?
+                        ...to: 
+                            Address of:
+                              Name: j
+                            Name: 0
+
+                    condition: 
+                      Cast of:
+                        Applying untyped: 
+                            Name: ?!=?
+                        ...to: 
+                            Applying untyped: 
+                                Name: ?<?
+                            ...to: 
+                                Name: j
+constant expression 4 signed int                             Name: 0
+
+                      to:
+                        signed int 
+
+                    increment: 
+                      Applying untyped: 
+                          Name: ?++
+                      ...to: 
+                          Address of:
+                            Name: j
+
+                    statement block: 
+                      Null Statement
+
+
+
+
Index: src/Tests/Expect-a/gcc920501-1.txt
===================================================================
--- src/Tests/Expect-a/gcc920501-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/gcc920501-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,16 @@
+a: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of b: open array of pointer to pointer to signed int with initializer 
+          Compound initializer:  
+            Simple Initializer:               Applying untyped: 
+                  Name: LabAddress
+              ...to: 
+                  Name: c
+
+                  Null Statement
+
+
Index: src/Tests/Expect-a/gcc920501-11.txt
===================================================================
--- src/Tests/Expect-a/gcc920501-11.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/gcc920501-11.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,2 @@
+cfa-cpp: Parser/ExpressionNode.cc:456: virtual Expression* CompositeExprNode::build() const: Assertion `args.size() == 1' failed.
+Aborted (core dumped)
Index: src/Tests/Expect-a/gcc920501-19.txt
===================================================================
--- src/Tests/Expect-a/gcc920501-19.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-a/gcc920501-19.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,18 @@
+x: long long signed int with initializer 
+  Simple Initializer:     Name: 0
+
+y: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: x
+                Name: 0
+
+
Index: src/Tests/Expect-e/Abstype.txt
===================================================================
--- src/Tests/Expect-e/Abstype.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Abstype.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,6 @@
+Error: No reasonable alternatives for expression Cast of:
+  Variable Expression: _dst: pointer to instance of type U (not function type) 
+
+to:
+  pointer to pointer to signed int 
+
Index: src/Tests/Expect-e/Array.txt
===================================================================
--- src/Tests/Expect-e/Array.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Array.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,96 @@
+a1: open array of signed int 
+a2: variable length array of signed int 
+a4: array of double with dimension of   Cast of:
+constant expression 3.0 double 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+m1: open array of array of signed int with dimension of constant expression 3 signed int 
+m2: variable length array of variable length array of signed int 
+m4: array of array of signed int with dimension of constant expression 3 signed int with dimension of   Cast of:
+constant expression 3 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+fred: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of a1: open array of signed int 
+        Declaration of a2: variable length array of signed int 
+        Declaration of a4: array of signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of T: array of signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+
+mary: function
+    with parameters
+      T: pointer to array of constant expression 3 signed int signed int 
+      p1: const pointer to array of constant expression 3 signed int signed int 
+      p2: pointer to static array of constant expression 3 signed int signed int 
+      p3: const pointer to static array of constant expression 3 signed int signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+tom: function
+      accepting unspecified arguments
+    returning 
+      pointer to array of signed int with dimension of constant expression 3 signed int 
+    with body 
+      CompoundStmt
+
+jane: function
+      accepting unspecified arguments
+    returning 
+      pointer to function
+          with parameters
+            T: pointer to array of constant expression 3 signed int signed int 
+            p1: const pointer to array of constant expression 3 signed int signed int 
+            p2: pointer to static array of constant expression 3 signed int signed int 
+            p3: const pointer to static array of constant expression 3 signed int signed int 
+          returning 
+            signed int 
+
+    with body 
+      CompoundStmt
+
+int __a1__A0i[];
+int __a2__A0i[*];
+double __a4__A0d[((long unsigned int )3.0)];
+int __m1__A0A0i[][3];
+int __m2__A0A0i[*][*];
+int __m4__A0A0i[((long unsigned int )3)][3];
+int __fred__Fi__(){
+    int __a1__A0i[];
+    int __a2__A0i[*];
+    int __a4__A0i[((long unsigned int )3)];
+    int __T__A0i[((long unsigned int )3)];
+}
+int __mary__Fi_PiCPiPiCPi_(int __T__Pi[3], int __p1__CPi[const 3], int __p2__Pi[static 3], int __p3__CPi[static const 3]){
+}
+int (*__tom__FPA0i__())[3]{
+}
+int (*__jane__FPFi_PiCPiPiCPi___())(int __T__Pi[3], int __p1__CPi[const 3], int __p2__Pi[static 3], int __p3__CPi[static const 3]){
+}
Index: src/Tests/Expect-e/AsmName.txt
===================================================================
--- src/Tests/Expect-e/AsmName.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/AsmName.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,16 @@
+x: extern signed int 
+fred: function
+    with parameters
+      x: signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of y: static signed int 
+        Declaration of z: static pointer to signed int 
+
+extern int __x__i;
+int __fred__Fi_i_(int __x__i){
+    static int __y__i;
+    static int *__z__Pi;
+}
Index: src/Tests/Expect-e/Attributes.txt
===================================================================
--- src/Tests/Expect-e/Attributes.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Attributes.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,1 @@
+Error at line 58 reading token "*"
Index: src/Tests/Expect-e/Cast.txt
===================================================================
--- src/Tests/Expect-e/Cast.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Cast.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,85 @@
+f: char 
+f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of f: char 
+        Declaration of f: double 
+                  Expression Statement:
+            Cast of:
+              Variable Expression: f: char 
+
+            to:
+              signed int 
+            with environment:
+              Types:
+              Non-types:
+
+        Declaration of f: short signed int 
+                  Expression Statement:
+            Cast of:
+              Variable Expression: f: short signed int 
+
+            to:
+              signed int 
+            with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+            Cast of:
+              Variable Expression: f: function
+                    accepting unspecified arguments
+                  returning 
+                    nothing 
+
+
+            to:
+              pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    nothing 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+            Cast of:
+              Tuple:
+                                  Variable Expression: f: short signed int 
+
+                                  Variable Expression: f: double 
+
+                                  Variable Expression: f: function
+                        accepting unspecified arguments
+                      returning 
+                        nothing 
+
+
+
+            to:
+              long signed int 
+              long double 
+              pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    nothing 
+
+            with environment:
+              Types:
+              Non-types:
+
+
+char __f__c;
+void __f__F__(){
+    char __f__c;
+    double __f__d;
+    ((int )__f__c);
+    short __f__s;
+    ((int )__f__s);
+    ((void (*)())__f__F__);
+    ((long int ));
+}
Index: src/Tests/Expect-e/CastError.txt
===================================================================
--- src/Tests/Expect-e/CastError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/CastError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,36 @@
+Error: Can't choose between alternatives for expression Cast of:
+  Name: f
+
+to:
+  char 
+Alternatives are:        Cost ( 1, 0, 0 ):         Cast of:
+          Variable Expression: f: signed int 
+
+        to:
+          char 
+(types:
+            char 
+)
+        Environment: 
+
+        Cost ( 1, 0, 0 ):         Cast of:
+          Variable Expression: f: double 
+
+        to:
+          char 
+(types:
+            char 
+)
+        Environment: 
+
+
+Error: No reasonable alternatives for expression Cast of:
+  Name: f
+
+to:
+  pointer to function
+        accepting unspecified arguments
+      returning 
+        signed int 
+
+
Index: src/Tests/Expect-e/CharStringConstants.txt
===================================================================
--- src/Tests/Expect-e/CharStringConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/CharStringConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,381 @@
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+constant expression ' ' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression 'a' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '"' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '_' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '\a' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '\b' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '\e' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '\f' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '\n' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '\r' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '\t' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '\v' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '\'' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '\"' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '\?' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '\\' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '\0' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '\377' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '\xf' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '\xff' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression 'aa' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression 'a\na' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression 'a\0a' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '\xfff' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '_\377_' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '_\xff_' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '\xffff' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression 'a\xff34w' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '\xff' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '\xffff' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression " " array of char with dimension of constant expression 4 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "a" array of char with dimension of constant expression 4 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "'" array of char with dimension of constant expression 4 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression '_' char             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "\a" array of char with dimension of constant expression 5 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "\b" array of char with dimension of constant expression 5 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "\e" array of char with dimension of constant expression 5 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "\f" array of char with dimension of constant expression 5 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "\n" array of char with dimension of constant expression 5 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "\r" array of char with dimension of constant expression 5 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "\t" array of char with dimension of constant expression 5 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "\v" array of char with dimension of constant expression 5 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "\'" array of char with dimension of constant expression 5 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "\"" array of char with dimension of constant expression 5 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "\?" array of char with dimension of constant expression 5 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "\\" array of char with dimension of constant expression 5 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "\0" array of char with dimension of constant expression 5 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "\377" array of char with dimension of constant expression 7 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "\xf" array of char with dimension of constant expression 6 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "\xff" array of char with dimension of constant expression 7 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "" array of char with dimension of constant expression 3 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "aa" array of char with dimension of constant expression 5 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "a\na" array of char with dimension of constant expression 7 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "a\0a" array of char with dimension of constant expression 7 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "_\377_" array of char with dimension of constant expression 9 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "_\xff_" array of char with dimension of constant expression 9 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "\xff" array of char with dimension of constant expression 7 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "\xffff" array of char with dimension of constant expression 9 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "\xfff" array of char with dimension of constant expression 8 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "a\xff34w" array of char with dimension of constant expression 11 unsigned int             with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+constant expression "\xffff" array of char with dimension of constant expression 9 unsigned int             with environment:
+              Types:
+              Non-types:
+
+
+int main(){
+    ' ';
+    'a';
+    '"';
+    '_';
+    '\a';
+    '\b';
+    '\e';
+    '\f';
+    '\n';
+    '\r';
+    '\t';
+    '\v';
+    '\'';
+    '\"';
+    '\?';
+    '\\';
+    '\0';
+    '\377';
+    '\xf';
+    '\xff';
+    '';
+    'aa';
+    'a\na';
+    'a\0a';
+    '\xfff';
+    '_\377_';
+    '_\xff_';
+    '\xffff';
+    'a\xff34w';
+    '\xff';
+    '\xffff';
+    " ";
+    "a";
+    "'";
+    '_';
+    "\a";
+    "\b";
+    "\e";
+    "\f";
+    "\n";
+    "\r";
+    "\t";
+    "\v";
+    "\'";
+    "\"";
+    "\?";
+    "\\";
+    "\0";
+    "\377";
+    "\xf";
+    "\xff";
+    "";
+    "aa";
+    "a\na";
+    "a\0a";
+    "_\377_";
+    "_\xff_";
+    "\xff";
+    "\xffff";
+    "\xfff";
+    "a\xff34w";
+    "\xffff";
+}
Index: src/Tests/Expect-e/CommentMisc.txt
===================================================================
--- src/Tests/Expect-e/CommentMisc.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/CommentMisc.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,26 @@
+i: signed int 
+i: signed int 
+i: signed int 
+i: signed int 
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of x: array of signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+
+int __i__i;
+int __i__i;
+int __i__i;
+int __i__i;
+int main(){
+    int __x__A0i[((long unsigned int )10)];
+}
Index: src/Tests/Expect-e/Constant0-1.txt
===================================================================
--- src/Tests/Expect-e/Constant0-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Constant0-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,112 @@
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous1 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous1 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous2 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous3 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous4 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous4 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous5 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous5 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous6 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous6 
+
Index: src/Tests/Expect-e/Context.txt
===================================================================
--- src/Tests/Expect-e/Context.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Context.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,87 @@
+context has_q
+    with parameters
+      T: type
+
+    with members
+      q: function
+          with parameters
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+
+f: forall
+      z: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type z (not function type) 
+                instance of type z (not function type) 
+              returning 
+                instance of type z (not function type) 
+
+          q: pointer to function
+              with parameters
+                instance of type z (not function type) 
+              returning 
+                instance of type z (not function type) 
+
+
+    function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of context has_r
+            with parameters
+              T: type
+              U: type
+
+            with members
+              r: function
+                  with parameters
+                    instance of type T (not function type) 
+                    pointer to function
+                        with parameters
+                          instance of type T (not function type) 
+                          instance of type U (not function type) 
+                        returning 
+                          instance of type T (not function type) 
+
+                  returning 
+                    instance of type T (not function type) 
+
+
+        Declaration of x: extern type
+        Declaration of ?=?: automatically generated function
+            with parameters
+              _dst: pointer to instance of type x (not function type) 
+              _src: instance of type x (not function type) 
+            returning 
+              instance of type x (not function type) 
+
+        Declaration of y: extern type
+          with assertions
+            instance of context has_r 
+              with parameters
+                instance of type x (not function type) 
+                instance of type y (not function type) 
+
+
+        Declaration of ?=?: automatically generated function
+            with parameters
+              _dst: pointer to instance of type y (not function type) 
+              _src: instance of type y (not function type) 
+            returning 
+              instance of type y (not function type) 
+
+
+;
+void __f__A1_0_0____operator_assign__PFt0_Pt0t0___q__PFt0_t0__F__(void (*_adapterF2tz_2tz_)(void (*)(), void *, void *), void (*_adapterF2tz_P2tz2tz_)(void (*)(), void *, void *, void *), long unsigned int z, void (*___operator_assign__PF2tz_P2tz2tz_)(), void (*__q__PF2tz_2tz_)(), ...){
+    ;
+    extern unsigned long x;
+    void *___operator_assign__F2tx_P2tx2tx_(void *___dst__P2tx, void *___src__2tx);
+    extern unsigned long y;
+    void *___operator_assign__F2ty_P2ty2ty_(void *___dst__P2ty, void *___src__2ty);
+}
Index: src/Tests/Expect-e/DeclarationErrors.txt
===================================================================
--- src/Tests/Expect-e/DeclarationErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/DeclarationErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,14 @@
+Error: invalid combination of storage classes in declaration of x9: static static volatile const short int 
+
+Error: invalid combination of storage classes in declaration of x18: static static const volatile instance of struct __anonymous0
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x19: static static const volatile volatile instance of struct __anonymous1
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x28: static static volatile const instance of type Int
+
Index: src/Tests/Expect-e/DeclarationSpecifier.txt
===================================================================
--- src/Tests/Expect-e/DeclarationSpecifier.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/DeclarationSpecifier.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,14 @@
+Error: invalid combination of storage classes in declaration of x9: static static volatile const short int 
+
+Error: invalid combination of storage classes in declaration of x18: static static const volatile instance of struct __anonymous8
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x19: static static const volatile volatile instance of struct __anonymous9
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x28: static static volatile const instance of type Int
+
Index: src/Tests/Expect-e/Enum.txt
===================================================================
--- src/Tests/Expect-e/Enum.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Enum.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,55 @@
+enum Colors
+    with members
+      Red: const instance of enum Colors 
+      Yellow: const instance of enum Colors 
+      Pink: const instance of enum Colors 
+      Blue: const instance of enum Colors 
+      Purple: const instance of enum Colors 
+      Orange: const instance of enum Colors 
+      Green: const instance of enum Colors 
+
+f: function
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of enum Fruits
+            with members
+              Apple: const instance of enum Fruits 
+              Banana: const instance of enum Fruits 
+              Pear: const instance of enum Fruits 
+              Mango: const instance of enum Fruits 
+
+        Declaration of fruit: instance of enum Fruits with initializer 
+          Simple Initializer:             Cast of:
+              Variable Expression: Mango: const instance of enum Fruits 
+
+            to:
+              instance of enum Fruits 
+            with environment:
+              Types:
+              Non-types:
+
+
+enum Colors
+{
+    __Red__C7eColors,
+    __Yellow__C7eColors,
+    __Pink__C7eColors,
+    __Blue__C7eColors,
+    __Purple__C7eColors,
+    __Orange__C7eColors,
+    __Green__C7eColors,
+}
+;
+void __f__F__(void){
+    enum Fruits
+{
+        __Apple__C7eFruits,
+        __Banana__C7eFruits,
+        __Pear__C7eFruits,
+        __Mango__C7eFruits,
+}
+;
+    enum Fruits __fruit__7eFruits = ((enum Fruits )__Mango__C7eFruits);
+}
Index: src/Tests/Expect-e/Exception.txt
===================================================================
--- src/Tests/Expect-e/Exception.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Exception.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,4 @@
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?/?
+
Index: src/Tests/Expect-e/Expression.txt
===================================================================
--- src/Tests/Expect-e/Expression.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Expression.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,101 @@
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct s 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct s 
+
+Error: No reasonable alternatives for expression Name: !?
+
+Error: No reasonable alternatives for expression Name: ~?
+
+Error: No reasonable alternatives for expression Name: +?
+
+Error: No reasonable alternatives for expression Name: -?
+
+Error: No reasonable alternatives for expression Name: *?
+
+Error: No reasonable alternatives for expression Name: ++?
+
+Error: No reasonable alternatives for expression Name: --?
+
+Error: No reasonable alternatives for expression Name: ?++
+
+Error: No reasonable alternatives for expression Name: ?--
+
+Error: No reasonable alternatives for expression Name: ?+?
+
+Error: No reasonable alternatives for expression Name: ?-?
+
+Error: No reasonable alternatives for expression Name: ?*?
+
+Error: No reasonable alternatives for expression Name: ?/?
+
+Error: No reasonable alternatives for expression Name: ?%?
+
+Error: No reasonable alternatives for expression Name: ?^?
+
+Error: No reasonable alternatives for expression Name: ?&?
+
+Error: No reasonable alternatives for expression Name: ?|?
+
+Error: No reasonable alternatives for expression Name: ?<?
+
+Error: No reasonable alternatives for expression Name: ?>?
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: i
+    Name: i
+
+Error: No reasonable alternatives for expression Name: ?==?
+
+Error: No reasonable alternatives for expression Name: ?!=?
+
+Error: No reasonable alternatives for expression Name: ?<<?
+
+Error: No reasonable alternatives for expression Name: ?>>?
+
+Error: No reasonable alternatives for expression Name: ?<=?
+
+Error: No reasonable alternatives for expression Name: ?>=?
+
+Error: No reasonable alternatives for expression Name: ?!=?
+
+Error: No reasonable alternatives for expression Name: ?!=?
+
+Error: No reasonable alternatives for expression Name: *?
+
+Error: No reasonable alternatives for expression Name: ?+=?
+
+Error: No reasonable alternatives for expression Name: ?-=?
+
+Error: No reasonable alternatives for expression Name: ?*=?
+
+Error: No reasonable alternatives for expression Name: ?/=?
+
+Error: No reasonable alternatives for expression Name: ?%=?
+
+Error: No reasonable alternatives for expression Name: ?&=?
+
+Error: No reasonable alternatives for expression Name: ?|=?
+
+Error: No reasonable alternatives for expression Name: ?^=?
+
+Error: No reasonable alternatives for expression Name: ?<<=?
+
+Error: No reasonable alternatives for expression Name: ?>>=?
+
+Error: No reasonable alternatives for expression Name: ?!=?
+
Index: src/Tests/Expect-e/Forall.txt
===================================================================
--- src/Tests/Expect-e/Forall.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Forall.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,75 @@
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: instance of type P1 (not function type) 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      i: instance of type P1 (not function type) 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        j: instance of type P2 (not function type) 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      j: instance of type P2 (not function type) 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Cast of:
+  Variable Expression: _dst: pointer to instance of type T2 (not function type) 
+
+to:
+  pointer to instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Cast of:
+  Variable Expression: _dst: pointer to instance of type w3 (not function type) 
+
+to:
+  pointer to instance of type T2 (not function type) 
+    with parameters
+      signed int 
+      signed int 
+
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: i
+    Name: 0
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?!=?
+...to: 
+    Applying untyped: 
+        Name: ?<?
+    ...to: 
+        Name: t1
+        Name: t2
+    Name: 0
+
+Error: No reasonable alternatives for expression Name: 1
+
+Error: No reasonable alternatives for expression Name: x
+
+Error: No reasonable alternatives for expression Name: x
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: min
+...to: 
+constant expression 4.0 double constant expression 3.0 double 
Index: src/Tests/Expect-e/Function.txt
===================================================================
--- src/Tests/Expect-e/Function.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Function.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,248 @@
+a: signed int 
+a: float 
+f: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f: function
+    with parameters
+      float 
+    returning 
+      float 
+
+g: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Application of
+              Variable Expression: f: function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+            to arguments
+                              Cast of:
+                  Variable Expression: a: signed int 
+
+                to:
+                  signed int 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+            Cast of:
+              Application of
+                Variable Expression: f: function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+              to arguments
+                                  Variable Expression: a: signed int 
+
+
+            to:
+              signed int 
+            with environment:
+              Types:
+              Non-types:
+
+
+p: tuple of types
+    signed int 
+
+p: tuple of types
+    signed int 
+    double 
+
+p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+
+p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+q: tuple of types
+    char 
+
+q: tuple of types
+    signed int 
+    signed int 
+
+q: tuple of types
+    signed int 
+    signed int 
+    float 
+
+q: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+r: function
+    with parameters
+      signed int 
+      signed int 
+      signed int 
+      signed int 
+    returning 
+      signed int 
+      signed int 
+
+s: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Application of
+              Variable Expression: r: function
+                  with parameters
+                    signed int 
+                    signed int 
+                    signed int 
+                    signed int 
+                  returning 
+                    signed int 
+                    signed int 
+
+            to arguments
+                              Variable Expression: p: tuple of types
+                    signed int 
+                    signed int 
+                    signed int 
+
+
+                              Cast of:
+                  Variable Expression: q: tuple of types
+                      char 
+
+
+                to:
+                  signed int 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+            Application of
+              Variable Expression: r: function
+                  with parameters
+                    signed int 
+                    signed int 
+                    signed int 
+                    signed int 
+                  returning 
+                    signed int 
+                    signed int 
+
+            to arguments
+                              Cast of:
+                  Tuple:
+                                          Variable Expression: q: tuple of types
+                          char 
+
+
+                                          Variable Expression: p: tuple of types
+                          signed int 
+                          signed int 
+                          signed int 
+
+
+
+                to:
+                  signed int 
+                  signed int 
+                  signed int 
+                  signed int 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+            Application of
+              Variable Expression: r: function
+                  with parameters
+                    signed int 
+                    signed int 
+                    signed int 
+                    signed int 
+                  returning 
+                    signed int 
+                    signed int 
+
+            to arguments
+                              Application of
+                  Variable Expression: r: function
+                      with parameters
+                        signed int 
+                        signed int 
+                        signed int 
+                        signed int 
+                      returning 
+                        signed int 
+                        signed int 
+
+                to arguments
+                                      Variable Expression: p: tuple of types
+                        signed int 
+                        signed int 
+                        signed int 
+
+
+                                      Cast of:
+                      Variable Expression: q: tuple of types
+                          char 
+
+
+                    to:
+                      signed int 
+
+
+                              Application of
+                  Variable Expression: r: function
+                      with parameters
+                        signed int 
+                        signed int 
+                        signed int 
+                        signed int 
+                      returning 
+                        signed int 
+                        signed int 
+
+                to arguments
+                                      Variable Expression: q: tuple of types
+                        signed int 
+                        signed int 
+
+
+                                      Variable Expression: q: tuple of types
+                        signed int 
+                        signed int 
+
+
+
+            with environment:
+              Types:
+              Non-types:
+
+
+cfa-cpp: GenPoly/Box.cc:401: void GenPoly::{anonymous}::Pass1::boxParams(ApplicationExpr*, FunctionType*, std::list<Expression*>::iterator&, const TyVarMap&): Assertion `arg != appExpr->get_args().end()' failed.
+Aborted (core dumped)
Index: src/Tests/Expect-e/Functions.txt
===================================================================
--- src/Tests/Expect-e/Functions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Functions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,4 @@
+Error: No reasonable alternatives for expression Name: *?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
Index: src/Tests/Expect-e/GccExtensions.txt
===================================================================
--- src/Tests/Expect-e/GccExtensions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/GccExtensions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,48 @@
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct s2 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct s2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct s3 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct s3 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct s4 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct s4 
+
Index: src/Tests/Expect-e/IdentFuncDeclarator.txt
===================================================================
--- src/Tests/Expect-e/IdentFuncDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/IdentFuncDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,443 @@
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of f1: signed int 
+        Declaration of f2: signed int 
+        Declaration of f3: pointer to signed int 
+        Declaration of f4: pointer to pointer to signed int 
+        Declaration of f5: pointer to const pointer to signed int 
+        Declaration of f6: const pointer to const pointer to signed int 
+        Declaration of f7: pointer to signed int 
+        Declaration of f8: pointer to pointer to signed int 
+        Declaration of f9: pointer to const pointer to signed int 
+        Declaration of f10: const pointer to const pointer to signed int 
+        Declaration of f11: pointer to signed int 
+        Declaration of f12: pointer to pointer to signed int 
+        Declaration of f13: pointer to const pointer to signed int 
+        Declaration of f14: const pointer to const pointer to signed int 
+        Declaration of f15: open array of signed int 
+        Declaration of f16: array of signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f17: open array of signed int 
+        Declaration of f18: array of signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f19: open array of pointer to signed int 
+        Declaration of f20: array of pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f21: open array of pointer to pointer to signed int 
+        Declaration of f22: array of pointer to pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f23: open array of pointer to const pointer to signed int 
+        Declaration of f24: array of pointer to const pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f25: open array of const pointer to const pointer to signed int 
+        Declaration of f26: array of const pointer to const pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f27: open array of pointer to signed int 
+        Declaration of f28: array of pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f29: open array of pointer to pointer to signed int 
+        Declaration of f30: array of pointer to pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f31: open array of pointer to const pointer to signed int 
+        Declaration of f32: array of pointer to const pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f33: open array of const pointer to const pointer to signed int 
+        Declaration of f34: array of const pointer to const pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f35: open array of pointer to signed int 
+        Declaration of f36: array of pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f37: open array of pointer to pointer to signed int 
+        Declaration of f38: array of pointer to pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f39: open array of pointer to const pointer to signed int 
+        Declaration of f40: array of pointer to const pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f41: open array of const pointer to const pointer to signed int 
+        Declaration of f42: array of const pointer to const pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f43: open array of array of signed int with dimension of constant expression 3 signed int 
+        Declaration of f44: array of array of signed int with dimension of constant expression 3 signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f45: open array of array of signed int with dimension of constant expression 3 signed int 
+        Declaration of f46: array of array of signed int with dimension of constant expression 3 signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f47: open array of array of signed int with dimension of constant expression 3 signed int 
+        Declaration of f48: array of array of signed int with dimension of constant expression 3 signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f49: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f50: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f51: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f52: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f53: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f54: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f55: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f56: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f57: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f58: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f59: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f60: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f61: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f62: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f63: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f64: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f65: function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f66: function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f67: function
+            with parameters
+              signed int 
+            returning 
+              pointer to signed int 
+
+        Declaration of f68: function
+            with parameters
+              signed int 
+            returning 
+              pointer to pointer to signed int 
+
+        Declaration of f69: function
+            with parameters
+              signed int 
+            returning 
+              pointer to const pointer to signed int 
+
+        Declaration of f70: function
+            with parameters
+              signed int 
+            returning 
+              const pointer to const pointer to signed int 
+
+        Declaration of f71: function
+            with parameters
+              signed int 
+            returning 
+              pointer to signed int 
+
+        Declaration of f72: function
+            with parameters
+              signed int 
+            returning 
+              pointer to pointer to signed int 
+
+        Declaration of f73: function
+            with parameters
+              signed int 
+            returning 
+              pointer to const pointer to signed int 
+
+        Declaration of f74: function
+            with parameters
+              signed int 
+            returning 
+              const pointer to const pointer to signed int 
+
+        Declaration of f75: pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f76: pointer to pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f77: pointer to const pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f78: const pointer to const pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f79: pointer to function
+            with parameters
+              signed int 
+            returning 
+              pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+
+        Declaration of f80: const pointer to function
+            with parameters
+              signed int 
+            returning 
+              pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+
+        Declaration of f81: const pointer to function
+            with parameters
+              signed int 
+            returning 
+              const pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+
+
+int main(){
+    int __f1__i;
+    int __f2__i;
+    int *__f3__Pi;
+    int **__f4__PPi;
+    int *const *__f5__PCPi;
+    int *const *const __f6__CPCPi;
+    int *__f7__Pi;
+    int **__f8__PPi;
+    int *const *__f9__PCPi;
+    int *const *const __f10__CPCPi;
+    int *__f11__Pi;
+    int **__f12__PPi;
+    int *const *__f13__PCPi;
+    int *const *const __f14__CPCPi;
+    int __f15__A0i[];
+    int __f16__A0i[((long unsigned int )10)];
+    int __f17__A0i[];
+    int __f18__A0i[((long unsigned int )10)];
+    int *__f19__A0Pi[];
+    int *__f20__A0Pi[((long unsigned int )10)];
+    int **__f21__A0PPi[];
+    int **__f22__A0PPi[((long unsigned int )10)];
+    int *const *__f23__A0PCPi[];
+    int *const *__f24__A0PCPi[((long unsigned int )10)];
+    int *const *const __f25__A0CPCPi[];
+    int *const *const __f26__A0CPCPi[((long unsigned int )10)];
+    int *__f27__A0Pi[];
+    int *__f28__A0Pi[((long unsigned int )10)];
+    int **__f29__A0PPi[];
+    int **__f30__A0PPi[((long unsigned int )10)];
+    int *const *__f31__A0PCPi[];
+    int *const *__f32__A0PCPi[((long unsigned int )10)];
+    int *const *const __f33__A0CPCPi[];
+    int *const *const __f34__A0CPCPi[((long unsigned int )10)];
+    int *__f35__A0Pi[];
+    int *__f36__A0Pi[((long unsigned int )10)];
+    int **__f37__A0PPi[];
+    int **__f38__A0PPi[((long unsigned int )10)];
+    int *const *__f39__A0PCPi[];
+    int *const *__f40__A0PCPi[((long unsigned int )10)];
+    int *const *const __f41__A0CPCPi[];
+    int *const *const __f42__A0CPCPi[((long unsigned int )10)];
+    int __f43__A0A0i[][3];
+    int __f44__A0A0i[((long unsigned int )3)][3];
+    int __f45__A0A0i[][3];
+    int __f46__A0A0i[((long unsigned int )3)][3];
+    int __f47__A0A0i[][3];
+    int __f48__A0A0i[((long unsigned int )3)][3];
+    int *__f49__A0A0Pi[][3];
+    int *__f50__A0A0Pi[((long unsigned int )3)][3];
+    int **__f51__A0A0PPi[][3];
+    int **__f52__A0A0PPi[((long unsigned int )3)][3];
+    int *const *__f53__A0A0PCPi[][3];
+    int *const *__f54__A0A0PCPi[((long unsigned int )3)][3];
+    int *const *const __f55__A0A0CPCPi[][3];
+    int *const *const __f56__A0A0CPCPi[((long unsigned int )3)][3];
+    int *__f57__A0A0Pi[][3];
+    int *__f58__A0A0Pi[((long unsigned int )3)][3];
+    int **__f59__A0A0PPi[][3];
+    int **__f60__A0A0PPi[((long unsigned int )3)][3];
+    int *const *__f61__A0A0PCPi[][3];
+    int *const *__f62__A0A0PCPi[((long unsigned int )3)][3];
+    int *const *const __f63__A0A0CPCPi[][3];
+    int *const *const __f64__A0A0CPCPi[((long unsigned int )3)][3];
+    int __f65__Fi_i_(int );
+    int __f66__Fi_i_(int );
+    int *__f67__FPi_i_(int );
+    int **__f68__FPPi_i_(int );
+    int *const *__f69__FPCPi_i_(int );
+    int *const *const __f70__FCPCPi_i_(int );
+    int *__f71__FPi_i_(int );
+    int **__f72__FPPi_i_(int );
+    int *const *__f73__FPCPi_i_(int );
+    int *const *const __f74__FCPCPi_i_(int );
+    int (*__f75__PFi_i_)(int );
+    int (**__f76__PPFi_i_)(int );
+    int (*const *__f77__PCPFi_i_)(int );
+    int (*const *const __f78__CPCPFi_i_)(int );
+    int (*(*__f79__PFPFi___i_)(int ))();
+    int (*(*const __f80__CPFPFi___i_)(int ))();
+    int (*const (*const __f81__CPFCPFi___i_)(int ))();
+}
Index: src/Tests/Expect-e/IdentFuncParamDeclarator.txt
===================================================================
--- src/Tests/Expect-e/IdentFuncParamDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/IdentFuncParamDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,223 @@
+fred: function
+    with parameters
+      f1: signed int 
+      f2: signed int 
+      f3: pointer to signed int 
+      f4: pointer to pointer to signed int 
+      f5: pointer to const pointer to signed int 
+      f6: const pointer to const pointer to signed int 
+      f7: pointer to signed int 
+      f8: pointer to pointer to signed int 
+      f9: pointer to const pointer to signed int 
+      f10: const pointer to const pointer to signed int 
+      f11: pointer to signed int 
+      f12: pointer to pointer to signed int 
+      f13: pointer to const pointer to signed int 
+      f14: const pointer to const pointer to signed int 
+      f15: pointer to signed int 
+      f16: pointer to array of constant expression 10 signed int signed int 
+      f17: pointer to signed int 
+      f18: pointer to array of constant expression 10 signed int signed int 
+      f19: pointer to pointer to signed int 
+      f20: pointer to array of constant expression 10 signed int pointer to signed int 
+      f21: pointer to pointer to pointer to signed int 
+      f22: pointer to array of constant expression 10 signed int pointer to pointer to signed int 
+      f23: pointer to pointer to const pointer to signed int 
+      f24: pointer to array of constant expression 10 signed int pointer to const pointer to signed int 
+      f25: pointer to const pointer to const pointer to signed int 
+      f26: pointer to array of constant expression 10 signed int const pointer to const pointer to signed int 
+      f27: pointer to pointer to signed int 
+      f28: pointer to array of constant expression 10 signed int pointer to signed int 
+      f29: pointer to pointer to pointer to signed int 
+      f30: pointer to array of constant expression 10 signed int pointer to pointer to signed int 
+      f31: pointer to pointer to const pointer to signed int 
+      f32: pointer to array of constant expression 10 signed int pointer to const pointer to signed int 
+      f33: pointer to const pointer to const pointer to signed int 
+      f34: pointer to array of constant expression 10 signed int const pointer to const pointer to signed int 
+      f35: pointer to pointer to signed int 
+      f36: pointer to array of constant expression 10 signed int pointer to signed int 
+      f37: pointer to pointer to pointer to signed int 
+      f38: pointer to array of constant expression 10 signed int pointer to pointer to signed int 
+      f39: pointer to pointer to const pointer to signed int 
+      f40: pointer to array of constant expression 10 signed int pointer to const pointer to signed int 
+      f41: pointer to const pointer to const pointer to signed int 
+      f42: pointer to array of constant expression 10 signed int const pointer to const pointer to signed int 
+      f43: pointer to array of signed int with dimension of constant expression 3 signed int 
+      f44: pointer to array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f45: pointer to array of signed int with dimension of constant expression 3 signed int 
+      f46: pointer to array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f47: pointer to array of signed int with dimension of constant expression 3 signed int 
+      f48: pointer to array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f49: pointer to array of pointer to signed int with dimension of constant expression 3 signed int 
+      f50: pointer to array of constant expression 3 signed int array of pointer to signed int with dimension of constant expression 3 signed int 
+      f51: pointer to array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f52: pointer to array of constant expression 3 signed int array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f53: pointer to array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f54: pointer to array of constant expression 3 signed int array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f55: pointer to array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f56: pointer to array of constant expression 3 signed int array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f57: pointer to array of pointer to signed int with dimension of constant expression 3 signed int 
+      f58: pointer to array of constant expression 3 signed int array of pointer to signed int with dimension of constant expression 3 signed int 
+      f59: pointer to array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f60: pointer to array of constant expression 3 signed int array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f61: pointer to array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f62: pointer to array of constant expression 3 signed int array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f63: pointer to array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f64: pointer to array of constant expression 3 signed int array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f65: pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f66: pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f67: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to signed int 
+
+      f68: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to pointer to signed int 
+
+      f69: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to const pointer to signed int 
+
+      f70: pointer to function
+          with parameters
+            signed int 
+          returning 
+            const pointer to const pointer to signed int 
+
+      f71: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to signed int 
+
+      f72: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to pointer to signed int 
+
+      f73: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to const pointer to signed int 
+
+      f74: pointer to function
+          with parameters
+            signed int 
+          returning 
+            const pointer to const pointer to signed int 
+
+      f75: pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f76: pointer to pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f77: pointer to const pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f78: const pointer to const pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f79: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  signed int 
+
+
+      f80: const pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  signed int 
+
+
+      f81: const pointer to function
+          with parameters
+            signed int 
+          returning 
+            const pointer to function
+                  accepting unspecified arguments
+                returning 
+                  signed int 
+
+
+      f82: const pointer to variable length array of signed int 
+      f83: const pointer to array of constant expression 3 signed int signed int 
+      f84: pointer to static array of constant expression 3 signed int signed int 
+      f85: const pointer to static array of constant expression 3 signed int signed int 
+      f86: const pointer to variable length array of signed int 
+      f87: const pointer to array of constant expression 3 signed int signed int 
+      f88: pointer to static array of constant expression 3 signed int signed int 
+      f89: const pointer to static array of constant expression 3 signed int signed int 
+      f90: const pointer to variable length array of pointer to signed int 
+      f91: const pointer to array of constant expression 3 signed int pointer to signed int 
+      f92: pointer to static array of constant expression 3 signed int pointer to pointer to signed int 
+      f93: const pointer to static array of constant expression 3 signed int pointer to const pointer to signed int 
+      f94: const pointer to static array of constant expression 3 signed int const pointer to const pointer to signed int 
+      f95: const pointer to variable length array of pointer to signed int 
+      f96: const pointer to array of constant expression 3 signed int pointer to signed int 
+      f97: pointer to static array of constant expression 3 signed int pointer to pointer to signed int 
+      f98: const pointer to static array of constant expression 3 signed int pointer to const pointer to signed int 
+      f99: const pointer to static array of constant expression 3 signed int const pointer to const pointer to signed int 
+      f100: const pointer to variable length array of array of signed int with dimension of constant expression 3 signed int 
+      f101: const pointer to array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f102: pointer to static array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f103: const pointer to static array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f104: const pointer to variable length array of array of signed int with dimension of constant expression 3 signed int 
+      f105: const pointer to array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f106: pointer to static array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f107: const pointer to static array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f108: const pointer to variable length array of array of pointer to signed int with dimension of constant expression 3 signed int 
+      f109: const pointer to array of constant expression 3 signed int array of pointer to signed int with dimension of constant expression 3 signed int 
+      f110: pointer to static array of constant expression 3 signed int array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f111: const pointer to static array of constant expression 3 signed int array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f112: const pointer to static array of constant expression 3 signed int array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f113: const pointer to variable length array of array of pointer to signed int with dimension of constant expression 3 signed int 
+      f114: const pointer to array of constant expression 3 signed int array of pointer to signed int with dimension of constant expression 3 signed int 
+      f115: pointer to static array of constant expression 3 signed int array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f116: const pointer to static array of constant expression 3 signed int array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f117: const pointer to static array of constant expression 3 signed int array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+int __fred__Fi_iiPiPPiPCPiCPCPiPiPPiPCPiCPCPiPiPPiPCPiCPCPiPiPiPiPiPPiPPiPPPiPPPiPPCPiPPCPiPCPCPiPCPCPiPPiPPiPPPiPPPiPPCPiPPCPiPCPCPiPCPCPiPPiPPiPPPiPPPiPPCPiPPCPiPCPCPiPCPCPiPA0iPA0iPA0iPA0iPA0iPA0iPA0PiPA0PiPA0PPiPA0PPiPA0PCPiPA0PCPiPA0CPCPiPA0CPCPiPA0PiPA0PiPA0PPiPA0PPiPA0PCPiPA0PCPiPA0CPCPiPA0CPCPiPFi_i_PFi_i_PFPi_i_PFPPi_i_PFPCPi_i_PFCPCPi_i_PFPi_i_PFPPi_i_PFPCPi_i_PFCPCPi_i_PFi_i_PPFi_i_PCPFi_i_CPCPFi_i_PFPFi___i_CPFPFi___i_CPFCPFi___i_CPiCPiPiCPiCPiCPiPiCPiCPPiCPPiPPPiCPPCPiCPCPCPiCPPiCPPiPPPiCPPCPiCPCPCPiCPA0iCPA0iPA0iCPA0iCPA0iCPA0iPA0iCPA0iCPA0PiCPA0PiPA0PPiCPA0PCPiCPA0CPCPiCPA0PiCPA0PiPA0PPiCPA0PCPiCPA0CPCPi_(int __f1__i, int __f2__i, int *__f3__Pi, int **__f4__PPi, int *const *__f5__PCPi, int *const *const __f6__CPCPi, int *__f7__Pi, int **__f8__PPi, int *const *__f9__PCPi, int *const *const __f10__CPCPi, int *__f11__Pi, int **__f12__PPi, int *const *__f13__PCPi, int *const *const __f14__CPCPi, int *__f15__Pi, int __f16__Pi[10], int *__f17__Pi, int __f18__Pi[10], int **__f19__PPi, int *__f20__PPi[10], int ***__f21__PPPi, int **__f22__PPPi[10], int *const **__f23__PPCPi, int *const *__f24__PPCPi[10], int *const *const *__f25__PCPCPi, int *const *const __f26__PCPCPi[10], int **__f27__PPi, int *__f28__PPi[10], int ***__f29__PPPi, int **__f30__PPPi[10], int *const **__f31__PPCPi, int *const *__f32__PPCPi[10], int *const *const *__f33__PCPCPi, int *const *const __f34__PCPCPi[10], int **__f35__PPi, int *__f36__PPi[10], int ***__f37__PPPi, int **__f38__PPPi[10], int *const **__f39__PPCPi, int *const *__f40__PPCPi[10], int *const *const *__f41__PCPCPi, int *const *const __f42__PCPCPi[10], int (*__f43__PA0i)[3], int __f44__PA0i[3][3], int (*__f45__PA0i)[3], int __f46__PA0i[3][3], int (*__f47__PA0i)[3], int __f48__PA0i[3][3], int *(*__f49__PA0Pi)[3], int *__f50__PA0Pi[3][3], int **(*__f51__PA0PPi)[3], int **__f52__PA0PPi[3][3], int *const *(*__f53__PA0PCPi)[3], int *const *__f54__PA0PCPi[3][3], int *const *const (*__f55__PA0CPCPi)[3], int *const *const __f56__PA0CPCPi[3][3], int *(*__f57__PA0Pi)[3], int *__f58__PA0Pi[3][3], int **(*__f59__PA0PPi)[3], int **__f60__PA0PPi[3][3], int *const *(*__f61__PA0PCPi)[3], int *const *__f62__PA0PCPi[3][3], int *const *const (*__f63__PA0CPCPi)[3], int *const *const __f64__PA0CPCPi[3][3], int (*__f65__PFi_i_)(int ), int (*__f66__PFi_i_)(int ), int *(*__f67__PFPi_i_)(int ), int **(*__f68__PFPPi_i_)(int ), int *const *(*__f69__PFPCPi_i_)(int ), int *const *const (*__f70__PFCPCPi_i_)(int ), int *(*__f71__PFPi_i_)(int ), int **(*__f72__PFPPi_i_)(int ), int *const *(*__f73__PFPCPi_i_)(int ), int *const *const (*__f74__PFCPCPi_i_)(int ), int (*__f75__PFi_i_)(int ), int (**__f76__PPFi_i_)(int ), int (*const *__f77__PCPFi_i_)(int ), int (*const *const __f78__CPCPFi_i_)(int ), int (*(*__f79__PFPFi___i_)(int ))(), int (*(*const __f80__CPFPFi___i_)(int ))(), int (*const (*const __f81__CPFCPFi___i_)(int ))(), int __f82__CPi[const *], int __f83__CPi[const 3], int __f84__Pi[static 3], int __f85__CPi[static const 3], int __f86__CPi[const *], int __f87__CPi[const 3], int __f88__Pi[static 3], int __f89__CPi[static const 3], int *__f90__CPPi[const *], int *__f91__CPPi[const 3], int **__f92__PPPi[static 3], int *const *__f93__CPPCPi[static const 3], int *const *const __f94__CPCPCPi[static const 3], int *__f95__CPPi[const *], int *__f96__CPPi[const 3], int **__f97__PPPi[static 3], int *const *__f98__CPPCPi[static const 3], int *const *const __f99__CPCPCPi[static const 3], int __f100__CPA0i[const *][3], int __f101__CPA0i[const 3][3], int __f102__PA0i[static 3][3], int __f103__CPA0i[static const 3][3], int __f104__CPA0i[const *][3], int __f105__CPA0i[const 3][3], int __f106__PA0i[static 3][3], int __f107__CPA0i[static const 3][3], int *__f108__CPA0Pi[const *][3], int *__f109__CPA0Pi[const 3][3], int **__f110__PA0PPi[static 3][3], int *const *__f111__CPA0PCPi[static const 3][3], int *const *const __f112__CPA0CPCPi[static const 3][3], int *__f113__CPA0Pi[const *][3], int *__f114__CPA0Pi[const 3][3], int **__f115__PA0PPi[static 3][3], int *const *__f116__CPA0PCPi[static const 3][3], int *const *const __f117__CPA0CPCPi[static const 3][3]){
+}
Index: src/Tests/Expect-e/InferParam.txt
===================================================================
--- src/Tests/Expect-e/InferParam.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/InferParam.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,358 @@
+?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+?=?: function
+    with parameters
+      pointer to double 
+      double 
+    returning 
+      double 
+
+g: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+      U: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+          f: pointer to function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type U (not function type) 
+
+f: function
+    with parameters
+      signed int 
+    returning 
+      float 
+
+f: function
+    with parameters
+      signed int 
+    returning 
+      double 
+
+i: function
+    with parameters
+      float 
+    returning 
+      nothing 
+
+h: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of a: signed int 
+                  Expression Statement:
+            Application of
+              Variable Expression: i: function
+                  with parameters
+                    float 
+                  returning 
+                    nothing 
+
+            to arguments
+                              Application of
+                  Variable Expression: g: forall
+                        T: type
+                          with assertions
+                            ?=?: pointer to function
+                                with parameters
+                                  pointer to instance of type T (not function type) 
+                                  instance of type T (not function type) 
+                                returning 
+                                  instance of type T (not function type) 
+
+
+                        U: type
+                          with assertions
+                            ?=?: pointer to function
+                                with parameters
+                                  pointer to instance of type U (not function type) 
+                                  instance of type U (not function type) 
+                                returning 
+                                  instance of type U (not function type) 
+
+                            f: pointer to function
+                                with parameters
+                                  instance of type T (not function type) 
+                                returning 
+                                  instance of type U (not function type) 
+
+
+                      function
+                      with parameters
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type U (not function type) 
+
+                to arguments
+                                      Variable Expression: a: signed int 
+
+                with inferred parameters:
+                  ?=?: function
+                    with parameters
+                      pointer to signed int 
+                      signed int 
+                    returning 
+                      signed int 
+
+                  ?=?: function
+                    with parameters
+                      pointer to float 
+                      float 
+                    returning 
+                      float 
+
+                  f: function
+                    with parameters
+                      signed int 
+                    returning 
+                      float 
+
+
+            with environment:
+              Types:
+                _0_T -> signed int 
+                _1_U -> float 
+              Non-types:
+
+
+context has_f_and_j
+    with parameters
+      T: type
+      U: type
+
+    with members
+      f: function
+          with parameters
+            instance of type T (not function type) 
+          returning 
+            instance of type U (not function type) 
+
+      j: function
+          with parameters
+            instance of type T (not function type) 
+            instance of type U (not function type) 
+          returning 
+            instance of type U (not function type) 
+
+
+j: function
+    with parameters
+      signed int 
+      float 
+    returning 
+      float 
+
+k: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+      U: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+          f: pointer to function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+          j: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type U (not function type) 
+
+l: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of b: signed int 
+                  Expression Statement:
+            Application of
+              Variable Expression: i: function
+                  with parameters
+                    float 
+                  returning 
+                    nothing 
+
+            to arguments
+                              Application of
+                  Variable Expression: k: forall
+                        T: type
+                          with assertions
+                            ?=?: pointer to function
+                                with parameters
+                                  pointer to instance of type T (not function type) 
+                                  instance of type T (not function type) 
+                                returning 
+                                  instance of type T (not function type) 
+
+
+                        U: type
+                          with assertions
+                            ?=?: pointer to function
+                                with parameters
+                                  pointer to instance of type U (not function type) 
+                                  instance of type U (not function type) 
+                                returning 
+                                  instance of type U (not function type) 
+
+                            f: pointer to function
+                                with parameters
+                                  instance of type T (not function type) 
+                                returning 
+                                  instance of type U (not function type) 
+
+                            j: pointer to function
+                                with parameters
+                                  instance of type T (not function type) 
+                                  instance of type U (not function type) 
+                                returning 
+                                  instance of type U (not function type) 
+
+
+                      function
+                      with parameters
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type U (not function type) 
+
+                to arguments
+                                      Variable Expression: b: signed int 
+
+                with inferred parameters:
+                  ?=?: function
+                    with parameters
+                      pointer to signed int 
+                      signed int 
+                    returning 
+                      signed int 
+
+                  ?=?: function
+                    with parameters
+                      pointer to float 
+                      float 
+                    returning 
+                      float 
+
+                  f: function
+                    with parameters
+                      signed int 
+                    returning 
+                      float 
+
+                  j: function
+                    with parameters
+                      signed int 
+                      float 
+                    returning 
+                      float 
+
+
+            with environment:
+              Types:
+                _0_T -> signed int 
+                _1_U -> float 
+              Non-types:
+
+
+int ___operator_assign__Fi_Pii_(int *, int );
+float ___operator_assign__Ff_Pff_(float *, float );
+double ___operator_assign__Fd_Pdd_(double *, double );
+void __g__A2_0_0____operator_assign__PFt0_Pt0t0____operator_assign__PFt1_Pt1t1___f__PFt1_t0__Ft1_t0_(void (*_adapterF2tU_2tT_)(void (*)(), void *, void *), void (*_adapterF2tU_P2tU2tU_)(void (*)(), void *, void *, void *), void (*_adapterF2tT_P2tT2tT_)(void (*)(), void *, void *, void *), long unsigned int T, long unsigned int U, void (*___operator_assign__PF2tT_P2tT2tT_)(), void (*___operator_assign__PF2tU_P2tU2tU_)(), void (*__f__PF2tU_2tT_)(), void *, void *);
+float __f__Ff_i_(int );
+double __f__Fd_i_(int );
+void __i__F_f_(float );
+void __h__F__(){
+    int __a__i;
+    float _temp0;
+    void _adapterFi_Pii_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
+        ((*((int *)_ret))=((int (*)(int *, int ))_adaptee)(_p0, (*((int *)_p1))));
+    }
+    void _adapterFf_Pff_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
+        ((*((float *)_ret))=((float (*)(float *, float ))_adaptee)(_p0, (*((float *)_p1))));
+    }
+    void _adapterFf_i_(void (*_adaptee)(), void *_ret, void *_p0){
+        ((*((float *)_ret))=((float (*)(int ))_adaptee)((*((int *)_p0))));
+    }
+    __i__F_f_((__g__A2_0_0____operator_assign__PFt0_Pt0t0____operator_assign__PFt1_Pt1t1___f__PFt1_t0__Ft1_t0_(_adapterFf_i_, _adapterFf_Pff_, _adapterFi_Pii_, sizeof(int ), sizeof(float ), ((void (*)())___operator_assign__Fi_Pii_), ((void (*)())___operator_assign__Ff_Pff_), ((void (*)())__f__Ff_i_), (&_temp0), (&__a__i)) , _temp0));
+}
+;
+float __j__Ff_if_(int , float );
+void __k__A2_0_0____operator_assign__PFt0_Pt0t0____operator_assign__PFt1_Pt1t1___f__PFt1_t0___j__PFt1_t0t1__Ft1_t0_(void (*_adapterF2tU_2tT2tU_)(void (*)(), void *, void *, void *), void (*_adapterF2tU_2tT_)(void (*)(), void *, void *), void (*_adapterF2tU_P2tU2tU_)(void (*)(), void *, void *, void *), void (*_adapterF2tT_P2tT2tT_)(void (*)(), void *, void *, void *), long unsigned int T, long unsigned int U, void (*___operator_assign__PF2tT_P2tT2tT_)(), void (*___operator_assign__PF2tU_P2tU2tU_)(), void (*__f__PF2tU_2tT_)(), void (*__j__PF2tU_2tT2tU_)(), void *, void *);
+void __l__F__(){
+    int __b__i;
+    float _temp1;
+    void _adapterFi_Pii_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
+        ((*((int *)_ret))=((int (*)(int *, int ))_adaptee)(_p0, (*((int *)_p1))));
+    }
+    void _adapterFf_Pff_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
+        ((*((float *)_ret))=((float (*)(float *, float ))_adaptee)(_p0, (*((float *)_p1))));
+    }
+    void _adapterFf_i_(void (*_adaptee)(), void *_ret, void *_p0){
+        ((*((float *)_ret))=((float (*)(int ))_adaptee)((*((int *)_p0))));
+    }
+    void _adapterFf_if_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
+        ((*((float *)_ret))=((float (*)(int , float ))_adaptee)((*((int *)_p0)), (*((float *)_p1))));
+    }
+    __i__F_f_((__k__A2_0_0____operator_assign__PFt0_Pt0t0____operator_assign__PFt1_Pt1t1___f__PFt1_t0___j__PFt1_t0t1__Ft1_t0_(_adapterFf_if_, _adapterFf_i_, _adapterFf_Pff_, _adapterFi_Pii_, sizeof(int ), sizeof(float ), ((void (*)())___operator_assign__Fi_Pii_), ((void (*)())___operator_assign__Ff_Pff_), ((void (*)())__f__Ff_i_), ((void (*)())__j__Ff_if_), (&_temp1), (&__b__i)) , _temp1));
+}
Index: src/Tests/Expect-e/Initialization.txt
===================================================================
--- src/Tests/Expect-e/Initialization.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Initialization.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,398 @@
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        w: tuple of types
+          signed int 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      w: tuple of types
+        signed int 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Cast of:
+  Tuple:
+    constant expression 2 signed int 
+
+to:
+  instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        b: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous1 
+    Member Expression, with field: 
+      b: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous1 
+
+Error: No reasonable alternatives for expression Name: 1
+
+Error: No reasonable alternatives for expression Name: 1
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 2 signed int 
+to:
+  pointer to instance of struct __anonymous1 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        g1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous2 
+    Member Expression, with field: 
+      g1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        g2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous2 
+    Member Expression, with field: 
+      g2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        g3: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous2 
+    Member Expression, with field: 
+      g3: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        f1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous3 
+    Member Expression, with field: 
+      f1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        f2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous3 
+    Member Expression, with field: 
+      f2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        f3: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous3 
+    Member Expression, with field: 
+      f3: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 4 signed int 
+to:
+  instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 3 signed int 
+to:
+  instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 3 signed int 
+to:
+  instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 7 signed int 
+to:
+  instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous4 
+    Member Expression, with field: 
+      y1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous4 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous4 
+    Member Expression, with field: 
+      y2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous4 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y3: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous4 
+    Member Expression, with field: 
+      y3: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous4 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct point 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct point 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        z: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct point 
+    Member Expression, with field: 
+      z: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct point 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        w: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct point 
+    Member Expression, with field: 
+      w: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct point 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        v: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct quintet 
+    Member Expression, with field: 
+      v: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct quintet 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        w: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct quintet 
+    Member Expression, with field: 
+      w: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct quintet 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct quintet 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct quintet 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct quintet 
+    Member Expression, with field: 
+      y: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct quintet 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        z: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct quintet 
+    Member Expression, with field: 
+      z: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct quintet 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 3 signed int 
+to:
+  instance of struct point 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 3 signed int 
+to:
+  instance of struct point 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 4 signed int 
+to:
+  instance of struct point 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 5 signed int 
+to:
+  instance of struct point 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 6 signed int 
+to:
+  instance of struct point 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 17 signed int 
+to:
+  instance of struct point 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 5 signed int 
+to:
+  instance of struct point 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 4 signed int 
+to:
+  instance of struct point 
+
Index: src/Tests/Expect-e/Initialization2.txt
===================================================================
--- src/Tests/Expect-e/Initialization2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Initialization2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,462 @@
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      y: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 3 signed int 
+to:
+  instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 7 signed int 
+to:
+  instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous1 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous1 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous1 
+    Member Expression, with field: 
+      y: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous1 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 3 signed int 
+to:
+  instance of struct __anonymous1 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous2 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous2 
+    Member Expression, with field: 
+      y: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous2 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 3 signed int 
+to:
+  instance of struct __anonymous2 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 4 signed int 
+to:
+  instance of struct __anonymous2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous3 
+    Member Expression, with field: 
+      y1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous3 
+    Member Expression, with field: 
+      y2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous4 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous4 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 3 signed int 
+to:
+  instance of struct __anonymous4 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 4 signed int 
+to:
+  instance of struct __anonymous4 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 5 signed int 
+to:
+  instance of struct __anonymous4 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous5 
+    Member Expression, with field: 
+      y1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous5 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous5 
+    Member Expression, with field: 
+      y2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous5 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous6 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous6 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 9 signed int 
+to:
+  instance of struct __anonymous6 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 8 signed int 
+to:
+  instance of struct __anonymous6 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 7 signed int 
+to:
+  instance of struct __anonymous6 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous7 
+    Member Expression, with field: 
+      y1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous7 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous7 
+    Member Expression, with field: 
+      y2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous7 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous8 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous8 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 7 signed int 
+to:
+  instance of struct __anonymous8 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 9 signed int 
+to:
+  instance of struct __anonymous8 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 8 signed int 
+to:
+  instance of struct __anonymous8 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous9 
+    Member Expression, with field: 
+      y1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous9 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous9 
+    Member Expression, with field: 
+      y2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous9 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous10 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous10 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 3 signed int 
+to:
+  instance of struct __anonymous10 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 4 signed int 
+to:
+  instance of struct __anonymous10 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 5 signed int 
+to:
+  instance of struct __anonymous10 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        a: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct t 
+    Member Expression, with field: 
+      a: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct t 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        b: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct t 
+    Member Expression, with field: 
+      b: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct t 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 4 signed int 
+to:
+  instance of struct t 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 3 signed int 
+to:
+  instance of struct t 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous11 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous11 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous11 
+    Member Expression, with field: 
+      y: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous11 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 5 signed int 
+to:
+  instance of struct __anonymous11 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 6 signed int 
+to:
+  instance of struct __anonymous11 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 4 signed int 
+to:
+  instance of struct __anonymous11 
+
Index: src/Tests/Expect-e/LabelledExit.txt
===================================================================
--- src/Tests/Expect-e/LabelledExit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/LabelledExit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,1 @@
+Error: 'continue' target label must be an enclosing loop: 
Index: src/Tests/Expect-e/Members.txt
===================================================================
--- src/Tests/Expect-e/Members.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Members.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,674 @@
+?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+*?: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      pointer to instance of type T (not function type) 
+    returning 
+      lvalue instance of type T (not function type) 
+
+__builtin_memcpy: function
+      accepting unspecified arguments
+    returning 
+      pointer to char 
+
+a: function
+    with parameters
+      char 
+    returning 
+      nothing 
+
+b: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+c: function
+    with parameters
+      pointer to signed int 
+    returning 
+      nothing 
+
+d: function
+    with parameters
+      pointer to float 
+    returning 
+      nothing 
+
+struct a_struct
+    with members
+      a: signed int 
+      a: char 
+      a: float 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct a_struct 
+      _src: instance of struct a_struct 
+    returning 
+      instance of struct a_struct 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Application of
+              Variable Expression: ?=?: function
+                  with parameters
+                    pointer to signed int 
+                    signed int 
+                  returning 
+                    signed int 
+
+            to arguments
+                              Address of:
+                  Member Expression, with field: 
+                    a: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                              Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct a_struct 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+            Application of
+              Variable Expression: ?=?: function
+                  with parameters
+                    pointer to char 
+                    char 
+                  returning 
+                    char 
+
+            to arguments
+                              Address of:
+                  Member Expression, with field: 
+                    a: char 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                              Member Expression, with field: 
+                  a: char 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct a_struct 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+            Application of
+              Variable Expression: ?=?: function
+                  with parameters
+                    pointer to float 
+                    float 
+                  returning 
+                    float 
+
+            to arguments
+                              Address of:
+                  Member Expression, with field: 
+                    a: float 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                              Member Expression, with field: 
+                  a: float 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct a_struct 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct a_struct 
+
+to:
+  instance of struct a_struct 
+with environment:
+  Types:
+  Non-types:
+
+
+
+union b_struct
+    with members
+      a: pointer to signed int 
+      a: pointer to char 
+      a: pointer to float 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of union b_struct 
+      _src: instance of union b_struct 
+    returning 
+      instance of union b_struct 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Application of
+              Variable Expression: __builtin_memcpy: function
+                    accepting unspecified arguments
+                  returning 
+                    pointer to char 
+
+            to arguments
+                              Variable Expression: _dst: pointer to instance of union b_struct 
+
+                              Address of:
+                  Variable Expression: _src: instance of union b_struct 
+
+                              Sizeof Expression on: instance of union b_struct 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of union b_struct 
+
+to:
+  instance of union b_struct 
+with environment:
+  Types:
+  Non-types:
+
+
+
+f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of the_struct: instance of struct a_struct 
+        Declaration of the_struct: instance of union b_struct 
+                  Expression Statement:
+            Application of
+              Variable Expression: a: function
+                  with parameters
+                    char 
+                  returning 
+                    nothing 
+
+            to arguments
+                              Member Expression, with field: 
+                  a: char 
+                from aggregate: 
+                  Variable Expression: the_struct: instance of struct a_struct 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+            Application of
+              Variable Expression: b: function
+                  with parameters
+                    signed int 
+                  returning 
+                    nothing 
+
+            to arguments
+                              Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Variable Expression: the_struct: instance of struct a_struct 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+            Application of
+              Variable Expression: c: function
+                  with parameters
+                    pointer to signed int 
+                  returning 
+                    nothing 
+
+            to arguments
+                              Member Expression, with field: 
+                  a: pointer to signed int 
+                from aggregate: 
+                  Variable Expression: the_struct: instance of union b_struct 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+            Application of
+              Variable Expression: d: function
+                  with parameters
+                    pointer to float 
+                  returning 
+                    nothing 
+
+            to arguments
+                              Member Expression, with field: 
+                  a: pointer to float 
+                from aggregate: 
+                  Variable Expression: the_struct: instance of union b_struct 
+
+            with environment:
+              Types:
+              Non-types:
+
+
+struct c_struct
+    with members
+      signed int 
+      char 
+      float 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct c_struct 
+      _src: instance of struct c_struct 
+    returning 
+      instance of struct c_struct 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Application of
+              Variable Expression: ?=?: function
+                  with parameters
+                    pointer to signed int 
+                    signed int 
+                  returning 
+                    signed int 
+
+            to arguments
+                              Address of:
+                  Member Expression, with field: 
+                    signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct c_struct 
+
+                              Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct c_struct 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+            Application of
+              Variable Expression: ?=?: function
+                  with parameters
+                    pointer to char 
+                    char 
+                  returning 
+                    char 
+
+            to arguments
+                              Address of:
+                  Member Expression, with field: 
+                    char 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct c_struct 
+
+                              Member Expression, with field: 
+                  char 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct c_struct 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+            Application of
+              Variable Expression: ?=?: function
+                  with parameters
+                    pointer to float 
+                    float 
+                  returning 
+                    float 
+
+            to arguments
+                              Address of:
+                  Member Expression, with field: 
+                    float 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct c_struct 
+
+                              Member Expression, with field: 
+                  float 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct c_struct 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct c_struct 
+
+to:
+  instance of struct c_struct 
+with environment:
+  Types:
+  Non-types:
+
+
+
+union d_struct
+    with members
+      pointer to signed int 
+      pointer to char 
+      pointer to float 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of union d_struct 
+      _src: instance of union d_struct 
+    returning 
+      instance of union d_struct 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Application of
+              Variable Expression: __builtin_memcpy: function
+                    accepting unspecified arguments
+                  returning 
+                    pointer to char 
+
+            to arguments
+                              Variable Expression: _dst: pointer to instance of union d_struct 
+
+                              Address of:
+                  Variable Expression: _src: instance of union d_struct 
+
+                              Sizeof Expression on: instance of union d_struct 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of union d_struct 
+
+to:
+  instance of union d_struct 
+with environment:
+  Types:
+  Non-types:
+
+
+
+g: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of x: short unsigned int 
+        Declaration of x: instance of struct c_struct 
+        Declaration of x: instance of union d_struct 
+                  Expression Statement:
+            Application of
+              Variable Expression: a: function
+                  with parameters
+                    char 
+                  returning 
+                    nothing 
+
+            to arguments
+                              Cast of:
+                  Variable Expression: x: short unsigned int 
+
+                to:
+                  char 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+            Application of
+              Variable Expression: b: function
+                  with parameters
+                    signed int 
+                  returning 
+                    nothing 
+
+            to arguments
+                              Cast of:
+                  Variable Expression: x: short unsigned int 
+
+                to:
+                  signed int 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+            Application of
+              Variable Expression: c: function
+                  with parameters
+                    pointer to signed int 
+                  returning 
+                    nothing 
+
+            to arguments
+                              Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Variable Expression: x: instance of union d_struct 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+            Application of
+              Variable Expression: d: function
+                  with parameters
+                    pointer to float 
+                  returning 
+                    nothing 
+
+            to arguments
+                              Member Expression, with field: 
+                  pointer to float 
+                from aggregate: 
+                  Variable Expression: x: instance of union d_struct 
+
+            with environment:
+              Types:
+              Non-types:
+
+
+struct forward
+q: pointer to instance of struct forward 
+struct forward
+    with members
+      y: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct forward 
+      _src: instance of struct forward 
+    returning 
+      instance of struct forward 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Application of
+              Variable Expression: ?=?: function
+                  with parameters
+                    pointer to signed int 
+                    signed int 
+                  returning 
+                    signed int 
+
+            to arguments
+                              Address of:
+                  Member Expression, with field: 
+                    y: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct forward 
+
+                              Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct forward 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct forward 
+
+to:
+  instance of struct forward 
+with environment:
+  Types:
+  Non-types:
+
+
+
+h: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Member Expression, with field: 
+              y: signed int 
+            from aggregate: 
+              Application of
+                Variable Expression: *?: forall
+                      T: type
+                        with assertions
+                          ?=?: pointer to function
+                              with parameters
+                                pointer to instance of type T (not function type) 
+                                instance of type T (not function type) 
+                              returning 
+                                instance of type T (not function type) 
+
+
+                    function
+                    with parameters
+                      pointer to instance of type T (not function type) 
+                    returning 
+                      lvalue instance of type T (not function type) 
+
+              to arguments
+                                  Variable Expression: q: pointer to instance of struct forward 
+
+              with inferred parameters:
+                ?=?: inline static function
+                  with parameters
+                    _dst: pointer to instance of struct forward 
+                    _src: instance of struct forward 
+                  returning 
+                    instance of struct forward 
+
+            with environment:
+              Types:
+              Non-types:
+
+
+Error: unbound type variable in application Application of
+  Variable Expression: *?: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        pointer to instance of type T (not function type) 
+      returning 
+        pointer to instance of type T (not function type) 
+
+to arguments
+      Variable Expression: q: pointer to instance of struct forward 
+
+with inferred parameters:
+  ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct forward 
+      _src: instance of struct forward 
+    returning 
+      instance of struct forward 
+
+
Index: src/Tests/Expect-e/Misc.txt
===================================================================
--- src/Tests/Expect-e/Misc.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Misc.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,102 @@
+a: signed int 
+b: signed int 
+b: float 
+g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+g: function
+    with parameters
+      unsigned int 
+    returning 
+      nothing 
+
+f: function
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Application of
+              Variable Expression: g: function
+                  with parameters
+                    signed int 
+                  returning 
+                    nothing 
+
+            to arguments
+                              Comma Expression:
+                  Variable Expression: a: signed int 
+
+                  Variable Expression: b: signed int 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+            Application of
+              Variable Expression: g: function
+                  with parameters
+                    signed int 
+                  returning 
+                    nothing 
+
+            to arguments
+                              Comma Expression:
+                  Comma Expression:
+                    Variable Expression: a: signed int 
+
+                    Variable Expression: a: signed int 
+
+                  Variable Expression: b: signed int 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+            Application of
+              Variable Expression: g: function
+                  with parameters
+                    unsigned int 
+                  returning 
+                    nothing 
+
+            to arguments
+                              Sizeof Expression on:                   Variable Expression: a: signed int 
+
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+            Application of
+              Variable Expression: g: function
+                  with parameters
+                    unsigned int 
+                  returning 
+                    nothing 
+
+            to arguments
+                              Sizeof Expression on: signed int 
+
+            with environment:
+              Types:
+              Non-types:
+
+
+int __a__i;
+int __b__i;
+float __b__f;
+void __g__F_i_(int );
+void __g__F_Ui_(unsigned int );
+void __f__F__(void){
+    __g__F_i_((__a__i , __b__i));
+    __g__F_i_(((__a__i , __a__i) , __b__i));
+    __g__F_Ui_(sizeof(__a__i));
+    __g__F_Ui_(sizeof(int ));
+}
Index: src/Tests/Expect-e/MiscError.txt
===================================================================
--- src/Tests/Expect-e/MiscError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/MiscError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,83 @@
+Error: Can't choose between alternatives for expression Cast of:
+  Name: b
+
+to:
+  nothing
+Alternatives are:        Cost ( 0, 0, 1 ):         Cast of:
+          Variable Expression: b: signed int 
+
+        to:
+          nothing
+(types:
+)
+        Environment: 
+
+        Cost ( 0, 0, 1 ):         Cast of:
+          Variable Expression: b: float 
+
+        to:
+          nothing
+(types:
+)
+        Environment: 
+
+
+Error: Can't choose between alternatives for expression Cast of:
+  Name: b
+
+to:
+  nothing
+Alternatives are:        Cost ( 0, 0, 1 ):         Cast of:
+          Variable Expression: b: signed int 
+
+        to:
+          nothing
+(types:
+)
+        Environment: 
+
+        Cost ( 0, 0, 1 ):         Cast of:
+          Variable Expression: b: float 
+
+        to:
+          nothing
+(types:
+)
+        Environment: 
+
+
+Error: Can't choose between alternatives for expression Cast of:
+  Comma Expression:
+    Name: a
+
+    Name: b
+
+to:
+  nothing
+Alternatives are:        Cost ( 0, 0, 1 ):         Cast of:
+          Comma Expression:
+            Variable Expression: a: signed int 
+
+            Variable Expression: b: signed int 
+
+        to:
+          nothing
+(types:
+)
+        Environment: 
+
+        Cost ( 0, 0, 1 ):         Cast of:
+          Comma Expression:
+            Variable Expression: a: signed int 
+
+            Variable Expression: b: float 
+
+        to:
+          nothing
+(types:
+)
+        Environment: 
+
+
+Error: Ambiguous expression in sizeof operand: Name: b
+
Index: src/Tests/Expect-e/NamedParmArg.txt
===================================================================
--- src/Tests/Expect-e/NamedParmArg.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/NamedParmArg.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,37 @@
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: f1
+...to: 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: f1
+...to: 
+constant expression 3 signed int 
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: f1
+...to: 
+constant expression 3 signed int 
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Name: 0
+with designator:  Name: j
+
+Error: No reasonable alternatives for expression Name: 0
+with designator:  Name: j
+
+Error: No reasonable alternatives for expression Name: 0
+with designator:  Name: j
+
+Error: No reasonable alternatives for expression Name: 0
+with designator:  Name: j
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: f2
+...to: 
+with designator:  Tuple:
+          Name: j
+
+          Name: i
+
+
Index: src/Tests/Expect-e/NumericConstants.txt
===================================================================
--- src/Tests/Expect-e/NumericConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/NumericConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,2 @@
+Error: No reasonable alternatives for expression Name: 1
+
Index: src/Tests/Expect-e/OccursError.txt
===================================================================
--- src/Tests/Expect-e/OccursError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/OccursError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,5 @@
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: f
+...to: 
+    Name: g
+
Index: src/Tests/Expect-e/Operators.txt
===================================================================
--- src/Tests/Expect-e/Operators.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Operators.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,243 @@
+?*?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+?(): function
+    with parameters
+      number1: signed int 
+      number2: signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Cast of:
+  Application of
+    Variable Expression: ?*?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: number1: signed int 
+
+          Variable Expression: number2: signed int 
+
+
+to:
+  signed int 
+with environment:
+  Types:
+  Non-types:
+
+
+
+?+?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+struct accumulator
+    with members
+      total: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct accumulator 
+      _src: instance of struct accumulator 
+    returning 
+      instance of struct accumulator 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Application of
+              Variable Expression: ?=?: function
+                  with parameters
+                    pointer to signed int 
+                    signed int 
+                  returning 
+                    signed int 
+
+            to arguments
+                              Address of:
+                  Member Expression, with field: 
+                    total: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct accumulator 
+
+                              Member Expression, with field: 
+                  total: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct accumulator 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct accumulator 
+
+to:
+  instance of struct accumulator 
+with environment:
+  Types:
+  Non-types:
+
+
+
+?(): function
+    with parameters
+      a: instance of struct accumulator 
+      number1: char 
+      number2: char 
+    returning 
+      char 
+
+f: function
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of a: char 
+        Declaration of b: char 
+                  Expression Statement:
+            Application of
+              Variable Expression: ?(): function
+                  with parameters
+                    number1: signed int 
+                    number2: signed int 
+                  returning 
+                    signed int 
+
+            to arguments
+                              Cast of:
+                  Variable Expression: a: char 
+
+                to:
+                  signed int 
+
+                              Cast of:
+                  Variable Expression: b: char 
+
+                to:
+                  signed int 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+            Application of
+              Variable Expression: ?(): function
+                  with parameters
+                    number1: signed int 
+                    number2: signed int 
+                  returning 
+                    signed int 
+
+            to arguments
+                              Cast of:
+                  Variable Expression: a: char 
+
+                to:
+                  signed int 
+
+                              Cast of:
+                  Variable Expression: b: char 
+
+                to:
+                  signed int 
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+            Application of
+              Variable Expression: ?+?: function
+                  with parameters
+                    signed int 
+                    signed int 
+                  returning 
+                    signed int 
+
+            to arguments
+                              Cast of:
+                  Variable Expression: a: char 
+
+                to:
+                  signed int 
+
+                              Cast of:
+                  Variable Expression: b: char 
+
+                to:
+                  signed int 
+
+            with environment:
+              Types:
+              Non-types:
+
+        Declaration of ?+?: instance of struct accumulator 
+                  Expression Statement:
+            Application of
+              Variable Expression: ?(): function
+                  with parameters
+                    a: instance of struct accumulator 
+                    number1: char 
+                    number2: char 
+                  returning 
+                    char 
+
+            to arguments
+                              Variable Expression: ?+?: instance of struct accumulator 
+
+                              Variable Expression: a: char 
+
+                              Variable Expression: b: char 
+
+            with environment:
+              Types:
+              Non-types:
+
+
+int ___operator_multiply__Fi_ii_(int , int );
+int ___operator_call__Fi_ii_(int __number1__i, int __number2__i){
+    return ___operator_multiply__Fi_ii_(__number1__i, __number2__i);
+}
+int ___operator_add__Fi_ii_(int , int );
+int ___operator_assign__Fi_Pii_(int *, int );
+struct accumulator
+{
+    int __total__i;
+};
+static inline struct accumulator ___operator_assign__F12saccumulator_P12saccumulator12saccumulator_(struct accumulator *___dst__P12saccumulator, struct accumulator ___src__12saccumulator){
+    ___operator_assign__Fi_Pii_((&(*___dst__P12saccumulator).__total__i), ___src__12saccumulator.__total__i);
+    return ___src__12saccumulator;
+}
+char ___operator_call__Fc_12saccumulatorcc_(struct accumulator __a__12saccumulator, char __number1__c, char __number2__c);
+void __f__F__(void){
+    char __a__c;
+    char __b__c;
+    ___operator_call__Fi_ii_(((int )__a__c), ((int )__b__c));
+    ___operator_call__Fi_ii_(((int )__a__c), ((int )__b__c));
+    ___operator_add__Fi_ii_(((int )__a__c), ((int )__b__c));
+    struct accumulator ___operator_add__12saccumulator;
+    ___operator_call__Fc_12saccumulatorcc_(___operator_add__12saccumulator, __a__c, __b__c);
+}
Index: src/Tests/Expect-e/Quad.txt
===================================================================
--- src/Tests/Expect-e/Quad.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Quad.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,235 @@
+?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+?*?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+square: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?*?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      t: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Cast of:
+  Application of
+    Variable Expression: ?*?: pointer to function
+        with parameters
+          instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+  to arguments
+          Variable Expression: t: instance of type T (not function type) 
+
+          Variable Expression: t: instance of type T (not function type) 
+
+
+to:
+  instance of type T (not function type) 
+with environment:
+  Types:
+  Non-types:
+
+
+
+quad: forall
+      U: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+          square: pointer to function
+              with parameters
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      u: instance of type U (not function type) 
+    returning 
+      instance of type U (not function type) 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Cast of:
+  Application of
+    Variable Expression: square: pointer to function
+        with parameters
+          instance of type U (not function type) 
+        returning 
+          instance of type U (not function type) 
+
+  to arguments
+          Application of
+        Variable Expression: square: pointer to function
+            with parameters
+              instance of type U (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+      to arguments
+                  Variable Expression: u: instance of type U (not function type) 
+
+
+
+to:
+  instance of type U (not function type) 
+with environment:
+  Types:
+  Non-types:
+
+
+
+f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Application of
+              Variable Expression: quad: forall
+                    U: type
+                      with assertions
+                        ?=?: pointer to function
+                            with parameters
+                              pointer to instance of type U (not function type) 
+                              instance of type U (not function type) 
+                            returning 
+                              instance of type U (not function type) 
+
+                        square: pointer to function
+                            with parameters
+                              instance of type U (not function type) 
+                            returning 
+                              instance of type U (not function type) 
+
+
+                  function
+                  with parameters
+                    u: instance of type U (not function type) 
+                  returning 
+                    instance of type U (not function type) 
+
+            to arguments
+              constant expression 7 signed int 
+            with inferred parameters:
+              ?=?: function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+              ?*?: function
+                with parameters
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+              ?=?: function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+              square: forall
+                  T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type T (not function type) 
+                            instance of type T (not function type) 
+                          returning 
+                            instance of type T (not function type) 
+
+                      ?*?: pointer to function
+                          with parameters
+                            instance of type T (not function type) 
+                            instance of type T (not function type) 
+                          returning 
+                            instance of type T (not function type) 
+
+
+                function
+                with parameters
+                  t: instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+            with environment:
+              Types:
+                _0_U -> signed int 
+                _1_T -> signed int 
+              Non-types:
+
+
+int ___operator_assign__Fi_Pii_(int *, int );
+int ___operator_multiply__Fi_ii_(int , int );
+void __square__A1_0_0____operator_assign__PFt0_Pt0t0____operator_multiply__PFt0_t0t0__Ft0_t0_(void (*_adapterF2tT_2tT2tT_)(void (*)(), void *, void *, void *), void (*_adapterF2tT_P2tT2tT_)(void (*)(), void *, void *, void *), long unsigned int T, void (*___operator_assign__PF2tT_P2tT2tT_)(), void (*___operator_multiply__PF2tT_2tT2tT_)(), void *_retparm, void *__t__2tT){
+    _adapterF2tT_2tT2tT_(___operator_multiply__PF2tT_2tT2tT_, _retparm, __t__2tT, __t__2tT);
+    return ;
+}
+void __quad__A1_0_0____operator_assign__PFt0_Pt0t0___square__PFt0_t0__Ft0_t0_(void (*_adapterF2tU_2tU_)(void (*)(), void *, void *), void (*_adapterF2tU_P2tU2tU_)(void (*)(), void *, void *, void *), long unsigned int U, void (*___operator_assign__PF2tU_P2tU2tU_)(), void (*__square__PF2tU_2tU_)(), void *_retparm, void *__u__2tU){
+    void *_temp0;
+    (_temp0=__builtin_alloca(U));
+    _adapterF2tU_2tU_(__square__PF2tU_2tU_, _retparm, (_adapterF2tU_2tU_(__square__PF2tU_2tU_, _temp0, __u__2tU) , _temp0));
+    return ;
+}
+void __f__F__(){
+    int _thunk0(int _p0){
+        int _temp1;
+        void _adapterFi_Pii_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
+            ((*((int *)_ret))=((int (*)(int *, int ))_adaptee)(_p0, (*((int *)_p1))));
+        }
+        void _adapterFi_ii_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
+            ((*((int *)_ret))=((int (*)(int , int ))_adaptee)((*((int *)_p0)), (*((int *)_p1))));
+        }
+        return (__square__A1_0_0____operator_assign__PFt0_Pt0t0____operator_multiply__PFt0_t0t0__Ft0_t0_(_adapterFi_ii_, _adapterFi_Pii_, sizeof(int ), ((void (*)())___operator_assign__Fi_Pii_), ((void (*)())___operator_multiply__Fi_ii_), (&_temp1), (&_p0)) , _temp1);
+    }
+    int _temp2;
+    int _temp3;
+    (_temp3=7);
+    void _adapterFi_Pii_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
+        ((*((int *)_ret))=((int (*)(int *, int ))_adaptee)(_p0, (*((int *)_p1))));
+    }
+    void _adapterFi_i_(void (*_adaptee)(), void *_ret, void *_p0){
+        ((*((int *)_ret))=((int (*)(int ))_adaptee)((*((int *)_p0))));
+    }
+    (__quad__A1_0_0____operator_assign__PFt0_Pt0t0___square__PFt0_t0__Ft0_t0_(_adapterFi_i_, _adapterFi_Pii_, sizeof(int ), ((void (*)())___operator_assign__Fi_Pii_), ((void (*)())(&_thunk0)), (&_temp2), (&_temp3)) , _temp2);
+}
Index: src/Tests/Expect-e/Rank2.txt
===================================================================
--- src/Tests/Expect-e/Rank2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Rank2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,301 @@
+?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+a: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of f: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              nothing 
+
+        Declaration of g: function
+            with parameters
+              p: pointer to forall
+                    U: type
+                      with assertions
+                        ?=?: pointer to function
+                            with parameters
+                              pointer to instance of type U (not function type) 
+                              instance of type U (not function type) 
+                            returning 
+                              instance of type U (not function type) 
+
+
+                  function
+                  with parameters
+                    instance of type U (not function type) 
+                  returning 
+                    nothing 
+
+            returning 
+              nothing 
+
+                  Expression Statement:
+            Application of
+              Variable Expression: g: function
+                  with parameters
+                    p: pointer to forall
+                          U: type
+                            with assertions
+                              ?=?: pointer to function
+                                  with parameters
+                                    pointer to instance of type U (not function type) 
+                                    instance of type U (not function type) 
+                                  returning 
+                                    instance of type U (not function type) 
+
+
+                        function
+                        with parameters
+                          instance of type U (not function type) 
+                        returning 
+                          nothing 
+
+                  returning 
+                    nothing 
+
+            to arguments
+                              Variable Expression: f: forall
+                      T: type
+                        with assertions
+                          ?=?: pointer to function
+                              with parameters
+                                pointer to instance of type T (not function type) 
+                                instance of type T (not function type) 
+                              returning 
+                                instance of type T (not function type) 
+
+
+                    function
+                    with parameters
+                      instance of type T (not function type) 
+                    returning 
+                      nothing 
+
+
+            with inferred parameters:
+              ?=?: pointer to function
+                with parameters
+                  pointer to instance of type U (not function type) 
+                  instance of type U (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+            with environment:
+              Types:
+                _1_T -> instance of type _0_U (not function type) 
+              Non-types:
+
+
+g: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of h: function
+            with parameters
+              null: pointer to signed int 
+            returning 
+              nothing 
+
+        Declaration of id: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+        Declaration of 0: forall
+              T: incomplete type
+            pointer to instance of type T (not function type) 
+        Declaration of 0: signed int 
+                  Expression Statement:
+            Application of
+              Variable Expression: h: function
+                  with parameters
+                    null: pointer to signed int 
+                  returning 
+                    nothing 
+
+            to arguments
+                              Application of
+                  Variable Expression: id: forall
+                        T: type
+                          with assertions
+                            ?=?: pointer to function
+                                with parameters
+                                  pointer to instance of type T (not function type) 
+                                  instance of type T (not function type) 
+                                returning 
+                                  instance of type T (not function type) 
+
+
+                      function
+                      with parameters
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+                to arguments
+                                      Application of
+                      Variable Expression: id: forall
+                            T: type
+                              with assertions
+                                ?=?: pointer to function
+                                    with parameters
+                                      pointer to instance of type T (not function type) 
+                                      instance of type T (not function type) 
+                                    returning 
+                                      instance of type T (not function type) 
+
+
+                          function
+                          with parameters
+                            instance of type T (not function type) 
+                          returning 
+                            instance of type T (not function type) 
+
+                    to arguments
+                                              Application of
+                          Variable Expression: id: forall
+                                T: type
+                                  with assertions
+                                    ?=?: pointer to function
+                                        with parameters
+                                          pointer to instance of type T (not function type) 
+                                          instance of type T (not function type) 
+                                        returning 
+                                          instance of type T (not function type) 
+
+
+                              function
+                              with parameters
+                                instance of type T (not function type) 
+                              returning 
+                                instance of type T (not function type) 
+
+                        to arguments
+                                                      Variable Expression: 0: forall
+                                  T: incomplete type
+                                pointer to instance of type T (not function type) 
+
+                        with inferred parameters:
+                          ?=?: forall
+                              DT: incomplete type
+                            function
+                            with parameters
+                              pointer to pointer to instance of type DT (not function type) 
+                              pointer to instance of type DT (not function type) 
+                            returning 
+                              pointer to instance of type DT (not function type) 
+
+
+                    with inferred parameters:
+                      ?=?: forall
+                          DT: incomplete type
+                        function
+                        with parameters
+                          pointer to pointer to instance of type DT (not function type) 
+                          pointer to instance of type DT (not function type) 
+                        returning 
+                          pointer to instance of type DT (not function type) 
+
+
+                with inferred parameters:
+                  ?=?: forall
+                      DT: incomplete type
+                    function
+                    with parameters
+                      pointer to pointer to instance of type DT (not function type) 
+                      pointer to instance of type DT (not function type) 
+                    returning 
+                      pointer to instance of type DT (not function type) 
+
+
+            with environment:
+              Types:
+                _0_T -> forall
+                      _3_T: incomplete type
+                    pointer to instance of type _3_T (not function type) 
+                _1_T -> forall
+                      _3_T: incomplete type
+                    pointer to instance of type _3_T (not function type) 
+                _2_T -> forall
+                      _3_T: incomplete type
+                    pointer to instance of type _3_T (not function type) 
+                _3_T -> signed int 
+                _5_DT -> signed int 
+                _7_DT -> signed int 
+                _9_DT -> signed int 
+              Non-types:
+
+
+int ___operator_assign__Fi_Pii_(int *, int );
+void *___operator_assign__A0_1_0__FPd0_PPd0Pd0_(void **, void *);
+void __a__F__(){
+    void __f__A1_0_0____operator_assign__PFt0_Pt0t0__F_t0_(void (*_adapterF2tT_P2tT2tT_)(void (*)(), void *, void *, void *), long unsigned int T, void (*___operator_assign__PF2tT_P2tT2tT_)(), void *);
+    void __g__F_PA1_0_0____operator_assign__PFt0_Pt0t0__F_t0__(void (*__p__PA1_0_0____operator_assign__PFt0_Pt0t0__F_t0_)(void (*_adapterF2tU_P2tU2tU_)(void (*)(), void *, void *, void *), long unsigned int U, void (*___operator_assign__PF2tU_P2tU2tU_)(), void *));
+    __g__F_PA1_0_0____operator_assign__PFt0_Pt0t0__F_t0__(__f__A1_0_0____operator_assign__PFt0_Pt0t0__F_t0_);
+}
+void __g__F__(){
+    void __h__F_Pi_(int *__null__Pi);
+    void __id__A1_0_0____operator_assign__PFt0_Pt0t0__Ft0_t0_(void (*_adapterF2tT_P2tT2tT_)(void (*)(), void *, void *, void *), long unsigned int T, void (*___operator_assign__PF2tT_P2tT2tT_)(), void *, void *);
+    void *___constant_zero__A0_1_0__Pd0;
+    int ___constant_zero__i;
+    void *_thunk0(void **_p0, void *_p1){
+        return ___operator_assign__A0_1_0__FPd0_PPd0Pd0_(_p0, _p1);
+    }
+    void *_thunk1(void **_p0, void *_p1){
+        return ___operator_assign__A0_1_0__FPd0_PPd0Pd0_(_p0, _p1);
+    }
+    void *_thunk2(void **_p0, void *_p1){
+        return ___operator_assign__A0_1_0__FPd0_PPd0Pd0_(_p0, _p1);
+    }
+    void *_temp0;
+    void _adapterFA0_1_0__Pd0_PA0_1_0__Pd1A0_1_0__Pd2_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
+        ((*((_3_T **)_ret))=((void *(*)(void **, void *))_adaptee)(_p0, (*((_3_T **)_p1))));
+    }
+    void *_temp1;
+    void *_temp2;
+    __h__F_Pi_((__id__A1_0_0____operator_assign__PFt0_Pt0t0__Ft0_t0_(_adapterFA0_1_0__Pd0_PA0_1_0__Pd1A0_1_0__Pd2_, sizeof(_3_T *), ((void (*)())(&_thunk2)), (&_temp2), (&(__id__A1_0_0____operator_assign__PFt0_Pt0t0__Ft0_t0_(_adapterFA0_1_0__Pd0_PA0_1_0__Pd1A0_1_0__Pd2_, sizeof(_3_T *), ((void (*)())(&_thunk1)), (&_temp1), (&(__id__A1_0_0____operator_assign__PFt0_Pt0t0__Ft0_t0_(_adapterFA0_1_0__Pd0_PA0_1_0__Pd1A0_1_0__Pd2_, sizeof(_3_T *), ((void (*)())(&_thunk0)), (&_temp0), (&___constant_zero__A0_1_0__Pd0)) , _temp0))) , _temp1))) , _temp2));
+}
Index: src/Tests/Expect-e/Scope.txt
===================================================================
--- src/Tests/Expect-e/Scope.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Scope.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,73 @@
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        a: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      a: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        b: double 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      b: double 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Cast of:
+  Variable Expression: _dst: pointer to instance of type u (not function type) 
+
+to:
+  pointer to instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Cast of:
+  Name: y
+
+to:
+  instance of type u (not function type) 
+
+Error: No reasonable alternatives for expression Name: u
+
+Error: No reasonable alternatives for expression Name: u
+
+Error: No reasonable alternatives for expression Name: u
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: z
+    Name: x
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: x
+    Name: y
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: q
+    Name: y
+
+Error: No reasonable alternatives for expression Name: some_func
+
Index: src/Tests/Expect-e/ScopeErrors.txt
===================================================================
--- src/Tests/Expect-e/ScopeErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/ScopeErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,8 @@
+Error: duplicate function definition for butThisIsAnError: function
+  with parameters
+    double 
+  returning 
+    double 
+  with body 
+    CompoundStmt
+
Index: src/Tests/Expect-e/ShortCircuit.txt
===================================================================
--- src/Tests/Expect-e/ShortCircuit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/ShortCircuit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,188 @@
+?!=?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+?!=?: function
+    with parameters
+      float 
+      float 
+    returning 
+      signed int 
+
+0: signed int 
+g: function
+    with parameters
+      float 
+    returning 
+      nothing 
+
+g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+f: function
+    with parameters
+      a: signed int 
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of b: signed int 
+        Declaration of c: float 
+                  Expression Statement:
+            Application of
+              Variable Expression: g: function
+                  with parameters
+                    float 
+                  returning 
+                    nothing 
+
+            to arguments
+                              Conditional expression on: 
+                  Cast of:
+                    Application of
+                      Variable Expression: ?!=?: function
+                          with parameters
+                            signed int 
+                            signed int 
+                          returning 
+                            signed int 
+
+                    to arguments
+                                              Variable Expression: a: signed int 
+
+                                              Variable Expression: 0: signed int 
+
+
+                  to:
+                    signed int 
+                First alternative:
+                  Variable Expression: b: signed int 
+                Second alternative:
+                  Variable Expression: c: float 
+
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+            Application of
+              Variable Expression: g: function
+                  with parameters
+                    signed int 
+                  returning 
+                    nothing 
+
+            to arguments
+                              Short-circuited operation (and) on: Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+ and Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          float 
+          float 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: c: float 
+
+          Cast of:
+        Variable Expression: 0: signed int 
+
+      to:
+        float 
+
+
+to:
+  signed int 
+
+
+            with environment:
+              Types:
+              Non-types:
+
+                  Expression Statement:
+            Application of
+              Variable Expression: g: function
+                  with parameters
+                    signed int 
+                  returning 
+                    nothing 
+
+            to arguments
+                              Short-circuited operation (or) on: Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+ and Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: b: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+
+
+            with environment:
+              Types:
+              Non-types:
+
+
+int ___operator_notequal__Fi_ii_(int , int );
+int ___operator_notequal__Fi_ff_(float , float );
+int ___constant_zero__i;
+void __g__F_f_(float );
+void __g__F_i_(int );
+void __f__F_i_(int __a__i){
+    int __b__i;
+    float __c__f;
+    __g__F_f_((((int )___operator_notequal__Fi_ii_(__a__i, ___constant_zero__i)) ? __b__i : __c__f));
+    __g__F_i_((((int )___operator_notequal__Fi_ii_(__a__i, ___constant_zero__i)) && ((int )___operator_notequal__Fi_ff_(__c__f, ((float )___constant_zero__i)))));
+    __g__F_i_((((int )___operator_notequal__Fi_ii_(__a__i, ___constant_zero__i)) || ((int )___operator_notequal__Fi_ii_(__b__i, ___constant_zero__i))));
+}
Index: src/Tests/Expect-e/Statement.txt
===================================================================
--- src/Tests/Expect-e/Statement.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Statement.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,190 @@
+?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+?!=?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+0: signed int 
+f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of a: signed int 
+        Declaration of struct __anonymous0
+            with members
+              b: signed int 
+
+        Declaration of ?=?: automatically generated inline function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+            with body 
+              CompoundStmt
+                                  Expression Statement:
+                    Application of
+                      Variable Expression: ?=?: function
+                          with parameters
+                            pointer to signed int 
+                            signed int 
+                          returning 
+                            signed int 
+
+                    to arguments
+                                              Address of:
+                          Member Expression, with field: 
+                            b: signed int 
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous0 
+
+                                              Member Expression, with field: 
+                          b: signed int 
+                        from aggregate: 
+                          Variable Expression: _src: instance of struct __anonymous0 
+
+                    with environment:
+                      Types:
+                      Non-types:
+
+                                  Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+        Declaration of a: instance of struct __anonymous0 
+                  If on condition: 
+              Cast of:
+                Application of
+                  Variable Expression: ?!=?: function
+                      with parameters
+                        signed int 
+                        signed int 
+                      returning 
+                        signed int 
+
+                to arguments
+                                      Variable Expression: a: signed int 
+
+                                      Variable Expression: 0: signed int 
+
+
+              to:
+                signed int 
+              with environment:
+                Types:
+                Non-types:
+          .... and branches: 
+              CompoundStmt
+                                  While on condition: 
+                      Cast of:
+                        Application of
+                          Variable Expression: ?!=?: function
+                              with parameters
+                                signed int 
+                                signed int 
+                              returning 
+                                signed int 
+
+                        to arguments
+                                                      Variable Expression: a: signed int 
+
+                                                      Variable Expression: 0: signed int 
+
+
+                      to:
+                        signed int 
+                      with environment:
+                        Types:
+                        Non-types:
+                  .... with body: 
+                      CompoundStmt
+                        Declaration of b: pointer to signed int 
+                                                  Labels: {}
+                          For Statement
+                            initialization: 
+                              Expression Statement:
+                                Variable Expression: b: pointer to signed int 
+                                with environment:
+                                  Types:
+                                  Non-types:
+
+                            condition: 
+                              Cast of:
+                                Application of
+                                  Variable Expression: ?!=?: function
+                                      with parameters
+                                        signed int 
+                                        signed int 
+                                      returning 
+                                        signed int 
+
+                                to arguments
+                                                                      Variable Expression: a: signed int 
+
+                                                                      Variable Expression: 0: signed int 
+
+
+                              to:
+                                signed int 
+                              with environment:
+                                Types:
+                                Non-types:
+
+                            increment: 
+                              Variable Expression: b: pointer to signed int 
+                              with environment:
+                                Types:
+                                Non-types:
+
+                            statement block: 
+                              CompoundStmt
+
+
+
+
+
+int ___operator_assign__Fi_Pii_(int *, int );
+int ___operator_notequal__Fi_ii_(int , int );
+int ___constant_zero__i;
+void __f__F__(){
+    int __a__i;
+    struct __anonymous0
+    {
+        int __b__i;
+    };
+    inline struct __anonymous0 ___operator_assign__F13s__anonymous0_P13s__anonymous013s__anonymous0_(struct __anonymous0 *___dst__P13s__anonymous0, struct __anonymous0 ___src__13s__anonymous0){
+        ___operator_assign__Fi_Pii_((&(*___dst__P13s__anonymous0).__b__i), ___src__13s__anonymous0.__b__i);
+        return ___src__13s__anonymous0;
+    }
+    struct __anonymous0 __a__13s__anonymous0;
+    if (((int )___operator_notequal__Fi_ii_(__a__i, ___constant_zero__i))) {
+        while (((int )___operator_notequal__Fi_ii_(__a__i, ___constant_zero__i))) {
+            int *__b__Pi;
+            for (__b__Pi;((int )___operator_notequal__Fi_ii_(__a__i, ___constant_zero__i));__b__Pi) {
+            }
+
+        }        
+
+    }
+
+}
Index: src/Tests/Expect-e/StructMember.txt
===================================================================
--- src/Tests/Expect-e/StructMember.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/StructMember.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,560 @@
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m1: signed int with bitfield width constant expression 3 signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m1: signed int with bitfield width constant expression 3 signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m2: signed int with bitfield width constant expression 4 signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m2: signed int with bitfield width constant expression 4 signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m3: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m3: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m4: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m4: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m5: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m5: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m6: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m6: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m7: pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m7: pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m8: pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m8: pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m9: pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m9: pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m10: pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m10: pointer to function
+          accepting unspecified arguments
+        returning 
+          signed int 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m11: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to signed int 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m11: pointer to function
+        with parameters
+          signed int 
+        returning 
+          pointer to signed int 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        T: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      T: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        T: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      T: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m12: pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m12: pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m13: pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m13: pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m14: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to signed int 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m14: pointer to function
+        with parameters
+          signed int 
+        returning 
+          pointer to signed int 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to function
+          accepting unspecified arguments
+        returning 
+          signed int 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to pointer to function
+        with parameters
+          signed int 
+        returning 
+          signed int 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Name: __builtin_memcpy
+
Index: src/Tests/Expect-e/Subrange.txt
===================================================================
--- src/Tests/Expect-e/Subrange.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Subrange.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,49 @@
+Error: No reasonable alternatives for expression Cast of:
+  Variable Expression: _dst: pointer to instance of type subrange (not function type) 
+
+to:
+  pointer to instance of type base_t (not function type) 
+
+Error: No reasonable alternatives for expression Name: low
+
+Error: No reasonable alternatives for expression Name: high
+
+Error: No reasonable alternatives for expression Cast of:
+  Applying untyped: 
+      Name: lbound
+  ...to: 
+      Name: day_of_month
+
+to:
+  unsigned int 
+
+Error: No reasonable alternatives for expression Name: ?!=?
+
+Error: No reasonable alternatives for expression Cast of:
+  Name: target
+
+to:
+  instance of type subrange (not function type) 
+    with parameters
+      instance of type T (not function type) 
+              Name: low
+
+              Name: high
+
+
+
+Error: No reasonable alternatives for expression Name: ?!=?
+
+Error: No reasonable alternatives for expression Cast of:
+  Name: target
+
+to:
+  instance of type subrange (not function type) 
+    with parameters
+      instance of type T (not function type) 
+              Name: t_low
+
+              Name: t_high
+
+
+
Index: src/Tests/Expect-e/Switch.txt
===================================================================
--- src/Tests/Expect-e/Switch.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Switch.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,16 @@
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
Index: src/Tests/Expect-e/Tuple.txt
===================================================================
--- src/Tests/Expect-e/Tuple.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Tuple.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,228 @@
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        f2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct inner 
+    Member Expression, with field: 
+      f2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct inner 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        f3: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct inner 
+    Member Expression, with field: 
+      f3: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct inner 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        f1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct outer 
+    Member Expression, with field: 
+      f1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct outer 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        f4: double 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct outer 
+    Member Expression, with field: 
+      f4: double 
+    from aggregate: 
+      Variable Expression: _src: instance of struct outer 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Variable Expression: x: short signed int 
+    Variable Expression: w: signed int 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: f
+...to: 
+constant expression 17 signed int 
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: f
+...to: 
+constant expression 17 signed int 
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: r
+    Tuple:
+              Name: x
+
+              Name: y
+
+              Name: z
+
+
+Error: No reasonable alternatives for expression Name: 1
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Variable Expression: a: signed int 
+constant expression 3 signed int 
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Tuple:
+                  Name: a
+
+                  Name: b
+
+    Tuple:
+      constant expression 4.6 double 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Variable Expression: c: signed int 
+constant expression 3 signed int 
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Tuple:
+                  Name: a
+
+                  Name: b
+
+                  Tuple:
+                          Name: c
+
+
+    Tuple:
+      constant expression 2 signed int 
+              Tuple:
+                      Name: a
+
+                      Name: b
+
+
+
+Error: No reasonable alternatives for expression Name: ?!=?
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: t1
+    Tuple:
+              Name: a
+
+              Name: b
+
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: t2
+    Tuple:
+              Name: a
+
+              Name: b
+
+
+Error: No reasonable alternatives for expression Name: ?+=?
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Tuple:
+                  Name: c
+
+                  Name: d
+
+    Name: t1
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: t1
+    Tuple:
+              Name: c
+
+              Name: d
+
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: t2
+    Tuple:
+              Name: c
+
+              Name: d
+
+
+Error: No reasonable alternatives for expression Address of:
+  Tuple:
+    constant expression 3 signed int 
+    constant expression 4 signed int 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: s
+    Tuple:
+      constant expression 11 signed int 
+      constant expression 12 signed int 
+      constant expression 13 signed int 
+      constant expression 3.14159 double 
+
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: sp
+    Name: sp
+
+Error: No reasonable alternatives for expression Name: 0
+
Index: src/Tests/Expect-e/TypeGenerator.txt
===================================================================
--- src/Tests/Expect-e/TypeGenerator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/TypeGenerator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,148 @@
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        data: instance of type T (not function type) 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      data: instance of type T (not function type) 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        next: pointer to instance of type List1 (not function type) 
+        with parameters
+          instance of type T (not function type) 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      next: pointer to instance of type List1 (not function type) 
+      with parameters
+        instance of type T (not function type) 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Cast of:
+  Variable Expression: _dst: pointer to instance of type List1 (not function type) 
+
+to:
+  pointer to pointer to instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: instance of type T (not function type) 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S2 
+    Member Expression, with field: 
+      i: instance of type T (not function type) 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: instance of type T (not function type) 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S24 
+    Member Expression, with field: 
+      i: instance of type T (not function type) 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S24 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: instance of type T (not function type) 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous1 
+    Member Expression, with field: 
+      i: instance of type T (not function type) 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous1 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        data: instance of type T (not function type) 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct node 
+    Member Expression, with field: 
+      data: instance of type T (not function type) 
+    from aggregate: 
+      Variable Expression: _src: instance of struct node 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        next: pointer to instance of struct node 
+        with parameters
+          instance of type T (not function type) 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct node 
+    Member Expression, with field: 
+      next: pointer to instance of struct node 
+      with parameters
+        instance of type T (not function type) 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct node 
+
+Error: No reasonable alternatives for expression Cast of:
+  Variable Expression: _dst: pointer to instance of type List (not function type) 
+
+to:
+  pointer to pointer to instance of struct node 
+    with parameters
+      instance of type T (not function type) 
+
+
+Error: No reasonable alternatives for expression Cast of:
+  Name: my_list
+
+to:
+  instance of struct node 
+    with parameters
+      signed int 
+
+
Index: src/Tests/Expect-e/Typedef.txt
===================================================================
--- src/Tests/Expect-e/Typedef.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Typedef.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,21 @@
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        T: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      T: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 3 signed int 
+to:
+  instance of struct __anonymous0 
+
Index: src/Tests/Expect-e/TypedefDeclarator.txt
===================================================================
--- src/Tests/Expect-e/TypedefDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/TypedefDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,443 @@
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of f1: signed int 
+        Declaration of f2: signed int 
+        Declaration of f3: pointer to signed int 
+        Declaration of f4: pointer to pointer to signed int 
+        Declaration of f5: pointer to const pointer to signed int 
+        Declaration of f6: const pointer to const pointer to signed int 
+        Declaration of f7: pointer to signed int 
+        Declaration of f8: pointer to pointer to signed int 
+        Declaration of f9: pointer to const pointer to signed int 
+        Declaration of f10: const pointer to const pointer to signed int 
+        Declaration of f11: pointer to signed int 
+        Declaration of f12: pointer to pointer to signed int 
+        Declaration of f13: pointer to const pointer to signed int 
+        Declaration of f14: const pointer to const pointer to signed int 
+        Declaration of f15: open array of signed int 
+        Declaration of f16: array of signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f17: open array of signed int 
+        Declaration of f18: array of signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f19: open array of pointer to signed int 
+        Declaration of f20: array of pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f21: open array of pointer to pointer to signed int 
+        Declaration of f22: array of pointer to pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f23: open array of pointer to const pointer to signed int 
+        Declaration of f24: array of pointer to const pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f25: open array of const pointer to const pointer to signed int 
+        Declaration of f26: array of const pointer to const pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f27: open array of pointer to signed int 
+        Declaration of f28: array of pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f29: open array of pointer to pointer to signed int 
+        Declaration of f30: array of pointer to pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f31: open array of pointer to const pointer to signed int 
+        Declaration of f32: array of pointer to const pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f33: open array of const pointer to const pointer to signed int 
+        Declaration of f34: array of const pointer to const pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f35: open array of pointer to signed int 
+        Declaration of f36: array of pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f37: open array of pointer to pointer to signed int 
+        Declaration of f38: array of pointer to pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f39: open array of pointer to const pointer to signed int 
+        Declaration of f40: array of pointer to const pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f41: open array of const pointer to const pointer to signed int 
+        Declaration of f42: array of const pointer to const pointer to signed int with dimension of           Cast of:
+constant expression 10 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f43: open array of array of signed int with dimension of constant expression 3 signed int 
+        Declaration of f44: array of array of signed int with dimension of constant expression 3 signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f45: open array of array of signed int with dimension of constant expression 3 signed int 
+        Declaration of f46: array of array of signed int with dimension of constant expression 3 signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f47: open array of array of signed int with dimension of constant expression 3 signed int 
+        Declaration of f48: array of array of signed int with dimension of constant expression 3 signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f49: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f50: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f51: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f52: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f53: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f54: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f55: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f56: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f57: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f58: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f59: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f60: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f61: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f62: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f63: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f64: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of           Cast of:
+constant expression 3 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+        Declaration of f65: function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f66: function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f67: function
+            with parameters
+              signed int 
+            returning 
+              pointer to signed int 
+
+        Declaration of f68: function
+            with parameters
+              signed int 
+            returning 
+              pointer to pointer to signed int 
+
+        Declaration of f69: function
+            with parameters
+              signed int 
+            returning 
+              pointer to const pointer to signed int 
+
+        Declaration of f70: function
+            with parameters
+              signed int 
+            returning 
+              const pointer to const pointer to signed int 
+
+        Declaration of f71: function
+            with parameters
+              signed int 
+            returning 
+              pointer to signed int 
+
+        Declaration of f72: function
+            with parameters
+              signed int 
+            returning 
+              pointer to pointer to signed int 
+
+        Declaration of f73: function
+            with parameters
+              signed int 
+            returning 
+              pointer to const pointer to signed int 
+
+        Declaration of f74: function
+            with parameters
+              signed int 
+            returning 
+              const pointer to const pointer to signed int 
+
+        Declaration of f75: pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f76: pointer to pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f77: pointer to const pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f78: const pointer to const pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f79: pointer to function
+            with parameters
+              signed int 
+            returning 
+              pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+
+        Declaration of f80: const pointer to function
+            with parameters
+              signed int 
+            returning 
+              pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+
+        Declaration of f81: const pointer to function
+            with parameters
+              signed int 
+            returning 
+              const pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+
+
+int main(){
+    int __f1__i;
+    int __f2__i;
+    int *__f3__Pi;
+    int **__f4__PPi;
+    int *const *__f5__PCPi;
+    int *const *const __f6__CPCPi;
+    int *__f7__Pi;
+    int **__f8__PPi;
+    int *const *__f9__PCPi;
+    int *const *const __f10__CPCPi;
+    int *__f11__Pi;
+    int **__f12__PPi;
+    int *const *__f13__PCPi;
+    int *const *const __f14__CPCPi;
+    int __f15__A0i[];
+    int __f16__A0i[((long unsigned int )10)];
+    int __f17__A0i[];
+    int __f18__A0i[((long unsigned int )10)];
+    int *__f19__A0Pi[];
+    int *__f20__A0Pi[((long unsigned int )10)];
+    int **__f21__A0PPi[];
+    int **__f22__A0PPi[((long unsigned int )10)];
+    int *const *__f23__A0PCPi[];
+    int *const *__f24__A0PCPi[((long unsigned int )10)];
+    int *const *const __f25__A0CPCPi[];
+    int *const *const __f26__A0CPCPi[((long unsigned int )10)];
+    int *__f27__A0Pi[];
+    int *__f28__A0Pi[((long unsigned int )10)];
+    int **__f29__A0PPi[];
+    int **__f30__A0PPi[((long unsigned int )10)];
+    int *const *__f31__A0PCPi[];
+    int *const *__f32__A0PCPi[((long unsigned int )10)];
+    int *const *const __f33__A0CPCPi[];
+    int *const *const __f34__A0CPCPi[((long unsigned int )10)];
+    int *__f35__A0Pi[];
+    int *__f36__A0Pi[((long unsigned int )10)];
+    int **__f37__A0PPi[];
+    int **__f38__A0PPi[((long unsigned int )10)];
+    int *const *__f39__A0PCPi[];
+    int *const *__f40__A0PCPi[((long unsigned int )10)];
+    int *const *const __f41__A0CPCPi[];
+    int *const *const __f42__A0CPCPi[((long unsigned int )10)];
+    int __f43__A0A0i[][3];
+    int __f44__A0A0i[((long unsigned int )3)][3];
+    int __f45__A0A0i[][3];
+    int __f46__A0A0i[((long unsigned int )3)][3];
+    int __f47__A0A0i[][3];
+    int __f48__A0A0i[((long unsigned int )3)][3];
+    int *__f49__A0A0Pi[][3];
+    int *__f50__A0A0Pi[((long unsigned int )3)][3];
+    int **__f51__A0A0PPi[][3];
+    int **__f52__A0A0PPi[((long unsigned int )3)][3];
+    int *const *__f53__A0A0PCPi[][3];
+    int *const *__f54__A0A0PCPi[((long unsigned int )3)][3];
+    int *const *const __f55__A0A0CPCPi[][3];
+    int *const *const __f56__A0A0CPCPi[((long unsigned int )3)][3];
+    int *__f57__A0A0Pi[][3];
+    int *__f58__A0A0Pi[((long unsigned int )3)][3];
+    int **__f59__A0A0PPi[][3];
+    int **__f60__A0A0PPi[((long unsigned int )3)][3];
+    int *const *__f61__A0A0PCPi[][3];
+    int *const *__f62__A0A0PCPi[((long unsigned int )3)][3];
+    int *const *const __f63__A0A0CPCPi[][3];
+    int *const *const __f64__A0A0CPCPi[((long unsigned int )3)][3];
+    int __f65__Fi_i_(int );
+    int __f66__Fi_i_(int );
+    int *__f67__FPi_i_(int );
+    int **__f68__FPPi_i_(int );
+    int *const *__f69__FPCPi_i_(int );
+    int *const *const __f70__FCPCPi_i_(int );
+    int *__f71__FPi_i_(int );
+    int **__f72__FPPi_i_(int );
+    int *const *__f73__FPCPi_i_(int );
+    int *const *const __f74__FCPCPi_i_(int );
+    int (*__f75__PFi_i_)(int );
+    int (**__f76__PPFi_i_)(int );
+    int (*const *__f77__PCPFi_i_)(int );
+    int (*const *const __f78__CPCPFi_i_)(int );
+    int (*(*__f79__PFPFi___i_)(int ))();
+    int (*(*const __f80__CPFPFi___i_)(int ))();
+    int (*const (*const __f81__CPFCPFi___i_)(int ))();
+}
Index: src/Tests/Expect-e/TypedefParamDeclarator.txt
===================================================================
--- src/Tests/Expect-e/TypedefParamDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/TypedefParamDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,264 @@
+fred: function
+    with parameters
+      f1: signed int 
+      f3: pointer to signed int 
+      f4: pointer to pointer to signed int 
+      f5: pointer to const pointer to signed int 
+      f6: const pointer to const pointer to signed int 
+      f11: pointer to signed int 
+      f12: pointer to pointer to signed int 
+      f13: pointer to const pointer to signed int 
+      f14: const pointer to const pointer to signed int 
+      f15: pointer to signed int 
+      f16: pointer to array of constant expression 10 signed int signed int 
+      f19: pointer to pointer to signed int 
+      f20: pointer to array of constant expression 10 signed int pointer to signed int 
+      f21: pointer to pointer to pointer to signed int 
+      f22: pointer to array of constant expression 10 signed int pointer to pointer to signed int 
+      f23: pointer to pointer to const pointer to signed int 
+      f24: pointer to array of constant expression 10 signed int pointer to const pointer to signed int 
+      f25: pointer to const pointer to const pointer to signed int 
+      f26: pointer to array of constant expression 10 signed int const pointer to const pointer to signed int 
+      f35: pointer to pointer to signed int 
+      f36: pointer to array of constant expression 10 signed int pointer to signed int 
+      f37: pointer to pointer to pointer to signed int 
+      f38: pointer to array of constant expression 10 signed int pointer to pointer to signed int 
+      f39: pointer to pointer to const pointer to signed int 
+      f40: pointer to array of constant expression 10 signed int pointer to const pointer to signed int 
+      f41: pointer to const pointer to const pointer to signed int 
+      f42: pointer to array of constant expression 10 signed int const pointer to const pointer to signed int 
+      f43: pointer to array of signed int with dimension of constant expression 3 signed int 
+      f44: pointer to array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f49: pointer to array of pointer to signed int with dimension of constant expression 3 signed int 
+      f50: pointer to array of constant expression 3 signed int array of pointer to signed int with dimension of constant expression 3 signed int 
+      f51: pointer to array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f52: pointer to array of constant expression 3 signed int array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f53: pointer to array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f54: pointer to array of constant expression 3 signed int array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f55: pointer to array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f56: pointer to array of constant expression 3 signed int array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f57: pointer to array of pointer to signed int with dimension of constant expression 3 signed int 
+      f58: pointer to array of constant expression 3 signed int array of pointer to signed int with dimension of constant expression 3 signed int 
+      f59: pointer to array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f60: pointer to array of constant expression 3 signed int array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f61: pointer to array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f62: pointer to array of constant expression 3 signed int array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f63: pointer to array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f64: pointer to array of constant expression 3 signed int array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f65: pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f67: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to signed int 
+
+      f68: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to pointer to signed int 
+
+      f69: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to const pointer to signed int 
+
+      f70: pointer to function
+          with parameters
+            signed int 
+          returning 
+            const pointer to const pointer to signed int 
+
+      f75: pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f76: pointer to pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f77: pointer to const pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f78: const pointer to const pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f79: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  signed int 
+
+
+      f80: const pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  signed int 
+
+
+      f81: const pointer to function
+          with parameters
+            signed int 
+          returning 
+            const pointer to function
+                  accepting unspecified arguments
+                returning 
+                  signed int 
+
+
+      f82: const pointer to variable length array of signed int 
+      f83: const pointer to array of constant expression 3 signed int signed int 
+      f84: pointer to static array of constant expression 3 signed int signed int 
+      f85: const pointer to static array of constant expression 3 signed int signed int 
+      pointer to function
+          with parameters
+            const pointer to variable length array of signed int 
+          returning 
+            signed int 
+
+      pointer to function
+          with parameters
+            const pointer to array of constant expression 3 signed int signed int 
+          returning 
+            signed int 
+
+      pointer to function
+          with parameters
+            pointer to static array of constant expression 3 signed int signed int 
+          returning 
+            signed int 
+
+      pointer to function
+          with parameters
+            const pointer to static array of constant expression 3 signed int signed int 
+          returning 
+            signed int 
+
+      f90: const pointer to variable length array of pointer to signed int 
+      f91: const pointer to array of constant expression 3 signed int pointer to signed int 
+      f92: pointer to static array of constant expression 3 signed int pointer to pointer to signed int 
+      f93: const pointer to static array of constant expression 3 signed int pointer to const pointer to signed int 
+      f94: const pointer to static array of constant expression 3 signed int const pointer to const pointer to signed int 
+      pointer to function
+          with parameters
+            const pointer to variable length array of signed int 
+          returning 
+            pointer to signed int 
+
+      pointer to function
+          with parameters
+            const pointer to array of constant expression 3 signed int signed int 
+          returning 
+            pointer to signed int 
+
+      pointer to function
+          with parameters
+            pointer to static array of constant expression 3 signed int signed int 
+          returning 
+            pointer to pointer to signed int 
+
+      pointer to function
+          with parameters
+            const pointer to static array of constant expression 3 signed int signed int 
+          returning 
+            pointer to const pointer to signed int 
+
+      pointer to function
+          with parameters
+            const pointer to static array of constant expression 3 signed int signed int 
+          returning 
+            const pointer to const pointer to signed int 
+
+      f100: const pointer to variable length array of array of signed int with dimension of constant expression 3 signed int 
+      f101: const pointer to array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f102: pointer to static array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f103: const pointer to static array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      pointer to function
+          with parameters
+            const pointer to variable length array of array of signed int with dimension of constant expression 3 signed int 
+          returning 
+            signed int 
+
+      pointer to function
+          with parameters
+            const pointer to array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+          returning 
+            signed int 
+
+      pointer to function
+          with parameters
+            pointer to static array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+          returning 
+            signed int 
+
+      pointer to function
+          with parameters
+            const pointer to static array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+          returning 
+            signed int 
+
+      f108: const pointer to variable length array of array of pointer to signed int with dimension of constant expression 3 signed int 
+      f109: const pointer to array of constant expression 3 signed int array of pointer to signed int with dimension of constant expression 3 signed int 
+      f110: pointer to static array of constant expression 3 signed int array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f111: const pointer to static array of constant expression 3 signed int array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f112: const pointer to static array of constant expression 3 signed int array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      pointer to function
+          with parameters
+            const pointer to variable length array of array of signed int with dimension of constant expression 3 signed int 
+          returning 
+            pointer to signed int 
+
+      pointer to function
+          with parameters
+            const pointer to array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+          returning 
+            pointer to signed int 
+
+      pointer to function
+          with parameters
+            pointer to static array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+          returning 
+            pointer to pointer to signed int 
+
+      pointer to function
+          with parameters
+            const pointer to static array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+          returning 
+            pointer to const pointer to signed int 
+
+      pointer to function
+          with parameters
+            const pointer to static array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+          returning 
+            const pointer to const pointer to signed int 
+
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+int __fred__Fi_iPiPPiPCPiCPCPiPiPPiPCPiCPCPiPiPiPPiPPiPPPiPPPiPPCPiPPCPiPCPCPiPCPCPiPPiPPiPPPiPPPiPPCPiPPCPiPCPCPiPCPCPiPA0iPA0iPA0PiPA0PiPA0PPiPA0PPiPA0PCPiPA0PCPiPA0CPCPiPA0CPCPiPA0PiPA0PiPA0PPiPA0PPiPA0PCPiPA0PCPiPA0CPCPiPA0CPCPiPFi_i_PFPi_i_PFPPi_i_PFPCPi_i_PFCPCPi_i_PFi_i_PPFi_i_PCPFi_i_CPCPFi_i_PFPFi___i_CPFPFi___i_CPFCPFi___i_CPiCPiPiCPiPFi_CPi_PFi_CPi_PFi_Pi_PFi_CPi_CPPiCPPiPPPiCPPCPiCPCPCPiPFPi_CPi_PFPi_CPi_PFPPi_Pi_PFPCPi_CPi_PFCPCPi_CPi_CPA0iCPA0iPA0iCPA0iPFi_CPA0i_PFi_CPA0i_PFi_PA0i_PFi_CPA0i_CPA0PiCPA0PiPA0PPiCPA0PCPiCPA0CPCPiPFPi_CPA0i_PFPi_CPA0i_PFPPi_PA0i_PFPCPi_CPA0i_PFCPCPi_CPA0i__(int __f1__i, int *__f3__Pi, int **__f4__PPi, int *const *__f5__PCPi, int *const *const __f6__CPCPi, int *__f11__Pi, int **__f12__PPi, int *const *__f13__PCPi, int *const *const __f14__CPCPi, int *__f15__Pi, int __f16__Pi[10], int **__f19__PPi, int *__f20__PPi[10], int ***__f21__PPPi, int **__f22__PPPi[10], int *const **__f23__PPCPi, int *const *__f24__PPCPi[10], int *const *const *__f25__PCPCPi, int *const *const __f26__PCPCPi[10], int **__f35__PPi, int *__f36__PPi[10], int ***__f37__PPPi, int **__f38__PPPi[10], int *const **__f39__PPCPi, int *const *__f40__PPCPi[10], int *const *const *__f41__PCPCPi, int *const *const __f42__PCPCPi[10], int (*__f43__PA0i)[3], int __f44__PA0i[3][3], int *(*__f49__PA0Pi)[3], int *__f50__PA0Pi[3][3], int **(*__f51__PA0PPi)[3], int **__f52__PA0PPi[3][3], int *const *(*__f53__PA0PCPi)[3], int *const *__f54__PA0PCPi[3][3], int *const *const (*__f55__PA0CPCPi)[3], int *const *const __f56__PA0CPCPi[3][3], int *(*__f57__PA0Pi)[3], int *__f58__PA0Pi[3][3], int **(*__f59__PA0PPi)[3], int **__f60__PA0PPi[3][3], int *const *(*__f61__PA0PCPi)[3], int *const *__f62__PA0PCPi[3][3], int *const *const (*__f63__PA0CPCPi)[3], int *const *const __f64__PA0CPCPi[3][3], int (*__f65__PFi_i_)(int ), int *(*__f67__PFPi_i_)(int ), int **(*__f68__PFPPi_i_)(int ), int *const *(*__f69__PFPCPi_i_)(int ), int *const *const (*__f70__PFCPCPi_i_)(int ), int (*__f75__PFi_i_)(int ), int (**__f76__PPFi_i_)(int ), int (*const *__f77__PCPFi_i_)(int ), int (*const *const __f78__CPCPFi_i_)(int ), int (*(*__f79__PFPFi___i_)(int ))(), int (*(*const __f80__CPFPFi___i_)(int ))(), int (*const (*const __f81__CPFCPFi___i_)(int ))(), int __f82__CPi[const *], int __f83__CPi[const 3], int __f84__Pi[static 3], int __f85__CPi[static const 3], int (*)(int [const *]), int (*)(int [const 3]), int (*)(int [static 3]), int (*)(int [static const 3]), int *__f90__CPPi[const *], int *__f91__CPPi[const 3], int **__f92__PPPi[static 3], int *const *__f93__CPPCPi[static const 3], int *const *const __f94__CPCPCPi[static const 3], int *(*)(int [const *]), int *(*)(int [const 3]), int **(*)(int [static 3]), int *const *(*)(int [static const 3]), int *const *const (*)(int [static const 3]), int __f100__CPA0i[const *][3], int __f101__CPA0i[const 3][3], int __f102__PA0i[static 3][3], int __f103__CPA0i[static const 3][3], int (*)(int [const *][3]), int (*)(int [const 3][3]), int (*)(int [static 3][3]), int (*)(int [static const 3][3]), int *__f108__CPA0Pi[const *][3], int *__f109__CPA0Pi[const 3][3], int **__f110__PA0PPi[static 3][3], int *const *__f111__CPA0PCPi[static const 3][3], int *const *const __f112__CPA0CPCPi[static const 3][3], int *(*)(int [const *][3]), int *(*)(int [const 3][3]), int **(*)(int [static 3][3]), int *const *(*)(int [static const 3][3]), int *const *const (*)(int [static const 3][3])){
+}
Index: src/Tests/Expect-e/Typeof.txt
===================================================================
--- src/Tests/Expect-e/Typeof.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/Typeof.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,2 @@
+Error: No reasonable alternatives for expression Name: *?
+
Index: src/Tests/Expect-e/VariableDeclarator.txt
===================================================================
--- src/Tests/Expect-e/VariableDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/VariableDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,590 @@
+f1: signed int 
+f2: signed int 
+f3: pointer to signed int 
+f4: pointer to pointer to signed int 
+f5: pointer to const pointer to signed int 
+f6: const pointer to const pointer to signed int 
+f7: pointer to signed int 
+f8: pointer to pointer to signed int 
+f9: pointer to const pointer to signed int 
+f10: const pointer to const pointer to signed int 
+f11: pointer to signed int 
+f12: pointer to pointer to signed int 
+f13: pointer to const pointer to signed int 
+f14: const pointer to const pointer to signed int 
+f15: open array of signed int 
+f16: array of signed int with dimension of   Cast of:
+constant expression 10 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+f17: open array of signed int 
+f18: array of signed int with dimension of   Cast of:
+constant expression 10 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+f19: open array of pointer to signed int 
+f20: array of pointer to signed int with dimension of   Cast of:
+constant expression 10 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+f21: open array of pointer to pointer to signed int 
+f22: array of pointer to pointer to signed int with dimension of   Cast of:
+constant expression 10 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+f23: open array of pointer to const pointer to signed int 
+f24: array of pointer to const pointer to signed int with dimension of   Cast of:
+constant expression 10 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+f25: open array of const pointer to const pointer to signed int 
+f26: array of const pointer to const pointer to signed int with dimension of   Cast of:
+constant expression 10 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+f27: open array of pointer to signed int 
+f28: array of pointer to signed int with dimension of   Cast of:
+constant expression 10 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+f29: open array of pointer to pointer to signed int 
+f30: array of pointer to pointer to signed int with dimension of   Cast of:
+constant expression 10 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+f31: open array of pointer to const pointer to signed int 
+f32: array of pointer to const pointer to signed int with dimension of   Cast of:
+constant expression 10 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+f33: open array of const pointer to const pointer to signed int 
+f34: array of const pointer to const pointer to signed int with dimension of   Cast of:
+constant expression 10 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+f35: pointer to open array of signed int 
+f36: pointer to array of signed int with dimension of constant expression 10 signed int 
+f37: pointer to pointer to open array of signed int 
+f38: pointer to pointer to array of signed int with dimension of constant expression 10 signed int 
+f39: pointer to const pointer to open array of signed int 
+f40: pointer to const pointer to array of signed int with dimension of constant expression 10 signed int 
+f41: const pointer to const pointer to open array of signed int 
+f42: const pointer to const pointer to array of signed int with dimension of constant expression 10 signed int 
+f43: open array of array of signed int with dimension of constant expression 3 signed int 
+f44: array of array of signed int with dimension of constant expression 3 signed int with dimension of   Cast of:
+constant expression 3 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+f45: open array of array of signed int with dimension of constant expression 3 signed int 
+f46: array of array of signed int with dimension of constant expression 3 signed int with dimension of   Cast of:
+constant expression 3 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+f47: open array of array of signed int with dimension of constant expression 3 signed int 
+f48: array of array of signed int with dimension of constant expression 3 signed int with dimension of   Cast of:
+constant expression 3 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+f49: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+f50: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of   Cast of:
+constant expression 3 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+f51: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+f52: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of   Cast of:
+constant expression 3 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+f53: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+f54: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of   Cast of:
+constant expression 3 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+f55: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+f56: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of   Cast of:
+constant expression 3 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+f57: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+f58: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of   Cast of:
+constant expression 3 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+f59: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+f60: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of   Cast of:
+constant expression 3 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+f61: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+f62: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of   Cast of:
+constant expression 3 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+f63: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+f64: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of   Cast of:
+constant expression 3 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+f65: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f66: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f67: function
+    with parameters
+      signed int 
+    returning 
+      pointer to signed int 
+
+f68: function
+    with parameters
+      signed int 
+    returning 
+      pointer to pointer to signed int 
+
+f69: function
+    with parameters
+      signed int 
+    returning 
+      pointer to const pointer to signed int 
+
+f70: function
+    with parameters
+      signed int 
+    returning 
+      const pointer to const pointer to signed int 
+
+f71: function
+    with parameters
+      signed int 
+    returning 
+      pointer to signed int 
+
+f72: function
+    with parameters
+      signed int 
+    returning 
+      pointer to pointer to signed int 
+
+f73: function
+    with parameters
+      signed int 
+    returning 
+      pointer to const pointer to signed int 
+
+f74: function
+    with parameters
+      signed int 
+    returning 
+      const pointer to const pointer to signed int 
+
+f75: pointer to function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f76: pointer to pointer to function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f77: pointer to const pointer to function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f78: const pointer to const pointer to function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f79: pointer to function
+    with parameters
+      signed int 
+    returning 
+      pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+
+f80: const pointer to function
+    with parameters
+      signed int 
+    returning 
+      pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+
+f81: const pointer to function
+    with parameters
+      signed int 
+    returning 
+      const pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+
+cf3: pointer to signed int 
+cf4: pointer to pointer to signed int 
+cf5: pointer to const pointer to signed int 
+cf6: const pointer to const pointer to signed int 
+cf15: open array of signed int 
+cf16: array of signed int with dimension of   Cast of:
+constant expression 10 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+cf19: open array of pointer to signed int 
+cf20: array of pointer to signed int with dimension of   Cast of:
+constant expression 10 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+cf21: open array of pointer to pointer to signed int 
+cf22: array of pointer to pointer to signed int with dimension of   Cast of:
+constant expression 10 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+cf23: open array of pointer to const pointer to signed int 
+cf24: array of pointer to const pointer to signed int with dimension of   Cast of:
+constant expression 10 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+cf25: open array of const pointer to const pointer to signed int 
+cf26: array of const pointer to const pointer to signed int with dimension of   Cast of:
+constant expression 10 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+cf35: pointer to open array of signed int 
+cf36: pointer to array of signed int with dimension of constant expression 10 signed int 
+cf37: pointer to pointer to open array of signed int 
+cf38: pointer to pointer to array of signed int with dimension of constant expression 10 signed int 
+cf39: pointer to const pointer to open array of signed int 
+cf40: pointer to const pointer to array of signed int with dimension of constant expression 10 signed int 
+cf41: const pointer to const pointer to open array of signed int 
+cf42: const pointer to const pointer to array of signed int with dimension of constant expression 10 signed int 
+cf43: open array of array of signed int with dimension of constant expression 3 signed int 
+cf44: array of array of signed int with dimension of constant expression 3 signed int with dimension of   Cast of:
+constant expression 3 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+cf49: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+cf50: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of   Cast of:
+constant expression 3 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+cf51: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+cf52: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of   Cast of:
+constant expression 3 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+cf53: open array of array of const pointer to signed int with dimension of constant expression 3 signed int 
+cf54: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of   Cast of:
+constant expression 3 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+cf55: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+cf56: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of   Cast of:
+constant expression 3 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+cf65: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+cf66: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+cf67: function
+    with parameters
+      signed int 
+    returning 
+      pointer to signed int 
+
+cf68: function
+    with parameters
+      signed int 
+    returning 
+      pointer to pointer to signed int 
+
+cf69: function
+    with parameters
+      signed int 
+    returning 
+      const pointer to pointer to signed int 
+
+cf70: function
+    with parameters
+      signed int 
+    returning 
+      const pointer to const pointer to signed int 
+
+v3: pointer to open array of pointer to open array of pointer to function
+    with parameters
+      pointer to open array of pointer to open array of signed int 
+      pointer to open array of pointer to open array of signed int 
+    returning 
+      pointer to open array of pointer to open array of signed int 
+
+int __f1__i;
+int __f2__i;
+int *__f3__Pi;
+int **__f4__PPi;
+int *const *__f5__PCPi;
+int *const *const __f6__CPCPi;
+int *__f7__Pi;
+int **__f8__PPi;
+int *const *__f9__PCPi;
+int *const *const __f10__CPCPi;
+int *__f11__Pi;
+int **__f12__PPi;
+int *const *__f13__PCPi;
+int *const *const __f14__CPCPi;
+int __f15__A0i[];
+int __f16__A0i[((long unsigned int )10)];
+int __f17__A0i[];
+int __f18__A0i[((long unsigned int )10)];
+int *__f19__A0Pi[];
+int *__f20__A0Pi[((long unsigned int )10)];
+int **__f21__A0PPi[];
+int **__f22__A0PPi[((long unsigned int )10)];
+int *const *__f23__A0PCPi[];
+int *const *__f24__A0PCPi[((long unsigned int )10)];
+int *const *const __f25__A0CPCPi[];
+int *const *const __f26__A0CPCPi[((long unsigned int )10)];
+int *__f27__A0Pi[];
+int *__f28__A0Pi[((long unsigned int )10)];
+int **__f29__A0PPi[];
+int **__f30__A0PPi[((long unsigned int )10)];
+int *const *__f31__A0PCPi[];
+int *const *__f32__A0PCPi[((long unsigned int )10)];
+int *const *const __f33__A0CPCPi[];
+int *const *const __f34__A0CPCPi[((long unsigned int )10)];
+int (*__f35__PA0i)[];
+int (*__f36__PA0i)[10];
+int (**__f37__PPA0i)[];
+int (**__f38__PPA0i)[10];
+int (*const *__f39__PCPA0i)[];
+int (*const *__f40__PCPA0i)[10];
+int (*const *const __f41__CPCPA0i)[];
+int (*const *const __f42__CPCPA0i)[10];
+int __f43__A0A0i[][3];
+int __f44__A0A0i[((long unsigned int )3)][3];
+int __f45__A0A0i[][3];
+int __f46__A0A0i[((long unsigned int )3)][3];
+int __f47__A0A0i[][3];
+int __f48__A0A0i[((long unsigned int )3)][3];
+int *__f49__A0A0Pi[][3];
+int *__f50__A0A0Pi[((long unsigned int )3)][3];
+int **__f51__A0A0PPi[][3];
+int **__f52__A0A0PPi[((long unsigned int )3)][3];
+int *const *__f53__A0A0PCPi[][3];
+int *const *__f54__A0A0PCPi[((long unsigned int )3)][3];
+int *const *const __f55__A0A0CPCPi[][3];
+int *const *const __f56__A0A0CPCPi[((long unsigned int )3)][3];
+int *__f57__A0A0Pi[][3];
+int *__f58__A0A0Pi[((long unsigned int )3)][3];
+int **__f59__A0A0PPi[][3];
+int **__f60__A0A0PPi[((long unsigned int )3)][3];
+int *const *__f61__A0A0PCPi[][3];
+int *const *__f62__A0A0PCPi[((long unsigned int )3)][3];
+int *const *const __f63__A0A0CPCPi[][3];
+int *const *const __f64__A0A0CPCPi[((long unsigned int )3)][3];
+int __f65__Fi_i_(int );
+int __f66__Fi_i_(int );
+int *__f67__FPi_i_(int );
+int **__f68__FPPi_i_(int );
+int *const *__f69__FPCPi_i_(int );
+int *const *const __f70__FCPCPi_i_(int );
+int *__f71__FPi_i_(int );
+int **__f72__FPPi_i_(int );
+int *const *__f73__FPCPi_i_(int );
+int *const *const __f74__FCPCPi_i_(int );
+int (*__f75__PFi_i_)(int );
+int (**__f76__PPFi_i_)(int );
+int (*const *__f77__PCPFi_i_)(int );
+int (*const *const __f78__CPCPFi_i_)(int );
+int (*(*__f79__PFPFi___i_)(int ))();
+int (*(*const __f80__CPFPFi___i_)(int ))();
+int (*const (*const __f81__CPFCPFi___i_)(int ))();
+int *__cf3__Pi;
+int **__cf4__PPi;
+int *const *__cf5__PCPi;
+int *const *const __cf6__CPCPi;
+int __cf15__A0i[];
+int __cf16__A0i[((long unsigned int )10)];
+int *__cf19__A0Pi[];
+int *__cf20__A0Pi[((long unsigned int )10)];
+int **__cf21__A0PPi[];
+int **__cf22__A0PPi[((long unsigned int )10)];
+int *const *__cf23__A0PCPi[];
+int *const *__cf24__A0PCPi[((long unsigned int )10)];
+int *const *const __cf25__A0CPCPi[];
+int *const *const __cf26__A0CPCPi[((long unsigned int )10)];
+int (*__cf35__PA0i)[];
+int (*__cf36__PA0i)[10];
+int (**__cf37__PPA0i)[];
+int (**__cf38__PPA0i)[10];
+int (*const *__cf39__PCPA0i)[];
+int (*const *__cf40__PCPA0i)[10];
+int (*const *const __cf41__CPCPA0i)[];
+int (*const *const __cf42__CPCPA0i)[10];
+int __cf43__A0A0i[][3];
+int __cf44__A0A0i[((long unsigned int )3)][3];
+int *__cf49__A0A0Pi[][3];
+int *__cf50__A0A0Pi[((long unsigned int )3)][3];
+int **__cf51__A0A0PPi[][3];
+int **__cf52__A0A0PPi[((long unsigned int )3)][3];
+int *const __cf53__A0A0CPi[][3];
+int *const *__cf54__A0A0PCPi[((long unsigned int )3)][3];
+int *const *const __cf55__A0A0CPCPi[][3];
+int *const *const __cf56__A0A0CPCPi[((long unsigned int )3)][3];
+int __cf65__Fi_i_(int );
+int __cf66__Fi_i_(int );
+int *__cf67__FPi_i_(int );
+int **__cf68__FPPi_i_(int );
+int **const __cf69__FCPPi_i_(int );
+int *const *const __cf70__FCPCPi_i_(int );
+int (*(*(*(*(*__v3__PA0PA0PFPA0PA0i_PA0PA0iPA0PA0i_)[])[])(int (*(*)[])[], int (*(*)[])[]))[])[];
Index: src/Tests/Expect-e/gcc900407-1.txt
===================================================================
--- src/Tests/Expect-e/gcc900407-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/gcc900407-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,8 @@
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?!=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
Index: src/Tests/Expect-e/gcc900516-1.txt
===================================================================
--- src/Tests/Expect-e/gcc900516-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/gcc900516-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,2 @@
+Error: No reasonable alternatives for expression Name: !?
+
Index: src/Tests/Expect-e/gcc920301-1.txt
===================================================================
--- src/Tests/Expect-e/gcc920301-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/gcc920301-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,33 @@
+f: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of t: static open array of pointer to void 
+                  Null Statement
+
+
+g: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of p: static array of unsigned int with dimension of           Cast of:
+constant expression 5 signed int 
+          to:
+            long unsigned int 
+          with environment:
+            Types:
+            Non-types:
+
+
+int __f__Fi__(){
+    static void *__t__A0Pv[];
+    __L1__: /* null statement */ ;
+
+}
+int __g__Fi__(){
+    static unsigned int __p__A0Ui[((long unsigned int )5)];
+}
Index: src/Tests/Expect-e/gcc920409-1.txt
===================================================================
--- src/Tests/Expect-e/gcc920409-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/gcc920409-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,2 @@
+Error: No reasonable alternatives for expression Name: ?!=?
+
Index: src/Tests/Expect-e/gcc920409-2.txt
===================================================================
--- src/Tests/Expect-e/gcc920409-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/gcc920409-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,6 @@
+Error: No reasonable alternatives for expression Name: ?!=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
Index: src/Tests/Expect-e/gcc920410-2.txt
===================================================================
--- src/Tests/Expect-e/gcc920410-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/gcc920410-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,2 @@
+Error: No reasonable alternatives for expression Name: ?!=?
+
Index: src/Tests/Expect-e/gcc920501-1.txt
===================================================================
--- src/Tests/Expect-e/gcc920501-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/gcc920501-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,1 @@
+Segmentation fault (core dumped)
Index: src/Tests/Expect-e/gcc920501-11.txt
===================================================================
--- src/Tests/Expect-e/gcc920501-11.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/gcc920501-11.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,2 @@
+cfa-cpp: Parser/ExpressionNode.cc:456: virtual Expression* CompositeExprNode::build() const: Assertion `args.size() == 1' failed.
+Aborted (core dumped)
Index: src/Tests/Expect-e/gcc920501-19.txt
===================================================================
--- src/Tests/Expect-e/gcc920501-19.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-e/gcc920501-19.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,4 @@
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Name: ?=?
+
Index: src/Tests/Expect-f/Abstype.txt
===================================================================
--- src/Tests/Expect-f/Abstype.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/Abstype.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,8 @@
+There are 1 alternatives
+Alternative 1 ==============
+instance of type U (not function type) 
+
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
Index: src/Tests/Expect-f/Attributes.txt
===================================================================
--- src/Tests/Expect-f/Attributes.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/Attributes.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,1 @@
+Error at line 58 reading token "*"
Index: src/Tests/Expect-f/Cast.txt
===================================================================
--- src/Tests/Expect-f/Cast.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/Cast.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,26 @@
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to function
+      accepting unspecified arguments
+    returning 
+      nothing 
+
+
+There are 1 alternatives
+Alternative 1 ==============
+long signed int 
+long double 
+pointer to function
+      accepting unspecified arguments
+    returning 
+      nothing 
+
+
Index: src/Tests/Expect-f/CastError.txt
===================================================================
--- src/Tests/Expect-f/CastError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/CastError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,36 @@
+Error: Can't choose between alternatives for expression Cast of:
+  Name: f
+
+to:
+  char 
+Alternatives are:        Cost ( 1, 0, 0 ):         Cast of:
+          Variable Expression: f: signed int 
+
+        to:
+          char 
+(types:
+            char 
+)
+        Environment: 
+
+        Cost ( 1, 0, 0 ):         Cast of:
+          Variable Expression: f: double 
+
+        to:
+          char 
+(types:
+            char 
+)
+        Environment: 
+
+
+Error: No reasonable alternatives for expression Cast of:
+  Name: f
+
+to:
+  pointer to function
+        accepting unspecified arguments
+      returning 
+        signed int 
+
+
Index: src/Tests/Expect-f/CharStringConstants.txt
===================================================================
--- src/Tests/Expect-f/CharStringConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/CharStringConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,248 @@
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
Index: src/Tests/Expect-f/Constant0-1.txt
===================================================================
--- src/Tests/Expect-f/Constant0-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/Constant0-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,112 @@
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous1 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous1 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous2 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous3 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous4 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous4 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous5 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous5 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous6 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous6 
+
Index: src/Tests/Expect-f/DeclarationErrors.txt
===================================================================
--- src/Tests/Expect-f/DeclarationErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/DeclarationErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,14 @@
+Error: invalid combination of storage classes in declaration of x9: static static volatile const short int 
+
+Error: invalid combination of storage classes in declaration of x18: static static const volatile instance of struct __anonymous0
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x19: static static const volatile volatile instance of struct __anonymous1
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x28: static static volatile const instance of type Int
+
Index: src/Tests/Expect-f/DeclarationSpecifier.txt
===================================================================
--- src/Tests/Expect-f/DeclarationSpecifier.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/DeclarationSpecifier.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,14 @@
+Error: invalid combination of storage classes in declaration of x9: static static volatile const short int 
+
+Error: invalid combination of storage classes in declaration of x18: static static const volatile instance of struct __anonymous8
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x19: static static const volatile volatile instance of struct __anonymous9
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x28: static static volatile const instance of type Int
+
Index: src/Tests/Expect-f/Exception.txt
===================================================================
--- src/Tests/Expect-f/Exception.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/Exception.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,2 @@
+Error: No reasonable alternatives for expression Name: ?/?
+
Index: src/Tests/Expect-f/Expression.txt
===================================================================
--- src/Tests/Expect-f/Expression.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/Expression.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,101 @@
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct s 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct s 
+
+Error: No reasonable alternatives for expression Name: !?
+
+Error: No reasonable alternatives for expression Name: ~?
+
+Error: No reasonable alternatives for expression Name: +?
+
+Error: No reasonable alternatives for expression Name: -?
+
+Error: No reasonable alternatives for expression Name: *?
+
+Error: No reasonable alternatives for expression Name: ++?
+
+Error: No reasonable alternatives for expression Name: --?
+
+Error: No reasonable alternatives for expression Name: ?++
+
+Error: No reasonable alternatives for expression Name: ?--
+
+Error: No reasonable alternatives for expression Name: ?+?
+
+Error: No reasonable alternatives for expression Name: ?-?
+
+Error: No reasonable alternatives for expression Name: ?*?
+
+Error: No reasonable alternatives for expression Name: ?/?
+
+Error: No reasonable alternatives for expression Name: ?%?
+
+Error: No reasonable alternatives for expression Name: ?^?
+
+Error: No reasonable alternatives for expression Name: ?&?
+
+Error: No reasonable alternatives for expression Name: ?|?
+
+Error: No reasonable alternatives for expression Name: ?<?
+
+Error: No reasonable alternatives for expression Name: ?>?
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: i
+    Name: i
+
+Error: No reasonable alternatives for expression Name: ?==?
+
+Error: No reasonable alternatives for expression Name: ?!=?
+
+Error: No reasonable alternatives for expression Name: ?<<?
+
+Error: No reasonable alternatives for expression Name: ?>>?
+
+Error: No reasonable alternatives for expression Name: ?<=?
+
+Error: No reasonable alternatives for expression Name: ?>=?
+
+Error: No reasonable alternatives for expression Name: ?!=?
+
+Error: No reasonable alternatives for expression Name: ?!=?
+
+Error: No reasonable alternatives for expression Name: *?
+
+Error: No reasonable alternatives for expression Name: ?+=?
+
+Error: No reasonable alternatives for expression Name: ?-=?
+
+Error: No reasonable alternatives for expression Name: ?*=?
+
+Error: No reasonable alternatives for expression Name: ?/=?
+
+Error: No reasonable alternatives for expression Name: ?%=?
+
+Error: No reasonable alternatives for expression Name: ?&=?
+
+Error: No reasonable alternatives for expression Name: ?|=?
+
+Error: No reasonable alternatives for expression Name: ?^=?
+
+Error: No reasonable alternatives for expression Name: ?<<=?
+
+Error: No reasonable alternatives for expression Name: ?>>=?
+
+Error: No reasonable alternatives for expression Name: ?!=?
+
Index: src/Tests/Expect-f/Forall.txt
===================================================================
--- src/Tests/Expect-f/Forall.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/Forall.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,108 @@
+There are 2 alternatives
+Alternative 1 ==============
+signed int 
+
+Alternative 2 ==============
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to function
+    returning 
+      nothing 
+
+
+There are 2 alternatives
+Alternative 1 ==============
+char 
+
+Alternative 2 ==============
+
+There are 2 alternatives
+Alternative 1 ==============
+float 
+
+Alternative 2 ==============
+
+There are 1 alternatives
+Alternative 1 ==============
+
+There are 1 alternatives
+Alternative 1 ==============
+
+There are 1 alternatives
+Alternative 1 ==============
+
+There are 1 alternatives
+Alternative 1 ==============
+
+There are 1 alternatives
+Alternative 1 ==============
+instance of type T (not function type) 
+
+There are 1 alternatives
+Alternative 1 ==============
+instance of type T (not function type) 
+
+There are 1 alternatives
+Alternative 1 ==============
+instance of type T (not function type) 
+
+There are 1 alternatives
+Alternative 1 ==============
+instance of type T (not function type) 
+
+There are 1 alternatives
+Alternative 1 ==============
+
+There are 1 alternatives
+Alternative 1 ==============
+instance of type T (not function type) 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: instance of type P1 (not function type) 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      i: instance of type P1 (not function type) 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        j: instance of type P2 (not function type) 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      j: instance of type P2 (not function type) 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: i
+    Name: 0
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: twice
+...to: 
+    Name: x
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: min
+...to: 
+constant expression 4.0 double constant expression 3.0 double 
Index: src/Tests/Expect-f/Function.txt
===================================================================
--- src/Tests/Expect-f/Function.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/Function.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,26 @@
+There are 2 alternatives
+Alternative 1 ==============
+signed int 
+
+Alternative 2 ==============
+float 
+
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+signed int 
+
Index: src/Tests/Expect-f/Functions.txt
===================================================================
--- src/Tests/Expect-f/Functions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/Functions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,7 @@
+There are 1 alternatives
+Alternative 1 ==============
+
+Error: No reasonable alternatives for expression Name: *?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
Index: src/Tests/Expect-f/GccExtensions.txt
===================================================================
--- src/Tests/Expect-f/GccExtensions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/GccExtensions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,48 @@
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct s2 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct s2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct s3 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct s3 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct s4 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct s4 
+
Index: src/Tests/Expect-f/InferParam.txt
===================================================================
--- src/Tests/Expect-f/InferParam.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/InferParam.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,6 @@
+There are 1 alternatives
+Alternative 1 ==============
+
+There are 1 alternatives
+Alternative 1 ==============
+
Index: src/Tests/Expect-f/Initialization.txt
===================================================================
--- src/Tests/Expect-f/Initialization.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/Initialization.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,316 @@
+There are 1 alternatives
+Alternative 1 ==============
+instance of struct __anonymous4 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        w: tuple of types
+          signed int 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      w: tuple of types
+        signed int 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        b: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous1 
+    Member Expression, with field: 
+      b: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous1 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        g1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous2 
+    Member Expression, with field: 
+      g1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        g2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous2 
+    Member Expression, with field: 
+      g2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        g3: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous2 
+    Member Expression, with field: 
+      g3: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        f1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous3 
+    Member Expression, with field: 
+      f1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        f2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous3 
+    Member Expression, with field: 
+      f2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        f3: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous3 
+    Member Expression, with field: 
+      f3: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous4 
+    Member Expression, with field: 
+      y1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous4 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous4 
+    Member Expression, with field: 
+      y2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous4 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y3: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous4 
+    Member Expression, with field: 
+      y3: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous4 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct point 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct point 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        z: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct point 
+    Member Expression, with field: 
+      z: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct point 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        w: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct point 
+    Member Expression, with field: 
+      w: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct point 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        v: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct quintet 
+    Member Expression, with field: 
+      v: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct quintet 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        w: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct quintet 
+    Member Expression, with field: 
+      w: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct quintet 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct quintet 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct quintet 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct quintet 
+    Member Expression, with field: 
+      y: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct quintet 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        z: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct quintet 
+    Member Expression, with field: 
+      z: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct quintet 
+
Index: src/Tests/Expect-f/Initialization2.txt
===================================================================
--- src/Tests/Expect-f/Initialization2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/Initialization2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,368 @@
+There are 1 alternatives
+Alternative 1 ==============
+instance of struct __anonymous3 
+
+There are 1 alternatives
+Alternative 1 ==============
+instance of struct __anonymous5 
+
+There are 1 alternatives
+Alternative 1 ==============
+instance of struct __anonymous7 
+
+There are 1 alternatives
+Alternative 1 ==============
+instance of struct __anonymous9 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      y: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous1 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous1 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous1 
+    Member Expression, with field: 
+      y: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous1 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous2 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous2 
+    Member Expression, with field: 
+      y: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous3 
+    Member Expression, with field: 
+      y1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous3 
+    Member Expression, with field: 
+      y2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous4 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous4 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous5 
+    Member Expression, with field: 
+      y1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous5 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous5 
+    Member Expression, with field: 
+      y2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous5 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous6 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous6 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous7 
+    Member Expression, with field: 
+      y1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous7 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous7 
+    Member Expression, with field: 
+      y2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous7 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous8 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous8 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous9 
+    Member Expression, with field: 
+      y1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous9 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous9 
+    Member Expression, with field: 
+      y2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous9 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous10 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous10 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        a: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct t 
+    Member Expression, with field: 
+      a: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct t 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        b: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct t 
+    Member Expression, with field: 
+      b: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct t 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous11 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous11 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous11 
+    Member Expression, with field: 
+      y: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous11 
+
Index: src/Tests/Expect-f/LabelledExit.txt
===================================================================
--- src/Tests/Expect-f/LabelledExit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/LabelledExit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,28 @@
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?+=?
+
+Error: No reasonable alternatives for expression Name: ?+=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?+=?
+
+Error: No reasonable alternatives for expression Name: ?+=?
+
+Error: No reasonable alternatives for expression Name: ?+=?
+
+Error: No reasonable alternatives for expression Name: ?+=?
+
+Error: No reasonable alternatives for expression Name: ?+=?
+
+Error: No reasonable alternatives for expression Name: ?+=?
+
+Error: No reasonable alternatives for expression Name: ?+=?
+
+Error: No reasonable alternatives for expression Name: ?+=?
+
+Error: No reasonable alternatives for expression Name: ?+=?
+
Index: src/Tests/Expect-f/Members.txt
===================================================================
--- src/Tests/Expect-f/Members.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/Members.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,64 @@
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+float 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+
+There are 1 alternatives
+Alternative 1 ==============
+
+There are 1 alternatives
+Alternative 1 ==============
+
+There are 1 alternatives
+Alternative 1 ==============
+
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+char 
+
+There are 1 alternatives
+Alternative 1 ==============
+float 
+
+There are 1 alternatives
+Alternative 1 ==============
+pointer to char 
+
+There are 1 alternatives
+Alternative 1 ==============
+
+There are 1 alternatives
+Alternative 1 ==============
+
+There are 1 alternatives
+Alternative 1 ==============
+
+There are 1 alternatives
+Alternative 1 ==============
+
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+lvalue signed int 
+
Index: src/Tests/Expect-f/Misc.txt
===================================================================
--- src/Tests/Expect-f/Misc.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/Misc.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,12 @@
+There are 1 alternatives
+Alternative 1 ==============
+
+There are 1 alternatives
+Alternative 1 ==============
+
+There are 1 alternatives
+Alternative 1 ==============
+
+There are 1 alternatives
+Alternative 1 ==============
+
Index: src/Tests/Expect-f/MiscError.txt
===================================================================
--- src/Tests/Expect-f/MiscError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/MiscError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,83 @@
+Error: Can't choose between alternatives for expression Cast of:
+  Name: b
+
+to:
+  nothing
+Alternatives are:        Cost ( 0, 0, 1 ):         Cast of:
+          Variable Expression: b: signed int 
+
+        to:
+          nothing
+(types:
+)
+        Environment: 
+
+        Cost ( 0, 0, 1 ):         Cast of:
+          Variable Expression: b: float 
+
+        to:
+          nothing
+(types:
+)
+        Environment: 
+
+
+Error: Can't choose between alternatives for expression Cast of:
+  Name: b
+
+to:
+  nothing
+Alternatives are:        Cost ( 0, 0, 1 ):         Cast of:
+          Variable Expression: b: signed int 
+
+        to:
+          nothing
+(types:
+)
+        Environment: 
+
+        Cost ( 0, 0, 1 ):         Cast of:
+          Variable Expression: b: float 
+
+        to:
+          nothing
+(types:
+)
+        Environment: 
+
+
+Error: Can't choose between alternatives for expression Cast of:
+  Comma Expression:
+    Name: a
+
+    Name: b
+
+to:
+  nothing
+Alternatives are:        Cost ( 0, 0, 1 ):         Cast of:
+          Comma Expression:
+            Variable Expression: a: signed int 
+
+            Variable Expression: b: signed int 
+
+        to:
+          nothing
+(types:
+)
+        Environment: 
+
+        Cost ( 0, 0, 1 ):         Cast of:
+          Comma Expression:
+            Variable Expression: a: signed int 
+
+            Variable Expression: b: float 
+
+        to:
+          nothing
+(types:
+)
+        Environment: 
+
+
+Error: Ambiguous expression in sizeof operand: Name: b
+
Index: src/Tests/Expect-f/NamedParmArg.txt
===================================================================
--- src/Tests/Expect-f/NamedParmArg.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/NamedParmArg.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,35 @@
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: f1
+...to: 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: f1
+...to: 
+constant expression 3 signed int 
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: f1
+...to: 
+constant expression 3 signed int 
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Name: 0
+with designator:  Name: j
+
+Error: No reasonable alternatives for expression Name: 0
+with designator:  Name: j
+
+Error: No reasonable alternatives for expression Name: 0
+with designator:  Name: j
+
+Error: No reasonable alternatives for expression Name: 0
+with designator:  Name: j
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: f2
+...to: 
+with designator:  Tuple:
+          Name: j
+
+          Name: i
+
+
Index: src/Tests/Expect-f/NumericConstants.txt
===================================================================
--- src/Tests/Expect-f/NumericConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/NumericConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,158 @@
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+long long signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+long long unsigned int 
+
+There are 1 alternatives
+Alternative 1 ==============
+long long unsigned int 
+
+There are 1 alternatives
+Alternative 1 ==============
+long long unsigned int 
+
+There are 1 alternatives
+Alternative 1 ==============
+long unsigned int 
+
+There are 1 alternatives
+Alternative 1 ==============
+long long unsigned int 
+
+There are 1 alternatives
+Alternative 1 ==============
+unsigned int 
+
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+long unsigned int 
+
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+unsigned int 
+
+There are 1 alternatives
+Alternative 1 ==============
+long signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+unsigned int 
+
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+unsigned int 
+
+There are 1 alternatives
+Alternative 1 ==============
+long long signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+double 
+
+There are 1 alternatives
+Alternative 1 ==============
+double 
+
+There are 1 alternatives
+Alternative 1 ==============
+double 
+
+There are 1 alternatives
+Alternative 1 ==============
+double 
+
+There are 1 alternatives
+Alternative 1 ==============
+long double 
+
+There are 1 alternatives
+Alternative 1 ==============
+double 
+
+There are 1 alternatives
+Alternative 1 ==============
+double 
+
+There are 1 alternatives
+Alternative 1 ==============
+float 
+
+There are 1 alternatives
+Alternative 1 ==============
+float 
+
+There are 1 alternatives
+Alternative 1 ==============
+double 
+
+There are 1 alternatives
+Alternative 1 ==============
+double 
+
+There are 1 alternatives
+Alternative 1 ==============
+double 
+
+There are 1 alternatives
+Alternative 1 ==============
+double 
+
+There are 1 alternatives
+Alternative 1 ==============
+long double 
+
+There are 1 alternatives
+Alternative 1 ==============
+double 
+
+There are 1 alternatives
+Alternative 1 ==============
+long double 
+
+There are 1 alternatives
+Alternative 1 ==============
+long double 
+
+There are 1 alternatives
+Alternative 1 ==============
+double 
+
+There are 1 alternatives
+Alternative 1 ==============
+double 
+
+There are 1 alternatives
+Alternative 1 ==============
+double 
+
+There are 1 alternatives
+Alternative 1 ==============
+long double 
+
+Error: No reasonable alternatives for expression Name: 1
+
Index: src/Tests/Expect-f/OccursError.txt
===================================================================
--- src/Tests/Expect-f/OccursError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/OccursError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,5 @@
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: f
+...to: 
+    Name: g
+
Index: src/Tests/Expect-f/Operators.txt
===================================================================
--- src/Tests/Expect-f/Operators.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/Operators.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,23 @@
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+There are 2 alternatives
+Alternative 1 ==============
+signed int 
+
+Alternative 2 ==============
+char 
+
Index: src/Tests/Expect-f/Quad.txt
===================================================================
--- src/Tests/Expect-f/Quad.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/Quad.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,4 @@
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
Index: src/Tests/Expect-f/Rank2.txt
===================================================================
--- src/Tests/Expect-f/Rank2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/Rank2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,17 @@
+There are 1 alternatives
+Alternative 1 ==============
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: h
+...to: 
+    Applying untyped: 
+        Name: id
+    ...to: 
+        Applying untyped: 
+            Name: id
+        ...to: 
+            Applying untyped: 
+                Name: id
+            ...to: 
+                Name: 0
+
Index: src/Tests/Expect-f/Scope.txt
===================================================================
--- src/Tests/Expect-f/Scope.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/Scope.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,70 @@
+There are 1 alternatives
+Alternative 1 ==============
+instance of type x (not function type) 
+
+There are 1 alternatives
+Alternative 1 ==============
+instance of type t (not function type) 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        a: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      a: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        b: double 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      b: double 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: u
+    Name: y
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: z
+    Name: x
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: x
+    Name: y
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: q
+    Name: y
+
+Error: No reasonable alternatives for expression Name: some_func
+
Index: src/Tests/Expect-f/ScopeErrors.txt
===================================================================
--- src/Tests/Expect-f/ScopeErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/ScopeErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,8 @@
+Error: duplicate function definition for butThisIsAnError: function
+  with parameters
+    double 
+  returning 
+    double 
+  with body 
+    CompoundStmt
+
Index: src/Tests/Expect-f/ShortCircuit.txt
===================================================================
--- src/Tests/Expect-f/ShortCircuit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/ShortCircuit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,9 @@
+There are 1 alternatives
+Alternative 1 ==============
+
+There are 1 alternatives
+Alternative 1 ==============
+
+There are 1 alternatives
+Alternative 1 ==============
+
Index: src/Tests/Expect-f/Statement.txt
===================================================================
--- src/Tests/Expect-f/Statement.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/Statement.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,8 @@
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+lvalue pointer to signed int 
+
Index: src/Tests/Expect-f/StructMember.txt
===================================================================
--- src/Tests/Expect-f/StructMember.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/StructMember.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,560 @@
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m1: signed int with bitfield width constant expression 3 signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m1: signed int with bitfield width constant expression 3 signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m2: signed int with bitfield width constant expression 4 signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m2: signed int with bitfield width constant expression 4 signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m3: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m3: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m4: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m4: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m5: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m5: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m6: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m6: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m7: pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m7: pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m8: pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m8: pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m9: pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m9: pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m10: pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m10: pointer to function
+          accepting unspecified arguments
+        returning 
+          signed int 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m11: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to signed int 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m11: pointer to function
+        with parameters
+          signed int 
+        returning 
+          pointer to signed int 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        T: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      T: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        T: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      T: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m12: pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m12: pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m13: pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m13: pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m14: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to signed int 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m14: pointer to function
+        with parameters
+          signed int 
+        returning 
+          pointer to signed int 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to function
+          accepting unspecified arguments
+        returning 
+          signed int 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to pointer to function
+        with parameters
+          signed int 
+        returning 
+          signed int 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Name: __builtin_memcpy
+
Index: src/Tests/Expect-f/Subrange.txt
===================================================================
--- src/Tests/Expect-f/Subrange.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/Subrange.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,4 @@
+Error: No reasonable alternatives for expression Name: *?
+
+Error: No reasonable alternatives for expression Name: *?
+
Index: src/Tests/Expect-f/Switch.txt
===================================================================
--- src/Tests/Expect-f/Switch.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/Switch.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,20 @@
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
Index: src/Tests/Expect-f/Tuple.txt
===================================================================
--- src/Tests/Expect-f/Tuple.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/Tuple.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,258 @@
+There are 1 alternatives
+Alternative 1 ==============
+instance of struct inner 
+
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+signed int 
+
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        f2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct inner 
+    Member Expression, with field: 
+      f2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct inner 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        f3: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct inner 
+    Member Expression, with field: 
+      f3: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct inner 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        f1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct outer 
+    Member Expression, with field: 
+      f1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct outer 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        f4: double 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct outer 
+    Member Expression, with field: 
+      f4: double 
+    from aggregate: 
+      Variable Expression: _src: instance of struct outer 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Variable Expression: x: short signed int 
+    Variable Expression: w: signed int 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: f
+...to: 
+constant expression 17 signed int 
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: f
+...to: 
+constant expression 17 signed int 
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: r
+    Tuple:
+              Name: x
+
+              Name: y
+
+              Name: z
+
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Variable Expression: a: signed int 
+constant expression 3 signed int 
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Tuple:
+                  Name: a
+
+                  Name: b
+
+    Tuple:
+      constant expression 4.6 double 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Variable Expression: c: signed int 
+constant expression 3 signed int 
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Tuple:
+                  Name: a
+
+                  Name: b
+
+                  Tuple:
+                          Name: c
+
+
+    Tuple:
+      constant expression 2 signed int 
+              Tuple:
+                      Name: a
+
+                      Name: b
+
+
+
+Error: No reasonable alternatives for expression Name: ?!=?
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: t1
+    Tuple:
+              Name: a
+
+              Name: b
+
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: t2
+    Tuple:
+              Name: a
+
+              Name: b
+
+
+Error: No reasonable alternatives for expression Name: ?+=?
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Tuple:
+                  Name: c
+
+                  Name: d
+
+    Name: t1
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: t1
+    Tuple:
+              Name: c
+
+              Name: d
+
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: t2
+    Tuple:
+              Name: c
+
+              Name: d
+
+
+Error: No reasonable alternatives for expression Address of:
+  Tuple:
+    constant expression 3 signed int 
+    constant expression 4 signed int 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: s
+    Tuple:
+      constant expression 11 signed int 
+      constant expression 12 signed int 
+      constant expression 13 signed int 
+      constant expression 3.14159 double 
+
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: sp
+    Name: sp
+
+Error: No reasonable alternatives for expression Name: 0
+
Index: src/Tests/Expect-f/TypeGenerator.txt
===================================================================
--- src/Tests/Expect-f/TypeGenerator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/TypeGenerator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,133 @@
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        data: instance of type T (not function type) 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      data: instance of type T (not function type) 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        next: pointer to instance of type List1 (not function type) 
+        with parameters
+          instance of type T (not function type) 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      next: pointer to instance of type List1 (not function type) 
+      with parameters
+        instance of type T (not function type) 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: instance of type T (not function type) 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S2 
+    Member Expression, with field: 
+      i: instance of type T (not function type) 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: instance of type T (not function type) 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S24 
+    Member Expression, with field: 
+      i: instance of type T (not function type) 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S24 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: instance of type T (not function type) 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous1 
+    Member Expression, with field: 
+      i: instance of type T (not function type) 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous1 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        data: instance of type T (not function type) 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct node 
+    Member Expression, with field: 
+      data: instance of type T (not function type) 
+    from aggregate: 
+      Variable Expression: _src: instance of struct node 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        next: pointer to instance of struct node 
+        with parameters
+          instance of type T (not function type) 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct node 
+    Member Expression, with field: 
+      next: pointer to instance of struct node 
+      with parameters
+        instance of type T (not function type) 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct node 
+
+Error: No reasonable alternatives for expression Cast of:
+  Name: my_list
+
+to:
+  instance of struct node 
+    with parameters
+      signed int 
+
+
Index: src/Tests/Expect-f/Typedef.txt
===================================================================
--- src/Tests/Expect-f/Typedef.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/Typedef.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,20 @@
+There are 1 alternatives
+Alternative 1 ==============
+signed int 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        T: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      T: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
Index: src/Tests/Expect-f/gcc900407-1.txt
===================================================================
--- src/Tests/Expect-f/gcc900407-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/gcc900407-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,8 @@
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?++
+
+Error: No reasonable alternatives for expression Name: ?=?
+
Index: src/Tests/Expect-f/gcc920409-1.txt
===================================================================
--- src/Tests/Expect-f/gcc920409-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/gcc920409-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,2 @@
+Error: No reasonable alternatives for expression Name: ?!=?
+
Index: src/Tests/Expect-f/gcc920409-2.txt
===================================================================
--- src/Tests/Expect-f/gcc920409-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/gcc920409-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,4 @@
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
Index: src/Tests/Expect-f/gcc920410-2.txt
===================================================================
--- src/Tests/Expect-f/gcc920410-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/gcc920410-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,4 @@
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
Index: src/Tests/Expect-f/gcc920501-11.txt
===================================================================
--- src/Tests/Expect-f/gcc920501-11.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/gcc920501-11.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,2 @@
+cfa-cpp: Parser/ExpressionNode.cc:456: virtual Expression* CompositeExprNode::build() const: Assertion `args.size() == 1' failed.
+Aborted (core dumped)
Index: src/Tests/Expect-f/gcc920501-19.txt
===================================================================
--- src/Tests/Expect-f/gcc920501-19.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-f/gcc920501-19.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,2 @@
+Error: No reasonable alternatives for expression Name: ?=?
+
Index: src/Tests/Expect-r/Abstype.txt
===================================================================
--- src/Tests/Expect-r/Abstype.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Abstype.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,1505 @@
+nameExpr is x
+decl is x: function
+  with parameters
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+newExpr is Variable Expression: x: function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: x: function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is t
+decl is t: instance of type T (not function type) 
+newExpr is Variable Expression: t: instance of type T (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: t: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: t: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: x: function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+)
+        Environment: 
+formal type is instance of type T (not function type) 
+actual type is lvalue instance of type T (not function type) 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Variable Expression: t: instance of type T (not function type) 
+--- results are
+        lvalue instance of type T (not function type) 
+
+converting lvalue instance of type T (not function type) 
+ to instance of type T (not function type) 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type T (not function type) 
+actuals are:
+                  Variable Expression: t: instance of type T (not function type) 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: x: function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Variable Expression: t: instance of type T (not function type) 
+
+(types:
+    instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: x: function
+        with parameters
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+  to arguments
+          Variable Expression: t: instance of type T (not function type) 
+
+
+to:
+  instance of type T (not function type) 
+(types:
+    instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: forall
+    DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type DT (not function type) 
+    pointer to instance of type DT (not function type) 
+  returning 
+    pointer to instance of type DT (not function type) 
+
+newExpr is Variable Expression: ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T (not function type) 
+    _src: instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T (not function type) 
+      _src: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type U (not function type) 
+    _src: instance of type U (not function type) 
+  returning 
+    instance of type U (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type U (not function type) 
+
+    to:
+      pointer to pointer to signed int 
+    Cast of:
+      Variable Expression: _src: instance of type U (not function type) 
+
+    to:
+      pointer to signed int 
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type U (not function type) 
+      _src: instance of type U (not function type) 
+    returning 
+      instance of type U (not function type) 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+(types:
+    pointer to forall
+          _0_DT: incomplete type
+        function
+        with parameters
+          pointer to pointer to instance of type _0_DT (not function type) 
+          pointer to instance of type _0_DT (not function type) 
+        returning 
+          pointer to instance of type _0_DT (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T (not function type) 
+      _src: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T (not function type) 
+          _src: instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type U (not function type) 
+      _src: instance of type U (not function type) 
+    returning 
+      instance of type U (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type U (not function type) 
+          _src: instance of type U (not function type) 
+        returning 
+          instance of type U (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _dst: pointer to instance of type U (not function type) 
+(types:
+    lvalue pointer to instance of type U (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is u
+decl is u: instance of type U (not function type) 
+newExpr is Variable Expression: u: instance of type U (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: u: instance of type U (not function type) 
+(types:
+    lvalue instance of type U (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+  Variable Expression: u: instance of type U (not function type) 
+
+to:
+  instance of type U (not function type) 
+(types:
+    instance of type U (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: forall
+    DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type DT (not function type) 
+    pointer to instance of type DT (not function type) 
+  returning 
+    pointer to instance of type DT (not function type) 
+
+newExpr is Variable Expression: ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T (not function type) 
+    _src: instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T (not function type) 
+      _src: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type U (not function type) 
+    _src: instance of type U (not function type) 
+  returning 
+    instance of type U (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type U (not function type) 
+
+    to:
+      pointer to pointer to signed int 
+    Cast of:
+      Variable Expression: _src: instance of type U (not function type) 
+
+    to:
+      pointer to signed int 
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type U (not function type) 
+      _src: instance of type U (not function type) 
+    returning 
+      instance of type U (not function type) 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+(types:
+    pointer to forall
+          _0_DT: incomplete type
+        function
+        with parameters
+          pointer to pointer to instance of type _0_DT (not function type) 
+          pointer to instance of type _0_DT (not function type) 
+        returning 
+          pointer to instance of type _0_DT (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T (not function type) 
+      _src: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T (not function type) 
+          _src: instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type U (not function type) 
+      _src: instance of type U (not function type) 
+    returning 
+      instance of type U (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type U (not function type) 
+          _src: instance of type U (not function type) 
+        returning 
+          instance of type U (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+nameExpr is u_instance
+decl is u_instance: instance of type U (not function type) with initializer 
+Simple Initializer:   Cast of:
+    Variable Expression: u: instance of type U (not function type) 
+
+  to:
+    instance of type U (not function type) 
+  with environment:
+    Types:
+    Non-types:
+
+newExpr is Variable Expression: u_instance: instance of type U (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: u_instance: instance of type U (not function type) 
+(types:
+    lvalue instance of type U (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: u_instance: instance of type U (not function type) 
+(types:
+    pointer to instance of type U (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: u_instance: instance of type U (not function type) 
+(types:
+    pointer to instance of type U (not function type) 
+)
+Environment: 
+
+nameExpr is u
+decl is u: instance of type U (not function type) 
+newExpr is Variable Expression: u: instance of type U (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: u: instance of type U (not function type) 
+(types:
+    lvalue instance of type U (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: u: instance of type U (not function type) 
+(types:
+    lvalue instance of type U (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is pointer to signed int 
+actual type is pointer to instance of type U (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type U (not function type) 
+              _src: instance of type U (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type U (not function type) 
+                  _src: instance of type U (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type U (not function type) 
+actual type is pointer to instance of type U (not function type) 
+formal type is instance of type U (not function type) 
+actual type is lvalue instance of type U (not function type) 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type T (not function type) 
+              _src: instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type T (not function type) 
+                  _src: instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type T (not function type) 
+actual type is pointer to instance of type U (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: forall
+              DT: incomplete type
+            function
+            with parameters
+              pointer to pointer to instance of type DT (not function type) 
+              pointer to instance of type DT (not function type) 
+            returning 
+              pointer to instance of type DT (not function type) 
+
+(types:
+            pointer to forall
+                  _0_DT: incomplete type
+                function
+                with parameters
+                  pointer to pointer to instance of type _0_DT (not function type) 
+                  pointer to instance of type _0_DT (not function type) 
+                returning 
+                  pointer to instance of type _0_DT (not function type) 
+
+)
+        Environment: 
+formal type is pointer to pointer to instance of type _0_DT (not function type) 
+actual type is pointer to instance of type U (not function type) 
+actual expression:
+        Address of:
+          Variable Expression: u_instance: instance of type U (not function type) 
+--- results are
+        pointer to instance of type U (not function type) 
+
+converting pointer to instance of type U (not function type) 
+ to pointer to instance of type U (not function type) 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: u: instance of type U (not function type) 
+--- results are
+        lvalue instance of type U (not function type) 
+
+converting lvalue instance of type U (not function type) 
+ to instance of type U (not function type) 
+cost is( 0, 0, 2 )
+Case +++++++++++++
+formals are:
+        _dst: pointer to instance of type U (not function type) 
+        _src: instance of type U (not function type) 
+actuals are:
+                  Address of:
+            Variable Expression: u_instance: instance of type U (not function type) 
+
+                  Cast of:
+            Variable Expression: u: instance of type U (not function type) 
+
+          to:
+            instance of type U (not function type) 
+
+bindings are:
+cost of conversion is:( 0, 0, 2 )
+alternatives before prune:
+Cost ( 0, 0, 2 ): Application of
+  Variable Expression: ?=?: function
+      with parameters
+        _dst: pointer to instance of type U (not function type) 
+        _src: instance of type U (not function type) 
+      returning 
+        instance of type U (not function type) 
+
+to arguments
+      Address of:
+      Variable Expression: u_instance: instance of type U (not function type) 
+
+      Cast of:
+      Variable Expression: u: instance of type U (not function type) 
+
+    to:
+      instance of type U (not function type) 
+
+(types:
+    instance of type U (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?=?: function
+        with parameters
+          _dst: pointer to instance of type U (not function type) 
+          _src: instance of type U (not function type) 
+        returning 
+          instance of type U (not function type) 
+
+  to arguments
+          Address of:
+        Variable Expression: u_instance: instance of type U (not function type) 
+
+          Cast of:
+        Variable Expression: u: instance of type U (not function type) 
+
+      to:
+        instance of type U (not function type) 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?++
+decl is ?++: function
+  with parameters
+    pointer to signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?++: function
+    with parameters
+      pointer to signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?++: function
+    with parameters
+      pointer to signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is *?
+decl is *?: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    pointer to instance of type T (not function type) 
+  returning 
+    lvalue instance of type T (not function type) 
+
+newExpr is Variable Expression: *?: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      pointer to instance of type T (not function type) 
+    returning 
+      lvalue instance of type T (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: *?: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      pointer to instance of type T (not function type) 
+    returning 
+      lvalue instance of type T (not function type) 
+
+(types:
+    pointer to forall
+          _0_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+
+        function
+        with parameters
+          pointer to instance of type _0_T (not function type) 
+        returning 
+          lvalue instance of type _0_T (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is u
+decl is u: instance of type U (not function type) 
+newExpr is Variable Expression: u: instance of type U (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: u: instance of type U (not function type) 
+(types:
+    lvalue instance of type U (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: u: instance of type U (not function type) 
+(types:
+    lvalue instance of type U (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: *?: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              pointer to instance of type T (not function type) 
+            returning 
+              lvalue instance of type T (not function type) 
+
+(types:
+            pointer to forall
+                  _0_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _0_T (not function type) 
+
+
+                function
+                with parameters
+                  pointer to instance of type _0_T (not function type) 
+                returning 
+                  lvalue instance of type _0_T (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type _0_T (not function type) 
+actual type is lvalue instance of type U (not function type) 
+need assertions:
+?=?: pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+
+inferRecursive: candidate is ?=?: forall
+    DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type DT (not function type) 
+    pointer to instance of type DT (not function type) 
+  returning 
+    pointer to instance of type DT (not function type) 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to forall
+    _1_DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type _1_DT (not function type) 
+    pointer to instance of type _1_DT (not function type) 
+  returning 
+    pointer to instance of type _1_DT (not function type) 
+
+inferRecursive: candidate is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T (not function type) 
+    _src: instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    _dst: pointer to instance of type T (not function type) 
+    _src: instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+inferRecursive: candidate is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type U (not function type) 
+    _src: instance of type U (not function type) 
+  returning 
+    instance of type U (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type U (not function type) 
+
+    to:
+      pointer to pointer to signed int 
+    Cast of:
+      Variable Expression: _src: instance of type U (not function type) 
+
+    to:
+      pointer to signed int 
+
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    _dst: pointer to instance of type U (not function type) 
+    _src: instance of type U (not function type) 
+  returning 
+    instance of type U (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+success!
+satisfying assertion 15 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with declaration 25 ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+actual expression:
+        Variable Expression: u: instance of type U (not function type) 
+--- results are
+        lvalue instance of type U (not function type) 
+
+converting lvalue instance of type U (not function type) 
+ to pointer to instance of type _0_T (not function type) 
+cost is( 0, 0, 1 )
+
+converting pointer to function
+          with parameters
+            pointer to signed int 
+            signed int 
+          returning 
+            signed int 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        pointer to instance of type _0_T (not function type) 
+actuals are:
+                  Cast of:
+            Variable Expression: u: instance of type U (not function type) 
+
+          to:
+            pointer to signed int 
+
+bindings are:
+        ( _0_T ) -> signed int  (no widening)
+cost of conversion is:( 0, 4, 1 )
+alternatives before prune:
+Cost ( 0, 4, 1 ): Application of
+  Variable Expression: *?: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        pointer to instance of type T (not function type) 
+      returning 
+        lvalue instance of type T (not function type) 
+
+to arguments
+      Cast of:
+      Variable Expression: u: instance of type U (not function type) 
+
+    to:
+      pointer to signed int 
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    lvalue instance of type _0_T (not function type) 
+)
+Environment:   ( _0_T ) -> signed int  (no widening)
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 4, 1 ): Address of:
+  Application of
+    Variable Expression: *?: forall
+          T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type T (not function type) 
+                    instance of type T (not function type) 
+                  returning 
+                    instance of type T (not function type) 
+
+
+        function
+        with parameters
+          pointer to instance of type T (not function type) 
+        returning 
+          lvalue instance of type T (not function type) 
+
+  to arguments
+          Cast of:
+        Variable Expression: u: instance of type U (not function type) 
+
+      to:
+        pointer to signed int 
+
+  with inferred parameters:
+    ?=?: function
+      with parameters
+        pointer to signed int 
+        signed int 
+      returning 
+        signed int 
+
+(types:
+    pointer to signed int 
+)
+Environment:   ( _0_T ) -> signed int  (no widening)
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 4, 1 ): Address of:
+  Application of
+    Variable Expression: *?: forall
+          T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type T (not function type) 
+                    instance of type T (not function type) 
+                  returning 
+                    instance of type T (not function type) 
+
+
+        function
+        with parameters
+          pointer to instance of type T (not function type) 
+        returning 
+          lvalue instance of type T (not function type) 
+
+  to arguments
+          Cast of:
+        Variable Expression: u: instance of type U (not function type) 
+
+      to:
+        pointer to signed int 
+
+  with inferred parameters:
+    ?=?: function
+      with parameters
+        pointer to signed int 
+        signed int 
+      returning 
+        signed int 
+
+(types:
+    pointer to signed int 
+)
+Environment:   ( _0_T ) -> signed int  (no widening)
+
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?++: function
+            with parameters
+              pointer to signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is pointer to signed int 
+actual type is pointer to signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Address of:
+          Application of
+            Variable Expression: *?: forall
+                  T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type T (not function type) 
+                            instance of type T (not function type) 
+                          returning 
+                            instance of type T (not function type) 
+
+
+                function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                returning 
+                  lvalue instance of type T (not function type) 
+
+          to arguments
+                          Cast of:
+                Variable Expression: u: instance of type U (not function type) 
+
+              to:
+                pointer to signed int 
+
+          with inferred parameters:
+            ?=?: function
+              with parameters
+                pointer to signed int 
+                signed int 
+              returning 
+                signed int 
+
+--- results are
+        pointer to signed int 
+
+converting pointer to signed int 
+ to pointer to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        pointer to signed int 
+actuals are:
+                  Address of:
+            Application of
+              Variable Expression: *?: forall
+                    T: type
+                      with assertions
+                        ?=?: pointer to function
+                            with parameters
+                              pointer to instance of type T (not function type) 
+                              instance of type T (not function type) 
+                            returning 
+                              instance of type T (not function type) 
+
+
+                  function
+                  with parameters
+                    pointer to instance of type T (not function type) 
+                  returning 
+                    lvalue instance of type T (not function type) 
+
+            to arguments
+                              Cast of:
+                  Variable Expression: u: instance of type U (not function type) 
+
+                to:
+                  pointer to signed int 
+
+            with inferred parameters:
+              ?=?: function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+
+bindings are:
+        ( _0_T ) -> signed int  (no widening)
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?++: function
+      with parameters
+        pointer to signed int 
+      returning 
+        signed int 
+
+to arguments
+      Address of:
+      Application of
+        Variable Expression: *?: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              pointer to instance of type T (not function type) 
+            returning 
+              lvalue instance of type T (not function type) 
+
+      to arguments
+                  Cast of:
+            Variable Expression: u: instance of type U (not function type) 
+
+          to:
+            pointer to signed int 
+
+      with inferred parameters:
+        ?=?: function
+          with parameters
+            pointer to signed int 
+            signed int 
+          returning 
+            signed int 
+
+
+(types:
+    signed int 
+)
+Environment:   ( _0_T ) -> signed int  (no widening)
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?++: function
+        with parameters
+          pointer to signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Address of:
+        Application of
+          Variable Expression: *?: forall
+                T: type
+                  with assertions
+                    ?=?: pointer to function
+                        with parameters
+                          pointer to instance of type T (not function type) 
+                          instance of type T (not function type) 
+                        returning 
+                          instance of type T (not function type) 
+
+
+              function
+              with parameters
+                pointer to instance of type T (not function type) 
+              returning 
+                lvalue instance of type T (not function type) 
+
+        to arguments
+                      Cast of:
+              Variable Expression: u: instance of type U (not function type) 
+
+            to:
+              pointer to signed int 
+
+        with inferred parameters:
+          ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+
+
+to:
+  nothing
+(types:
+)
+Environment:   ( _0_T ) -> signed int  (no widening)
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is u
+decl is u: instance of type U (not function type) 
+newExpr is Variable Expression: u: instance of type U (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: u: instance of type U (not function type) 
+(types:
+    lvalue instance of type U (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+  Variable Expression: u: instance of type U (not function type) 
+
+to:
+  instance of type U (not function type) 
+(types:
+    instance of type U (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is u
+decl is u: instance of type U (not function type) 
+newExpr is Variable Expression: u: instance of type U (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: u: instance of type U (not function type) 
+(types:
+    lvalue instance of type U (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Variable Expression: u: instance of type U (not function type) 
+
+to:
+  pointer to signed int 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+Error: No reasonable alternatives for expression Cast of:
+  Variable Expression: _dst: pointer to instance of type U (not function type) 
+
+to:
+  pointer to pointer to signed int 
+
Index: src/Tests/Expect-r/Array.txt
===================================================================
--- src/Tests/Expect-r/Array.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Array.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,98 @@
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3.0 double (types:
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 1, 0, 0 ): Cast of:
+constant expression 3.0 double 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+int __a1__A0i[];
+int __a2__A0i[*];
+double __a4__A0d[((long unsigned int )3.0)];
+int __m1__A0A0i[][3];
+int __m2__A0A0i[*][*];
+int __m4__A0A0i[((long unsigned int )3)][3];
+int __fred__Fi__(){
+    int __a1__A0i[];
+    int __a2__A0i[*];
+    int __a4__A0i[((long unsigned int )3)];
+    int __T__A0i[((long unsigned int )3)];
+}
+int __mary__Fi_PiCPiPiCPi_(int __T__Pi[3], int __p1__CPi[const 3], int __p2__Pi[static 3], int __p3__CPi[static const 3]){
+}
+int (*__tom__FPA0i__())[3]{
+}
+int (*__jane__FPFi_PiCPiPiCPi___())(int __T__Pi[3], int __p1__CPi[const 3], int __p2__Pi[static 3], int __p3__CPi[static const 3]){
+}
Index: src/Tests/Expect-r/AsmName.txt
===================================================================
--- src/Tests/Expect-r/AsmName.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/AsmName.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,5 @@
+extern int __x__i;
+int __fred__Fi_i_(int __x__i){
+    static int __y__i;
+    static int *__z__Pi;
+}
Index: src/Tests/Expect-r/Attributes.txt
===================================================================
--- src/Tests/Expect-r/Attributes.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Attributes.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,1 @@
+Error at line 58 reading token "*"
Index: src/Tests/Expect-r/Cast.txt
===================================================================
--- src/Tests/Expect-r/Cast.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Cast.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,2235 @@
+nameExpr is f
+decl is f: function
+    accepting unspecified arguments
+  returning 
+    nothing 
+  with body 
+    CompoundStmt
+      Declaration of f: char 
+      Declaration of f: double 
+              Expression Statement:
+          Cast of:
+            Name: f
+
+          to:
+            signed int 
+
+      Declaration of f: short signed int 
+              Expression Statement:
+          Cast of:
+            Name: f
+
+          to:
+            signed int 
+
+              Expression Statement:
+          Cast of:
+            Name: f
+
+          to:
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  nothing 
+
+
+              Expression Statement:
+          Cast of:
+            Tuple:
+                              Name: f
+
+                              Name: f
+
+                              Name: f
+
+
+          to:
+            long signed int 
+            long double 
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  nothing 
+
+
+
+newExpr is Variable Expression: f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+
+
+decl is f: char 
+newExpr is Variable Expression: f: char 
+
+decl is f: double 
+newExpr is Variable Expression: f: double 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+there are 3 alternatives before elimination
+there are 3 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 4 ): Cast of:
+  Variable Expression: f: char 
+
+to:
+  signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Cast of:
+    Variable Expression: f: char 
+
+  to:
+    signed int 
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is f
+decl is f: function
+    accepting unspecified arguments
+  returning 
+    nothing 
+  with body 
+    CompoundStmt
+      Declaration of f: char 
+      Declaration of f: double 
+              Expression Statement:
+          Cast of:
+            Variable Expression: f: char 
+
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      Declaration of f: short signed int 
+              Expression Statement:
+          Cast of:
+            Name: f
+
+          to:
+            signed int 
+
+              Expression Statement:
+          Cast of:
+            Name: f
+
+          to:
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  nothing 
+
+
+              Expression Statement:
+          Cast of:
+            Tuple:
+                              Name: f
+
+                              Name: f
+
+                              Name: f
+
+
+          to:
+            long signed int 
+            long double 
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  nothing 
+
+
+
+newExpr is Variable Expression: f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+
+
+decl is f: char 
+newExpr is Variable Expression: f: char 
+
+decl is f: double 
+newExpr is Variable Expression: f: double 
+
+decl is f: short signed int 
+newExpr is Variable Expression: f: short signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+  Variable Expression: f: short signed int 
+
+to:
+  signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Cast of:
+    Variable Expression: f: short signed int 
+
+  to:
+    signed int 
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is f
+decl is f: function
+    accepting unspecified arguments
+  returning 
+    nothing 
+  with body 
+    CompoundStmt
+      Declaration of f: char 
+      Declaration of f: double 
+              Expression Statement:
+          Cast of:
+            Variable Expression: f: char 
+
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      Declaration of f: short signed int 
+              Expression Statement:
+          Cast of:
+            Variable Expression: f: short signed int 
+
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Cast of:
+            Name: f
+
+          to:
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  nothing 
+
+
+              Expression Statement:
+          Cast of:
+            Tuple:
+                              Name: f
+
+                              Name: f
+
+                              Name: f
+
+
+          to:
+            long signed int 
+            long double 
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  nothing 
+
+
+
+newExpr is Variable Expression: f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+
+
+decl is f: char 
+newExpr is Variable Expression: f: char 
+
+decl is f: double 
+newExpr is Variable Expression: f: double 
+
+decl is f: short signed int 
+newExpr is Variable Expression: f: short signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: f: function
+        accepting unspecified arguments
+      returning 
+        nothing 
+
+
+to:
+  pointer to function
+        accepting unspecified arguments
+      returning 
+        nothing 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Cast of:
+    Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+  to:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is f
+decl is f: function
+    accepting unspecified arguments
+  returning 
+    nothing 
+  with body 
+    CompoundStmt
+      Declaration of f: char 
+      Declaration of f: double 
+              Expression Statement:
+          Cast of:
+            Variable Expression: f: char 
+
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      Declaration of f: short signed int 
+              Expression Statement:
+          Cast of:
+            Variable Expression: f: short signed int 
+
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Cast of:
+            Variable Expression: f: function
+                  accepting unspecified arguments
+                returning 
+                  nothing 
+
+
+          to:
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  nothing 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Cast of:
+            Tuple:
+                              Name: f
+
+                              Name: f
+
+                              Name: f
+
+
+          to:
+            long signed int 
+            long double 
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  nothing 
+
+
+
+newExpr is Variable Expression: f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+
+
+decl is f: char 
+newExpr is Variable Expression: f: char 
+
+decl is f: double 
+newExpr is Variable Expression: f: double 
+
+decl is f: short signed int 
+newExpr is Variable Expression: f: short signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+nameExpr is f
+decl is f: function
+    accepting unspecified arguments
+  returning 
+    nothing 
+  with body 
+    CompoundStmt
+      Declaration of f: char 
+      Declaration of f: double 
+              Expression Statement:
+          Cast of:
+            Variable Expression: f: char 
+
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      Declaration of f: short signed int 
+              Expression Statement:
+          Cast of:
+            Variable Expression: f: short signed int 
+
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Cast of:
+            Variable Expression: f: function
+                  accepting unspecified arguments
+                returning 
+                  nothing 
+
+
+          to:
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  nothing 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Cast of:
+            Tuple:
+                              Name: f
+
+                              Name: f
+
+                              Name: f
+
+
+          to:
+            long signed int 
+            long double 
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  nothing 
+
+
+
+newExpr is Variable Expression: f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+
+
+decl is f: char 
+newExpr is Variable Expression: f: char 
+
+decl is f: double 
+newExpr is Variable Expression: f: double 
+
+decl is f: short signed int 
+newExpr is Variable Expression: f: short signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+nameExpr is f
+decl is f: function
+    accepting unspecified arguments
+  returning 
+    nothing 
+  with body 
+    CompoundStmt
+      Declaration of f: char 
+      Declaration of f: double 
+              Expression Statement:
+          Cast of:
+            Variable Expression: f: char 
+
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      Declaration of f: short signed int 
+              Expression Statement:
+          Cast of:
+            Variable Expression: f: short signed int 
+
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Cast of:
+            Variable Expression: f: function
+                  accepting unspecified arguments
+                returning 
+                  nothing 
+
+
+          to:
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  nothing 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Cast of:
+            Tuple:
+                              Name: f
+
+                              Name: f
+
+                              Name: f
+
+
+          to:
+            long signed int 
+            long double 
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  nothing 
+
+
+
+newExpr is Variable Expression: f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+
+
+decl is f: char 
+newExpr is Variable Expression: f: char 
+
+decl is f: double 
+newExpr is Variable Expression: f: double 
+
+decl is f: short signed int 
+newExpr is Variable Expression: f: short signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+(types:
+    lvalue short signed int 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: double 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+(types:
+    lvalue double 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: char 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+(types:
+    lvalue char 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue short signed int 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+(types:
+    lvalue short signed int 
+    lvalue short signed int 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: double 
+
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+(types:
+    lvalue double 
+    lvalue short signed int 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: char 
+
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+(types:
+    lvalue char 
+    lvalue short signed int 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: double 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue double 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: double 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+(types:
+    lvalue short signed int 
+    lvalue double 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: double 
+
+      Variable Expression: f: double 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+(types:
+    lvalue double 
+    lvalue double 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: char 
+
+      Variable Expression: f: double 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+(types:
+    lvalue char 
+    lvalue double 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: char 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue char 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: char 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+(types:
+    lvalue short signed int 
+    lvalue char 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: double 
+
+      Variable Expression: f: char 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+(types:
+    lvalue double 
+    lvalue char 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: char 
+
+      Variable Expression: f: char 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+(types:
+    lvalue char 
+    lvalue char 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: short signed int 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue short signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: short signed int 
+
+(types:
+    lvalue short signed int 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue short signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: double 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: short signed int 
+
+(types:
+    lvalue double 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue short signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: char 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: short signed int 
+
+(types:
+    lvalue char 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue short signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: short signed int 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue short signed int 
+    lvalue short signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: short signed int 
+
+(types:
+    lvalue short signed int 
+    lvalue short signed int 
+    lvalue short signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: double 
+
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: short signed int 
+
+(types:
+    lvalue double 
+    lvalue short signed int 
+    lvalue short signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: char 
+
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: short signed int 
+
+(types:
+    lvalue char 
+    lvalue short signed int 
+    lvalue short signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: double 
+
+      Variable Expression: f: short signed int 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue double 
+    lvalue short signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: double 
+
+      Variable Expression: f: short signed int 
+
+(types:
+    lvalue short signed int 
+    lvalue double 
+    lvalue short signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: double 
+
+      Variable Expression: f: double 
+
+      Variable Expression: f: short signed int 
+
+(types:
+    lvalue double 
+    lvalue double 
+    lvalue short signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: char 
+
+      Variable Expression: f: double 
+
+      Variable Expression: f: short signed int 
+
+(types:
+    lvalue char 
+    lvalue double 
+    lvalue short signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: char 
+
+      Variable Expression: f: short signed int 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue char 
+    lvalue short signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: char 
+
+      Variable Expression: f: short signed int 
+
+(types:
+    lvalue short signed int 
+    lvalue char 
+    lvalue short signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: double 
+
+      Variable Expression: f: char 
+
+      Variable Expression: f: short signed int 
+
+(types:
+    lvalue double 
+    lvalue char 
+    lvalue short signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: char 
+
+      Variable Expression: f: char 
+
+      Variable Expression: f: short signed int 
+
+(types:
+    lvalue char 
+    lvalue char 
+    lvalue short signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: double 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: double 
+
+(types:
+    lvalue short signed int 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: double 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: double 
+
+(types:
+    lvalue double 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: char 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: double 
+
+(types:
+    lvalue char 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: double 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue short signed int 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: double 
+
+(types:
+    lvalue short signed int 
+    lvalue short signed int 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: double 
+
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: double 
+
+(types:
+    lvalue double 
+    lvalue short signed int 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: char 
+
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: double 
+
+(types:
+    lvalue char 
+    lvalue short signed int 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: double 
+
+      Variable Expression: f: double 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue double 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: double 
+
+      Variable Expression: f: double 
+
+(types:
+    lvalue short signed int 
+    lvalue double 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: double 
+
+      Variable Expression: f: double 
+
+      Variable Expression: f: double 
+
+(types:
+    lvalue double 
+    lvalue double 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: char 
+
+      Variable Expression: f: double 
+
+      Variable Expression: f: double 
+
+(types:
+    lvalue char 
+    lvalue double 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: char 
+
+      Variable Expression: f: double 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue char 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: char 
+
+      Variable Expression: f: double 
+
+(types:
+    lvalue short signed int 
+    lvalue char 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: double 
+
+      Variable Expression: f: char 
+
+      Variable Expression: f: double 
+
+(types:
+    lvalue double 
+    lvalue char 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: char 
+
+      Variable Expression: f: char 
+
+      Variable Expression: f: double 
+
+(types:
+    lvalue char 
+    lvalue char 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: char 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: char 
+
+(types:
+    lvalue short signed int 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: double 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: char 
+
+(types:
+    lvalue double 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: char 
+
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: char 
+
+(types:
+    lvalue char 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: char 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue short signed int 
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: char 
+
+(types:
+    lvalue short signed int 
+    lvalue short signed int 
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: double 
+
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: char 
+
+(types:
+    lvalue double 
+    lvalue short signed int 
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: char 
+
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: char 
+
+(types:
+    lvalue char 
+    lvalue short signed int 
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: double 
+
+      Variable Expression: f: char 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue double 
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: double 
+
+      Variable Expression: f: char 
+
+(types:
+    lvalue short signed int 
+    lvalue double 
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: double 
+
+      Variable Expression: f: double 
+
+      Variable Expression: f: char 
+
+(types:
+    lvalue double 
+    lvalue double 
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: char 
+
+      Variable Expression: f: double 
+
+      Variable Expression: f: char 
+
+(types:
+    lvalue char 
+    lvalue double 
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+      Variable Expression: f: char 
+
+      Variable Expression: f: char 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+    lvalue char 
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: short signed int 
+
+      Variable Expression: f: char 
+
+      Variable Expression: f: char 
+
+(types:
+    lvalue short signed int 
+    lvalue char 
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: double 
+
+      Variable Expression: f: char 
+
+      Variable Expression: f: char 
+
+(types:
+    lvalue double 
+    lvalue char 
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: f: char 
+
+      Variable Expression: f: char 
+
+      Variable Expression: f: char 
+
+(types:
+    lvalue char 
+    lvalue char 
+    lvalue char 
+)
+Environment: 
+
+there are 64 alternatives before elimination
+there are 64 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 4 ): Cast of:
+  Tuple:
+          Variable Expression: f: short signed int 
+
+          Variable Expression: f: double 
+
+          Variable Expression: f: function
+            accepting unspecified arguments
+          returning 
+            nothing 
+
+
+
+to:
+  long signed int 
+  long double 
+  pointer to function
+        accepting unspecified arguments
+      returning 
+        nothing 
+
+(types:
+    long signed int 
+    long double 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 3 ): Cast of:
+  Cast of:
+    Tuple:
+              Variable Expression: f: short signed int 
+
+              Variable Expression: f: double 
+
+              Variable Expression: f: function
+              accepting unspecified arguments
+            returning 
+              nothing 
+
+
+
+  to:
+    long signed int 
+    long double 
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+char __f__c;
+void __f__F__(){
+    char __f__c;
+    double __f__d;
+    ((int )__f__c);
+    short __f__s;
+    ((int )__f__s);
+    ((void (*)())__f__F__);
+    ((long int ));
+}
Index: src/Tests/Expect-r/CastError.txt
===================================================================
--- src/Tests/Expect-r/CastError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/CastError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,197 @@
+nameExpr is f
+decl is f: function
+    accepting unspecified arguments
+  returning 
+    nothing 
+  with body 
+    CompoundStmt
+      Declaration of f: signed int 
+      Declaration of f: double 
+              Expression Statement:
+          Cast of:
+            Name: f
+
+          to:
+            char 
+
+              Expression Statement:
+          Cast of:
+            Name: f
+
+          to:
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  signed int 
+
+
+
+newExpr is Variable Expression: f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+
+
+decl is f: double 
+newExpr is Variable Expression: f: double 
+
+decl is f: signed int 
+newExpr is Variable Expression: f: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 3 alternatives before elimination
+there are 3 alternatives after elimination
+alternatives before prune:
+Cost ( 1, 0, 0 ): Cast of:
+  Variable Expression: f: signed int 
+
+to:
+  char 
+(types:
+    char 
+)
+Environment: 
+
+Cost ( 1, 0, 0 ): Cast of:
+  Variable Expression: f: double 
+
+to:
+  char 
+(types:
+    char 
+)
+Environment: 
+
+marking ambiguous
+there are 1 alternatives before elimination
+nameExpr is f
+decl is f: function
+    accepting unspecified arguments
+  returning 
+    nothing 
+  with body 
+    CompoundStmt
+      Declaration of f: signed int 
+      Declaration of f: double 
+              Expression Statement:
+          Cast of:
+            Name: f
+
+          to:
+            char 
+
+              Expression Statement:
+          Cast of:
+            Name: f
+
+          to:
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  signed int 
+
+
+
+newExpr is Variable Expression: f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+
+
+decl is f: double 
+newExpr is Variable Expression: f: double 
+
+decl is f: signed int 
+newExpr is Variable Expression: f: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 3 alternatives before elimination
+there are 3 alternatives after elimination
+Error: Can't choose between alternatives for expression Cast of:
+  Name: f
+
+to:
+  char 
+Alternatives are:        Cost ( 1, 0, 0 ):         Cast of:
+          Variable Expression: f: signed int 
+
+        to:
+          char 
+(types:
+            char 
+)
+        Environment: 
+
+        Cost ( 1, 0, 0 ):         Cast of:
+          Variable Expression: f: double 
+
+        to:
+          char 
+(types:
+            char 
+)
+        Environment: 
+
+
+Error: No reasonable alternatives for expression Cast of:
+  Name: f
+
+to:
+  pointer to function
+        accepting unspecified arguments
+      returning 
+        signed int 
+
+
Index: src/Tests/Expect-r/CharStringConstants.txt
===================================================================
--- src/Tests/Expect-r/CharStringConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/CharStringConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,1242 @@
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression ' ' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression ' ' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 'a' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 'a' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '"' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '"' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '_' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '_' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '\a' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '\a' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '\b' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '\b' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '\e' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '\e' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '\f' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '\f' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '\n' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '\n' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '\r' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '\r' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '\t' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '\t' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '\v' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '\v' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '\'' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '\'' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '\"' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '\"' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '\?' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '\?' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '\\' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '\\' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '\0' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '\0' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '\377' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '\377' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '\xf' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '\xf' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '\xff' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '\xff' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 'aa' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 'aa' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 'a\na' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 'a\na' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 'a\0a' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 'a\0a' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '\xfff' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '\xfff' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '_\377_' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '_\377_' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '_\xff_' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '_\xff_' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '\xffff' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '\xffff' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 'a\xff34w' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 'a\xff34w' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '\xff' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '\xff' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '\xffff' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '\xffff' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression " " array of char with dimension of constant expression 4 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression " " array of char with dimension of constant expression 4 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "a" array of char with dimension of constant expression 4 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "a" array of char with dimension of constant expression 4 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "'" array of char with dimension of constant expression 4 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "'" array of char with dimension of constant expression 4 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression '_' char (types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression '_' char 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "\a" array of char with dimension of constant expression 5 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "\a" array of char with dimension of constant expression 5 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "\b" array of char with dimension of constant expression 5 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "\b" array of char with dimension of constant expression 5 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "\e" array of char with dimension of constant expression 5 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "\e" array of char with dimension of constant expression 5 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "\f" array of char with dimension of constant expression 5 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "\f" array of char with dimension of constant expression 5 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "\n" array of char with dimension of constant expression 5 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "\n" array of char with dimension of constant expression 5 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "\r" array of char with dimension of constant expression 5 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "\r" array of char with dimension of constant expression 5 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "\t" array of char with dimension of constant expression 5 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "\t" array of char with dimension of constant expression 5 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "\v" array of char with dimension of constant expression 5 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "\v" array of char with dimension of constant expression 5 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "\'" array of char with dimension of constant expression 5 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "\'" array of char with dimension of constant expression 5 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "\"" array of char with dimension of constant expression 5 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "\"" array of char with dimension of constant expression 5 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "\?" array of char with dimension of constant expression 5 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "\?" array of char with dimension of constant expression 5 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "\\" array of char with dimension of constant expression 5 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "\\" array of char with dimension of constant expression 5 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "\0" array of char with dimension of constant expression 5 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "\0" array of char with dimension of constant expression 5 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "\377" array of char with dimension of constant expression 7 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "\377" array of char with dimension of constant expression 7 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "\xf" array of char with dimension of constant expression 6 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "\xf" array of char with dimension of constant expression 6 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "\xff" array of char with dimension of constant expression 7 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "\xff" array of char with dimension of constant expression 7 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "" array of char with dimension of constant expression 3 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "" array of char with dimension of constant expression 3 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "aa" array of char with dimension of constant expression 5 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "aa" array of char with dimension of constant expression 5 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "a\na" array of char with dimension of constant expression 7 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "a\na" array of char with dimension of constant expression 7 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "a\0a" array of char with dimension of constant expression 7 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "a\0a" array of char with dimension of constant expression 7 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "_\377_" array of char with dimension of constant expression 9 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "_\377_" array of char with dimension of constant expression 9 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "_\xff_" array of char with dimension of constant expression 9 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "_\xff_" array of char with dimension of constant expression 9 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "\xff" array of char with dimension of constant expression 7 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "\xff" array of char with dimension of constant expression 7 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "\xffff" array of char with dimension of constant expression 9 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "\xffff" array of char with dimension of constant expression 9 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "\xfff" array of char with dimension of constant expression 8 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "\xfff" array of char with dimension of constant expression 8 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "a\xff34w" array of char with dimension of constant expression 11 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "a\xff34w" array of char with dimension of constant expression 11 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "\xffff" array of char with dimension of constant expression 9 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression "\xffff" array of char with dimension of constant expression 9 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+int main(){
+    ' ';
+    'a';
+    '"';
+    '_';
+    '\a';
+    '\b';
+    '\e';
+    '\f';
+    '\n';
+    '\r';
+    '\t';
+    '\v';
+    '\'';
+    '\"';
+    '\?';
+    '\\';
+    '\0';
+    '\377';
+    '\xf';
+    '\xff';
+    '';
+    'aa';
+    'a\na';
+    'a\0a';
+    '\xfff';
+    '_\377_';
+    '_\xff_';
+    '\xffff';
+    'a\xff34w';
+    '\xff';
+    '\xffff';
+    " ";
+    "a";
+    "'";
+    '_';
+    "\a";
+    "\b";
+    "\e";
+    "\f";
+    "\n";
+    "\r";
+    "\t";
+    "\v";
+    "\'";
+    "\"";
+    "\?";
+    "\\";
+    "\0";
+    "\377";
+    "\xf";
+    "\xff";
+    "";
+    "aa";
+    "a\na";
+    "a\0a";
+    "_\377_";
+    "_\xff_";
+    "\xff";
+    "\xffff";
+    "\xfff";
+    "a\xff34w";
+    "\xffff";
+}
Index: src/Tests/Expect-r/CommentMisc.txt
===================================================================
--- src/Tests/Expect-r/CommentMisc.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/CommentMisc.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,27 @@
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+int __i__i;
+int __i__i;
+int __i__i;
+int __i__i;
+int main(){
+    int __x__A0i[((long unsigned int )10)];
+}
Index: src/Tests/Expect-r/Constant0-1.txt
===================================================================
--- src/Tests/Expect-r/Constant0-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Constant0-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,3010 @@
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue instance of struct __anonymous0 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+(types:
+    instance of struct __anonymous0 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous1 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous1 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous1 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous1 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous1 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous1 
+(types:
+    lvalue instance of struct __anonymous1 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+(types:
+    instance of struct __anonymous1 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous2 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+there are 3 alternatives before elimination
+there are 3 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous2 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous2 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous2 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous2 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous2 
+(types:
+    lvalue instance of struct __anonymous2 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+(types:
+    instance of struct __anonymous2 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous3 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous3 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous3 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous3 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous3 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous3 
+(types:
+    lvalue instance of struct __anonymous3 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+(types:
+    instance of struct __anonymous3 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous4 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+there are 5 alternatives before elimination
+there are 5 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous4 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous4 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous4 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous4 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous4 
+(types:
+    lvalue instance of struct __anonymous4 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+(types:
+    instance of struct __anonymous4 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous5 
+    _src: instance of struct __anonymous5 
+  returning 
+    instance of struct __anonymous5 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous5 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous5 
+          _src: instance of struct __anonymous5 
+        returning 
+          instance of struct __anonymous5 
+
+)
+Environment: 
+
+there are 6 alternatives before elimination
+there are 6 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous5 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous5 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous5 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous5 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous5 
+              _src: instance of struct __anonymous5 
+            returning 
+              instance of struct __anonymous5 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous5 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous5 
+(types:
+    lvalue instance of struct __anonymous5 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous5 
+
+to:
+  instance of struct __anonymous5 
+(types:
+    instance of struct __anonymous5 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous5 
+    _src: instance of struct __anonymous5 
+  returning 
+    instance of struct __anonymous5 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous5 
+
+to:
+  instance of struct __anonymous5 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous6 
+    _src: instance of struct __anonymous6 
+  returning 
+    instance of struct __anonymous6 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous6 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous5 
+          _src: instance of struct __anonymous5 
+        returning 
+          instance of struct __anonymous5 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous6 
+          _src: instance of struct __anonymous6 
+        returning 
+          instance of struct __anonymous6 
+
+)
+Environment: 
+
+there are 7 alternatives before elimination
+there are 7 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous6 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous6 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous6 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous6 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous6 
+              _src: instance of struct __anonymous6 
+            returning 
+              instance of struct __anonymous6 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous6 
+                  _src: instance of struct __anonymous6 
+                returning 
+                  instance of struct __anonymous6 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous6 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous5 
+              _src: instance of struct __anonymous5 
+            returning 
+              instance of struct __anonymous5 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous5 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous6 
+(types:
+    lvalue instance of struct __anonymous6 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous6 
+
+to:
+  instance of struct __anonymous6 
+(types:
+    instance of struct __anonymous6 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous1 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous1 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous2 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous3 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous4 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous4 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous5 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous5 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous6 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous6 
+
Index: src/Tests/Expect-r/Context.txt
===================================================================
--- src/Tests/Expect-r/Context.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Context.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,8 @@
+;
+void __f__A1_0_0____operator_assign__PFt0_Pt0t0___q__PFt0_t0__F__(void (*_adapterF2tz_2tz_)(void (*)(), void *, void *), void (*_adapterF2tz_P2tz2tz_)(void (*)(), void *, void *, void *), long unsigned int z, void (*___operator_assign__PF2tz_P2tz2tz_)(), void (*__q__PF2tz_2tz_)(), ...){
+    ;
+    extern unsigned long x;
+    void *___operator_assign__F2tx_P2tx2tx_(void *___dst__P2tx, void *___src__2tx);
+    extern unsigned long y;
+    void *___operator_assign__F2ty_P2ty2ty_(void *___dst__P2ty, void *___src__2ty);
+}
Index: src/Tests/Expect-r/DeclarationErrors.txt
===================================================================
--- src/Tests/Expect-r/DeclarationErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/DeclarationErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,14 @@
+Error: invalid combination of storage classes in declaration of x9: static static volatile const short int 
+
+Error: invalid combination of storage classes in declaration of x18: static static const volatile instance of struct __anonymous0
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x19: static static const volatile volatile instance of struct __anonymous1
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x28: static static volatile const instance of type Int
+
Index: src/Tests/Expect-r/DeclarationSpecifier.txt
===================================================================
--- src/Tests/Expect-r/DeclarationSpecifier.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/DeclarationSpecifier.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,14 @@
+Error: invalid combination of storage classes in declaration of x9: static static volatile const short int 
+
+Error: invalid combination of storage classes in declaration of x18: static static const volatile instance of struct __anonymous8
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x19: static static const volatile volatile instance of struct __anonymous9
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x28: static static volatile const instance of type Int
+
Index: src/Tests/Expect-r/Enum.txt
===================================================================
--- src/Tests/Expect-r/Enum.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Enum.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,48 @@
+nameExpr is Mango
+decl is Mango: const instance of enum Fruits 
+newExpr is Variable Expression: Mango: const instance of enum Fruits 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: Mango: const instance of enum Fruits 
+(types:
+    const lvalue instance of enum Fruits 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: Mango: const instance of enum Fruits 
+
+to:
+  instance of enum Fruits 
+(types:
+    instance of enum Fruits 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+enum Colors
+{
+    __Red__C7eColors,
+    __Yellow__C7eColors,
+    __Pink__C7eColors,
+    __Blue__C7eColors,
+    __Purple__C7eColors,
+    __Orange__C7eColors,
+    __Green__C7eColors,
+}
+;
+void __f__F__(void){
+    enum Fruits
+{
+        __Apple__C7eFruits,
+        __Banana__C7eFruits,
+        __Pear__C7eFruits,
+        __Mango__C7eFruits,
+}
+;
+    enum Fruits __fruit__7eFruits = ((enum Fruits )__Mango__C7eFruits);
+}
Index: src/Tests/Expect-r/Exception.txt
===================================================================
--- src/Tests/Expect-r/Exception.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Exception.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,26 @@
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+constant expression 3 signed int 
+to:
+  signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+nameExpr is ?/?
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?/?
+
Index: src/Tests/Expect-r/Expression.txt
===================================================================
--- src/Tests/Expect-r/Expression.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Expression.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,445 @@
+nameExpr is ?=?
+decl is ?=?: automatically generated inline function
+  with parameters
+    _dst: pointer to instance of struct s 
+    _src: instance of struct s 
+  returning 
+    instance of struct s 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct s 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct s 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct s 
+
+
+
+newExpr is Variable Expression: ?=?: inline function
+    with parameters
+      _dst: pointer to instance of struct s 
+      _src: instance of struct s 
+    returning 
+      instance of struct s 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline function
+    with parameters
+      _dst: pointer to instance of struct s 
+      _src: instance of struct s 
+    returning 
+      instance of struct s 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct s 
+          _src: instance of struct s 
+        returning 
+          instance of struct s 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct s 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct s 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct s 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct s 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct s 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline function
+            with parameters
+              _dst: pointer to instance of struct s 
+              _src: instance of struct s 
+            returning 
+              instance of struct s 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct s 
+                  _src: instance of struct s 
+                returning 
+                  instance of struct s 
+
+)
+        Environment: 
+formal type is pointer to instance of struct s 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct s 
+(types:
+    lvalue instance of struct s 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct s 
+
+to:
+  instance of struct s 
+(types:
+    instance of struct s 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is !?
+nameExpr is ~?
+nameExpr is +?
+nameExpr is -?
+nameExpr is *?
+nameExpr is ++?
+nameExpr is --?
+nameExpr is ?++
+nameExpr is ?--
+nameExpr is ?+?
+nameExpr is ?-?
+nameExpr is ?*?
+nameExpr is ?/?
+nameExpr is ?%?
+nameExpr is ?^?
+nameExpr is ?&?
+nameExpr is ?|?
+nameExpr is ?<?
+nameExpr is ?>?
+nameExpr is ?=?
+decl is ?=?: automatically generated inline function
+  with parameters
+    _dst: pointer to instance of struct s 
+    _src: instance of struct s 
+  returning 
+    instance of struct s 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct s 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct s 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct s 
+
+to:
+  instance of struct s 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline function
+    with parameters
+      _dst: pointer to instance of struct s 
+      _src: instance of struct s 
+    returning 
+      instance of struct s 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline function
+    with parameters
+      _dst: pointer to instance of struct s 
+      _src: instance of struct s 
+    returning 
+      instance of struct s 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct s 
+          _src: instance of struct s 
+        returning 
+          instance of struct s 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is i
+decl is i: signed int 
+newExpr is Variable Expression: i: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: i: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: i: signed int 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: i: signed int 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+nameExpr is i
+decl is i: signed int 
+newExpr is Variable Expression: i: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: i: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: i: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline function
+            with parameters
+              _dst: pointer to instance of struct s 
+              _src: instance of struct s 
+            returning 
+              instance of struct s 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct s 
+                  _src: instance of struct s 
+                returning 
+                  instance of struct s 
+
+)
+        Environment: 
+formal type is pointer to instance of struct s 
+actual type is pointer to signed int 
+nameExpr is ?==?
+nameExpr is ?!=?
+nameExpr is ?<<?
+nameExpr is ?>>?
+nameExpr is ?<=?
+nameExpr is ?>=?
+nameExpr is ?!=?
+nameExpr is ?!=?
+nameExpr is *?
+nameExpr is ?+=?
+nameExpr is ?-=?
+nameExpr is ?*=?
+nameExpr is ?/=?
+nameExpr is ?%=?
+nameExpr is ?&=?
+nameExpr is ?|=?
+nameExpr is ?^=?
+nameExpr is ?<<=?
+nameExpr is ?>>=?
+nameExpr is ?!=?
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct s 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct s 
+
+Error: No reasonable alternatives for expression Name: !?
+
+Error: No reasonable alternatives for expression Name: ~?
+
+Error: No reasonable alternatives for expression Name: +?
+
+Error: No reasonable alternatives for expression Name: -?
+
+Error: No reasonable alternatives for expression Name: *?
+
+Error: No reasonable alternatives for expression Name: ++?
+
+Error: No reasonable alternatives for expression Name: --?
+
+Error: No reasonable alternatives for expression Name: ?++
+
+Error: No reasonable alternatives for expression Name: ?--
+
+Error: No reasonable alternatives for expression Name: ?+?
+
+Error: No reasonable alternatives for expression Name: ?-?
+
+Error: No reasonable alternatives for expression Name: ?*?
+
+Error: No reasonable alternatives for expression Name: ?/?
+
+Error: No reasonable alternatives for expression Name: ?%?
+
+Error: No reasonable alternatives for expression Name: ?^?
+
+Error: No reasonable alternatives for expression Name: ?&?
+
+Error: No reasonable alternatives for expression Name: ?|?
+
+Error: No reasonable alternatives for expression Name: ?<?
+
+Error: No reasonable alternatives for expression Name: ?>?
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: i
+    Name: i
+
+Error: No reasonable alternatives for expression Name: ?==?
+
+Error: No reasonable alternatives for expression Name: ?!=?
+
+Error: No reasonable alternatives for expression Name: ?<<?
+
+Error: No reasonable alternatives for expression Name: ?>>?
+
+Error: No reasonable alternatives for expression Name: ?<=?
+
+Error: No reasonable alternatives for expression Name: ?>=?
+
+Error: No reasonable alternatives for expression Name: ?!=?
+
+Error: No reasonable alternatives for expression Name: ?!=?
+
+Error: No reasonable alternatives for expression Name: *?
+
+Error: No reasonable alternatives for expression Name: ?+=?
+
+Error: No reasonable alternatives for expression Name: ?-=?
+
+Error: No reasonable alternatives for expression Name: ?*=?
+
+Error: No reasonable alternatives for expression Name: ?/=?
+
+Error: No reasonable alternatives for expression Name: ?%=?
+
+Error: No reasonable alternatives for expression Name: ?&=?
+
+Error: No reasonable alternatives for expression Name: ?|=?
+
+Error: No reasonable alternatives for expression Name: ?^=?
+
+Error: No reasonable alternatives for expression Name: ?<<=?
+
+Error: No reasonable alternatives for expression Name: ?>>=?
+
+Error: No reasonable alternatives for expression Name: ?!=?
+
Index: src/Tests/Expect-r/Forall.txt
===================================================================
--- src/Tests/Expect-r/Forall.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Forall.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,15904 @@
+nameExpr is f
+decl is f: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+newExpr is Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+decl is f: function
+  with parameters
+    signed int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: f: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    pointer to forall
+          _0_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+
+        function
+        with parameters
+          instance of type _0_T (not function type) 
+        returning 
+          instance of type _0_T (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is x
+decl is x: signed int 
+newExpr is Variable Expression: x: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: x: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: x: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: function
+            with parameters
+              signed int 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+(types:
+            pointer to forall
+                  _0_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _0_T (not function type) 
+
+
+                function
+                with parameters
+                  instance of type _0_T (not function type) 
+                returning 
+                  instance of type _0_T (not function type) 
+
+)
+        Environment: 
+formal type is instance of type _0_T (not function type) 
+actual type is lvalue signed int 
+need assertions:
+?=?: pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+success!
+satisfying assertion 29 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with declaration 5 ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+actual expression:
+        Variable Expression: x: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+                  Variable Expression: x: signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+actual expression:
+        Variable Expression: x: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to instance of type _0_T (not function type) 
+cost is( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to signed int 
+            signed int 
+          returning 
+            signed int 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type _0_T (not function type) 
+actuals are:
+                  Variable Expression: x: signed int 
+
+bindings are:
+        ( _0_T ) -> signed int 
+cost of conversion is:( 0, 4, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: f: function
+      with parameters
+        signed int 
+      returning 
+        nothing 
+
+to arguments
+      Variable Expression: x: signed int 
+
+(types:
+)
+Environment: 
+
+Cost ( 0, 4, 0 ): Application of
+  Variable Expression: f: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Variable Expression: x: signed int 
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    instance of type _0_T (not function type) 
+)
+Environment:   ( _0_T ) -> signed int 
+
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: f: function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+  to arguments
+          Variable Expression: x: signed int 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is f
+decl is f: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+newExpr is Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+decl is f: function
+  with parameters
+    signed int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: f: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    pointer to forall
+          _0_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+
+        function
+        with parameters
+          instance of type _0_T (not function type) 
+        returning 
+          instance of type _0_T (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is y
+decl is y: pointer to function
+  returning 
+    nothing 
+
+newExpr is Variable Expression: y: pointer to function
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: y: pointer to function
+    returning 
+      nothing 
+
+(types:
+    lvalue pointer to function
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: y: pointer to function
+    returning 
+      nothing 
+
+(types:
+    lvalue pointer to function
+        returning 
+          nothing 
+
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: function
+            with parameters
+              signed int 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue pointer to function
+  returning 
+    nothing 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+(types:
+            pointer to forall
+                  _0_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _0_T (not function type) 
+
+
+                function
+                with parameters
+                  instance of type _0_T (not function type) 
+                returning 
+                  instance of type _0_T (not function type) 
+
+)
+        Environment: 
+formal type is instance of type _0_T (not function type) 
+actual type is lvalue pointer to function
+  returning 
+    nothing 
+
+need assertions:
+?=?: pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+success!
+satisfying assertion 29 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with declaration 25 ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+actual expression:
+        Variable Expression: y: pointer to function
+            returning 
+              nothing 
+
+--- results are
+        lvalue pointer to function
+            returning 
+              nothing 
+
+
+converting lvalue pointer to function
+          returning 
+            nothing 
+
+ to instance of type _0_T (not function type) 
+cost is( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to pointer to function
+                returning 
+                  nothing 
+
+            pointer to function
+                returning 
+                  nothing 
+
+          returning 
+            pointer to function
+                returning 
+                  nothing 
+
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type _0_T (not function type) 
+actuals are:
+                  Variable Expression: y: pointer to function
+              returning 
+                nothing 
+
+
+bindings are:
+        ( _0_T ) -> pointer to function
+          returning 
+            nothing 
+
+cost of conversion is:( 0, 4, 0 )
+alternatives before prune:
+Cost ( 0, 4, 0 ): Application of
+  Variable Expression: f: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Variable Expression: y: pointer to function
+        returning 
+          nothing 
+
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+(types:
+    instance of type _0_T (not function type) 
+)
+Environment:   ( _0_T ) -> pointer to function
+    returning 
+      nothing 
+
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: f: forall
+          T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type T (not function type) 
+                    instance of type T (not function type) 
+                  returning 
+                    instance of type T (not function type) 
+
+
+        function
+        with parameters
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+  to arguments
+          Variable Expression: y: pointer to function
+          returning 
+            nothing 
+
+
+  with inferred parameters:
+    ?=?: function
+      with parameters
+        pointer to pointer to function
+            returning 
+              nothing 
+
+        pointer to function
+            returning 
+              nothing 
+
+      returning 
+        pointer to function
+            returning 
+              nothing 
+
+
+
+to:
+  nothing
+(types:
+)
+Environment:   ( _0_T ) -> pointer to function
+    returning 
+      nothing 
+
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is f
+decl is f: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+newExpr is Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+decl is f: function
+  with parameters
+    signed int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: f: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    pointer to forall
+          _0_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+
+        function
+        with parameters
+          instance of type _0_T (not function type) 
+        returning 
+          instance of type _0_T (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is z
+decl is z: char 
+newExpr is Variable Expression: z: char 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: z: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: z: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: function
+            with parameters
+              signed int 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue char 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+(types:
+            pointer to forall
+                  _0_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _0_T (not function type) 
+
+
+                function
+                with parameters
+                  instance of type _0_T (not function type) 
+                returning 
+                  instance of type _0_T (not function type) 
+
+)
+        Environment: 
+formal type is instance of type _0_T (not function type) 
+actual type is lvalue char 
+need assertions:
+?=?: pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+success!
+satisfying assertion 29 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with declaration 21 ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+actual expression:
+        Variable Expression: z: char 
+--- results are
+        lvalue char 
+
+converting lvalue char 
+ to signed int 
+cost is( 0, 0, 4 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+                  Cast of:
+            Variable Expression: z: char 
+
+          to:
+            signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 4 )
+actual expression:
+        Variable Expression: z: char 
+--- results are
+        lvalue char 
+
+converting lvalue char 
+ to instance of type _0_T (not function type) 
+cost is( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to char 
+            char 
+          returning 
+            char 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type _0_T (not function type) 
+actuals are:
+                  Variable Expression: z: char 
+
+bindings are:
+        ( _0_T ) -> char 
+cost of conversion is:( 0, 4, 0 )
+alternatives before prune:
+Cost ( 0, 0, 4 ): Application of
+  Variable Expression: f: function
+      with parameters
+        signed int 
+      returning 
+        nothing 
+
+to arguments
+      Cast of:
+      Variable Expression: z: char 
+
+    to:
+      signed int 
+
+(types:
+)
+Environment: 
+
+Cost ( 0, 4, 0 ): Application of
+  Variable Expression: f: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Variable Expression: z: char 
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+(types:
+    instance of type _0_T (not function type) 
+)
+Environment:   ( _0_T ) -> char 
+
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: f: function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+  to arguments
+          Cast of:
+        Variable Expression: z: char 
+
+      to:
+        signed int 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is f
+decl is f: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+newExpr is Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+decl is f: function
+  with parameters
+    signed int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: f: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    pointer to forall
+          _0_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+
+        function
+        with parameters
+          instance of type _0_T (not function type) 
+        returning 
+          instance of type _0_T (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is w
+decl is w: float 
+newExpr is Variable Expression: w: float 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: w: float 
+(types:
+    lvalue float 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: w: float 
+(types:
+    lvalue float 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: function
+            with parameters
+              signed int 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue float 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+(types:
+            pointer to forall
+                  _0_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _0_T (not function type) 
+
+
+                function
+                with parameters
+                  instance of type _0_T (not function type) 
+                returning 
+                  instance of type _0_T (not function type) 
+
+)
+        Environment: 
+formal type is instance of type _0_T (not function type) 
+actual type is lvalue float 
+need assertions:
+?=?: pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+success!
+satisfying assertion 29 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with declaration 9 ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+actual expression:
+        Variable Expression: w: float 
+--- results are
+        lvalue float 
+
+converting lvalue float 
+ to signed int 
+cost is( 1, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+                  Cast of:
+            Variable Expression: w: float 
+
+          to:
+            signed int 
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+actual expression:
+        Variable Expression: w: float 
+--- results are
+        lvalue float 
+
+converting lvalue float 
+ to instance of type _0_T (not function type) 
+cost is( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to float 
+            float 
+          returning 
+            float 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type _0_T (not function type) 
+actuals are:
+                  Variable Expression: w: float 
+
+bindings are:
+        ( _0_T ) -> float 
+cost of conversion is:( 0, 4, 0 )
+alternatives before prune:
+Cost ( 1, 0, 0 ): Application of
+  Variable Expression: f: function
+      with parameters
+        signed int 
+      returning 
+        nothing 
+
+to arguments
+      Cast of:
+      Variable Expression: w: float 
+
+    to:
+      signed int 
+
+(types:
+)
+Environment: 
+
+Cost ( 0, 4, 0 ): Application of
+  Variable Expression: f: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Variable Expression: w: float 
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+(types:
+    instance of type _0_T (not function type) 
+)
+Environment:   ( _0_T ) -> float 
+
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: f: forall
+          T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type T (not function type) 
+                    instance of type T (not function type) 
+                  returning 
+                    instance of type T (not function type) 
+
+
+        function
+        with parameters
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+  to arguments
+          Variable Expression: w: float 
+
+  with inferred parameters:
+    ?=?: function
+      with parameters
+        pointer to float 
+        float 
+      returning 
+        float 
+
+
+to:
+  nothing
+(types:
+)
+Environment:   ( _0_T ) -> float 
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is h
+decl is h: function
+  with parameters
+    p: pointer to function
+        returning 
+          nothing 
+
+  returning 
+    nothing 
+
+newExpr is Variable Expression: h: function
+    with parameters
+      p: pointer to function
+          returning 
+            nothing 
+
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: h: function
+    with parameters
+      p: pointer to function
+          returning 
+            nothing 
+
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          p: pointer to function
+              returning 
+                nothing 
+
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is f
+decl is f: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+newExpr is Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+decl is f: function
+  with parameters
+    signed int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: f: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    pointer to forall
+          _0_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+
+        function
+        with parameters
+          instance of type _0_T (not function type) 
+        returning 
+          instance of type _0_T (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is y
+decl is y: pointer to function
+  returning 
+    nothing 
+
+newExpr is Variable Expression: y: pointer to function
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: y: pointer to function
+    returning 
+      nothing 
+
+(types:
+    lvalue pointer to function
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: y: pointer to function
+    returning 
+      nothing 
+
+(types:
+    lvalue pointer to function
+        returning 
+          nothing 
+
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: function
+            with parameters
+              signed int 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue pointer to function
+  returning 
+    nothing 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+(types:
+            pointer to forall
+                  _0_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _0_T (not function type) 
+
+
+                function
+                with parameters
+                  instance of type _0_T (not function type) 
+                returning 
+                  instance of type _0_T (not function type) 
+
+)
+        Environment: 
+formal type is instance of type _0_T (not function type) 
+actual type is lvalue pointer to function
+  returning 
+    nothing 
+
+need assertions:
+?=?: pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+success!
+satisfying assertion 29 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with declaration 25 ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+actual expression:
+        Variable Expression: y: pointer to function
+            returning 
+              nothing 
+
+--- results are
+        lvalue pointer to function
+            returning 
+              nothing 
+
+
+converting lvalue pointer to function
+          returning 
+            nothing 
+
+ to instance of type _0_T (not function type) 
+cost is( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to pointer to function
+                returning 
+                  nothing 
+
+            pointer to function
+                returning 
+                  nothing 
+
+          returning 
+            pointer to function
+                returning 
+                  nothing 
+
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type _0_T (not function type) 
+actuals are:
+                  Variable Expression: y: pointer to function
+              returning 
+                nothing 
+
+
+bindings are:
+        ( _0_T ) -> pointer to function
+          returning 
+            nothing 
+
+cost of conversion is:( 0, 4, 0 )
+alternatives before prune:
+Cost ( 0, 4, 0 ): Application of
+  Variable Expression: f: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Variable Expression: y: pointer to function
+        returning 
+          nothing 
+
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+(types:
+    instance of type _0_T (not function type) 
+)
+Environment:   ( _0_T ) -> pointer to function
+    returning 
+      nothing 
+
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 4, 0 ): Application of
+  Variable Expression: f: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Variable Expression: y: pointer to function
+        returning 
+          nothing 
+
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+(types:
+    pointer to function
+        returning 
+          nothing 
+
+)
+Environment:   ( _0_T ) -> pointer to function
+    returning 
+      nothing 
+
+
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: h: function
+            with parameters
+              p: pointer to function
+                  returning 
+                    nothing 
+
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  p: pointer to function
+                      returning 
+                        nothing 
+
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is pointer to function
+  returning 
+    nothing 
+
+actual type is pointer to function
+  returning 
+    nothing 
+
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Application of
+          Variable Expression: f: forall
+                T: type
+                  with assertions
+                    ?=?: pointer to function
+                        with parameters
+                          pointer to instance of type T (not function type) 
+                          instance of type T (not function type) 
+                        returning 
+                          instance of type T (not function type) 
+
+
+              function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+        to arguments
+                      Variable Expression: y: pointer to function
+                returning 
+                  nothing 
+
+
+        with inferred parameters:
+          ?=?: function
+            with parameters
+              pointer to pointer to function
+                  returning 
+                    nothing 
+
+              pointer to function
+                  returning 
+                    nothing 
+
+            returning 
+              pointer to function
+                  returning 
+                    nothing 
+
+
+--- results are
+        pointer to function
+            returning 
+              nothing 
+
+
+converting pointer to function
+          returning 
+            nothing 
+
+ to pointer to function
+          returning 
+            nothing 
+
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        p: pointer to function
+            returning 
+              nothing 
+
+actuals are:
+                  Application of
+            Variable Expression: f: forall
+                  T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type T (not function type) 
+                            instance of type T (not function type) 
+                          returning 
+                            instance of type T (not function type) 
+
+
+                function
+                with parameters
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+          to arguments
+                          Variable Expression: y: pointer to function
+                  returning 
+                    nothing 
+
+
+          with inferred parameters:
+            ?=?: function
+              with parameters
+                pointer to pointer to function
+                    returning 
+                      nothing 
+
+                pointer to function
+                    returning 
+                      nothing 
+
+              returning 
+                pointer to function
+                    returning 
+                      nothing 
+
+
+
+bindings are:
+        ( _0_T ) -> pointer to function
+          returning 
+            nothing 
+ (no widening)
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: h: function
+      with parameters
+        p: pointer to function
+            returning 
+              nothing 
+
+      returning 
+        nothing 
+
+to arguments
+      Application of
+      Variable Expression: f: forall
+            T: type
+              with assertions
+                ?=?: pointer to function
+                    with parameters
+                      pointer to instance of type T (not function type) 
+                      instance of type T (not function type) 
+                    returning 
+                      instance of type T (not function type) 
+
+
+          function
+          with parameters
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+    to arguments
+              Variable Expression: y: pointer to function
+            returning 
+              nothing 
+
+
+    with inferred parameters:
+      ?=?: function
+        with parameters
+          pointer to pointer to function
+              returning 
+                nothing 
+
+          pointer to function
+              returning 
+                nothing 
+
+        returning 
+          pointer to function
+              returning 
+                nothing 
+
+
+
+(types:
+)
+Environment:   ( _0_T ) -> pointer to function
+    returning 
+      nothing 
+ (no widening)
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: h: function
+        with parameters
+          p: pointer to function
+              returning 
+                nothing 
+
+        returning 
+          nothing 
+
+  to arguments
+          Application of
+        Variable Expression: f: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+      to arguments
+                  Variable Expression: y: pointer to function
+              returning 
+                nothing 
+
+
+      with inferred parameters:
+        ?=?: function
+          with parameters
+            pointer to pointer to function
+                returning 
+                  nothing 
+
+            pointer to function
+                returning 
+                  nothing 
+
+          returning 
+            pointer to function
+                returning 
+                  nothing 
+
+
+
+
+to:
+  nothing
+(types:
+)
+Environment:   ( _0_T ) -> pointer to function
+    returning 
+      nothing 
+ (no widening)
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is f
+decl is f: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      nothing 
+
+
+decl is f: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+    U: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type U (not function type) 
+              instance of type U (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+
+  function
+  with parameters
+    instance of type T (not function type) 
+    instance of type U (not function type) 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+      U: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+      instance of type U (not function type) 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      nothing 
+
+(types:
+    pointer to forall
+          _0_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+
+        function
+        with parameters
+          instance of type _0_T (not function type) 
+          instance of type _0_T (not function type) 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+      U: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+      instance of type U (not function type) 
+    returning 
+      nothing 
+
+(types:
+    pointer to forall
+          _1_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _1_T (not function type) 
+                    instance of type _1_T (not function type) 
+                  returning 
+                    instance of type _1_T (not function type) 
+
+
+          _2_U: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _2_U (not function type) 
+                    instance of type _2_U (not function type) 
+                  returning 
+                    instance of type _2_U (not function type) 
+
+
+        function
+        with parameters
+          instance of type _1_T (not function type) 
+          instance of type _2_U (not function type) 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is x
+decl is x: signed int 
+newExpr is Variable Expression: x: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: x: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: x: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is y
+decl is y: float 
+newExpr is Variable Expression: y: float 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: y: float 
+(types:
+    lvalue float 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: y: float 
+(types:
+    lvalue float 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+              U: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type U (not function type) 
+                        instance of type U (not function type) 
+                      returning 
+                        instance of type U (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+              instance of type U (not function type) 
+            returning 
+              nothing 
+
+(types:
+            pointer to forall
+                  _1_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _1_T (not function type) 
+                            instance of type _1_T (not function type) 
+                          returning 
+                            instance of type _1_T (not function type) 
+
+
+                  _2_U: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _2_U (not function type) 
+                            instance of type _2_U (not function type) 
+                          returning 
+                            instance of type _2_U (not function type) 
+
+
+                function
+                with parameters
+                  instance of type _1_T (not function type) 
+                  instance of type _2_U (not function type) 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is instance of type _1_T (not function type) 
+actual type is lvalue signed int 
+formal type is instance of type _2_U (not function type) 
+actual type is lvalue float 
+need assertions:
+?=?: pointer to function
+          with parameters
+            pointer to instance of type _2_U (not function type) 
+            instance of type _2_U (not function type) 
+          returning 
+            instance of type _2_U (not function type) 
+(used)?=?: pointer to function
+          with parameters
+            pointer to instance of type _1_T (not function type) 
+            instance of type _1_T (not function type) 
+          returning 
+            instance of type _1_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+success!
+satisfying assertion 56 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+ with declaration 9 ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+success!
+satisfying assertion 52 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with declaration 5 ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              nothing 
+
+(types:
+            pointer to forall
+                  _0_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _0_T (not function type) 
+
+
+                function
+                with parameters
+                  instance of type _0_T (not function type) 
+                  instance of type _0_T (not function type) 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is instance of type _0_T (not function type) 
+actual type is lvalue signed int 
+formal type is instance of type _0_T (not function type) 
+actual type is lvalue float 
+need assertions:
+?=?: pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+success!
+satisfying assertion 45 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with declaration 9 ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+actual expression:
+        Variable Expression: x: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to instance of type _1_T (not function type) 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: y: float 
+--- results are
+        lvalue float 
+
+converting lvalue float 
+ to instance of type _2_U (not function type) 
+cost is( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to signed int 
+            signed int 
+          returning 
+            signed int 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _1_T (not function type) 
+            instance of type _1_T (not function type) 
+          returning 
+            instance of type _1_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to float 
+            float 
+          returning 
+            float 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _2_U (not function type) 
+            instance of type _2_U (not function type) 
+          returning 
+            instance of type _2_U (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type _1_T (not function type) 
+        instance of type _2_U (not function type) 
+actuals are:
+                  Variable Expression: x: signed int 
+
+                  Variable Expression: y: float 
+
+bindings are:
+        ( _1_T ) -> signed int 
+        ( _2_U ) -> float 
+cost of conversion is:( 0, 8, 0 )
+actual expression:
+        Variable Expression: x: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to instance of type _0_T (not function type) 
+cost is( 0, 0, 5 )
+actual expression:
+        Variable Expression: y: float 
+--- results are
+        lvalue float 
+
+converting lvalue float 
+ to instance of type _0_T (not function type) 
+cost is( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to float 
+            float 
+          returning 
+            float 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type _0_T (not function type) 
+        instance of type _0_T (not function type) 
+actuals are:
+                  Cast of:
+            Variable Expression: x: signed int 
+
+          to:
+            float 
+
+                  Variable Expression: y: float 
+
+bindings are:
+        ( _0_T ) -> float 
+cost of conversion is:( 0, 5, 5 )
+alternatives before prune:
+Cost ( 0, 8, 0 ): Application of
+  Variable Expression: f: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+        U: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type U (not function type) 
+                  instance of type U (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+        instance of type U (not function type) 
+      returning 
+        nothing 
+
+to arguments
+      Variable Expression: x: signed int 
+
+      Variable Expression: y: float 
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+  ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+(types:
+)
+Environment:   ( _1_T ) -> signed int 
+  ( _2_U ) -> float 
+
+
+Cost ( 0, 5, 5 ): Application of
+  Variable Expression: f: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+        instance of type T (not function type) 
+      returning 
+        nothing 
+
+to arguments
+      Cast of:
+      Variable Expression: x: signed int 
+
+    to:
+      float 
+
+      Variable Expression: y: float 
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+(types:
+)
+Environment:   ( _0_T ) -> float 
+
+
+cost ( 0, 5, 5 ) beats ( 0, 8, 0 )
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: f: forall
+          T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type T (not function type) 
+                    instance of type T (not function type) 
+                  returning 
+                    instance of type T (not function type) 
+
+
+        function
+        with parameters
+          instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          nothing 
+
+  to arguments
+          Cast of:
+        Variable Expression: x: signed int 
+
+      to:
+        float 
+
+          Variable Expression: y: float 
+
+  with inferred parameters:
+    ?=?: function
+      with parameters
+        pointer to float 
+        float 
+      returning 
+        float 
+
+
+to:
+  nothing
+(types:
+)
+Environment:   ( _0_T ) -> float 
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is f
+decl is f: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      nothing 
+
+
+decl is f: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+    U: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type U (not function type) 
+              instance of type U (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+
+  function
+  with parameters
+    instance of type T (not function type) 
+    instance of type U (not function type) 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+      U: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+      instance of type U (not function type) 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      nothing 
+
+(types:
+    pointer to forall
+          _0_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+
+        function
+        with parameters
+          instance of type _0_T (not function type) 
+          instance of type _0_T (not function type) 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+      U: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+      instance of type U (not function type) 
+    returning 
+      nothing 
+
+(types:
+    pointer to forall
+          _1_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _1_T (not function type) 
+                    instance of type _1_T (not function type) 
+                  returning 
+                    instance of type _1_T (not function type) 
+
+
+          _2_U: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _2_U (not function type) 
+                    instance of type _2_U (not function type) 
+                  returning 
+                    instance of type _2_U (not function type) 
+
+
+        function
+        with parameters
+          instance of type _1_T (not function type) 
+          instance of type _2_U (not function type) 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is z
+decl is z: pointer to signed int 
+newExpr is Variable Expression: z: pointer to signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: z: pointer to signed int 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: z: pointer to signed int 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+nameExpr is w
+decl is w: pointer to float 
+newExpr is Variable Expression: w: pointer to float 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: w: pointer to float 
+(types:
+    lvalue pointer to float 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: w: pointer to float 
+(types:
+    lvalue pointer to float 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+              U: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type U (not function type) 
+                        instance of type U (not function type) 
+                      returning 
+                        instance of type U (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+              instance of type U (not function type) 
+            returning 
+              nothing 
+
+(types:
+            pointer to forall
+                  _1_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _1_T (not function type) 
+                            instance of type _1_T (not function type) 
+                          returning 
+                            instance of type _1_T (not function type) 
+
+
+                  _2_U: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _2_U (not function type) 
+                            instance of type _2_U (not function type) 
+                          returning 
+                            instance of type _2_U (not function type) 
+
+
+                function
+                with parameters
+                  instance of type _1_T (not function type) 
+                  instance of type _2_U (not function type) 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is instance of type _1_T (not function type) 
+actual type is lvalue pointer to signed int 
+formal type is instance of type _2_U (not function type) 
+actual type is lvalue pointer to float 
+need assertions:
+?=?: pointer to function
+          with parameters
+            pointer to instance of type _2_U (not function type) 
+            instance of type _2_U (not function type) 
+          returning 
+            instance of type _2_U (not function type) 
+(used)?=?: pointer to function
+          with parameters
+            pointer to instance of type _1_T (not function type) 
+            instance of type _1_T (not function type) 
+          returning 
+            instance of type _1_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+success!
+satisfying assertion 56 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+ with declaration 17 ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+success!
+satisfying assertion 52 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with declaration 13 ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              nothing 
+
+(types:
+            pointer to forall
+                  _0_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _0_T (not function type) 
+
+
+                function
+                with parameters
+                  instance of type _0_T (not function type) 
+                  instance of type _0_T (not function type) 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is instance of type _0_T (not function type) 
+actual type is lvalue pointer to signed int 
+formal type is instance of type _0_T (not function type) 
+actual type is lvalue pointer to float 
+actual expression:
+        Variable Expression: z: pointer to signed int 
+--- results are
+        lvalue pointer to signed int 
+
+converting lvalue pointer to signed int 
+ to instance of type _1_T (not function type) 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: w: pointer to float 
+--- results are
+        lvalue pointer to float 
+
+converting lvalue pointer to float 
+ to instance of type _2_U (not function type) 
+cost is( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to pointer to signed int 
+            pointer to signed int 
+          returning 
+            pointer to signed int 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _1_T (not function type) 
+            instance of type _1_T (not function type) 
+          returning 
+            instance of type _1_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to pointer to float 
+            pointer to float 
+          returning 
+            pointer to float 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _2_U (not function type) 
+            instance of type _2_U (not function type) 
+          returning 
+            instance of type _2_U (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type _1_T (not function type) 
+        instance of type _2_U (not function type) 
+actuals are:
+                  Variable Expression: z: pointer to signed int 
+
+                  Variable Expression: w: pointer to float 
+
+bindings are:
+        ( _1_T ) -> pointer to signed int 
+        ( _2_U ) -> pointer to float 
+cost of conversion is:( 0, 8, 0 )
+alternatives before prune:
+Cost ( 0, 8, 0 ): Application of
+  Variable Expression: f: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+        U: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type U (not function type) 
+                  instance of type U (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+        instance of type U (not function type) 
+      returning 
+        nothing 
+
+to arguments
+      Variable Expression: z: pointer to signed int 
+
+      Variable Expression: w: pointer to float 
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+  ?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+(types:
+)
+Environment:   ( _1_T ) -> pointer to signed int 
+  ( _2_U ) -> pointer to float 
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: f: forall
+          T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type T (not function type) 
+                    instance of type T (not function type) 
+                  returning 
+                    instance of type T (not function type) 
+
+
+          U: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type U (not function type) 
+                    instance of type U (not function type) 
+                  returning 
+                    instance of type U (not function type) 
+
+
+        function
+        with parameters
+          instance of type T (not function type) 
+          instance of type U (not function type) 
+        returning 
+          nothing 
+
+  to arguments
+          Variable Expression: z: pointer to signed int 
+
+          Variable Expression: w: pointer to float 
+
+  with inferred parameters:
+    ?=?: function
+      with parameters
+        pointer to pointer to signed int 
+        pointer to signed int 
+      returning 
+        pointer to signed int 
+
+    ?=?: function
+      with parameters
+        pointer to pointer to float 
+        pointer to float 
+      returning 
+        pointer to float 
+
+
+to:
+  nothing
+(types:
+)
+Environment:   ( _1_T ) -> pointer to signed int 
+  ( _2_U ) -> pointer to float 
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is f
+decl is f: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      nothing 
+
+
+decl is f: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+    U: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type U (not function type) 
+              instance of type U (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+
+  function
+  with parameters
+    instance of type T (not function type) 
+    instance of type U (not function type) 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+      U: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+      instance of type U (not function type) 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      nothing 
+
+(types:
+    pointer to forall
+          _0_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+
+        function
+        with parameters
+          instance of type _0_T (not function type) 
+          instance of type _0_T (not function type) 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+      U: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+      instance of type U (not function type) 
+    returning 
+      nothing 
+
+(types:
+    pointer to forall
+          _1_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _1_T (not function type) 
+                    instance of type _1_T (not function type) 
+                  returning 
+                    instance of type _1_T (not function type) 
+
+
+          _2_U: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _2_U (not function type) 
+                    instance of type _2_U (not function type) 
+                  returning 
+                    instance of type _2_U (not function type) 
+
+
+        function
+        with parameters
+          instance of type _1_T (not function type) 
+          instance of type _2_U (not function type) 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is x
+decl is x: signed int 
+newExpr is Variable Expression: x: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: x: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: x: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is z
+decl is z: pointer to signed int 
+newExpr is Variable Expression: z: pointer to signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: z: pointer to signed int 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: z: pointer to signed int 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+              U: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type U (not function type) 
+                        instance of type U (not function type) 
+                      returning 
+                        instance of type U (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+              instance of type U (not function type) 
+            returning 
+              nothing 
+
+(types:
+            pointer to forall
+                  _1_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _1_T (not function type) 
+                            instance of type _1_T (not function type) 
+                          returning 
+                            instance of type _1_T (not function type) 
+
+
+                  _2_U: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _2_U (not function type) 
+                            instance of type _2_U (not function type) 
+                          returning 
+                            instance of type _2_U (not function type) 
+
+
+                function
+                with parameters
+                  instance of type _1_T (not function type) 
+                  instance of type _2_U (not function type) 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is instance of type _1_T (not function type) 
+actual type is lvalue signed int 
+formal type is instance of type _2_U (not function type) 
+actual type is lvalue pointer to signed int 
+need assertions:
+?=?: pointer to function
+          with parameters
+            pointer to instance of type _1_T (not function type) 
+            instance of type _1_T (not function type) 
+          returning 
+            instance of type _1_T (not function type) 
+(used)?=?: pointer to function
+          with parameters
+            pointer to instance of type _2_U (not function type) 
+            instance of type _2_U (not function type) 
+          returning 
+            instance of type _2_U (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+success!
+satisfying assertion 52 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with declaration 5 ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+success!
+satisfying assertion 56 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+ with declaration 13 ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _2_U (not function type) 
+    instance of type _2_U (not function type) 
+  returning 
+    instance of type _2_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              nothing 
+
+(types:
+            pointer to forall
+                  _0_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _0_T (not function type) 
+
+
+                function
+                with parameters
+                  instance of type _0_T (not function type) 
+                  instance of type _0_T (not function type) 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is instance of type _0_T (not function type) 
+actual type is lvalue signed int 
+formal type is instance of type _0_T (not function type) 
+actual type is lvalue pointer to signed int 
+actual expression:
+        Variable Expression: x: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to instance of type _1_T (not function type) 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: z: pointer to signed int 
+--- results are
+        lvalue pointer to signed int 
+
+converting lvalue pointer to signed int 
+ to instance of type _2_U (not function type) 
+cost is( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to signed int 
+            signed int 
+          returning 
+            signed int 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _1_T (not function type) 
+            instance of type _1_T (not function type) 
+          returning 
+            instance of type _1_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to pointer to signed int 
+            pointer to signed int 
+          returning 
+            pointer to signed int 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _2_U (not function type) 
+            instance of type _2_U (not function type) 
+          returning 
+            instance of type _2_U (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type _1_T (not function type) 
+        instance of type _2_U (not function type) 
+actuals are:
+                  Variable Expression: x: signed int 
+
+                  Variable Expression: z: pointer to signed int 
+
+bindings are:
+        ( _1_T ) -> signed int 
+        ( _2_U ) -> pointer to signed int 
+cost of conversion is:( 0, 8, 0 )
+alternatives before prune:
+Cost ( 0, 8, 0 ): Application of
+  Variable Expression: f: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+        U: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type U (not function type) 
+                  instance of type U (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+        instance of type U (not function type) 
+      returning 
+        nothing 
+
+to arguments
+      Variable Expression: x: signed int 
+
+      Variable Expression: z: pointer to signed int 
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+  ?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+(types:
+)
+Environment:   ( _1_T ) -> signed int 
+  ( _2_U ) -> pointer to signed int 
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: f: forall
+          T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type T (not function type) 
+                    instance of type T (not function type) 
+                  returning 
+                    instance of type T (not function type) 
+
+
+          U: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type U (not function type) 
+                    instance of type U (not function type) 
+                  returning 
+                    instance of type U (not function type) 
+
+
+        function
+        with parameters
+          instance of type T (not function type) 
+          instance of type U (not function type) 
+        returning 
+          nothing 
+
+  to arguments
+          Variable Expression: x: signed int 
+
+          Variable Expression: z: pointer to signed int 
+
+  with inferred parameters:
+    ?=?: function
+      with parameters
+        pointer to signed int 
+        signed int 
+      returning 
+        signed int 
+
+    ?=?: function
+      with parameters
+        pointer to pointer to signed int 
+        pointer to signed int 
+      returning 
+        pointer to signed int 
+
+
+to:
+  nothing
+(types:
+)
+Environment:   ( _1_T ) -> signed int 
+  ( _2_U ) -> pointer to signed int 
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is left
+decl is left: instance of type T (not function type) 
+newExpr is Variable Expression: left: instance of type T (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: left: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: left: instance of type T (not function type) 
+
+to:
+  instance of type T (not function type) 
+(types:
+    instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+decl is ?=?: pointer to function
+  with parameters
+    pointer to instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+newExpr is Variable Expression: ?=?: pointer to function
+    with parameters
+      pointer to instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to function
+              returning 
+                nothing 
+
+          pointer to function
+              returning 
+                nothing 
+
+        returning 
+          pointer to function
+              returning 
+                nothing 
+
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to float 
+          pointer to float 
+        returning 
+          pointer to float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to signed int 
+          pointer to signed int 
+        returning 
+          pointer to signed int 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to char 
+          char 
+        returning 
+          char 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to float 
+          float 
+        returning 
+          float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: pointer to function
+    with parameters
+      pointer to instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    lvalue pointer to function
+        with parameters
+          pointer to instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+)
+Environment: 
+
+there are 7 alternatives before elimination
+there are 7 alternatives after elimination
+nameExpr is temp
+decl is temp: instance of type T (not function type) with initializer 
+Simple Initializer:   Cast of:
+    Variable Expression: left: instance of type T (not function type) 
+
+  to:
+    instance of type T (not function type) 
+  with environment:
+    Types:
+    Non-types:
+
+newExpr is Variable Expression: temp: instance of type T (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: temp: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: temp: instance of type T (not function type) 
+(types:
+    pointer to instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: temp: instance of type T (not function type) 
+(types:
+    pointer to instance of type T (not function type) 
+)
+Environment: 
+
+nameExpr is left
+decl is left: instance of type T (not function type) 
+newExpr is Variable Expression: left: instance of type T (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: left: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: left: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is pointer to signed int 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to float 
+              float 
+            returning 
+              float 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to float 
+                  float 
+                returning 
+                  float 
+
+)
+        Environment: 
+formal type is pointer to float 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to char 
+              char 
+            returning 
+              char 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+)
+        Environment: 
+formal type is pointer to char 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to pointer to signed int 
+              pointer to signed int 
+            returning 
+              pointer to signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to pointer to signed int 
+                  pointer to signed int 
+                returning 
+                  pointer to signed int 
+
+)
+        Environment: 
+formal type is pointer to pointer to signed int 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to pointer to float 
+              pointer to float 
+            returning 
+              pointer to float 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to pointer to float 
+                  pointer to float 
+                returning 
+                  pointer to float 
+
+)
+        Environment: 
+formal type is pointer to pointer to float 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to pointer to function
+                  returning 
+                    nothing 
+
+              pointer to function
+                  returning 
+                    nothing 
+
+            returning 
+              pointer to function
+                  returning 
+                    nothing 
+
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to pointer to function
+                      returning 
+                        nothing 
+
+                  pointer to function
+                      returning 
+                        nothing 
+
+                returning 
+                  pointer to function
+                      returning 
+                        nothing 
+
+
+)
+        Environment: 
+formal type is pointer to pointer to function
+  returning 
+    nothing 
+
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+(types:
+            lvalue pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type T (not function type) 
+actual type is pointer to instance of type T (not function type) 
+formal type is instance of type T (not function type) 
+actual type is lvalue instance of type T (not function type) 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Address of:
+          Variable Expression: temp: instance of type T (not function type) 
+--- results are
+        pointer to instance of type T (not function type) 
+
+converting pointer to instance of type T (not function type) 
+ to pointer to instance of type T (not function type) 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: left: instance of type T (not function type) 
+--- results are
+        lvalue instance of type T (not function type) 
+
+converting lvalue instance of type T (not function type) 
+ to instance of type T (not function type) 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        pointer to instance of type T (not function type) 
+        instance of type T (not function type) 
+actuals are:
+                  Address of:
+            Variable Expression: temp: instance of type T (not function type) 
+
+                  Variable Expression: left: instance of type T (not function type) 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?=?: pointer to function
+      with parameters
+        pointer to instance of type T (not function type) 
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Address of:
+      Variable Expression: temp: instance of type T (not function type) 
+
+      Variable Expression: left: instance of type T (not function type) 
+
+(types:
+    instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?=?: pointer to function
+        with parameters
+          pointer to instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+  to arguments
+          Address of:
+        Variable Expression: temp: instance of type T (not function type) 
+
+          Variable Expression: left: instance of type T (not function type) 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+decl is ?=?: pointer to function
+  with parameters
+    pointer to instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+newExpr is Variable Expression: ?=?: pointer to function
+    with parameters
+      pointer to instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to function
+              returning 
+                nothing 
+
+          pointer to function
+              returning 
+                nothing 
+
+        returning 
+          pointer to function
+              returning 
+                nothing 
+
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to float 
+          pointer to float 
+        returning 
+          pointer to float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to signed int 
+          pointer to signed int 
+        returning 
+          pointer to signed int 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to char 
+          char 
+        returning 
+          char 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to float 
+          float 
+        returning 
+          float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: pointer to function
+    with parameters
+      pointer to instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    lvalue pointer to function
+        with parameters
+          pointer to instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+)
+Environment: 
+
+there are 7 alternatives before elimination
+there are 7 alternatives after elimination
+nameExpr is left
+decl is left: instance of type T (not function type) 
+newExpr is Variable Expression: left: instance of type T (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: left: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: left: instance of type T (not function type) 
+(types:
+    pointer to instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: left: instance of type T (not function type) 
+(types:
+    pointer to instance of type T (not function type) 
+)
+Environment: 
+
+nameExpr is right
+decl is right: instance of type T (not function type) 
+newExpr is Variable Expression: right: instance of type T (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: right: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: right: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is pointer to signed int 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to float 
+              float 
+            returning 
+              float 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to float 
+                  float 
+                returning 
+                  float 
+
+)
+        Environment: 
+formal type is pointer to float 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to char 
+              char 
+            returning 
+              char 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+)
+        Environment: 
+formal type is pointer to char 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to pointer to signed int 
+              pointer to signed int 
+            returning 
+              pointer to signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to pointer to signed int 
+                  pointer to signed int 
+                returning 
+                  pointer to signed int 
+
+)
+        Environment: 
+formal type is pointer to pointer to signed int 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to pointer to float 
+              pointer to float 
+            returning 
+              pointer to float 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to pointer to float 
+                  pointer to float 
+                returning 
+                  pointer to float 
+
+)
+        Environment: 
+formal type is pointer to pointer to float 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to pointer to function
+                  returning 
+                    nothing 
+
+              pointer to function
+                  returning 
+                    nothing 
+
+            returning 
+              pointer to function
+                  returning 
+                    nothing 
+
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to pointer to function
+                      returning 
+                        nothing 
+
+                  pointer to function
+                      returning 
+                        nothing 
+
+                returning 
+                  pointer to function
+                      returning 
+                        nothing 
+
+
+)
+        Environment: 
+formal type is pointer to pointer to function
+  returning 
+    nothing 
+
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+(types:
+            lvalue pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type T (not function type) 
+actual type is pointer to instance of type T (not function type) 
+formal type is instance of type T (not function type) 
+actual type is lvalue instance of type T (not function type) 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Address of:
+          Variable Expression: left: instance of type T (not function type) 
+--- results are
+        pointer to instance of type T (not function type) 
+
+converting pointer to instance of type T (not function type) 
+ to pointer to instance of type T (not function type) 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: right: instance of type T (not function type) 
+--- results are
+        lvalue instance of type T (not function type) 
+
+converting lvalue instance of type T (not function type) 
+ to instance of type T (not function type) 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        pointer to instance of type T (not function type) 
+        instance of type T (not function type) 
+actuals are:
+                  Address of:
+            Variable Expression: left: instance of type T (not function type) 
+
+                  Variable Expression: right: instance of type T (not function type) 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?=?: pointer to function
+      with parameters
+        pointer to instance of type T (not function type) 
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Address of:
+      Variable Expression: left: instance of type T (not function type) 
+
+      Variable Expression: right: instance of type T (not function type) 
+
+(types:
+    instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?=?: pointer to function
+        with parameters
+          pointer to instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+  to arguments
+          Address of:
+        Variable Expression: left: instance of type T (not function type) 
+
+          Variable Expression: right: instance of type T (not function type) 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+decl is ?=?: pointer to function
+  with parameters
+    pointer to instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+newExpr is Variable Expression: ?=?: pointer to function
+    with parameters
+      pointer to instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to function
+              returning 
+                nothing 
+
+          pointer to function
+              returning 
+                nothing 
+
+        returning 
+          pointer to function
+              returning 
+                nothing 
+
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to float 
+          pointer to float 
+        returning 
+          pointer to float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to signed int 
+          pointer to signed int 
+        returning 
+          pointer to signed int 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to char 
+          char 
+        returning 
+          char 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to float 
+          float 
+        returning 
+          float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: pointer to function
+    with parameters
+      pointer to instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    lvalue pointer to function
+        with parameters
+          pointer to instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+)
+Environment: 
+
+there are 7 alternatives before elimination
+there are 7 alternatives after elimination
+nameExpr is right
+decl is right: instance of type T (not function type) 
+newExpr is Variable Expression: right: instance of type T (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: right: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: right: instance of type T (not function type) 
+(types:
+    pointer to instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: right: instance of type T (not function type) 
+(types:
+    pointer to instance of type T (not function type) 
+)
+Environment: 
+
+nameExpr is temp
+decl is temp: instance of type T (not function type) with initializer 
+Simple Initializer:   Cast of:
+    Variable Expression: left: instance of type T (not function type) 
+
+  to:
+    instance of type T (not function type) 
+  with environment:
+    Types:
+    Non-types:
+
+newExpr is Variable Expression: temp: instance of type T (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: temp: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: temp: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is pointer to signed int 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to float 
+              float 
+            returning 
+              float 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to float 
+                  float 
+                returning 
+                  float 
+
+)
+        Environment: 
+formal type is pointer to float 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to char 
+              char 
+            returning 
+              char 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+)
+        Environment: 
+formal type is pointer to char 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to pointer to signed int 
+              pointer to signed int 
+            returning 
+              pointer to signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to pointer to signed int 
+                  pointer to signed int 
+                returning 
+                  pointer to signed int 
+
+)
+        Environment: 
+formal type is pointer to pointer to signed int 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to pointer to float 
+              pointer to float 
+            returning 
+              pointer to float 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to pointer to float 
+                  pointer to float 
+                returning 
+                  pointer to float 
+
+)
+        Environment: 
+formal type is pointer to pointer to float 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to pointer to function
+                  returning 
+                    nothing 
+
+              pointer to function
+                  returning 
+                    nothing 
+
+            returning 
+              pointer to function
+                  returning 
+                    nothing 
+
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to pointer to function
+                      returning 
+                        nothing 
+
+                  pointer to function
+                      returning 
+                        nothing 
+
+                returning 
+                  pointer to function
+                      returning 
+                        nothing 
+
+
+)
+        Environment: 
+formal type is pointer to pointer to function
+  returning 
+    nothing 
+
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+(types:
+            lvalue pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type T (not function type) 
+actual type is pointer to instance of type T (not function type) 
+formal type is instance of type T (not function type) 
+actual type is lvalue instance of type T (not function type) 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Address of:
+          Variable Expression: right: instance of type T (not function type) 
+--- results are
+        pointer to instance of type T (not function type) 
+
+converting pointer to instance of type T (not function type) 
+ to pointer to instance of type T (not function type) 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: temp: instance of type T (not function type) 
+--- results are
+        lvalue instance of type T (not function type) 
+
+converting lvalue instance of type T (not function type) 
+ to instance of type T (not function type) 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        pointer to instance of type T (not function type) 
+        instance of type T (not function type) 
+actuals are:
+                  Address of:
+            Variable Expression: right: instance of type T (not function type) 
+
+                  Variable Expression: temp: instance of type T (not function type) 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?=?: pointer to function
+      with parameters
+        pointer to instance of type T (not function type) 
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Address of:
+      Variable Expression: right: instance of type T (not function type) 
+
+      Variable Expression: temp: instance of type T (not function type) 
+
+(types:
+    instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?=?: pointer to function
+        with parameters
+          pointer to instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+  to arguments
+          Address of:
+        Variable Expression: right: instance of type T (not function type) 
+
+          Variable Expression: temp: instance of type T (not function type) 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type P1 (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                i: instance of type P1 (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  j: instance of type P2 (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                j: instance of type P2 (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T1 (not function type) 
+    _src: instance of type T1 (not function type) 
+  returning 
+    instance of type T1 (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T1 (not function type) 
+      _src: instance of type T1 (not function type) 
+    returning 
+      instance of type T1 (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T2 (not function type) 
+    _src: instance of type T2 (not function type) 
+  returning 
+    instance of type T2 (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T2 (not function type) 
+      _src: instance of type T2 (not function type) 
+    returning 
+      instance of type T2 (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T3 (not function type) 
+    _src: instance of type T3 (not function type) 
+  returning 
+    instance of type T3 (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T3 (not function type) 
+      _src: instance of type T3 (not function type) 
+    returning 
+      instance of type T3 (not function type) 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T1 (not function type) 
+      _src: instance of type T1 (not function type) 
+    returning 
+      instance of type T1 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T1 (not function type) 
+          _src: instance of type T1 (not function type) 
+        returning 
+          instance of type T1 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T2 (not function type) 
+      _src: instance of type T2 (not function type) 
+    returning 
+      instance of type T2 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T2 (not function type) 
+          _src: instance of type T2 (not function type) 
+        returning 
+          instance of type T2 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T3 (not function type) 
+      _src: instance of type T3 (not function type) 
+    returning 
+      instance of type T3 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T3 (not function type) 
+          _src: instance of type T3 (not function type) 
+        returning 
+          instance of type T3 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to function
+              returning 
+                nothing 
+
+          pointer to function
+              returning 
+                nothing 
+
+        returning 
+          pointer to function
+              returning 
+                nothing 
+
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to float 
+          pointer to float 
+        returning 
+          pointer to float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to signed int 
+          pointer to signed int 
+        returning 
+          pointer to signed int 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to char 
+          char 
+        returning 
+          char 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to float 
+          float 
+        returning 
+          float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 10 alternatives before elimination
+there are 10 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: instance of type P1 (not function type) 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    lvalue instance of type P1 (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: instance of type P1 (not function type) 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to instance of type P1 (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: instance of type P1 (not function type) 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to instance of type P1 (not function type) 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: instance of type P1 (not function type) 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue instance of type P1 (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: instance of type P1 (not function type) 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue instance of type P1 (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is pointer to signed int 
+actual type is pointer to instance of type P1 (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to float 
+              float 
+            returning 
+              float 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to float 
+                  float 
+                returning 
+                  float 
+
+)
+        Environment: 
+formal type is pointer to float 
+actual type is pointer to instance of type P1 (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to char 
+              char 
+            returning 
+              char 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+)
+        Environment: 
+formal type is pointer to char 
+actual type is pointer to instance of type P1 (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to pointer to signed int 
+              pointer to signed int 
+            returning 
+              pointer to signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to pointer to signed int 
+                  pointer to signed int 
+                returning 
+                  pointer to signed int 
+
+)
+        Environment: 
+formal type is pointer to pointer to signed int 
+actual type is pointer to instance of type P1 (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to pointer to float 
+              pointer to float 
+            returning 
+              pointer to float 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to pointer to float 
+                  pointer to float 
+                returning 
+                  pointer to float 
+
+)
+        Environment: 
+formal type is pointer to pointer to float 
+actual type is pointer to instance of type P1 (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to pointer to function
+                  returning 
+                    nothing 
+
+              pointer to function
+                  returning 
+                    nothing 
+
+            returning 
+              pointer to function
+                  returning 
+                    nothing 
+
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to pointer to function
+                      returning 
+                        nothing 
+
+                  pointer to function
+                      returning 
+                        nothing 
+
+                returning 
+                  pointer to function
+                      returning 
+                        nothing 
+
+
+)
+        Environment: 
+formal type is pointer to pointer to function
+  returning 
+    nothing 
+
+actual type is pointer to instance of type P1 (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type T3 (not function type) 
+              _src: instance of type T3 (not function type) 
+            returning 
+              instance of type T3 (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type T3 (not function type) 
+                  _src: instance of type T3 (not function type) 
+                returning 
+                  instance of type T3 (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type T3 (not function type) 
+actual type is pointer to instance of type P1 (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type T2 (not function type) 
+              _src: instance of type T2 (not function type) 
+            returning 
+              instance of type T2 (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type T2 (not function type) 
+                  _src: instance of type T2 (not function type) 
+                returning 
+                  instance of type T2 (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type T2 (not function type) 
+actual type is pointer to instance of type P1 (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type T1 (not function type) 
+              _src: instance of type T1 (not function type) 
+            returning 
+              instance of type T1 (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type T1 (not function type) 
+                  _src: instance of type T1 (not function type) 
+                returning 
+                  instance of type T1 (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type T1 (not function type) 
+actual type is pointer to instance of type P1 (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to instance of type P1 (not function type) 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type P1 (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                i: instance of type P1 (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  j: instance of type P2 (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                j: instance of type P2 (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T1 (not function type) 
+    _src: instance of type T1 (not function type) 
+  returning 
+    instance of type T1 (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T1 (not function type) 
+      _src: instance of type T1 (not function type) 
+    returning 
+      instance of type T1 (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T2 (not function type) 
+    _src: instance of type T2 (not function type) 
+  returning 
+    instance of type T2 (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T2 (not function type) 
+      _src: instance of type T2 (not function type) 
+    returning 
+      instance of type T2 (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T3 (not function type) 
+    _src: instance of type T3 (not function type) 
+  returning 
+    instance of type T3 (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T3 (not function type) 
+      _src: instance of type T3 (not function type) 
+    returning 
+      instance of type T3 (not function type) 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T1 (not function type) 
+      _src: instance of type T1 (not function type) 
+    returning 
+      instance of type T1 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T1 (not function type) 
+          _src: instance of type T1 (not function type) 
+        returning 
+          instance of type T1 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T2 (not function type) 
+      _src: instance of type T2 (not function type) 
+    returning 
+      instance of type T2 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T2 (not function type) 
+          _src: instance of type T2 (not function type) 
+        returning 
+          instance of type T2 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T3 (not function type) 
+      _src: instance of type T3 (not function type) 
+    returning 
+      instance of type T3 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T3 (not function type) 
+          _src: instance of type T3 (not function type) 
+        returning 
+          instance of type T3 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to function
+              returning 
+                nothing 
+
+          pointer to function
+              returning 
+                nothing 
+
+        returning 
+          pointer to function
+              returning 
+                nothing 
+
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to float 
+          pointer to float 
+        returning 
+          pointer to float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to signed int 
+          pointer to signed int 
+        returning 
+          pointer to signed int 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to char 
+          char 
+        returning 
+          char 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to float 
+          float 
+        returning 
+          float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 10 alternatives before elimination
+there are 10 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  j: instance of type P2 (not function type) 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    lvalue instance of type P2 (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    j: instance of type P2 (not function type) 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to instance of type P2 (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    j: instance of type P2 (not function type) 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to instance of type P2 (not function type) 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  j: instance of type P2 (not function type) 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue instance of type P2 (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  j: instance of type P2 (not function type) 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue instance of type P2 (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is pointer to signed int 
+actual type is pointer to instance of type P2 (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to float 
+              float 
+            returning 
+              float 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to float 
+                  float 
+                returning 
+                  float 
+
+)
+        Environment: 
+formal type is pointer to float 
+actual type is pointer to instance of type P2 (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to char 
+              char 
+            returning 
+              char 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+)
+        Environment: 
+formal type is pointer to char 
+actual type is pointer to instance of type P2 (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to pointer to signed int 
+              pointer to signed int 
+            returning 
+              pointer to signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to pointer to signed int 
+                  pointer to signed int 
+                returning 
+                  pointer to signed int 
+
+)
+        Environment: 
+formal type is pointer to pointer to signed int 
+actual type is pointer to instance of type P2 (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to pointer to float 
+              pointer to float 
+            returning 
+              pointer to float 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to pointer to float 
+                  pointer to float 
+                returning 
+                  pointer to float 
+
+)
+        Environment: 
+formal type is pointer to pointer to float 
+actual type is pointer to instance of type P2 (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to pointer to function
+                  returning 
+                    nothing 
+
+              pointer to function
+                  returning 
+                    nothing 
+
+            returning 
+              pointer to function
+                  returning 
+                    nothing 
+
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to pointer to function
+                      returning 
+                        nothing 
+
+                  pointer to function
+                      returning 
+                        nothing 
+
+                returning 
+                  pointer to function
+                      returning 
+                        nothing 
+
+
+)
+        Environment: 
+formal type is pointer to pointer to function
+  returning 
+    nothing 
+
+actual type is pointer to instance of type P2 (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type T3 (not function type) 
+              _src: instance of type T3 (not function type) 
+            returning 
+              instance of type T3 (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type T3 (not function type) 
+                  _src: instance of type T3 (not function type) 
+                returning 
+                  instance of type T3 (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type T3 (not function type) 
+actual type is pointer to instance of type P2 (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type T2 (not function type) 
+              _src: instance of type T2 (not function type) 
+            returning 
+              instance of type T2 (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type T2 (not function type) 
+                  _src: instance of type T2 (not function type) 
+                returning 
+                  instance of type T2 (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type T2 (not function type) 
+actual type is pointer to instance of type P2 (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type T1 (not function type) 
+              _src: instance of type T1 (not function type) 
+            returning 
+              instance of type T1 (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type T1 (not function type) 
+                  _src: instance of type T1 (not function type) 
+                returning 
+                  instance of type T1 (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type T1 (not function type) 
+actual type is pointer to instance of type P2 (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to instance of type P2 (not function type) 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue instance of struct __anonymous0 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+(types:
+    instance of struct __anonymous0 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type P1 (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                i: instance of type P1 (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  j: instance of type P2 (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                j: instance of type P2 (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T1 (not function type) 
+    _src: instance of type T1 (not function type) 
+  returning 
+    instance of type T1 (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T1 (not function type) 
+      _src: instance of type T1 (not function type) 
+    returning 
+      instance of type T1 (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T2 (not function type) 
+    _src: instance of type T2 (not function type) 
+  returning 
+    instance of type T2 (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type T2 (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type T2 (not function type) 
+
+    to:
+      instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T2 (not function type) 
+      _src: instance of type T2 (not function type) 
+    returning 
+      instance of type T2 (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T3 (not function type) 
+    _src: instance of type T3 (not function type) 
+  returning 
+    instance of type T3 (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T3 (not function type) 
+      _src: instance of type T3 (not function type) 
+    returning 
+      instance of type T3 (not function type) 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T1 (not function type) 
+      _src: instance of type T1 (not function type) 
+    returning 
+      instance of type T1 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T1 (not function type) 
+          _src: instance of type T1 (not function type) 
+        returning 
+          instance of type T1 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T2 (not function type) 
+      _src: instance of type T2 (not function type) 
+    returning 
+      instance of type T2 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T2 (not function type) 
+          _src: instance of type T2 (not function type) 
+        returning 
+          instance of type T2 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T3 (not function type) 
+      _src: instance of type T3 (not function type) 
+    returning 
+      instance of type T3 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T3 (not function type) 
+          _src: instance of type T3 (not function type) 
+        returning 
+          instance of type T3 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to function
+              returning 
+                nothing 
+
+          pointer to function
+              returning 
+                nothing 
+
+        returning 
+          pointer to function
+              returning 
+                nothing 
+
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to float 
+          pointer to float 
+        returning 
+          pointer to float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to signed int 
+          pointer to signed int 
+        returning 
+          pointer to signed int 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to char 
+          char 
+        returning 
+          char 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to float 
+          float 
+        returning 
+          float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 10 alternatives before elimination
+there are 10 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _dst: pointer to instance of type T2 (not function type) 
+(types:
+    lvalue pointer to instance of type T2 (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type P1 (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                i: instance of type P1 (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  j: instance of type P2 (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                j: instance of type P2 (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T1 (not function type) 
+    _src: instance of type T1 (not function type) 
+  returning 
+    instance of type T1 (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T1 (not function type) 
+      _src: instance of type T1 (not function type) 
+    returning 
+      instance of type T1 (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T2 (not function type) 
+    _src: instance of type T2 (not function type) 
+  returning 
+    instance of type T2 (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type T2 (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type T2 (not function type) 
+
+    to:
+      instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T2 (not function type) 
+      _src: instance of type T2 (not function type) 
+    returning 
+      instance of type T2 (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T3 (not function type) 
+    _src: instance of type T3 (not function type) 
+  returning 
+    instance of type T3 (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T3 (not function type) 
+      _src: instance of type T3 (not function type) 
+    returning 
+      instance of type T3 (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type w3 (not function type) 
+    _src: instance of type w3 (not function type) 
+  returning 
+    instance of type w3 (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type w3 (not function type) 
+
+    to:
+      pointer to instance of type T2 (not function type) 
+        with parameters
+          signed int 
+          signed int 
+
+    Cast of:
+      Variable Expression: _src: instance of type w3 (not function type) 
+
+    to:
+      instance of type T2 (not function type) 
+        with parameters
+          signed int 
+          signed int 
+
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type w3 (not function type) 
+      _src: instance of type w3 (not function type) 
+    returning 
+      instance of type w3 (not function type) 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T1 (not function type) 
+      _src: instance of type T1 (not function type) 
+    returning 
+      instance of type T1 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T1 (not function type) 
+          _src: instance of type T1 (not function type) 
+        returning 
+          instance of type T1 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T2 (not function type) 
+      _src: instance of type T2 (not function type) 
+    returning 
+      instance of type T2 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T2 (not function type) 
+          _src: instance of type T2 (not function type) 
+        returning 
+          instance of type T2 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T3 (not function type) 
+      _src: instance of type T3 (not function type) 
+    returning 
+      instance of type T3 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T3 (not function type) 
+          _src: instance of type T3 (not function type) 
+        returning 
+          instance of type T3 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type w3 (not function type) 
+      _src: instance of type w3 (not function type) 
+    returning 
+      instance of type w3 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type w3 (not function type) 
+          _src: instance of type w3 (not function type) 
+        returning 
+          instance of type w3 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to function
+              returning 
+                nothing 
+
+          pointer to function
+              returning 
+                nothing 
+
+        returning 
+          pointer to function
+              returning 
+                nothing 
+
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to float 
+          pointer to float 
+        returning 
+          pointer to float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to signed int 
+          pointer to signed int 
+        returning 
+          pointer to signed int 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to char 
+          char 
+        returning 
+          char 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to float 
+          float 
+        returning 
+          float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 11 alternatives before elimination
+there are 11 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _dst: pointer to instance of type w3 (not function type) 
+(types:
+    lvalue pointer to instance of type w3 (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is 0
+decl is 0: const instance of type T (not function type) 
+newExpr is Variable Expression: 0: const instance of type T (not function type) 
+
+decl is 0: const instance of type T1 (not function type) 
+newExpr is Variable Expression: 0: const instance of type T1 (not function type) 
+
+decl is 0: const instance of type T2 (not function type) 
+with parameters
+  instance of type P1 (not function type) 
+  instance of type P2 (not function type) 
+
+newExpr is Variable Expression: 0: const instance of type T2 (not function type) 
+  with parameters
+    instance of type P1 (not function type) 
+    instance of type P2 (not function type) 
+
+
+decl is 0: const instance of type T3 (not function type) 
+newExpr is Variable Expression: 0: const instance of type T3 (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T (not function type) 
+(types:
+    const lvalue instance of type T (not function type) 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T1 (not function type) 
+(types:
+    const lvalue instance of type T1 (not function type) 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T2 (not function type) 
+  with parameters
+    instance of type P1 (not function type) 
+    instance of type P2 (not function type) 
+
+(types:
+    const lvalue instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T3 (not function type) 
+(types:
+    const lvalue instance of type T3 (not function type) 
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: 0: const instance of type T (not function type) 
+
+to:
+  instance of type T (not function type) 
+(types:
+    instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type P1 (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                i: instance of type P1 (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  j: instance of type P2 (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                j: instance of type P2 (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T1 (not function type) 
+    _src: instance of type T1 (not function type) 
+  returning 
+    instance of type T1 (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T1 (not function type) 
+      _src: instance of type T1 (not function type) 
+    returning 
+      instance of type T1 (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T2 (not function type) 
+    _src: instance of type T2 (not function type) 
+  returning 
+    instance of type T2 (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type T2 (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type T2 (not function type) 
+
+    to:
+      instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T2 (not function type) 
+      _src: instance of type T2 (not function type) 
+    returning 
+      instance of type T2 (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T3 (not function type) 
+    _src: instance of type T3 (not function type) 
+  returning 
+    instance of type T3 (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T3 (not function type) 
+      _src: instance of type T3 (not function type) 
+    returning 
+      instance of type T3 (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type w3 (not function type) 
+    _src: instance of type w3 (not function type) 
+  returning 
+    instance of type w3 (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type w3 (not function type) 
+
+    to:
+      pointer to instance of type T2 (not function type) 
+        with parameters
+          signed int 
+          signed int 
+
+    Cast of:
+      Variable Expression: _src: instance of type w3 (not function type) 
+
+    to:
+      instance of type T2 (not function type) 
+        with parameters
+          signed int 
+          signed int 
+
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type w3 (not function type) 
+      _src: instance of type w3 (not function type) 
+    returning 
+      instance of type w3 (not function type) 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+decl is ?=?: pointer to function
+  with parameters
+    pointer to instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+newExpr is Variable Expression: ?=?: pointer to function
+    with parameters
+      pointer to instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T1 (not function type) 
+      _src: instance of type T1 (not function type) 
+    returning 
+      instance of type T1 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T1 (not function type) 
+          _src: instance of type T1 (not function type) 
+        returning 
+          instance of type T1 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T2 (not function type) 
+      _src: instance of type T2 (not function type) 
+    returning 
+      instance of type T2 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T2 (not function type) 
+          _src: instance of type T2 (not function type) 
+        returning 
+          instance of type T2 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T3 (not function type) 
+      _src: instance of type T3 (not function type) 
+    returning 
+      instance of type T3 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T3 (not function type) 
+          _src: instance of type T3 (not function type) 
+        returning 
+          instance of type T3 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type w3 (not function type) 
+      _src: instance of type w3 (not function type) 
+    returning 
+      instance of type w3 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type w3 (not function type) 
+          _src: instance of type w3 (not function type) 
+        returning 
+          instance of type w3 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to function
+              returning 
+                nothing 
+
+          pointer to function
+              returning 
+                nothing 
+
+        returning 
+          pointer to function
+              returning 
+                nothing 
+
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to float 
+          pointer to float 
+        returning 
+          pointer to float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to signed int 
+          pointer to signed int 
+        returning 
+          pointer to signed int 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to char 
+          char 
+        returning 
+          char 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to float 
+          float 
+        returning 
+          float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: pointer to function
+    with parameters
+      pointer to instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    lvalue pointer to function
+        with parameters
+          pointer to instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+)
+Environment: 
+
+there are 12 alternatives before elimination
+there are 12 alternatives after elimination
+nameExpr is total
+decl is total: instance of type T (not function type) with initializer 
+Simple Initializer:   Cast of:
+    Variable Expression: 0: const instance of type T (not function type) 
+
+  to:
+    instance of type T (not function type) 
+  with environment:
+    Types:
+    Non-types:
+
+newExpr is Variable Expression: total: instance of type T (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: total: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: total: instance of type T (not function type) 
+(types:
+    pointer to instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: total: instance of type T (not function type) 
+(types:
+    pointer to instance of type T (not function type) 
+)
+Environment: 
+
+nameExpr is 0
+decl is 0: const instance of type T (not function type) 
+newExpr is Variable Expression: 0: const instance of type T (not function type) 
+
+decl is 0: const instance of type T1 (not function type) 
+newExpr is Variable Expression: 0: const instance of type T1 (not function type) 
+
+decl is 0: const instance of type T2 (not function type) 
+with parameters
+  instance of type P1 (not function type) 
+  instance of type P2 (not function type) 
+
+newExpr is Variable Expression: 0: const instance of type T2 (not function type) 
+  with parameters
+    instance of type P1 (not function type) 
+    instance of type P2 (not function type) 
+
+
+decl is 0: const instance of type T3 (not function type) 
+newExpr is Variable Expression: 0: const instance of type T3 (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T (not function type) 
+(types:
+    const lvalue instance of type T (not function type) 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T1 (not function type) 
+(types:
+    const lvalue instance of type T1 (not function type) 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T2 (not function type) 
+  with parameters
+    instance of type P1 (not function type) 
+    instance of type P2 (not function type) 
+
+(types:
+    const lvalue instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T3 (not function type) 
+(types:
+    const lvalue instance of type T3 (not function type) 
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T3 (not function type) 
+(types:
+    const lvalue instance of type T3 (not function type) 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T2 (not function type) 
+  with parameters
+    instance of type P1 (not function type) 
+    instance of type P2 (not function type) 
+
+(types:
+    const lvalue instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T1 (not function type) 
+(types:
+    const lvalue instance of type T1 (not function type) 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T (not function type) 
+(types:
+    const lvalue instance of type T (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is pointer to signed int 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to signed int 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to signed int 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to signed int 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to float 
+              float 
+            returning 
+              float 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to float 
+                  float 
+                returning 
+                  float 
+
+)
+        Environment: 
+formal type is pointer to float 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to float 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to float 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to float 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to char 
+              char 
+            returning 
+              char 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+)
+        Environment: 
+formal type is pointer to char 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to char 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to char 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to char 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to pointer to signed int 
+              pointer to signed int 
+            returning 
+              pointer to signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to pointer to signed int 
+                  pointer to signed int 
+                returning 
+                  pointer to signed int 
+
+)
+        Environment: 
+formal type is pointer to pointer to signed int 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to pointer to signed int 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to pointer to signed int 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to pointer to signed int 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to pointer to float 
+              pointer to float 
+            returning 
+              pointer to float 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to pointer to float 
+                  pointer to float 
+                returning 
+                  pointer to float 
+
+)
+        Environment: 
+formal type is pointer to pointer to float 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to pointer to float 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to pointer to float 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to pointer to float 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to pointer to function
+                  returning 
+                    nothing 
+
+              pointer to function
+                  returning 
+                    nothing 
+
+            returning 
+              pointer to function
+                  returning 
+                    nothing 
+
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to pointer to function
+                      returning 
+                        nothing 
+
+                  pointer to function
+                      returning 
+                        nothing 
+
+                returning 
+                  pointer to function
+                      returning 
+                        nothing 
+
+
+)
+        Environment: 
+formal type is pointer to pointer to function
+  returning 
+    nothing 
+
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to pointer to function
+  returning 
+    nothing 
+
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to pointer to function
+  returning 
+    nothing 
+
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to pointer to function
+  returning 
+    nothing 
+
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type w3 (not function type) 
+              _src: instance of type w3 (not function type) 
+            returning 
+              instance of type w3 (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type w3 (not function type) 
+                  _src: instance of type w3 (not function type) 
+                returning 
+                  instance of type w3 (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type w3 (not function type) 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to instance of type w3 (not function type) 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to instance of type w3 (not function type) 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to instance of type w3 (not function type) 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type T3 (not function type) 
+              _src: instance of type T3 (not function type) 
+            returning 
+              instance of type T3 (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type T3 (not function type) 
+                  _src: instance of type T3 (not function type) 
+                returning 
+                  instance of type T3 (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type T3 (not function type) 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to instance of type T3 (not function type) 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to instance of type T3 (not function type) 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to instance of type T3 (not function type) 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type T2 (not function type) 
+              _src: instance of type T2 (not function type) 
+            returning 
+              instance of type T2 (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type T2 (not function type) 
+                  _src: instance of type T2 (not function type) 
+                returning 
+                  instance of type T2 (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type T2 (not function type) 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to instance of type T2 (not function type) 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to instance of type T2 (not function type) 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to instance of type T2 (not function type) 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type T1 (not function type) 
+              _src: instance of type T1 (not function type) 
+            returning 
+              instance of type T1 (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type T1 (not function type) 
+                  _src: instance of type T1 (not function type) 
+                returning 
+                  instance of type T1 (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type T1 (not function type) 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to instance of type T1 (not function type) 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to instance of type T1 (not function type) 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to instance of type T1 (not function type) 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to instance of type T (not function type) 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+(types:
+            lvalue pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type T (not function type) 
+actual type is pointer to instance of type T (not function type) 
+formal type is instance of type T (not function type) 
+actual type is const lvalue instance of type T3 (not function type) 
+formal type is pointer to instance of type T (not function type) 
+actual type is pointer to instance of type T (not function type) 
+formal type is instance of type T (not function type) 
+actual type is const lvalue instance of type T2 (not function type) 
+with parameters
+  instance of type P1 (not function type) 
+  instance of type P2 (not function type) 
+
+formal type is pointer to instance of type T (not function type) 
+actual type is pointer to instance of type T (not function type) 
+formal type is instance of type T (not function type) 
+actual type is const lvalue instance of type T1 (not function type) 
+formal type is pointer to instance of type T (not function type) 
+actual type is pointer to instance of type T (not function type) 
+formal type is instance of type T (not function type) 
+actual type is const lvalue instance of type T (not function type) 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Address of:
+          Variable Expression: total: instance of type T (not function type) 
+--- results are
+        pointer to instance of type T (not function type) 
+
+converting pointer to instance of type T (not function type) 
+ to pointer to instance of type T (not function type) 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: 0: const instance of type T (not function type) 
+--- results are
+        const lvalue instance of type T (not function type) 
+
+converting const lvalue instance of type T (not function type) 
+ to instance of type T (not function type) 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        pointer to instance of type T (not function type) 
+        instance of type T (not function type) 
+actuals are:
+                  Address of:
+            Variable Expression: total: instance of type T (not function type) 
+
+                  Variable Expression: 0: const instance of type T (not function type) 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?=?: pointer to function
+      with parameters
+        pointer to instance of type T (not function type) 
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Address of:
+      Variable Expression: total: instance of type T (not function type) 
+
+      Variable Expression: 0: const instance of type T (not function type) 
+
+(types:
+    instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?=?: pointer to function
+        with parameters
+          pointer to instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+  to arguments
+          Address of:
+        Variable Expression: total: instance of type T (not function type) 
+
+          Variable Expression: 0: const instance of type T (not function type) 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type P1 (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                i: instance of type P1 (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  j: instance of type P2 (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                j: instance of type P2 (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T1 (not function type) 
+    _src: instance of type T1 (not function type) 
+  returning 
+    instance of type T1 (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T1 (not function type) 
+      _src: instance of type T1 (not function type) 
+    returning 
+      instance of type T1 (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T2 (not function type) 
+    _src: instance of type T2 (not function type) 
+  returning 
+    instance of type T2 (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type T2 (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type T2 (not function type) 
+
+    to:
+      instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T2 (not function type) 
+      _src: instance of type T2 (not function type) 
+    returning 
+      instance of type T2 (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T3 (not function type) 
+    _src: instance of type T3 (not function type) 
+  returning 
+    instance of type T3 (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T3 (not function type) 
+      _src: instance of type T3 (not function type) 
+    returning 
+      instance of type T3 (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type w3 (not function type) 
+    _src: instance of type w3 (not function type) 
+  returning 
+    instance of type w3 (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type w3 (not function type) 
+
+    to:
+      pointer to instance of type T2 (not function type) 
+        with parameters
+          signed int 
+          signed int 
+
+    Cast of:
+      Variable Expression: _src: instance of type w3 (not function type) 
+
+    to:
+      instance of type T2 (not function type) 
+        with parameters
+          signed int 
+          signed int 
+
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type w3 (not function type) 
+      _src: instance of type w3 (not function type) 
+    returning 
+      instance of type w3 (not function type) 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+decl is ?=?: pointer to function
+  with parameters
+    pointer to instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+newExpr is Variable Expression: ?=?: pointer to function
+    with parameters
+      pointer to instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T1 (not function type) 
+      _src: instance of type T1 (not function type) 
+    returning 
+      instance of type T1 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T1 (not function type) 
+          _src: instance of type T1 (not function type) 
+        returning 
+          instance of type T1 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T2 (not function type) 
+      _src: instance of type T2 (not function type) 
+    returning 
+      instance of type T2 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T2 (not function type) 
+          _src: instance of type T2 (not function type) 
+        returning 
+          instance of type T2 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T3 (not function type) 
+      _src: instance of type T3 (not function type) 
+    returning 
+      instance of type T3 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T3 (not function type) 
+          _src: instance of type T3 (not function type) 
+        returning 
+          instance of type T3 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type w3 (not function type) 
+      _src: instance of type w3 (not function type) 
+    returning 
+      instance of type w3 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type w3 (not function type) 
+          _src: instance of type w3 (not function type) 
+        returning 
+          instance of type w3 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to function
+              returning 
+                nothing 
+
+          pointer to function
+              returning 
+                nothing 
+
+        returning 
+          pointer to function
+              returning 
+                nothing 
+
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to float 
+          pointer to float 
+        returning 
+          pointer to float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to signed int 
+          pointer to signed int 
+        returning 
+          pointer to signed int 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to char 
+          char 
+        returning 
+          char 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to float 
+          float 
+        returning 
+          float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: pointer to function
+    with parameters
+      pointer to instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    lvalue pointer to function
+        with parameters
+          pointer to instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+)
+Environment: 
+
+there are 12 alternatives before elimination
+there are 12 alternatives after elimination
+nameExpr is i
+decl is i: signed int 
+newExpr is Variable Expression: i: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: i: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: i: signed int 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: i: signed int 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+nameExpr is 0
+decl is 0: const instance of type T (not function type) 
+newExpr is Variable Expression: 0: const instance of type T (not function type) 
+
+decl is 0: const instance of type T1 (not function type) 
+newExpr is Variable Expression: 0: const instance of type T1 (not function type) 
+
+decl is 0: const instance of type T2 (not function type) 
+with parameters
+  instance of type P1 (not function type) 
+  instance of type P2 (not function type) 
+
+newExpr is Variable Expression: 0: const instance of type T2 (not function type) 
+  with parameters
+    instance of type P1 (not function type) 
+    instance of type P2 (not function type) 
+
+
+decl is 0: const instance of type T3 (not function type) 
+newExpr is Variable Expression: 0: const instance of type T3 (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T (not function type) 
+(types:
+    const lvalue instance of type T (not function type) 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T1 (not function type) 
+(types:
+    const lvalue instance of type T1 (not function type) 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T2 (not function type) 
+  with parameters
+    instance of type P1 (not function type) 
+    instance of type P2 (not function type) 
+
+(types:
+    const lvalue instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T3 (not function type) 
+(types:
+    const lvalue instance of type T3 (not function type) 
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T3 (not function type) 
+(types:
+    const lvalue instance of type T3 (not function type) 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T2 (not function type) 
+  with parameters
+    instance of type P1 (not function type) 
+    instance of type P2 (not function type) 
+
+(types:
+    const lvalue instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T1 (not function type) 
+(types:
+    const lvalue instance of type T1 (not function type) 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T (not function type) 
+(types:
+    const lvalue instance of type T (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is pointer to signed int 
+actual type is pointer to signed int 
+formal type is signed int 
+actual type is const lvalue instance of type T3 (not function type) 
+formal type is pointer to signed int 
+actual type is pointer to signed int 
+formal type is signed int 
+actual type is const lvalue instance of type T2 (not function type) 
+with parameters
+  instance of type P1 (not function type) 
+  instance of type P2 (not function type) 
+
+formal type is pointer to signed int 
+actual type is pointer to signed int 
+formal type is signed int 
+actual type is const lvalue instance of type T1 (not function type) 
+formal type is pointer to signed int 
+actual type is pointer to signed int 
+formal type is signed int 
+actual type is const lvalue instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to float 
+              float 
+            returning 
+              float 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to float 
+                  float 
+                returning 
+                  float 
+
+)
+        Environment: 
+formal type is pointer to float 
+actual type is pointer to signed int 
+formal type is pointer to float 
+actual type is pointer to signed int 
+formal type is pointer to float 
+actual type is pointer to signed int 
+formal type is pointer to float 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to char 
+              char 
+            returning 
+              char 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+)
+        Environment: 
+formal type is pointer to char 
+actual type is pointer to signed int 
+formal type is pointer to char 
+actual type is pointer to signed int 
+formal type is pointer to char 
+actual type is pointer to signed int 
+formal type is pointer to char 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to pointer to signed int 
+              pointer to signed int 
+            returning 
+              pointer to signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to pointer to signed int 
+                  pointer to signed int 
+                returning 
+                  pointer to signed int 
+
+)
+        Environment: 
+formal type is pointer to pointer to signed int 
+actual type is pointer to signed int 
+formal type is pointer to pointer to signed int 
+actual type is pointer to signed int 
+formal type is pointer to pointer to signed int 
+actual type is pointer to signed int 
+formal type is pointer to pointer to signed int 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to pointer to float 
+              pointer to float 
+            returning 
+              pointer to float 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to pointer to float 
+                  pointer to float 
+                returning 
+                  pointer to float 
+
+)
+        Environment: 
+formal type is pointer to pointer to float 
+actual type is pointer to signed int 
+formal type is pointer to pointer to float 
+actual type is pointer to signed int 
+formal type is pointer to pointer to float 
+actual type is pointer to signed int 
+formal type is pointer to pointer to float 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to pointer to function
+                  returning 
+                    nothing 
+
+              pointer to function
+                  returning 
+                    nothing 
+
+            returning 
+              pointer to function
+                  returning 
+                    nothing 
+
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to pointer to function
+                      returning 
+                        nothing 
+
+                  pointer to function
+                      returning 
+                        nothing 
+
+                returning 
+                  pointer to function
+                      returning 
+                        nothing 
+
+
+)
+        Environment: 
+formal type is pointer to pointer to function
+  returning 
+    nothing 
+
+actual type is pointer to signed int 
+formal type is pointer to pointer to function
+  returning 
+    nothing 
+
+actual type is pointer to signed int 
+formal type is pointer to pointer to function
+  returning 
+    nothing 
+
+actual type is pointer to signed int 
+formal type is pointer to pointer to function
+  returning 
+    nothing 
+
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type w3 (not function type) 
+              _src: instance of type w3 (not function type) 
+            returning 
+              instance of type w3 (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type w3 (not function type) 
+                  _src: instance of type w3 (not function type) 
+                returning 
+                  instance of type w3 (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type w3 (not function type) 
+actual type is pointer to signed int 
+formal type is pointer to instance of type w3 (not function type) 
+actual type is pointer to signed int 
+formal type is pointer to instance of type w3 (not function type) 
+actual type is pointer to signed int 
+formal type is pointer to instance of type w3 (not function type) 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type T3 (not function type) 
+              _src: instance of type T3 (not function type) 
+            returning 
+              instance of type T3 (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type T3 (not function type) 
+                  _src: instance of type T3 (not function type) 
+                returning 
+                  instance of type T3 (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type T3 (not function type) 
+actual type is pointer to signed int 
+formal type is pointer to instance of type T3 (not function type) 
+actual type is pointer to signed int 
+formal type is pointer to instance of type T3 (not function type) 
+actual type is pointer to signed int 
+formal type is pointer to instance of type T3 (not function type) 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type T2 (not function type) 
+              _src: instance of type T2 (not function type) 
+            returning 
+              instance of type T2 (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type T2 (not function type) 
+                  _src: instance of type T2 (not function type) 
+                returning 
+                  instance of type T2 (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type T2 (not function type) 
+actual type is pointer to signed int 
+formal type is pointer to instance of type T2 (not function type) 
+actual type is pointer to signed int 
+formal type is pointer to instance of type T2 (not function type) 
+actual type is pointer to signed int 
+formal type is pointer to instance of type T2 (not function type) 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type T1 (not function type) 
+              _src: instance of type T1 (not function type) 
+            returning 
+              instance of type T1 (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type T1 (not function type) 
+                  _src: instance of type T1 (not function type) 
+                returning 
+                  instance of type T1 (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type T1 (not function type) 
+actual type is pointer to signed int 
+formal type is pointer to instance of type T1 (not function type) 
+actual type is pointer to signed int 
+formal type is pointer to instance of type T1 (not function type) 
+actual type is pointer to signed int 
+formal type is pointer to instance of type T1 (not function type) 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+(types:
+            lvalue pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type T (not function type) 
+actual type is pointer to signed int 
+formal type is pointer to instance of type T (not function type) 
+actual type is pointer to signed int 
+formal type is pointer to instance of type T (not function type) 
+actual type is pointer to signed int 
+formal type is pointer to instance of type T (not function type) 
+actual type is pointer to signed int 
+nameExpr is total
+decl is total: instance of type T (not function type) with initializer 
+Simple Initializer:   Cast of:
+    Variable Expression: 0: const instance of type T (not function type) 
+
+  to:
+    instance of type T (not function type) 
+  with environment:
+    Types:
+    Non-types:
+
+newExpr is Variable Expression: total: instance of type T (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: total: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: total: instance of type T (not function type) 
+
+to:
+  instance of type T (not function type) 
+(types:
+    instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?+?
+decl is ?+?: function
+  with parameters
+    instance of type T1 (not function type) 
+    instance of type T1 (not function type) 
+  returning 
+    instance of type T1 (not function type) 
+
+newExpr is Variable Expression: ?+?: function
+    with parameters
+      instance of type T1 (not function type) 
+      instance of type T1 (not function type) 
+    returning 
+      instance of type T1 (not function type) 
+
+
+decl is ?+?: function
+  with parameters
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+  returning 
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+
+newExpr is Variable Expression: ?+?: function
+    with parameters
+      instance of type T2 (not function type) 
+        with parameters
+          instance of type P1 (not function type) 
+          instance of type P2 (not function type) 
+
+      instance of type T2 (not function type) 
+        with parameters
+          instance of type P1 (not function type) 
+          instance of type P2 (not function type) 
+
+    returning 
+      instance of type T2 (not function type) 
+        with parameters
+          instance of type P1 (not function type) 
+          instance of type P2 (not function type) 
+
+
+
+decl is ?+?: function
+  with parameters
+    instance of type T3 (not function type) 
+    instance of type T3 (not function type) 
+  returning 
+    instance of type T3 (not function type) 
+
+newExpr is Variable Expression: ?+?: function
+    with parameters
+      instance of type T3 (not function type) 
+      instance of type T3 (not function type) 
+    returning 
+      instance of type T3 (not function type) 
+
+
+decl is ?+?: pointer to function
+  with parameters
+    instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+newExpr is Variable Expression: ?+?: pointer to function
+    with parameters
+      instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?+?: function
+    with parameters
+      instance of type T1 (not function type) 
+      instance of type T1 (not function type) 
+    returning 
+      instance of type T1 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          instance of type T1 (not function type) 
+          instance of type T1 (not function type) 
+        returning 
+          instance of type T1 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?+?: function
+    with parameters
+      instance of type T2 (not function type) 
+        with parameters
+          instance of type P1 (not function type) 
+          instance of type P2 (not function type) 
+
+      instance of type T2 (not function type) 
+        with parameters
+          instance of type P1 (not function type) 
+          instance of type P2 (not function type) 
+
+    returning 
+      instance of type T2 (not function type) 
+        with parameters
+          instance of type P1 (not function type) 
+          instance of type P2 (not function type) 
+
+
+(types:
+    pointer to function
+        with parameters
+          instance of type T2 (not function type) 
+            with parameters
+              instance of type P1 (not function type) 
+              instance of type P2 (not function type) 
+
+          instance of type T2 (not function type) 
+            with parameters
+              instance of type P1 (not function type) 
+              instance of type P2 (not function type) 
+
+        returning 
+          instance of type T2 (not function type) 
+            with parameters
+              instance of type P1 (not function type) 
+              instance of type P2 (not function type) 
+
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?+?: function
+    with parameters
+      instance of type T3 (not function type) 
+      instance of type T3 (not function type) 
+    returning 
+      instance of type T3 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          instance of type T3 (not function type) 
+          instance of type T3 (not function type) 
+        returning 
+          instance of type T3 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?+?: pointer to function
+    with parameters
+      instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    lvalue pointer to function
+        with parameters
+          instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+nameExpr is t
+decl is t: instance of type T (not function type) 
+newExpr is Variable Expression: t: instance of type T (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: t: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: t: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+nameExpr is t
+decl is t: instance of type T (not function type) 
+newExpr is Variable Expression: t: instance of type T (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: t: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: t: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?+?: function
+            with parameters
+              instance of type T3 (not function type) 
+              instance of type T3 (not function type) 
+            returning 
+              instance of type T3 (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  instance of type T3 (not function type) 
+                  instance of type T3 (not function type) 
+                returning 
+                  instance of type T3 (not function type) 
+
+)
+        Environment: 
+formal type is instance of type T3 (not function type) 
+actual type is lvalue instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?+?: function
+            with parameters
+              instance of type T2 (not function type) 
+                with parameters
+                  instance of type P1 (not function type) 
+                  instance of type P2 (not function type) 
+
+              instance of type T2 (not function type) 
+                with parameters
+                  instance of type P1 (not function type) 
+                  instance of type P2 (not function type) 
+
+            returning 
+              instance of type T2 (not function type) 
+                with parameters
+                  instance of type P1 (not function type) 
+                  instance of type P2 (not function type) 
+
+
+(types:
+            pointer to function
+                with parameters
+                  instance of type T2 (not function type) 
+                    with parameters
+                      instance of type P1 (not function type) 
+                      instance of type P2 (not function type) 
+
+                  instance of type T2 (not function type) 
+                    with parameters
+                      instance of type P1 (not function type) 
+                      instance of type P2 (not function type) 
+
+                returning 
+                  instance of type T2 (not function type) 
+                    with parameters
+                      instance of type P1 (not function type) 
+                      instance of type P2 (not function type) 
+
+
+)
+        Environment: 
+formal type is instance of type T2 (not function type) 
+with parameters
+  instance of type P1 (not function type) 
+  instance of type P2 (not function type) 
+
+actual type is lvalue instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?+?: function
+            with parameters
+              instance of type T1 (not function type) 
+              instance of type T1 (not function type) 
+            returning 
+              instance of type T1 (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  instance of type T1 (not function type) 
+                  instance of type T1 (not function type) 
+                returning 
+                  instance of type T1 (not function type) 
+
+)
+        Environment: 
+formal type is instance of type T1 (not function type) 
+actual type is lvalue instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?+?: pointer to function
+            with parameters
+              instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+(types:
+            lvalue pointer to function
+                with parameters
+                  instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+)
+        Environment: 
+formal type is instance of type T (not function type) 
+actual type is lvalue instance of type T (not function type) 
+formal type is instance of type T (not function type) 
+actual type is lvalue instance of type T (not function type) 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Variable Expression: t: instance of type T (not function type) 
+--- results are
+        lvalue instance of type T (not function type) 
+
+converting lvalue instance of type T (not function type) 
+ to instance of type T (not function type) 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: t: instance of type T (not function type) 
+--- results are
+        lvalue instance of type T (not function type) 
+
+converting lvalue instance of type T (not function type) 
+ to instance of type T (not function type) 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type T (not function type) 
+        instance of type T (not function type) 
+actuals are:
+                  Variable Expression: t: instance of type T (not function type) 
+
+                  Variable Expression: t: instance of type T (not function type) 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?+?: pointer to function
+      with parameters
+        instance of type T (not function type) 
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Variable Expression: t: instance of type T (not function type) 
+
+      Variable Expression: t: instance of type T (not function type) 
+
+(types:
+    instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: ?+?: pointer to function
+        with parameters
+          instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+  to arguments
+          Variable Expression: t: instance of type T (not function type) 
+
+          Variable Expression: t: instance of type T (not function type) 
+
+
+to:
+  instance of type T (not function type) 
+(types:
+    instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?!=?
+decl is ?!=?: pointer to function
+  with parameters
+    instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?!=?: pointer to function
+    with parameters
+      instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?!=?: pointer to function
+    with parameters
+      instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      signed int 
+
+(types:
+    lvalue pointer to function
+        with parameters
+          instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?<?
+decl is ?<?: pointer to function
+  with parameters
+    instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?<?: pointer to function
+    with parameters
+      instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?<?: pointer to function
+    with parameters
+      instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      signed int 
+
+(types:
+    lvalue pointer to function
+        with parameters
+          instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is t1
+decl is t1: instance of type T (not function type) 
+newExpr is Variable Expression: t1: instance of type T (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: t1: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: t1: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+nameExpr is t2
+decl is t2: instance of type T (not function type) 
+newExpr is Variable Expression: t2: instance of type T (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: t2: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: t2: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?<?: pointer to function
+            with parameters
+              instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              signed int 
+
+(types:
+            lvalue pointer to function
+                with parameters
+                  instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is instance of type T (not function type) 
+actual type is lvalue instance of type T (not function type) 
+formal type is instance of type T (not function type) 
+actual type is lvalue instance of type T (not function type) 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Variable Expression: t1: instance of type T (not function type) 
+--- results are
+        lvalue instance of type T (not function type) 
+
+converting lvalue instance of type T (not function type) 
+ to instance of type T (not function type) 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: t2: instance of type T (not function type) 
+--- results are
+        lvalue instance of type T (not function type) 
+
+converting lvalue instance of type T (not function type) 
+ to instance of type T (not function type) 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type T (not function type) 
+        instance of type T (not function type) 
+actuals are:
+                  Variable Expression: t1: instance of type T (not function type) 
+
+                  Variable Expression: t2: instance of type T (not function type) 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?<?: pointer to function
+      with parameters
+        instance of type T (not function type) 
+        instance of type T (not function type) 
+      returning 
+        signed int 
+
+to arguments
+      Variable Expression: t1: instance of type T (not function type) 
+
+      Variable Expression: t2: instance of type T (not function type) 
+
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?<?: pointer to function
+      with parameters
+        instance of type T (not function type) 
+        instance of type T (not function type) 
+      returning 
+        signed int 
+
+to arguments
+      Variable Expression: t1: instance of type T (not function type) 
+
+      Variable Expression: t2: instance of type T (not function type) 
+
+(types:
+    signed int 
+)
+Environment: 
+
+nameExpr is 0
+decl is 0: const instance of type T (not function type) 
+newExpr is Variable Expression: 0: const instance of type T (not function type) 
+
+decl is 0: const instance of type T1 (not function type) 
+newExpr is Variable Expression: 0: const instance of type T1 (not function type) 
+
+decl is 0: const instance of type T2 (not function type) 
+with parameters
+  instance of type P1 (not function type) 
+  instance of type P2 (not function type) 
+
+newExpr is Variable Expression: 0: const instance of type T2 (not function type) 
+  with parameters
+    instance of type P1 (not function type) 
+    instance of type P2 (not function type) 
+
+
+decl is 0: const instance of type T3 (not function type) 
+newExpr is Variable Expression: 0: const instance of type T3 (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T (not function type) 
+(types:
+    const lvalue instance of type T (not function type) 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T1 (not function type) 
+(types:
+    const lvalue instance of type T1 (not function type) 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T2 (not function type) 
+  with parameters
+    instance of type P1 (not function type) 
+    instance of type P2 (not function type) 
+
+(types:
+    const lvalue instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T3 (not function type) 
+(types:
+    const lvalue instance of type T3 (not function type) 
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T3 (not function type) 
+(types:
+    const lvalue instance of type T3 (not function type) 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T2 (not function type) 
+  with parameters
+    instance of type P1 (not function type) 
+    instance of type P2 (not function type) 
+
+(types:
+    const lvalue instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T1 (not function type) 
+(types:
+    const lvalue instance of type T1 (not function type) 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T (not function type) 
+(types:
+    const lvalue instance of type T (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?!=?: pointer to function
+            with parameters
+              instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              signed int 
+
+(types:
+            lvalue pointer to function
+                with parameters
+                  instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is instance of type T (not function type) 
+actual type is signed int 
+formal type is instance of type T (not function type) 
+actual type is signed int 
+formal type is instance of type T (not function type) 
+actual type is signed int 
+formal type is instance of type T (not function type) 
+actual type is signed int 
+nameExpr is 1
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 2 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+constant expression 2 signed int 
+to:
+  signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is swap
+decl is swap: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    left: instance of type T (not function type) 
+    right: instance of type T (not function type) 
+  returning 
+    nothing 
+  with body 
+    CompoundStmt
+      Declaration of temp: instance of type T (not function type) with initializer 
+        Simple Initializer:           Cast of:
+            Variable Expression: left: instance of type T (not function type) 
+
+          to:
+            instance of type T (not function type) 
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+          to arguments
+                          Address of:
+                Variable Expression: temp: instance of type T (not function type) 
+
+                          Variable Expression: left: instance of type T (not function type) 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+          to arguments
+                          Address of:
+                Variable Expression: left: instance of type T (not function type) 
+
+                          Variable Expression: right: instance of type T (not function type) 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+          to arguments
+                          Address of:
+                Variable Expression: right: instance of type T (not function type) 
+
+                          Variable Expression: temp: instance of type T (not function type) 
+
+          with environment:
+            Types:
+            Non-types:
+
+
+newExpr is Variable Expression: swap: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      left: instance of type T (not function type) 
+      right: instance of type T (not function type) 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: swap: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      left: instance of type T (not function type) 
+      right: instance of type T (not function type) 
+    returning 
+      nothing 
+
+(types:
+    pointer to forall
+          _0_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+
+        function
+        with parameters
+          left: instance of type _0_T (not function type) 
+          right: instance of type _0_T (not function type) 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is x
+nameExpr is twice
+decl is twice: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+        0: const instance of type T (not function type) 
+        ?+?: pointer to function
+            with parameters
+              instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+        ?++: pointer to function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+        ?+=?: pointer to function
+            with parameters
+              instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    t: instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Cast of:
+  Application of
+    Variable Expression: ?+?: pointer to function
+        with parameters
+          instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+  to arguments
+          Variable Expression: t: instance of type T (not function type) 
+
+          Variable Expression: t: instance of type T (not function type) 
+
+
+to:
+  instance of type T (not function type) 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: twice: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          0: const instance of type T (not function type) 
+          ?+?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?++: pointer to function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?+=?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      t: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: twice: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          0: const instance of type T (not function type) 
+          ?+?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?++: pointer to function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?+=?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      t: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    pointer to forall
+          _0_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+              0: const instance of type _0_T (not function type) 
+              ?+?: pointer to function
+                  with parameters
+                    instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+              ?++: pointer to function
+                  with parameters
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+              ?+=?: pointer to function
+                  with parameters
+                    instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+
+        function
+        with parameters
+          t: instance of type _0_T (not function type) 
+        returning 
+          instance of type _0_T (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is x
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type P1 (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                i: instance of type P1 (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  j: instance of type P2 (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                j: instance of type P2 (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T1 (not function type) 
+    _src: instance of type T1 (not function type) 
+  returning 
+    instance of type T1 (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T1 (not function type) 
+      _src: instance of type T1 (not function type) 
+    returning 
+      instance of type T1 (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T2 (not function type) 
+    _src: instance of type T2 (not function type) 
+  returning 
+    instance of type T2 (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type T2 (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type T2 (not function type) 
+
+    to:
+      instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T2 (not function type) 
+      _src: instance of type T2 (not function type) 
+    returning 
+      instance of type T2 (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T3 (not function type) 
+    _src: instance of type T3 (not function type) 
+  returning 
+    instance of type T3 (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T3 (not function type) 
+      _src: instance of type T3 (not function type) 
+    returning 
+      instance of type T3 (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type w3 (not function type) 
+    _src: instance of type w3 (not function type) 
+  returning 
+    instance of type w3 (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type w3 (not function type) 
+
+    to:
+      pointer to instance of type T2 (not function type) 
+        with parameters
+          signed int 
+          signed int 
+
+    Cast of:
+      Variable Expression: _src: instance of type w3 (not function type) 
+
+    to:
+      instance of type T2 (not function type) 
+        with parameters
+          signed int 
+          signed int 
+
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type w3 (not function type) 
+      _src: instance of type w3 (not function type) 
+    returning 
+      instance of type w3 (not function type) 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+decl is ?=?: pointer to function
+  with parameters
+    pointer to instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+newExpr is Variable Expression: ?=?: pointer to function
+    with parameters
+      pointer to instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T1 (not function type) 
+      _src: instance of type T1 (not function type) 
+    returning 
+      instance of type T1 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T1 (not function type) 
+          _src: instance of type T1 (not function type) 
+        returning 
+          instance of type T1 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T2 (not function type) 
+      _src: instance of type T2 (not function type) 
+    returning 
+      instance of type T2 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T2 (not function type) 
+          _src: instance of type T2 (not function type) 
+        returning 
+          instance of type T2 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type T3 (not function type) 
+      _src: instance of type T3 (not function type) 
+    returning 
+      instance of type T3 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type T3 (not function type) 
+          _src: instance of type T3 (not function type) 
+        returning 
+          instance of type T3 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type w3 (not function type) 
+      _src: instance of type w3 (not function type) 
+    returning 
+      instance of type w3 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type w3 (not function type) 
+          _src: instance of type w3 (not function type) 
+        returning 
+          instance of type w3 (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to function
+              returning 
+                nothing 
+
+          pointer to function
+              returning 
+                nothing 
+
+        returning 
+          pointer to function
+              returning 
+                nothing 
+
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to float 
+          pointer to float 
+        returning 
+          pointer to float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to pointer to signed int 
+          pointer to signed int 
+        returning 
+          pointer to signed int 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to char 
+          char 
+        returning 
+          char 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to float 
+          float 
+        returning 
+          float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: pointer to function
+    with parameters
+      pointer to instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    lvalue pointer to function
+        with parameters
+          pointer to instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+)
+Environment: 
+
+there are 12 alternatives before elimination
+there are 12 alternatives after elimination
+nameExpr is f
+decl is f: float 
+newExpr is Variable Expression: f: float 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: float 
+(types:
+    lvalue float 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: f: float 
+(types:
+    pointer to float 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: f: float 
+(types:
+    pointer to float 
+)
+Environment: 
+
+nameExpr is min
+decl is min: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+        0: const instance of type T (not function type) 
+        ?!=?: pointer to function
+            with parameters
+              instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              signed int 
+
+        ?<?: pointer to function
+            with parameters
+              instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              signed int 
+
+
+  function
+  with parameters
+    t1: instance of type T (not function type) 
+    t2: instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Conditional expression on: 
+  Cast of:
+    Applying untyped: 
+        Name: ?!=?
+    ...to: 
+        Applying untyped: 
+            Name: ?<?
+        ...to: 
+            Name: t1
+            Name: t2
+        Name: 0
+
+  to:
+    signed int 
+First alternative:
+  Name: t1
+Second alternative:
+  Name: t2
+
+
+
+
+newExpr is Variable Expression: min: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          0: const instance of type T (not function type) 
+          ?!=?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                signed int 
+
+          ?<?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                signed int 
+
+
+    function
+    with parameters
+      t1: instance of type T (not function type) 
+      t2: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: min: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          0: const instance of type T (not function type) 
+          ?!=?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                signed int 
+
+          ?<?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                signed int 
+
+
+    function
+    with parameters
+      t1: instance of type T (not function type) 
+      t2: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    pointer to forall
+          _0_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+              0: const instance of type _0_T (not function type) 
+              ?!=?: pointer to function
+                  with parameters
+                    instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    signed int 
+
+              ?<?: pointer to function
+                  with parameters
+                    instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    signed int 
+
+
+        function
+        with parameters
+          t1: instance of type _0_T (not function type) 
+          t2: instance of type _0_T (not function type) 
+        returning 
+          instance of type _0_T (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 4.0 double (types:
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 4.0 double (types:
+    double 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3.0 double (types:
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 3.0 double (types:
+    double 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: min: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+                  0: const instance of type T (not function type) 
+                  ?!=?: pointer to function
+                      with parameters
+                        instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        signed int 
+
+                  ?<?: pointer to function
+                      with parameters
+                        instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        signed int 
+
+
+            function
+            with parameters
+              t1: instance of type T (not function type) 
+              t2: instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+(types:
+            pointer to forall
+                  _0_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _0_T (not function type) 
+
+                      0: const instance of type _0_T (not function type) 
+                      ?!=?: pointer to function
+                          with parameters
+                            instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            signed int 
+
+                      ?<?: pointer to function
+                          with parameters
+                            instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            signed int 
+
+
+                function
+                with parameters
+                  t1: instance of type _0_T (not function type) 
+                  t2: instance of type _0_T (not function type) 
+                returning 
+                  instance of type _0_T (not function type) 
+
+)
+        Environment: 
+formal type is instance of type _0_T (not function type) 
+actual type is double 
+formal type is instance of type _0_T (not function type) 
+actual type is double 
+need assertions:
+?!=?: pointer to function
+          with parameters
+            instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            signed int 
+(used)?=?: pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)0: const instance of type _0_T (not function type) (used)?<?: pointer to function
+          with parameters
+            instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            signed int 
+(used)============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?!=?: pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    signed int 
+
+inferRecursive: candidate is ?!=?: pointer to function
+  with parameters
+    instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    signed int 
+ with pointer to function
+  with parameters
+    instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    signed int 
+
+nameExpr is sum
+decl is sum: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+        0: const instance of type T (not function type) 
+        ?+?: pointer to function
+            with parameters
+              instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+        ?++: pointer to function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+        ?+=?: pointer to function
+            with parameters
+              instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    n: signed int 
+    a: pointer to instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+  with body 
+    CompoundStmt
+      Declaration of total: instance of type T (not function type) with initializer 
+        Simple Initializer:           Cast of:
+            Variable Expression: 0: const instance of type T (not function type) 
+
+          to:
+            instance of type T (not function type) 
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+          to arguments
+                          Address of:
+                Variable Expression: total: instance of type T (not function type) 
+
+                          Variable Expression: 0: const instance of type T (not function type) 
+
+          with environment:
+            Types:
+            Non-types:
+
+      Declaration of i: signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Name: i
+                  Name: 0
+
+          condition: 
+            Cast of:
+              Applying untyped: 
+                  Name: ?!=?
+              ...to: 
+                  Applying untyped: 
+                      Name: ?<?
+                  ...to: 
+                      Name: i
+                      Name: n
+                  Name: 0
+
+            to:
+              signed int 
+
+          increment: 
+            Applying untyped: 
+                Name: ?+=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: 1
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Address of:
+                        Name: total
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Name: total
+                          Applying untyped: 
+                              Name: ?[?]
+                          ...to: 
+                              Name: a
+                              Name: i
+
+
+
+              Return Statement, returning: Cast of:
+  Variable Expression: total: instance of type T (not function type) 
+
+to:
+  instance of type T (not function type) 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: sum: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          0: const instance of type T (not function type) 
+          ?+?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?++: pointer to function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?+=?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      n: signed int 
+      a: pointer to instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: sum: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          0: const instance of type T (not function type) 
+          ?+?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?++: pointer to function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?+=?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      n: signed int 
+      a: pointer to instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    pointer to forall
+          _0_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+              0: const instance of type _0_T (not function type) 
+              ?+?: pointer to function
+                  with parameters
+                    instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+              ?++: pointer to function
+                  with parameters
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+              ?+=?: pointer to function
+                  with parameters
+                    instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+
+        function
+        with parameters
+          n: signed int 
+          a: pointer to instance of type _0_T (not function type) 
+        returning 
+          instance of type _0_T (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+nameExpr is a
+decl is a: array of signed int with dimension of Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+with environment:
+  Types:
+  Non-types:
+
+newExpr is Variable Expression: a: array of signed int with dimension of   Cast of:
+constant expression 10 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+
+decl is a: pointer to instance of type T (not function type) 
+newExpr is Variable Expression: a: pointer to instance of type T (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: array of signed int with dimension of   Cast of:
+constant expression 10 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: a: pointer to instance of type T (not function type) 
+(types:
+    lvalue pointer to instance of type T (not function type) 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: array of signed int with dimension of   Cast of:
+constant expression 10 signed int 
+  to:
+    long unsigned int 
+  with environment:
+    Types:
+    Non-types:
+
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: a: pointer to instance of type T (not function type) 
+(types:
+    lvalue pointer to instance of type T (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: sum: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+                  0: const instance of type T (not function type) 
+                  ?+?: pointer to function
+                      with parameters
+                        instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+                  ?++: pointer to function
+                      with parameters
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+                  ?+=?: pointer to function
+                      with parameters
+                        instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              n: signed int 
+              a: pointer to instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+(types:
+            pointer to forall
+                  _0_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _0_T (not function type) 
+
+                      0: const instance of type _0_T (not function type) 
+                      ?+?: pointer to function
+                          with parameters
+                            instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _0_T (not function type) 
+
+                      ?++: pointer to function
+                          with parameters
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _0_T (not function type) 
+
+                      ?+=?: pointer to function
+                          with parameters
+                            instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _0_T (not function type) 
+
+
+                function
+                with parameters
+                  n: signed int 
+                  a: pointer to instance of type _0_T (not function type) 
+                returning 
+                  instance of type _0_T (not function type) 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is signed int 
+formal type is pointer to instance of type _0_T (not function type) 
+actual type is lvalue pointer to signed int 
+need assertions:
+?+?: pointer to function
+          with parameters
+            instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)?=?: pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)?+=?: pointer to function
+          with parameters
+            instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)0: const instance of type _0_T (not function type) (used)?++: pointer to function
+          with parameters
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?+?: pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+
+inferRecursive: candidate is ?+?: function
+  with parameters
+    instance of type T1 (not function type) 
+    instance of type T1 (not function type) 
+  returning 
+    instance of type T1 (not function type) 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    instance of type T1 (not function type) 
+    instance of type T1 (not function type) 
+  returning 
+    instance of type T1 (not function type) 
+
+inferRecursive: candidate is ?+?: function
+  with parameters
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+  returning 
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+  returning 
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+
+inferRecursive: candidate is ?+?: function
+  with parameters
+    instance of type T3 (not function type) 
+    instance of type T3 (not function type) 
+  returning 
+    instance of type T3 (not function type) 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    instance of type T3 (not function type) 
+    instance of type T3 (not function type) 
+  returning 
+    instance of type T3 (not function type) 
+
+inferRecursive: candidate is ?+?: pointer to function
+  with parameters
+    instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+formal type is signed int 
+actual type is signed int 
+formal type is pointer to instance of type _0_T (not function type) 
+actual type is lvalue pointer to instance of type T (not function type) 
+need assertions:
+?+?: pointer to function
+          with parameters
+            instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)?=?: pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)?+=?: pointer to function
+          with parameters
+            instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)0: const instance of type _0_T (not function type) (used)?++: pointer to function
+          with parameters
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?+?: pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+
+inferRecursive: candidate is ?+?: function
+  with parameters
+    instance of type T1 (not function type) 
+    instance of type T1 (not function type) 
+  returning 
+    instance of type T1 (not function type) 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    instance of type T1 (not function type) 
+    instance of type T1 (not function type) 
+  returning 
+    instance of type T1 (not function type) 
+
+inferRecursive: candidate is ?+?: function
+  with parameters
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+  returning 
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+  returning 
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+
+inferRecursive: candidate is ?+?: function
+  with parameters
+    instance of type T3 (not function type) 
+    instance of type T3 (not function type) 
+  returning 
+    instance of type T3 (not function type) 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    instance of type T3 (not function type) 
+    instance of type T3 (not function type) 
+  returning 
+    instance of type T3 (not function type) 
+
+inferRecursive: candidate is ?+?: pointer to function
+  with parameters
+    instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+success!
+satisfying assertion 160 ?+?: pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with declaration 160 ?+?: pointer to function
+  with parameters
+    instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+
+inferRecursive: candidate is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type P1 (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                i: instance of type P1 (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  j: instance of type P2 (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                j: instance of type P2 (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+
+inferRecursive: candidate is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T1 (not function type) 
+    _src: instance of type T1 (not function type) 
+  returning 
+    instance of type T1 (not function type) 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    _dst: pointer to instance of type T1 (not function type) 
+    _src: instance of type T1 (not function type) 
+  returning 
+    instance of type T1 (not function type) 
+
+inferRecursive: candidate is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T2 (not function type) 
+    _src: instance of type T2 (not function type) 
+  returning 
+    instance of type T2 (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type T2 (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type T2 (not function type) 
+
+    to:
+      instance of struct __anonymous0 
+
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    _dst: pointer to instance of type T2 (not function type) 
+    _src: instance of type T2 (not function type) 
+  returning 
+    instance of type T2 (not function type) 
+
+inferRecursive: candidate is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type T3 (not function type) 
+    _src: instance of type T3 (not function type) 
+  returning 
+    instance of type T3 (not function type) 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    _dst: pointer to instance of type T3 (not function type) 
+    _src: instance of type T3 (not function type) 
+  returning 
+    instance of type T3 (not function type) 
+
+inferRecursive: candidate is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type w3 (not function type) 
+    _src: instance of type w3 (not function type) 
+  returning 
+    instance of type w3 (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type w3 (not function type) 
+
+    to:
+      pointer to instance of type T2 (not function type) 
+        with parameters
+          signed int 
+          signed int 
+
+    Cast of:
+      Variable Expression: _src: instance of type w3 (not function type) 
+
+    to:
+      instance of type T2 (not function type) 
+        with parameters
+          signed int 
+          signed int 
+
+
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    _dst: pointer to instance of type w3 (not function type) 
+    _src: instance of type w3 (not function type) 
+  returning 
+    instance of type w3 (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to function
+        returning 
+          nothing 
+
+    pointer to function
+        returning 
+          nothing 
+
+  returning 
+    pointer to function
+        returning 
+          nothing 
+
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to float 
+    pointer to float 
+  returning 
+    pointer to float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to pointer to signed int 
+    pointer to signed int 
+  returning 
+    pointer to signed int 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+inferRecursive: candidate is ?=?: pointer to function
+  with parameters
+    pointer to instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+success!
+satisfying assertion 155 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with declaration 196 ?=?: pointer to function
+  with parameters
+    pointer to instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+inferRecursive: assertion is ?+=?: pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+
+inferRecursive: candidate is ?+=?: function
+  with parameters
+    instance of type T1 (not function type) 
+    instance of type T1 (not function type) 
+  returning 
+    instance of type T1 (not function type) 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    instance of type T1 (not function type) 
+    instance of type T1 (not function type) 
+  returning 
+    instance of type T1 (not function type) 
+
+inferRecursive: candidate is ?+=?: function
+  with parameters
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+  returning 
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+  returning 
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+
+inferRecursive: candidate is ?+=?: function
+  with parameters
+    instance of type T3 (not function type) 
+    instance of type T3 (not function type) 
+  returning 
+    instance of type T3 (not function type) 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    instance of type T3 (not function type) 
+    instance of type T3 (not function type) 
+  returning 
+    instance of type T3 (not function type) 
+
+inferRecursive: candidate is ?+=?: pointer to function
+  with parameters
+    instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+success!
+satisfying assertion 167 ?+=?: pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with declaration 167 ?+=?: pointer to function
+  with parameters
+    instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+inferRecursive: assertion is 0: const instance of type _0_T (not function type) 
+inferRecursive: candidate is 0: const instance of type T (not function type) 
+unifying const instance of type _0_T (not function type)  with const instance of type T (not function type) 
+success!
+satisfying assertion 156 0: const instance of type _0_T (not function type)  with declaration 197 0: const instance of type T (not function type) 
+inferRecursive: assertion is ?++: pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+
+inferRecursive: candidate is ?++: function
+  with parameters
+    instance of type T1 (not function type) 
+  returning 
+    instance of type T1 (not function type) 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    instance of type T1 (not function type) 
+  returning 
+    instance of type T1 (not function type) 
+
+inferRecursive: candidate is ?++: function
+  with parameters
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+  returning 
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+  returning 
+    instance of type T2 (not function type) 
+      with parameters
+        instance of type P1 (not function type) 
+        instance of type P2 (not function type) 
+
+
+inferRecursive: candidate is ?++: function
+  with parameters
+    instance of type T3 (not function type) 
+  returning 
+    instance of type T3 (not function type) 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    instance of type T3 (not function type) 
+  returning 
+    instance of type T3 (not function type) 
+
+inferRecursive: candidate is ?++: pointer to function
+  with parameters
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+success!
+satisfying assertion 163 ?++: pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with declaration 163 ?++: pointer to function
+  with parameters
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+inferRecursive: candidate is 0: const instance of type T1 (not function type) 
+unifying const instance of type _0_T (not function type)  with const instance of type T1 (not function type) 
+inferRecursive: candidate is 0: const instance of type T2 (not function type) 
+with parameters
+  instance of type P1 (not function type) 
+  instance of type P2 (not function type) 
+
+unifying const instance of type _0_T (not function type)  with const instance of type T2 (not function type) 
+with parameters
+  instance of type P1 (not function type) 
+  instance of type P2 (not function type) 
+
+inferRecursive: candidate is 0: const instance of type T3 (not function type) 
+unifying const instance of type _0_T (not function type)  with const instance of type T3 (not function type) 
+actual expression:
+constant expression 10 signed int --- results are
+        signed int 
+
+converting signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: a: pointer to instance of type T (not function type) 
+--- results are
+        lvalue pointer to instance of type T (not function type) 
+
+converting lvalue pointer to instance of type T (not function type) 
+ to pointer to instance of type _0_T (not function type) 
+cost is( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to instance of type T (not function type) 
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+
+converting const instance of type T (not function type) 
+ to const instance of type _0_T (not function type) 
+cost of conversion is ( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            instance of type T (not function type) 
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+ to pointer to function
+          with parameters
+            instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+ to pointer to function
+          with parameters
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            instance of type T (not function type) 
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+ to pointer to function
+          with parameters
+            instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        n: signed int 
+        a: pointer to instance of type _0_T (not function type) 
+actuals are:
+        constant expression 10 signed int 
+                  Variable Expression: a: pointer to instance of type T (not function type) 
+
+bindings are:
+        ( _0_T ) -> instance of type T (not function type)  (no widening)
+cost of conversion is:( 0, 13, 0 )
+alternatives before prune:
+Cost ( 0, 13, 0 ): Application of
+  Variable Expression: sum: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+            0: const instance of type T (not function type) 
+            ?+?: pointer to function
+                with parameters
+                  instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+            ?++: pointer to function
+                with parameters
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+            ?+=?: pointer to function
+                with parameters
+                  instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        n: signed int 
+        a: pointer to instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+  constant expression 10 signed int 
+      Variable Expression: a: pointer to instance of type T (not function type) 
+
+with inferred parameters:
+  ?=?: pointer to function
+    with parameters
+      pointer to instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+  0: const instance of type T (not function type) 
+  ?+?: pointer to function
+    with parameters
+      instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+  ?++: pointer to function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+  ?+=?: pointer to function
+    with parameters
+      instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    instance of type _0_T (not function type) 
+)
+Environment:   ( _0_T ) -> instance of type T (not function type)  (no widening)
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: sum: forall
+          T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type T (not function type) 
+                    instance of type T (not function type) 
+                  returning 
+                    instance of type T (not function type) 
+
+              0: const instance of type T (not function type) 
+              ?+?: pointer to function
+                  with parameters
+                    instance of type T (not function type) 
+                    instance of type T (not function type) 
+                  returning 
+                    instance of type T (not function type) 
+
+              ?++: pointer to function
+                  with parameters
+                    instance of type T (not function type) 
+                  returning 
+                    instance of type T (not function type) 
+
+              ?+=?: pointer to function
+                  with parameters
+                    instance of type T (not function type) 
+                    instance of type T (not function type) 
+                  returning 
+                    instance of type T (not function type) 
+
+
+        function
+        with parameters
+          n: signed int 
+          a: pointer to instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+  to arguments
+    constant expression 10 signed int 
+          Variable Expression: a: pointer to instance of type T (not function type) 
+
+  with inferred parameters:
+    ?=?: pointer to function
+      with parameters
+        pointer to instance of type T (not function type) 
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+    0: const instance of type T (not function type) 
+    ?+?: pointer to function
+      with parameters
+        instance of type T (not function type) 
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+    ?++: pointer to function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+    ?+=?: pointer to function
+      with parameters
+        instance of type T (not function type) 
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+
+to:
+  nothing
+(types:
+)
+Environment:   ( _0_T ) -> instance of type T (not function type)  (no widening)
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: instance of type P1 (not function type) 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      i: instance of type P1 (not function type) 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        j: instance of type P2 (not function type) 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      j: instance of type P2 (not function type) 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Cast of:
+  Variable Expression: _dst: pointer to instance of type T2 (not function type) 
+
+to:
+  pointer to instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Cast of:
+  Variable Expression: _dst: pointer to instance of type w3 (not function type) 
+
+to:
+  pointer to instance of type T2 (not function type) 
+    with parameters
+      signed int 
+      signed int 
+
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: i
+    Name: 0
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?!=?
+...to: 
+    Applying untyped: 
+        Name: ?<?
+    ...to: 
+        Name: t1
+        Name: t2
+    Name: 0
+
+Error: No reasonable alternatives for expression Name: 1
+
+Error: No reasonable alternatives for expression Name: x
+
+Error: No reasonable alternatives for expression Name: x
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: min
+...to: 
+constant expression 4.0 double constant expression 3.0 double 
Index: src/Tests/Expect-r/Function.txt
===================================================================
--- src/Tests/Expect-r/Function.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Function.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,4957 @@
+nameExpr is f
+decl is f: function
+  with parameters
+    float 
+  returning 
+    float 
+
+newExpr is Variable Expression: f: function
+    with parameters
+      float 
+    returning 
+      float 
+
+
+decl is f: function
+  with parameters
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: f: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+    with parameters
+      float 
+    returning 
+      float 
+
+(types:
+    pointer to function
+        with parameters
+          float 
+        returning 
+          float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is a
+decl is a: float 
+newExpr is Variable Expression: a: float 
+
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: float 
+(types:
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: a: signed int 
+
+to:
+  signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: a: signed int 
+
+to:
+  signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: function
+            with parameters
+              float 
+            returning 
+              float 
+
+(types:
+            pointer to function
+                with parameters
+                  float 
+                returning 
+                  float 
+
+)
+        Environment: 
+formal type is float 
+actual type is signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Cast of:
+          Variable Expression: a: signed int 
+
+        to:
+          signed int 
+--- results are
+        signed int 
+
+converting signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+                  Cast of:
+            Variable Expression: a: signed int 
+
+          to:
+            signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+actual expression:
+        Cast of:
+          Variable Expression: a: signed int 
+
+        to:
+          signed int 
+--- results are
+        signed int 
+
+converting signed int 
+ to float 
+cost is( 0, 0, 5 )
+Case +++++++++++++
+formals are:
+        float 
+actuals are:
+                  Cast of:
+            Cast of:
+              Variable Expression: a: signed int 
+
+            to:
+              signed int 
+
+          to:
+            float 
+
+bindings are:
+cost of conversion is:( 0, 0, 5 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: f: function
+      with parameters
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Cast of:
+      Variable Expression: a: signed int 
+
+    to:
+      signed int 
+
+(types:
+    signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 5 ): Application of
+  Variable Expression: f: function
+      with parameters
+        float 
+      returning 
+        float 
+
+to arguments
+      Cast of:
+      Cast of:
+        Variable Expression: a: signed int 
+
+      to:
+        signed int 
+
+    to:
+      float 
+
+(types:
+    float 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: f: function
+        with parameters
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Cast of:
+        Variable Expression: a: signed int 
+
+      to:
+        signed int 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is f
+decl is f: function
+  with parameters
+    float 
+  returning 
+    float 
+
+newExpr is Variable Expression: f: function
+    with parameters
+      float 
+    returning 
+      float 
+
+
+decl is f: function
+  with parameters
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: f: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+    with parameters
+      float 
+    returning 
+      float 
+
+(types:
+    pointer to function
+        with parameters
+          float 
+        returning 
+          float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is a
+decl is a: float 
+newExpr is Variable Expression: a: float 
+
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: float 
+(types:
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: a: float 
+(types:
+    lvalue float 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue float 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: function
+            with parameters
+              float 
+            returning 
+              float 
+
+(types:
+            pointer to function
+                with parameters
+                  float 
+                returning 
+                  float 
+
+)
+        Environment: 
+formal type is float 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is float 
+actual type is lvalue float 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Variable Expression: a: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+                  Variable Expression: a: signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+actual expression:
+        Variable Expression: a: float 
+--- results are
+        lvalue float 
+
+converting lvalue float 
+ to signed int 
+cost is( 1, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+                  Cast of:
+            Variable Expression: a: float 
+
+          to:
+            signed int 
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+actual expression:
+        Variable Expression: a: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to float 
+cost is( 0, 0, 5 )
+Case +++++++++++++
+formals are:
+        float 
+actuals are:
+                  Cast of:
+            Variable Expression: a: signed int 
+
+          to:
+            float 
+
+bindings are:
+cost of conversion is:( 0, 0, 5 )
+actual expression:
+        Variable Expression: a: float 
+--- results are
+        lvalue float 
+
+converting lvalue float 
+ to float 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        float 
+actuals are:
+                  Variable Expression: a: float 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: f: function
+      with parameters
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Variable Expression: a: signed int 
+
+(types:
+    signed int 
+)
+Environment: 
+
+Cost ( 1, 0, 0 ): Application of
+  Variable Expression: f: function
+      with parameters
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Cast of:
+      Variable Expression: a: float 
+
+    to:
+      signed int 
+
+(types:
+    signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 5 ): Application of
+  Variable Expression: f: function
+      with parameters
+        float 
+      returning 
+        float 
+
+to arguments
+      Cast of:
+      Variable Expression: a: signed int 
+
+    to:
+      float 
+
+(types:
+    float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: f: function
+      with parameters
+        float 
+      returning 
+        float 
+
+to arguments
+      Variable Expression: a: float 
+
+(types:
+    float 
+)
+Environment: 
+
+cost ( 0, 0, 0 ) beats ( 0, 0, 5 )
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: f: function
+        with parameters
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+
+to:
+  signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Cast of:
+    Application of
+      Variable Expression: f: function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+    to arguments
+              Variable Expression: a: signed int 
+
+
+  to:
+    signed int 
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is r
+decl is r: function
+  with parameters
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+  returning 
+    signed int 
+    signed int 
+
+newExpr is Variable Expression: r: function
+    with parameters
+      signed int 
+      signed int 
+      signed int 
+      signed int 
+    returning 
+      signed int 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: r: function
+    with parameters
+      signed int 
+      signed int 
+      signed int 
+      signed int 
+    returning 
+      signed int 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+          signed int 
+          signed int 
+        returning 
+          signed int 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is p
+decl is p: tuple of types
+  signed int 
+
+newExpr is Variable Expression: p: tuple of types
+    signed int 
+
+
+decl is p: tuple of types
+  signed int 
+  double 
+
+newExpr is Variable Expression: p: tuple of types
+    signed int 
+    double 
+
+
+decl is p: tuple of types
+  signed int 
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+
+
+decl is p: tuple of types
+  signed int 
+  signed int 
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+    double 
+
+(types:
+    lvalue signed int 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+    double 
+
+(types:
+    lvalue signed int 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is q
+decl is q: tuple of types
+  char 
+
+newExpr is Variable Expression: q: tuple of types
+    char 
+
+
+decl is q: tuple of types
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+
+
+decl is q: tuple of types
+  signed int 
+  signed int 
+  float 
+
+newExpr is Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    float 
+
+
+decl is q: tuple of types
+  signed int 
+  signed int 
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    char 
+
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    float 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    float 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    char 
+
+(types:
+    lvalue char 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: r: function
+            with parameters
+              signed int 
+              signed int 
+              signed int 
+              signed int 
+            returning 
+              signed int 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue double 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue double 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue float 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue double 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue char 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue double 
+formal type is signed int 
+actual type is lvalue char 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue char 
+actual expression:
+        Variable Expression: p: tuple of types
+            signed int 
+
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: q: tuple of types
+            signed int 
+            signed int 
+            float 
+
+--- results are
+        lvalue signed int 
+        lvalue signed int 
+        lvalue float 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue float 
+ to signed int 
+cost is( 1, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+actuals are:
+                  Variable Expression: p: tuple of types
+              signed int 
+
+
+                  Cast of:
+            Variable Expression: q: tuple of types
+                signed int 
+                signed int 
+                float 
+
+
+          to:
+            signed int 
+            signed int 
+            signed int 
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+actual expression:
+        Variable Expression: p: tuple of types
+            signed int 
+            double 
+
+--- results are
+        lvalue signed int 
+        lvalue double 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue double 
+ to signed int 
+cost is( 1, 0, 0 )
+actual expression:
+        Variable Expression: q: tuple of types
+            signed int 
+            signed int 
+
+--- results are
+        lvalue signed int 
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+actuals are:
+                  Cast of:
+            Variable Expression: p: tuple of types
+                signed int 
+                double 
+
+
+          to:
+            signed int 
+            signed int 
+
+                  Variable Expression: q: tuple of types
+              signed int 
+              signed int 
+
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+actual expression:
+        Variable Expression: p: tuple of types
+            signed int 
+            signed int 
+            signed int 
+
+--- results are
+        lvalue signed int 
+        lvalue signed int 
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: q: tuple of types
+            char 
+
+--- results are
+        lvalue char 
+
+converting lvalue char 
+ to signed int 
+cost is( 0, 0, 4 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+actuals are:
+                  Variable Expression: p: tuple of types
+              signed int 
+              signed int 
+              signed int 
+
+
+                  Cast of:
+            Variable Expression: q: tuple of types
+                char 
+
+
+          to:
+            signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 4 )
+alternatives before prune:
+Cost ( 1, 0, 0 ): Application of
+  Variable Expression: r: function
+      with parameters
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+      returning 
+        signed int 
+        signed int 
+
+to arguments
+      Variable Expression: p: tuple of types
+        signed int 
+
+
+      Cast of:
+      Variable Expression: q: tuple of types
+          signed int 
+          signed int 
+          float 
+
+
+    to:
+      signed int 
+      signed int 
+      signed int 
+
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+Cost ( 1, 0, 0 ): Application of
+  Variable Expression: r: function
+      with parameters
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+      returning 
+        signed int 
+        signed int 
+
+to arguments
+      Cast of:
+      Variable Expression: p: tuple of types
+          signed int 
+          double 
+
+
+    to:
+      signed int 
+      signed int 
+
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+
+
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 4 ): Application of
+  Variable Expression: r: function
+      with parameters
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+      returning 
+        signed int 
+        signed int 
+
+to arguments
+      Variable Expression: p: tuple of types
+        signed int 
+        signed int 
+        signed int 
+
+
+      Cast of:
+      Variable Expression: q: tuple of types
+          char 
+
+
+    to:
+      signed int 
+
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+marking ambiguous
+cost ( 0, 0, 4 ) beats ( 1, 0, 0 )
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+  Application of
+    Variable Expression: r: function
+        with parameters
+          signed int 
+          signed int 
+          signed int 
+          signed int 
+        returning 
+          signed int 
+          signed int 
+
+  to arguments
+          Variable Expression: p: tuple of types
+          signed int 
+          signed int 
+          signed int 
+
+
+          Cast of:
+        Variable Expression: q: tuple of types
+            char 
+
+
+      to:
+        signed int 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is r
+decl is r: function
+  with parameters
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+  returning 
+    signed int 
+    signed int 
+
+newExpr is Variable Expression: r: function
+    with parameters
+      signed int 
+      signed int 
+      signed int 
+      signed int 
+    returning 
+      signed int 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: r: function
+    with parameters
+      signed int 
+      signed int 
+      signed int 
+      signed int 
+    returning 
+      signed int 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+          signed int 
+          signed int 
+        returning 
+          signed int 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is q
+decl is q: tuple of types
+  char 
+
+newExpr is Variable Expression: q: tuple of types
+    char 
+
+
+decl is q: tuple of types
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+
+
+decl is q: tuple of types
+  signed int 
+  signed int 
+  float 
+
+newExpr is Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    float 
+
+
+decl is q: tuple of types
+  signed int 
+  signed int 
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    char 
+
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    float 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    float 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    char 
+
+(types:
+    lvalue char 
+)
+Environment: 
+
+nameExpr is p
+decl is p: tuple of types
+  signed int 
+
+newExpr is Variable Expression: p: tuple of types
+    signed int 
+
+
+decl is p: tuple of types
+  signed int 
+  double 
+
+newExpr is Variable Expression: p: tuple of types
+    signed int 
+    double 
+
+
+decl is p: tuple of types
+  signed int 
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+
+
+decl is p: tuple of types
+  signed int 
+  signed int 
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+    double 
+
+(types:
+    lvalue signed int 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+    double 
+
+(types:
+    lvalue signed int 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+        float 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue float 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        char 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+
+
+(types:
+    lvalue char 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        signed int 
+        signed int 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+        float 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        signed int 
+        signed int 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue float 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        signed int 
+        signed int 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        char 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        signed int 
+        signed int 
+
+
+(types:
+    lvalue char 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        double 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+        float 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        double 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue float 
+    lvalue signed int 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        double 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        char 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        double 
+
+
+(types:
+    lvalue char 
+    lvalue signed int 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+        float 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue float 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        char 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+
+
+(types:
+    lvalue char 
+    lvalue signed int 
+)
+Environment: 
+
+marking ambiguous
+there are 15 alternatives before elimination
+there are 14 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        signed int 
+        signed int 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        double 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        double 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+        float 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue float 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+        float 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        signed int 
+        signed int 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue float 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+        float 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        double 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue float 
+    lvalue signed int 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+        float 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue float 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        char 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+
+
+(types:
+    lvalue char 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        char 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        signed int 
+        signed int 
+
+
+(types:
+    lvalue char 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        char 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+        double 
+
+
+(types:
+    lvalue char 
+    lvalue signed int 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: q: tuple of types
+        char 
+
+
+      Variable Expression: p: tuple of types
+        signed int 
+
+
+(types:
+    lvalue char 
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: r: function
+            with parameters
+              signed int 
+              signed int 
+              signed int 
+              signed int 
+            returning 
+              signed int 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue double 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue float 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue float 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue float 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue float 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue char 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue char 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue char 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue double 
+formal type is signed int 
+actual type is lvalue char 
+formal type is signed int 
+actual type is lvalue signed int 
+actual expression:
+        Tuple:
+                      Variable Expression: q: tuple of types
+                signed int 
+                signed int 
+
+
+                      Variable Expression: p: tuple of types
+                signed int 
+                double 
+
+
+--- results are
+        lvalue signed int 
+        lvalue signed int 
+        lvalue signed int 
+        lvalue double 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue double 
+ to signed int 
+cost is( 1, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+actuals are:
+                  Cast of:
+            Tuple:
+                              Variable Expression: q: tuple of types
+                    signed int 
+                    signed int 
+
+
+                              Variable Expression: p: tuple of types
+                    signed int 
+                    double 
+
+
+
+          to:
+            signed int 
+            signed int 
+            signed int 
+            signed int 
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+actual expression:
+        Tuple:
+                      Variable Expression: q: tuple of types
+                signed int 
+                signed int 
+                float 
+
+
+                      Variable Expression: p: tuple of types
+                signed int 
+
+
+--- results are
+        lvalue signed int 
+        lvalue signed int 
+        lvalue float 
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue float 
+ to signed int 
+cost is( 1, 0, 0 )
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+actuals are:
+                  Cast of:
+            Tuple:
+                              Variable Expression: q: tuple of types
+                    signed int 
+                    signed int 
+                    float 
+
+
+                              Variable Expression: p: tuple of types
+                    signed int 
+
+
+
+          to:
+            signed int 
+            signed int 
+            signed int 
+            signed int 
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+actual expression:
+        Tuple:
+                      Variable Expression: q: tuple of types
+                char 
+
+
+                      Variable Expression: p: tuple of types
+                signed int 
+                signed int 
+                signed int 
+
+
+--- results are
+        lvalue char 
+        lvalue signed int 
+        lvalue signed int 
+        lvalue signed int 
+
+converting lvalue char 
+ to signed int 
+cost is( 0, 0, 4 )
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+actuals are:
+                  Cast of:
+            Tuple:
+                              Variable Expression: q: tuple of types
+                    char 
+
+
+                              Variable Expression: p: tuple of types
+                    signed int 
+                    signed int 
+                    signed int 
+
+
+
+          to:
+            signed int 
+            signed int 
+            signed int 
+            signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 4 )
+alternatives before prune:
+Cost ( 1, 0, 0 ): Application of
+  Variable Expression: r: function
+      with parameters
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+      returning 
+        signed int 
+        signed int 
+
+to arguments
+      Cast of:
+      Tuple:
+                  Variable Expression: q: tuple of types
+              signed int 
+              signed int 
+
+
+                  Variable Expression: p: tuple of types
+              signed int 
+              double 
+
+
+
+    to:
+      signed int 
+      signed int 
+      signed int 
+      signed int 
+
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+Cost ( 1, 0, 0 ): Application of
+  Variable Expression: r: function
+      with parameters
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+      returning 
+        signed int 
+        signed int 
+
+to arguments
+      Cast of:
+      Tuple:
+                  Variable Expression: q: tuple of types
+              signed int 
+              signed int 
+              float 
+
+
+                  Variable Expression: p: tuple of types
+              signed int 
+
+
+
+    to:
+      signed int 
+      signed int 
+      signed int 
+      signed int 
+
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 4 ): Application of
+  Variable Expression: r: function
+      with parameters
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+      returning 
+        signed int 
+        signed int 
+
+to arguments
+      Cast of:
+      Tuple:
+                  Variable Expression: q: tuple of types
+              char 
+
+
+                  Variable Expression: p: tuple of types
+              signed int 
+              signed int 
+              signed int 
+
+
+
+    to:
+      signed int 
+      signed int 
+      signed int 
+      signed int 
+
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+marking ambiguous
+cost ( 0, 0, 4 ) beats ( 1, 0, 0 )
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+  Application of
+    Variable Expression: r: function
+        with parameters
+          signed int 
+          signed int 
+          signed int 
+          signed int 
+        returning 
+          signed int 
+          signed int 
+
+  to arguments
+          Cast of:
+        Tuple:
+                      Variable Expression: q: tuple of types
+                char 
+
+
+                      Variable Expression: p: tuple of types
+                signed int 
+                signed int 
+                signed int 
+
+
+
+      to:
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is r
+decl is r: function
+  with parameters
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+  returning 
+    signed int 
+    signed int 
+
+newExpr is Variable Expression: r: function
+    with parameters
+      signed int 
+      signed int 
+      signed int 
+      signed int 
+    returning 
+      signed int 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: r: function
+    with parameters
+      signed int 
+      signed int 
+      signed int 
+      signed int 
+    returning 
+      signed int 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+          signed int 
+          signed int 
+        returning 
+          signed int 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is r
+decl is r: function
+  with parameters
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+  returning 
+    signed int 
+    signed int 
+
+newExpr is Variable Expression: r: function
+    with parameters
+      signed int 
+      signed int 
+      signed int 
+      signed int 
+    returning 
+      signed int 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: r: function
+    with parameters
+      signed int 
+      signed int 
+      signed int 
+      signed int 
+    returning 
+      signed int 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+          signed int 
+          signed int 
+        returning 
+          signed int 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is p
+decl is p: tuple of types
+  signed int 
+
+newExpr is Variable Expression: p: tuple of types
+    signed int 
+
+
+decl is p: tuple of types
+  signed int 
+  double 
+
+newExpr is Variable Expression: p: tuple of types
+    signed int 
+    double 
+
+
+decl is p: tuple of types
+  signed int 
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+
+
+decl is p: tuple of types
+  signed int 
+  signed int 
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+    double 
+
+(types:
+    lvalue signed int 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+    double 
+
+(types:
+    lvalue signed int 
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: p: tuple of types
+    signed int 
+
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is q
+decl is q: tuple of types
+  char 
+
+newExpr is Variable Expression: q: tuple of types
+    char 
+
+
+decl is q: tuple of types
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+
+
+decl is q: tuple of types
+  signed int 
+  signed int 
+  float 
+
+newExpr is Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    float 
+
+
+decl is q: tuple of types
+  signed int 
+  signed int 
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    char 
+
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    float 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    float 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    char 
+
+(types:
+    lvalue char 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: r: function
+            with parameters
+              signed int 
+              signed int 
+              signed int 
+              signed int 
+            returning 
+              signed int 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue double 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue double 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue float 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue double 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue char 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue double 
+formal type is signed int 
+actual type is lvalue char 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue char 
+actual expression:
+        Variable Expression: p: tuple of types
+            signed int 
+
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: q: tuple of types
+            signed int 
+            signed int 
+            float 
+
+--- results are
+        lvalue signed int 
+        lvalue signed int 
+        lvalue float 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue float 
+ to signed int 
+cost is( 1, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+actuals are:
+                  Variable Expression: p: tuple of types
+              signed int 
+
+
+                  Cast of:
+            Variable Expression: q: tuple of types
+                signed int 
+                signed int 
+                float 
+
+
+          to:
+            signed int 
+            signed int 
+            signed int 
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+actual expression:
+        Variable Expression: p: tuple of types
+            signed int 
+            double 
+
+--- results are
+        lvalue signed int 
+        lvalue double 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue double 
+ to signed int 
+cost is( 1, 0, 0 )
+actual expression:
+        Variable Expression: q: tuple of types
+            signed int 
+            signed int 
+
+--- results are
+        lvalue signed int 
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+actuals are:
+                  Cast of:
+            Variable Expression: p: tuple of types
+                signed int 
+                double 
+
+
+          to:
+            signed int 
+            signed int 
+
+                  Variable Expression: q: tuple of types
+              signed int 
+              signed int 
+
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+actual expression:
+        Variable Expression: p: tuple of types
+            signed int 
+            signed int 
+            signed int 
+
+--- results are
+        lvalue signed int 
+        lvalue signed int 
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: q: tuple of types
+            char 
+
+--- results are
+        lvalue char 
+
+converting lvalue char 
+ to signed int 
+cost is( 0, 0, 4 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+actuals are:
+                  Variable Expression: p: tuple of types
+              signed int 
+              signed int 
+              signed int 
+
+
+                  Cast of:
+            Variable Expression: q: tuple of types
+                char 
+
+
+          to:
+            signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 4 )
+alternatives before prune:
+Cost ( 1, 0, 0 ): Application of
+  Variable Expression: r: function
+      with parameters
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+      returning 
+        signed int 
+        signed int 
+
+to arguments
+      Variable Expression: p: tuple of types
+        signed int 
+
+
+      Cast of:
+      Variable Expression: q: tuple of types
+          signed int 
+          signed int 
+          float 
+
+
+    to:
+      signed int 
+      signed int 
+      signed int 
+
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+Cost ( 1, 0, 0 ): Application of
+  Variable Expression: r: function
+      with parameters
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+      returning 
+        signed int 
+        signed int 
+
+to arguments
+      Cast of:
+      Variable Expression: p: tuple of types
+          signed int 
+          double 
+
+
+    to:
+      signed int 
+      signed int 
+
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+
+
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 4 ): Application of
+  Variable Expression: r: function
+      with parameters
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+      returning 
+        signed int 
+        signed int 
+
+to arguments
+      Variable Expression: p: tuple of types
+        signed int 
+        signed int 
+        signed int 
+
+
+      Cast of:
+      Variable Expression: q: tuple of types
+          char 
+
+
+    to:
+      signed int 
+
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+marking ambiguous
+cost ( 0, 0, 4 ) beats ( 1, 0, 0 )
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 4 ): Application of
+  Variable Expression: r: function
+      with parameters
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+      returning 
+        signed int 
+        signed int 
+
+to arguments
+      Variable Expression: p: tuple of types
+        signed int 
+        signed int 
+        signed int 
+
+
+      Cast of:
+      Variable Expression: q: tuple of types
+          char 
+
+
+    to:
+      signed int 
+
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+nameExpr is r
+decl is r: function
+  with parameters
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+  returning 
+    signed int 
+    signed int 
+
+newExpr is Variable Expression: r: function
+    with parameters
+      signed int 
+      signed int 
+      signed int 
+      signed int 
+    returning 
+      signed int 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: r: function
+    with parameters
+      signed int 
+      signed int 
+      signed int 
+      signed int 
+    returning 
+      signed int 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+          signed int 
+          signed int 
+        returning 
+          signed int 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is q
+decl is q: tuple of types
+  char 
+
+newExpr is Variable Expression: q: tuple of types
+    char 
+
+
+decl is q: tuple of types
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+
+
+decl is q: tuple of types
+  signed int 
+  signed int 
+  float 
+
+newExpr is Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    float 
+
+
+decl is q: tuple of types
+  signed int 
+  signed int 
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    char 
+
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    float 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    float 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    char 
+
+(types:
+    lvalue char 
+)
+Environment: 
+
+nameExpr is q
+decl is q: tuple of types
+  char 
+
+newExpr is Variable Expression: q: tuple of types
+    char 
+
+
+decl is q: tuple of types
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+
+
+decl is q: tuple of types
+  signed int 
+  signed int 
+  float 
+
+newExpr is Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    float 
+
+
+decl is q: tuple of types
+  signed int 
+  signed int 
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    char 
+
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    float 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+    float 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: tuple of types
+    char 
+
+(types:
+    lvalue char 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: r: function
+            with parameters
+              signed int 
+              signed int 
+              signed int 
+              signed int 
+            returning 
+              signed int 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue float 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue char 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue float 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue char 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue float 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue float 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue char 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue float 
+formal type is signed int 
+actual type is lvalue char 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue char 
+formal type is signed int 
+actual type is lvalue char 
+formal type is signed int 
+actual type is lvalue char 
+actual expression:
+        Variable Expression: q: tuple of types
+            char 
+
+--- results are
+        lvalue char 
+
+converting lvalue char 
+ to signed int 
+cost is( 0, 0, 4 )
+actual expression:
+        Variable Expression: q: tuple of types
+            signed int 
+            signed int 
+            float 
+
+--- results are
+        lvalue signed int 
+        lvalue signed int 
+        lvalue float 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue float 
+ to signed int 
+cost is( 1, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+actuals are:
+                  Cast of:
+            Variable Expression: q: tuple of types
+                char 
+
+
+          to:
+            signed int 
+
+                  Cast of:
+            Variable Expression: q: tuple of types
+                signed int 
+                signed int 
+                float 
+
+
+          to:
+            signed int 
+            signed int 
+            signed int 
+
+bindings are:
+cost of conversion is:( 1, 0, 4 )
+actual expression:
+        Variable Expression: q: tuple of types
+            signed int 
+            signed int 
+
+--- results are
+        lvalue signed int 
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: q: tuple of types
+            signed int 
+            signed int 
+
+--- results are
+        lvalue signed int 
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+actuals are:
+                  Variable Expression: q: tuple of types
+              signed int 
+              signed int 
+
+
+                  Variable Expression: q: tuple of types
+              signed int 
+              signed int 
+
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+actual expression:
+        Variable Expression: q: tuple of types
+            signed int 
+            signed int 
+            float 
+
+--- results are
+        lvalue signed int 
+        lvalue signed int 
+        lvalue float 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue float 
+ to signed int 
+cost is( 1, 0, 0 )
+actual expression:
+        Variable Expression: q: tuple of types
+            char 
+
+--- results are
+        lvalue char 
+
+converting lvalue char 
+ to signed int 
+cost is( 0, 0, 4 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+actuals are:
+                  Cast of:
+            Variable Expression: q: tuple of types
+                signed int 
+                signed int 
+                float 
+
+
+          to:
+            signed int 
+            signed int 
+            signed int 
+
+                  Cast of:
+            Variable Expression: q: tuple of types
+                char 
+
+
+          to:
+            signed int 
+
+bindings are:
+cost of conversion is:( 1, 0, 4 )
+alternatives before prune:
+Cost ( 1, 0, 4 ): Application of
+  Variable Expression: r: function
+      with parameters
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+      returning 
+        signed int 
+        signed int 
+
+to arguments
+      Cast of:
+      Variable Expression: q: tuple of types
+          char 
+
+
+    to:
+      signed int 
+
+      Cast of:
+      Variable Expression: q: tuple of types
+          signed int 
+          signed int 
+          float 
+
+
+    to:
+      signed int 
+      signed int 
+      signed int 
+
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: r: function
+      with parameters
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+      returning 
+        signed int 
+        signed int 
+
+to arguments
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+
+
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+
+
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+Cost ( 1, 0, 4 ): Application of
+  Variable Expression: r: function
+      with parameters
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+      returning 
+        signed int 
+        signed int 
+
+to arguments
+      Cast of:
+      Variable Expression: q: tuple of types
+          signed int 
+          signed int 
+          float 
+
+
+    to:
+      signed int 
+      signed int 
+      signed int 
+
+      Cast of:
+      Variable Expression: q: tuple of types
+          char 
+
+
+    to:
+      signed int 
+
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+cost ( 0, 0, 0 ) beats ( 1, 0, 4 )
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: r: function
+      with parameters
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+      returning 
+        signed int 
+        signed int 
+
+to arguments
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+
+
+      Variable Expression: q: tuple of types
+        signed int 
+        signed int 
+
+
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: r: function
+            with parameters
+              signed int 
+              signed int 
+              signed int 
+              signed int 
+            returning 
+              signed int 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is signed int 
+formal type is signed int 
+actual type is signed int 
+formal type is signed int 
+actual type is signed int 
+formal type is signed int 
+actual type is signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Application of
+          Variable Expression: r: function
+              with parameters
+                signed int 
+                signed int 
+                signed int 
+                signed int 
+              returning 
+                signed int 
+                signed int 
+
+        to arguments
+                      Variable Expression: p: tuple of types
+                signed int 
+                signed int 
+                signed int 
+
+
+                      Cast of:
+              Variable Expression: q: tuple of types
+                  char 
+
+
+            to:
+              signed int 
+
+--- results are
+        signed int 
+        signed int 
+
+converting signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+actual expression:
+        Application of
+          Variable Expression: r: function
+              with parameters
+                signed int 
+                signed int 
+                signed int 
+                signed int 
+              returning 
+                signed int 
+                signed int 
+
+        to arguments
+                      Variable Expression: q: tuple of types
+                signed int 
+                signed int 
+
+
+                      Variable Expression: q: tuple of types
+                signed int 
+                signed int 
+
+
+--- results are
+        signed int 
+        signed int 
+
+converting signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+actuals are:
+                  Application of
+            Variable Expression: r: function
+                with parameters
+                  signed int 
+                  signed int 
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+                  signed int 
+
+          to arguments
+                          Variable Expression: p: tuple of types
+                  signed int 
+                  signed int 
+                  signed int 
+
+
+                          Cast of:
+                Variable Expression: q: tuple of types
+                    char 
+
+
+              to:
+                signed int 
+
+
+                  Application of
+            Variable Expression: r: function
+                with parameters
+                  signed int 
+                  signed int 
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+                  signed int 
+
+          to arguments
+                          Variable Expression: q: tuple of types
+                  signed int 
+                  signed int 
+
+
+                          Variable Expression: q: tuple of types
+                  signed int 
+                  signed int 
+
+
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: r: function
+      with parameters
+        signed int 
+        signed int 
+        signed int 
+        signed int 
+      returning 
+        signed int 
+        signed int 
+
+to arguments
+      Application of
+      Variable Expression: r: function
+          with parameters
+            signed int 
+            signed int 
+            signed int 
+            signed int 
+          returning 
+            signed int 
+            signed int 
+
+    to arguments
+              Variable Expression: p: tuple of types
+            signed int 
+            signed int 
+            signed int 
+
+
+              Cast of:
+          Variable Expression: q: tuple of types
+              char 
+
+
+        to:
+          signed int 
+
+
+      Application of
+      Variable Expression: r: function
+          with parameters
+            signed int 
+            signed int 
+            signed int 
+            signed int 
+          returning 
+            signed int 
+            signed int 
+
+    to arguments
+              Variable Expression: q: tuple of types
+            signed int 
+            signed int 
+
+
+              Variable Expression: q: tuple of types
+            signed int 
+            signed int 
+
+
+
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+  Application of
+    Variable Expression: r: function
+        with parameters
+          signed int 
+          signed int 
+          signed int 
+          signed int 
+        returning 
+          signed int 
+          signed int 
+
+  to arguments
+          Application of
+        Variable Expression: r: function
+            with parameters
+              signed int 
+              signed int 
+              signed int 
+              signed int 
+            returning 
+              signed int 
+              signed int 
+
+      to arguments
+                  Variable Expression: p: tuple of types
+              signed int 
+              signed int 
+              signed int 
+
+
+                  Cast of:
+            Variable Expression: q: tuple of types
+                char 
+
+
+          to:
+            signed int 
+
+
+          Application of
+        Variable Expression: r: function
+            with parameters
+              signed int 
+              signed int 
+              signed int 
+              signed int 
+            returning 
+              signed int 
+              signed int 
+
+      to arguments
+                  Variable Expression: q: tuple of types
+              signed int 
+              signed int 
+
+
+                  Variable Expression: q: tuple of types
+              signed int 
+              signed int 
+
+
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+cfa-cpp: GenPoly/Box.cc:401: void GenPoly::{anonymous}::Pass1::boxParams(ApplicationExpr*, FunctionType*, std::list<Expression*>::iterator&, const TyVarMap&): Assertion `arg != appExpr->get_args().end()' failed.
+Aborted (core dumped)
Index: src/Tests/Expect-r/Functions.txt
===================================================================
--- src/Tests/Expect-r/Functions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Functions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,91 @@
+nameExpr is *?
+nameExpr is g
+decl is g: pointer to function
+  returning 
+    nothing 
+
+newExpr is Variable Expression: g: pointer to function
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: g: pointer to function
+    returning 
+      nothing 
+
+(types:
+    lvalue pointer to function
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: g: pointer to function
+            returning 
+              nothing 
+
+(types:
+            lvalue pointer to function
+                returning 
+                  nothing 
+
+)
+        Environment: 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+Case +++++++++++++
+formals are:
+actuals are:
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: g: pointer to function
+      returning 
+        nothing 
+
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: g: pointer to function
+        returning 
+          nothing 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+Error: No reasonable alternatives for expression Name: *?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
Index: src/Tests/Expect-r/GccExtensions.txt
===================================================================
--- src/Tests/Expect-r/GccExtensions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/GccExtensions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,908 @@
+nameExpr is s1
+decl is s1: signed int 
+newExpr is Variable Expression: s1: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: s1: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Variable Expression: s1: signed int 
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is s1
+decl is s1: signed int 
+newExpr is Variable Expression: s1: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: s1: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Variable Expression: s1: signed int 
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline function
+  with parameters
+    _dst: pointer to instance of struct s2 
+    _src: instance of struct s2 
+  returning 
+    instance of struct s2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct s2 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct s2 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct s2 
+
+
+
+newExpr is Variable Expression: ?=?: inline function
+    with parameters
+      _dst: pointer to instance of struct s2 
+      _src: instance of struct s2 
+    returning 
+      instance of struct s2 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline function
+    with parameters
+      _dst: pointer to instance of struct s2 
+      _src: instance of struct s2 
+    returning 
+      instance of struct s2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct s2 
+          _src: instance of struct s2 
+        returning 
+          instance of struct s2 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct s2 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct s2 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct s2 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct s2 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct s2 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline function
+            with parameters
+              _dst: pointer to instance of struct s2 
+              _src: instance of struct s2 
+            returning 
+              instance of struct s2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct s2 
+                  _src: instance of struct s2 
+                returning 
+                  instance of struct s2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct s2 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct s2 
+(types:
+    lvalue instance of struct s2 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct s2 
+
+to:
+  instance of struct s2 
+(types:
+    instance of struct s2 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline function
+  with parameters
+    _dst: pointer to instance of struct s2 
+    _src: instance of struct s2 
+  returning 
+    instance of struct s2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct s2 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct s2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct s2 
+
+to:
+  instance of struct s2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline function
+    with parameters
+      _dst: pointer to instance of struct s2 
+      _src: instance of struct s2 
+    returning 
+      instance of struct s2 
+
+
+decl is ?=?: automatically generated inline function
+  with parameters
+    _dst: pointer to instance of struct s3 
+    _src: instance of struct s3 
+  returning 
+    instance of struct s3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct s3 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct s3 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct s3 
+
+
+
+newExpr is Variable Expression: ?=?: inline function
+    with parameters
+      _dst: pointer to instance of struct s3 
+      _src: instance of struct s3 
+    returning 
+      instance of struct s3 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline function
+    with parameters
+      _dst: pointer to instance of struct s2 
+      _src: instance of struct s2 
+    returning 
+      instance of struct s2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct s2 
+          _src: instance of struct s2 
+        returning 
+          instance of struct s2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline function
+    with parameters
+      _dst: pointer to instance of struct s3 
+      _src: instance of struct s3 
+    returning 
+      instance of struct s3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct s3 
+          _src: instance of struct s3 
+        returning 
+          instance of struct s3 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct s3 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct s3 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct s3 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct s3 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct s3 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline function
+            with parameters
+              _dst: pointer to instance of struct s3 
+              _src: instance of struct s3 
+            returning 
+              instance of struct s3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct s3 
+                  _src: instance of struct s3 
+                returning 
+                  instance of struct s3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct s3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline function
+            with parameters
+              _dst: pointer to instance of struct s2 
+              _src: instance of struct s2 
+            returning 
+              instance of struct s2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct s2 
+                  _src: instance of struct s2 
+                returning 
+                  instance of struct s2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct s2 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct s3 
+(types:
+    lvalue instance of struct s3 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct s3 
+
+to:
+  instance of struct s3 
+(types:
+    instance of struct s3 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline function
+  with parameters
+    _dst: pointer to instance of struct s2 
+    _src: instance of struct s2 
+  returning 
+    instance of struct s2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct s2 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct s2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct s2 
+
+to:
+  instance of struct s2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline function
+    with parameters
+      _dst: pointer to instance of struct s2 
+      _src: instance of struct s2 
+    returning 
+      instance of struct s2 
+
+
+decl is ?=?: automatically generated inline function
+  with parameters
+    _dst: pointer to instance of struct s3 
+    _src: instance of struct s3 
+  returning 
+    instance of struct s3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct s3 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct s3 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct s3 
+
+to:
+  instance of struct s3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline function
+    with parameters
+      _dst: pointer to instance of struct s3 
+      _src: instance of struct s3 
+    returning 
+      instance of struct s3 
+
+
+decl is ?=?: automatically generated inline function
+  with parameters
+    _dst: pointer to instance of struct s4 
+    _src: instance of struct s4 
+  returning 
+    instance of struct s4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct s4 
+              Member Expression, with field: 
+                i: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct s4 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct s4 
+
+
+
+newExpr is Variable Expression: ?=?: inline function
+    with parameters
+      _dst: pointer to instance of struct s4 
+      _src: instance of struct s4 
+    returning 
+      instance of struct s4 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline function
+    with parameters
+      _dst: pointer to instance of struct s2 
+      _src: instance of struct s2 
+    returning 
+      instance of struct s2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct s2 
+          _src: instance of struct s2 
+        returning 
+          instance of struct s2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline function
+    with parameters
+      _dst: pointer to instance of struct s3 
+      _src: instance of struct s3 
+    returning 
+      instance of struct s3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct s3 
+          _src: instance of struct s3 
+        returning 
+          instance of struct s3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline function
+    with parameters
+      _dst: pointer to instance of struct s4 
+      _src: instance of struct s4 
+    returning 
+      instance of struct s4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct s4 
+          _src: instance of struct s4 
+        returning 
+          instance of struct s4 
+
+)
+Environment: 
+
+there are 3 alternatives before elimination
+there are 3 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct s4 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct s4 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct s4 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct s4 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct s4 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline function
+            with parameters
+              _dst: pointer to instance of struct s4 
+              _src: instance of struct s4 
+            returning 
+              instance of struct s4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct s4 
+                  _src: instance of struct s4 
+                returning 
+                  instance of struct s4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct s4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline function
+            with parameters
+              _dst: pointer to instance of struct s3 
+              _src: instance of struct s3 
+            returning 
+              instance of struct s3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct s3 
+                  _src: instance of struct s3 
+                returning 
+                  instance of struct s3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct s3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline function
+            with parameters
+              _dst: pointer to instance of struct s2 
+              _src: instance of struct s2 
+            returning 
+              instance of struct s2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct s2 
+                  _src: instance of struct s2 
+                returning 
+                  instance of struct s2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct s2 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct s4 
+(types:
+    lvalue instance of struct s4 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct s4 
+
+to:
+  instance of struct s4 
+(types:
+    instance of struct s4 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct s2 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct s2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct s3 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct s3 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct s4 
+    Member Expression, with field: 
+      i: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct s4 
+
Index: src/Tests/Expect-r/IdentFuncDeclarator.txt
===================================================================
--- src/Tests/Expect-r/IdentFuncDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/IdentFuncDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,583 @@
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+int main(){
+    int __f1__i;
+    int __f2__i;
+    int *__f3__Pi;
+    int **__f4__PPi;
+    int *const *__f5__PCPi;
+    int *const *const __f6__CPCPi;
+    int *__f7__Pi;
+    int **__f8__PPi;
+    int *const *__f9__PCPi;
+    int *const *const __f10__CPCPi;
+    int *__f11__Pi;
+    int **__f12__PPi;
+    int *const *__f13__PCPi;
+    int *const *const __f14__CPCPi;
+    int __f15__A0i[];
+    int __f16__A0i[((long unsigned int )10)];
+    int __f17__A0i[];
+    int __f18__A0i[((long unsigned int )10)];
+    int *__f19__A0Pi[];
+    int *__f20__A0Pi[((long unsigned int )10)];
+    int **__f21__A0PPi[];
+    int **__f22__A0PPi[((long unsigned int )10)];
+    int *const *__f23__A0PCPi[];
+    int *const *__f24__A0PCPi[((long unsigned int )10)];
+    int *const *const __f25__A0CPCPi[];
+    int *const *const __f26__A0CPCPi[((long unsigned int )10)];
+    int *__f27__A0Pi[];
+    int *__f28__A0Pi[((long unsigned int )10)];
+    int **__f29__A0PPi[];
+    int **__f30__A0PPi[((long unsigned int )10)];
+    int *const *__f31__A0PCPi[];
+    int *const *__f32__A0PCPi[((long unsigned int )10)];
+    int *const *const __f33__A0CPCPi[];
+    int *const *const __f34__A0CPCPi[((long unsigned int )10)];
+    int *__f35__A0Pi[];
+    int *__f36__A0Pi[((long unsigned int )10)];
+    int **__f37__A0PPi[];
+    int **__f38__A0PPi[((long unsigned int )10)];
+    int *const *__f39__A0PCPi[];
+    int *const *__f40__A0PCPi[((long unsigned int )10)];
+    int *const *const __f41__A0CPCPi[];
+    int *const *const __f42__A0CPCPi[((long unsigned int )10)];
+    int __f43__A0A0i[][3];
+    int __f44__A0A0i[((long unsigned int )3)][3];
+    int __f45__A0A0i[][3];
+    int __f46__A0A0i[((long unsigned int )3)][3];
+    int __f47__A0A0i[][3];
+    int __f48__A0A0i[((long unsigned int )3)][3];
+    int *__f49__A0A0Pi[][3];
+    int *__f50__A0A0Pi[((long unsigned int )3)][3];
+    int **__f51__A0A0PPi[][3];
+    int **__f52__A0A0PPi[((long unsigned int )3)][3];
+    int *const *__f53__A0A0PCPi[][3];
+    int *const *__f54__A0A0PCPi[((long unsigned int )3)][3];
+    int *const *const __f55__A0A0CPCPi[][3];
+    int *const *const __f56__A0A0CPCPi[((long unsigned int )3)][3];
+    int *__f57__A0A0Pi[][3];
+    int *__f58__A0A0Pi[((long unsigned int )3)][3];
+    int **__f59__A0A0PPi[][3];
+    int **__f60__A0A0PPi[((long unsigned int )3)][3];
+    int *const *__f61__A0A0PCPi[][3];
+    int *const *__f62__A0A0PCPi[((long unsigned int )3)][3];
+    int *const *const __f63__A0A0CPCPi[][3];
+    int *const *const __f64__A0A0CPCPi[((long unsigned int )3)][3];
+    int __f65__Fi_i_(int );
+    int __f66__Fi_i_(int );
+    int *__f67__FPi_i_(int );
+    int **__f68__FPPi_i_(int );
+    int *const *__f69__FPCPi_i_(int );
+    int *const *const __f70__FCPCPi_i_(int );
+    int *__f71__FPi_i_(int );
+    int **__f72__FPPi_i_(int );
+    int *const *__f73__FPCPi_i_(int );
+    int *const *const __f74__FCPCPi_i_(int );
+    int (*__f75__PFi_i_)(int );
+    int (**__f76__PPFi_i_)(int );
+    int (*const *__f77__PCPFi_i_)(int );
+    int (*const *const __f78__CPCPFi_i_)(int );
+    int (*(*__f79__PFPFi___i_)(int ))();
+    int (*(*const __f80__CPFPFi___i_)(int ))();
+    int (*const (*const __f81__CPFCPFi___i_)(int ))();
+}
Index: src/Tests/Expect-r/IdentFuncParamDeclarator.txt
===================================================================
--- src/Tests/Expect-r/IdentFuncParamDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/IdentFuncParamDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,2 @@
+int __fred__Fi_iiPiPPiPCPiCPCPiPiPPiPCPiCPCPiPiPPiPCPiCPCPiPiPiPiPiPPiPPiPPPiPPPiPPCPiPPCPiPCPCPiPCPCPiPPiPPiPPPiPPPiPPCPiPPCPiPCPCPiPCPCPiPPiPPiPPPiPPPiPPCPiPPCPiPCPCPiPCPCPiPA0iPA0iPA0iPA0iPA0iPA0iPA0PiPA0PiPA0PPiPA0PPiPA0PCPiPA0PCPiPA0CPCPiPA0CPCPiPA0PiPA0PiPA0PPiPA0PPiPA0PCPiPA0PCPiPA0CPCPiPA0CPCPiPFi_i_PFi_i_PFPi_i_PFPPi_i_PFPCPi_i_PFCPCPi_i_PFPi_i_PFPPi_i_PFPCPi_i_PFCPCPi_i_PFi_i_PPFi_i_PCPFi_i_CPCPFi_i_PFPFi___i_CPFPFi___i_CPFCPFi___i_CPiCPiPiCPiCPiCPiPiCPiCPPiCPPiPPPiCPPCPiCPCPCPiCPPiCPPiPPPiCPPCPiCPCPCPiCPA0iCPA0iPA0iCPA0iCPA0iCPA0iPA0iCPA0iCPA0PiCPA0PiPA0PPiCPA0PCPiCPA0CPCPiCPA0PiCPA0PiPA0PPiCPA0PCPiCPA0CPCPi_(int __f1__i, int __f2__i, int *__f3__Pi, int **__f4__PPi, int *const *__f5__PCPi, int *const *const __f6__CPCPi, int *__f7__Pi, int **__f8__PPi, int *const *__f9__PCPi, int *const *const __f10__CPCPi, int *__f11__Pi, int **__f12__PPi, int *const *__f13__PCPi, int *const *const __f14__CPCPi, int *__f15__Pi, int __f16__Pi[10], int *__f17__Pi, int __f18__Pi[10], int **__f19__PPi, int *__f20__PPi[10], int ***__f21__PPPi, int **__f22__PPPi[10], int *const **__f23__PPCPi, int *const *__f24__PPCPi[10], int *const *const *__f25__PCPCPi, int *const *const __f26__PCPCPi[10], int **__f27__PPi, int *__f28__PPi[10], int ***__f29__PPPi, int **__f30__PPPi[10], int *const **__f31__PPCPi, int *const *__f32__PPCPi[10], int *const *const *__f33__PCPCPi, int *const *const __f34__PCPCPi[10], int **__f35__PPi, int *__f36__PPi[10], int ***__f37__PPPi, int **__f38__PPPi[10], int *const **__f39__PPCPi, int *const *__f40__PPCPi[10], int *const *const *__f41__PCPCPi, int *const *const __f42__PCPCPi[10], int (*__f43__PA0i)[3], int __f44__PA0i[3][3], int (*__f45__PA0i)[3], int __f46__PA0i[3][3], int (*__f47__PA0i)[3], int __f48__PA0i[3][3], int *(*__f49__PA0Pi)[3], int *__f50__PA0Pi[3][3], int **(*__f51__PA0PPi)[3], int **__f52__PA0PPi[3][3], int *const *(*__f53__PA0PCPi)[3], int *const *__f54__PA0PCPi[3][3], int *const *const (*__f55__PA0CPCPi)[3], int *const *const __f56__PA0CPCPi[3][3], int *(*__f57__PA0Pi)[3], int *__f58__PA0Pi[3][3], int **(*__f59__PA0PPi)[3], int **__f60__PA0PPi[3][3], int *const *(*__f61__PA0PCPi)[3], int *const *__f62__PA0PCPi[3][3], int *const *const (*__f63__PA0CPCPi)[3], int *const *const __f64__PA0CPCPi[3][3], int (*__f65__PFi_i_)(int ), int (*__f66__PFi_i_)(int ), int *(*__f67__PFPi_i_)(int ), int **(*__f68__PFPPi_i_)(int ), int *const *(*__f69__PFPCPi_i_)(int ), int *const *const (*__f70__PFCPCPi_i_)(int ), int *(*__f71__PFPi_i_)(int ), int **(*__f72__PFPPi_i_)(int ), int *const *(*__f73__PFPCPi_i_)(int ), int *const *const (*__f74__PFCPCPi_i_)(int ), int (*__f75__PFi_i_)(int ), int (**__f76__PPFi_i_)(int ), int (*const *__f77__PCPFi_i_)(int ), int (*const *const __f78__CPCPFi_i_)(int ), int (*(*__f79__PFPFi___i_)(int ))(), int (*(*const __f80__CPFPFi___i_)(int ))(), int (*const (*const __f81__CPFCPFi___i_)(int ))(), int __f82__CPi[const *], int __f83__CPi[const 3], int __f84__Pi[static 3], int __f85__CPi[static const 3], int __f86__CPi[const *], int __f87__CPi[const 3], int __f88__Pi[static 3], int __f89__CPi[static const 3], int *__f90__CPPi[const *], int *__f91__CPPi[const 3], int **__f92__PPPi[static 3], int *const *__f93__CPPCPi[static const 3], int *const *const __f94__CPCPCPi[static const 3], int *__f95__CPPi[const *], int *__f96__CPPi[const 3], int **__f97__PPPi[static 3], int *const *__f98__CPPCPi[static const 3], int *const *const __f99__CPCPCPi[static const 3], int __f100__CPA0i[const *][3], int __f101__CPA0i[const 3][3], int __f102__PA0i[static 3][3], int __f103__CPA0i[static const 3][3], int __f104__CPA0i[const *][3], int __f105__CPA0i[const 3][3], int __f106__PA0i[static 3][3], int __f107__CPA0i[static const 3][3], int *__f108__CPA0Pi[const *][3], int *__f109__CPA0Pi[const 3][3], int **__f110__PA0PPi[static 3][3], int *const *__f111__CPA0PCPi[static const 3][3], int *const *const __f112__CPA0CPCPi[static const 3][3], int *__f113__CPA0Pi[const *][3], int *__f114__CPA0Pi[const 3][3], int **__f115__PA0PPi[static 3][3], int *const *__f116__CPA0PCPi[static const 3][3], int *const *const __f117__CPA0CPCPi[static const 3][3]){
+}
Index: src/Tests/Expect-r/InferParam.txt
===================================================================
--- src/Tests/Expect-r/InferParam.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/InferParam.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,2917 @@
+nameExpr is i
+decl is i: function
+  with parameters
+    float 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: i: function
+    with parameters
+      float 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: i: function
+    with parameters
+      float 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          float 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is g
+decl is g: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+    U: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type U (not function type) 
+              instance of type U (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+        f: pointer to function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+
+  function
+  with parameters
+    instance of type T (not function type) 
+  returning 
+    instance of type U (not function type) 
+
+newExpr is Variable Expression: g: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+      U: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+          f: pointer to function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type U (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: g: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+      U: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+          f: pointer to function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type U (not function type) 
+
+(types:
+    pointer to forall
+          _0_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+
+          _1_U: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _1_U (not function type) 
+                    instance of type _1_U (not function type) 
+                  returning 
+                    instance of type _1_U (not function type) 
+
+              f: pointer to function
+                  with parameters
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _1_U (not function type) 
+
+
+        function
+        with parameters
+          instance of type _0_T (not function type) 
+        returning 
+          instance of type _1_U (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is a
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: g: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+              U: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type U (not function type) 
+                        instance of type U (not function type) 
+                      returning 
+                        instance of type U (not function type) 
+
+                  f: pointer to function
+                      with parameters
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type U (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+(types:
+            pointer to forall
+                  _0_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _0_T (not function type) 
+
+
+                  _1_U: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _1_U (not function type) 
+                            instance of type _1_U (not function type) 
+                          returning 
+                            instance of type _1_U (not function type) 
+
+                      f: pointer to function
+                          with parameters
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _1_U (not function type) 
+
+
+                function
+                with parameters
+                  instance of type _0_T (not function type) 
+                returning 
+                  instance of type _1_U (not function type) 
+
+)
+        Environment: 
+formal type is instance of type _0_T (not function type) 
+actual type is lvalue signed int 
+need assertions:
+?=?: pointer to function
+          with parameters
+            pointer to instance of type _1_U (not function type) 
+            instance of type _1_U (not function type) 
+          returning 
+            instance of type _1_U (not function type) 
+(used)f: pointer to function
+          with parameters
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _1_U (not function type) 
+(used)?=?: pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _1_U (not function type) 
+    instance of type _1_U (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to double 
+    double 
+  returning 
+    double 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_U (not function type) 
+    instance of type _1_U (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to double 
+    double 
+  returning 
+    double 
+
+success!
+satisfying assertion 20 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _1_U (not function type) 
+    instance of type _1_U (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with declaration 12 ?=?: function
+  with parameters
+    pointer to double 
+    double 
+  returning 
+    double 
+
+inferRecursive: assertion is f: pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+
+inferRecursive: candidate is f: function
+  with parameters
+    signed int 
+  returning 
+    double 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with pointer to function
+  with parameters
+    signed int 
+  returning 
+    double 
+
+success!
+satisfying assertion 23 f: pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with declaration 32 f: function
+  with parameters
+    signed int 
+  returning 
+    double 
+
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to double 
+    double 
+  returning 
+    double 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to double 
+    double 
+  returning 
+    double 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+success!
+satisfying assertion 16 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with declaration 4 ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+inferRecursive: candidate is f: function
+  with parameters
+    signed int 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with pointer to function
+  with parameters
+    signed int 
+  returning 
+    float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_U (not function type) 
+    instance of type _1_U (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+success!
+satisfying assertion 20 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _1_U (not function type) 
+    instance of type _1_U (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with declaration 8 ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+inferRecursive: assertion is f: pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+
+inferRecursive: candidate is f: function
+  with parameters
+    signed int 
+  returning 
+    double 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with pointer to function
+  with parameters
+    signed int 
+  returning 
+    double 
+
+inferRecursive: candidate is f: function
+  with parameters
+    signed int 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with pointer to function
+  with parameters
+    signed int 
+  returning 
+    float 
+
+success!
+satisfying assertion 23 f: pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with declaration 29 f: function
+  with parameters
+    signed int 
+  returning 
+    float 
+
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to double 
+    double 
+  returning 
+    double 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to double 
+    double 
+  returning 
+    double 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+success!
+satisfying assertion 16 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with declaration 4 ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_U (not function type) 
+    instance of type _1_U (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+success!
+satisfying assertion 20 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _1_U (not function type) 
+    instance of type _1_U (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with declaration 4 ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+inferRecursive: assertion is f: pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+
+inferRecursive: candidate is f: function
+  with parameters
+    signed int 
+  returning 
+    double 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with pointer to function
+  with parameters
+    signed int 
+  returning 
+    double 
+
+inferRecursive: candidate is f: function
+  with parameters
+    signed int 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with pointer to function
+  with parameters
+    signed int 
+  returning 
+    float 
+
+actual expression:
+        Variable Expression: a: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to instance of type _0_T (not function type) 
+cost is( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to signed int 
+            signed int 
+          returning 
+            signed int 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to double 
+            double 
+          returning 
+            double 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _1_U (not function type) 
+            instance of type _1_U (not function type) 
+          returning 
+            instance of type _1_U (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            signed int 
+          returning 
+            double 
+
+ to pointer to function
+          with parameters
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _1_U (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type _0_T (not function type) 
+actuals are:
+                  Variable Expression: a: signed int 
+
+bindings are:
+        ( _0_T ) -> signed int 
+        ( _1_U ) -> double  (no widening)
+cost of conversion is:( 0, 9, 0 )
+actual expression:
+        Variable Expression: a: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to instance of type _0_T (not function type) 
+cost is( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to signed int 
+            signed int 
+          returning 
+            signed int 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to float 
+            float 
+          returning 
+            float 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _1_U (not function type) 
+            instance of type _1_U (not function type) 
+          returning 
+            instance of type _1_U (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            signed int 
+          returning 
+            float 
+
+ to pointer to function
+          with parameters
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _1_U (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type _0_T (not function type) 
+actuals are:
+                  Variable Expression: a: signed int 
+
+bindings are:
+        ( _0_T ) -> signed int 
+        ( _1_U ) -> float  (no widening)
+cost of conversion is:( 0, 9, 0 )
+alternatives before prune:
+Cost ( 0, 9, 0 ): Application of
+  Variable Expression: g: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+        U: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type U (not function type) 
+                  instance of type U (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+            f: pointer to function
+                with parameters
+                  instance of type T (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type U (not function type) 
+
+to arguments
+      Variable Expression: a: signed int 
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+  ?=?: function
+    with parameters
+      pointer to double 
+      double 
+    returning 
+      double 
+
+  f: function
+    with parameters
+      signed int 
+    returning 
+      double 
+
+(types:
+    instance of type _1_U (not function type) 
+)
+Environment:   ( _0_T ) -> signed int 
+  ( _1_U ) -> double  (no widening)
+
+
+Cost ( 0, 9, 0 ): Application of
+  Variable Expression: g: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+        U: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type U (not function type) 
+                  instance of type U (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+            f: pointer to function
+                with parameters
+                  instance of type T (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type U (not function type) 
+
+to arguments
+      Variable Expression: a: signed int 
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+  ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+  f: function
+    with parameters
+      signed int 
+    returning 
+      float 
+
+(types:
+    instance of type _1_U (not function type) 
+)
+Environment:   ( _0_T ) -> signed int 
+  ( _1_U ) -> float  (no widening)
+
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+findSubExprs
+Cost ( 0, 9, 0 ): Application of
+  Variable Expression: g: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+        U: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type U (not function type) 
+                  instance of type U (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+            f: pointer to function
+                with parameters
+                  instance of type T (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type U (not function type) 
+
+to arguments
+      Variable Expression: a: signed int 
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+  ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+  f: function
+    with parameters
+      signed int 
+    returning 
+      float 
+
+(types:
+    float 
+)
+Environment:   ( _0_T ) -> signed int 
+  ( _1_U ) -> float  (no widening)
+
+
+Cost ( 0, 9, 0 ): Application of
+  Variable Expression: g: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+        U: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type U (not function type) 
+                  instance of type U (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+            f: pointer to function
+                with parameters
+                  instance of type T (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type U (not function type) 
+
+to arguments
+      Variable Expression: a: signed int 
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+  ?=?: function
+    with parameters
+      pointer to double 
+      double 
+    returning 
+      double 
+
+  f: function
+    with parameters
+      signed int 
+    returning 
+      double 
+
+(types:
+    double 
+)
+Environment:   ( _0_T ) -> signed int 
+  ( _1_U ) -> double  (no widening)
+
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: i: function
+            with parameters
+              float 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  float 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is float 
+actual type is float 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is float 
+actual type is double 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Application of
+          Variable Expression: g: forall
+                T: type
+                  with assertions
+                    ?=?: pointer to function
+                        with parameters
+                          pointer to instance of type T (not function type) 
+                          instance of type T (not function type) 
+                        returning 
+                          instance of type T (not function type) 
+
+
+                U: type
+                  with assertions
+                    ?=?: pointer to function
+                        with parameters
+                          pointer to instance of type U (not function type) 
+                          instance of type U (not function type) 
+                        returning 
+                          instance of type U (not function type) 
+
+                    f: pointer to function
+                        with parameters
+                          instance of type T (not function type) 
+                        returning 
+                          instance of type U (not function type) 
+
+
+              function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+        to arguments
+                      Variable Expression: a: signed int 
+
+        with inferred parameters:
+          ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+          ?=?: function
+            with parameters
+              pointer to float 
+              float 
+            returning 
+              float 
+
+          f: function
+            with parameters
+              signed int 
+            returning 
+              float 
+
+--- results are
+        float 
+
+converting float 
+ to float 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        float 
+actuals are:
+                  Application of
+            Variable Expression: g: forall
+                  T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type T (not function type) 
+                            instance of type T (not function type) 
+                          returning 
+                            instance of type T (not function type) 
+
+
+                  U: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type U (not function type) 
+                            instance of type U (not function type) 
+                          returning 
+                            instance of type U (not function type) 
+
+                      f: pointer to function
+                          with parameters
+                            instance of type T (not function type) 
+                          returning 
+                            instance of type U (not function type) 
+
+
+                function
+                with parameters
+                  instance of type T (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+          to arguments
+                          Variable Expression: a: signed int 
+
+          with inferred parameters:
+            ?=?: function
+              with parameters
+                pointer to signed int 
+                signed int 
+              returning 
+                signed int 
+
+            ?=?: function
+              with parameters
+                pointer to float 
+                float 
+              returning 
+                float 
+
+            f: function
+              with parameters
+                signed int 
+              returning 
+                float 
+
+
+bindings are:
+        ( _0_T ) -> signed int  (no widening)
+        ( _1_U ) -> float  (no widening)
+cost of conversion is:( 0, 0, 0 )
+actual expression:
+        Application of
+          Variable Expression: g: forall
+                T: type
+                  with assertions
+                    ?=?: pointer to function
+                        with parameters
+                          pointer to instance of type T (not function type) 
+                          instance of type T (not function type) 
+                        returning 
+                          instance of type T (not function type) 
+
+
+                U: type
+                  with assertions
+                    ?=?: pointer to function
+                        with parameters
+                          pointer to instance of type U (not function type) 
+                          instance of type U (not function type) 
+                        returning 
+                          instance of type U (not function type) 
+
+                    f: pointer to function
+                        with parameters
+                          instance of type T (not function type) 
+                        returning 
+                          instance of type U (not function type) 
+
+
+              function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+        to arguments
+                      Variable Expression: a: signed int 
+
+        with inferred parameters:
+          ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+          ?=?: function
+            with parameters
+              pointer to double 
+              double 
+            returning 
+              double 
+
+          f: function
+            with parameters
+              signed int 
+            returning 
+              double 
+
+--- results are
+        double 
+
+converting double 
+ to float 
+cost is( 1, 0, 0 )
+Case +++++++++++++
+formals are:
+        float 
+actuals are:
+                  Cast of:
+            Application of
+              Variable Expression: g: forall
+                    T: type
+                      with assertions
+                        ?=?: pointer to function
+                            with parameters
+                              pointer to instance of type T (not function type) 
+                              instance of type T (not function type) 
+                            returning 
+                              instance of type T (not function type) 
+
+
+                    U: type
+                      with assertions
+                        ?=?: pointer to function
+                            with parameters
+                              pointer to instance of type U (not function type) 
+                              instance of type U (not function type) 
+                            returning 
+                              instance of type U (not function type) 
+
+                        f: pointer to function
+                            with parameters
+                              instance of type T (not function type) 
+                            returning 
+                              instance of type U (not function type) 
+
+
+                  function
+                  with parameters
+                    instance of type T (not function type) 
+                  returning 
+                    instance of type U (not function type) 
+
+            to arguments
+                              Variable Expression: a: signed int 
+
+            with inferred parameters:
+              ?=?: function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+              ?=?: function
+                with parameters
+                  pointer to double 
+                  double 
+                returning 
+                  double 
+
+              f: function
+                with parameters
+                  signed int 
+                returning 
+                  double 
+
+
+          to:
+            float 
+
+bindings are:
+        ( _0_T ) -> signed int  (no widening)
+        ( _1_U ) -> double  (no widening)
+cost of conversion is:( 1, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: i: function
+      with parameters
+        float 
+      returning 
+        nothing 
+
+to arguments
+      Application of
+      Variable Expression: g: forall
+            T: type
+              with assertions
+                ?=?: pointer to function
+                    with parameters
+                      pointer to instance of type T (not function type) 
+                      instance of type T (not function type) 
+                    returning 
+                      instance of type T (not function type) 
+
+
+            U: type
+              with assertions
+                ?=?: pointer to function
+                    with parameters
+                      pointer to instance of type U (not function type) 
+                      instance of type U (not function type) 
+                    returning 
+                      instance of type U (not function type) 
+
+                f: pointer to function
+                    with parameters
+                      instance of type T (not function type) 
+                    returning 
+                      instance of type U (not function type) 
+
+
+          function
+          with parameters
+            instance of type T (not function type) 
+          returning 
+            instance of type U (not function type) 
+
+    to arguments
+              Variable Expression: a: signed int 
+
+    with inferred parameters:
+      ?=?: function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+      ?=?: function
+        with parameters
+          pointer to float 
+          float 
+        returning 
+          float 
+
+      f: function
+        with parameters
+          signed int 
+        returning 
+          float 
+
+
+(types:
+)
+Environment:   ( _0_T ) -> signed int  (no widening)
+  ( _1_U ) -> float  (no widening)
+
+
+Cost ( 1, 0, 0 ): Application of
+  Variable Expression: i: function
+      with parameters
+        float 
+      returning 
+        nothing 
+
+to arguments
+      Cast of:
+      Application of
+        Variable Expression: g: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+              U: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type U (not function type) 
+                        instance of type U (not function type) 
+                      returning 
+                        instance of type U (not function type) 
+
+                  f: pointer to function
+                      with parameters
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type U (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+      to arguments
+                  Variable Expression: a: signed int 
+
+      with inferred parameters:
+        ?=?: function
+          with parameters
+            pointer to signed int 
+            signed int 
+          returning 
+            signed int 
+
+        ?=?: function
+          with parameters
+            pointer to double 
+            double 
+          returning 
+            double 
+
+        f: function
+          with parameters
+            signed int 
+          returning 
+            double 
+
+
+    to:
+      float 
+
+(types:
+)
+Environment:   ( _0_T ) -> signed int  (no widening)
+  ( _1_U ) -> double  (no widening)
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: i: function
+        with parameters
+          float 
+        returning 
+          nothing 
+
+  to arguments
+          Application of
+        Variable Expression: g: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+              U: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type U (not function type) 
+                        instance of type U (not function type) 
+                      returning 
+                        instance of type U (not function type) 
+
+                  f: pointer to function
+                      with parameters
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type U (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+      to arguments
+                  Variable Expression: a: signed int 
+
+      with inferred parameters:
+        ?=?: function
+          with parameters
+            pointer to signed int 
+            signed int 
+          returning 
+            signed int 
+
+        ?=?: function
+          with parameters
+            pointer to float 
+            float 
+          returning 
+            float 
+
+        f: function
+          with parameters
+            signed int 
+          returning 
+            float 
+
+
+
+to:
+  nothing
+(types:
+)
+Environment:   ( _0_T ) -> signed int  (no widening)
+  ( _1_U ) -> float  (no widening)
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is i
+decl is i: function
+  with parameters
+    float 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: i: function
+    with parameters
+      float 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: i: function
+    with parameters
+      float 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          float 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is k
+decl is k: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+    U: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type U (not function type) 
+              instance of type U (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+        f: pointer to function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+        j: pointer to function
+            with parameters
+              instance of type T (not function type) 
+              instance of type U (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+
+  function
+  with parameters
+    instance of type T (not function type) 
+  returning 
+    instance of type U (not function type) 
+
+newExpr is Variable Expression: k: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+      U: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+          f: pointer to function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+          j: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type U (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: k: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+      U: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+          f: pointer to function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+          j: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type U (not function type) 
+
+(types:
+    pointer to forall
+          _0_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+
+          _1_U: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _1_U (not function type) 
+                    instance of type _1_U (not function type) 
+                  returning 
+                    instance of type _1_U (not function type) 
+
+              f: pointer to function
+                  with parameters
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _1_U (not function type) 
+
+              j: pointer to function
+                  with parameters
+                    instance of type _0_T (not function type) 
+                    instance of type _1_U (not function type) 
+                  returning 
+                    instance of type _1_U (not function type) 
+
+
+        function
+        with parameters
+          instance of type _0_T (not function type) 
+        returning 
+          instance of type _1_U (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is b
+decl is b: signed int 
+newExpr is Variable Expression: b: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: k: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+              U: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type U (not function type) 
+                        instance of type U (not function type) 
+                      returning 
+                        instance of type U (not function type) 
+
+                  f: pointer to function
+                      with parameters
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type U (not function type) 
+
+                  j: pointer to function
+                      with parameters
+                        instance of type T (not function type) 
+                        instance of type U (not function type) 
+                      returning 
+                        instance of type U (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+(types:
+            pointer to forall
+                  _0_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _0_T (not function type) 
+
+
+                  _1_U: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _1_U (not function type) 
+                            instance of type _1_U (not function type) 
+                          returning 
+                            instance of type _1_U (not function type) 
+
+                      f: pointer to function
+                          with parameters
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _1_U (not function type) 
+
+                      j: pointer to function
+                          with parameters
+                            instance of type _0_T (not function type) 
+                            instance of type _1_U (not function type) 
+                          returning 
+                            instance of type _1_U (not function type) 
+
+
+                function
+                with parameters
+                  instance of type _0_T (not function type) 
+                returning 
+                  instance of type _1_U (not function type) 
+
+)
+        Environment: 
+formal type is instance of type _0_T (not function type) 
+actual type is lvalue signed int 
+need assertions:
+j: pointer to function
+          with parameters
+            instance of type _0_T (not function type) 
+            instance of type _1_U (not function type) 
+          returning 
+            instance of type _1_U (not function type) 
+(used)f: pointer to function
+          with parameters
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _1_U (not function type) 
+(used)?=?: pointer to function
+          with parameters
+            pointer to instance of type _1_U (not function type) 
+            instance of type _1_U (not function type) 
+          returning 
+            instance of type _1_U (not function type) 
+(used)?=?: pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is j: pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _1_U (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+
+inferRecursive: candidate is j: function
+  with parameters
+    signed int 
+    float 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _1_U (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with pointer to function
+  with parameters
+    signed int 
+    float 
+  returning 
+    float 
+
+success!
+satisfying assertion 62 j: pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _1_U (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with declaration 47 j: function
+  with parameters
+    signed int 
+    float 
+  returning 
+    float 
+
+inferRecursive: assertion is f: pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+
+inferRecursive: candidate is f: function
+  with parameters
+    signed int 
+  returning 
+    double 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with pointer to function
+  with parameters
+    signed int 
+  returning 
+    double 
+
+inferRecursive: candidate is f: function
+  with parameters
+    signed int 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with pointer to function
+  with parameters
+    signed int 
+  returning 
+    float 
+
+success!
+satisfying assertion 58 f: pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with declaration 29 f: function
+  with parameters
+    signed int 
+  returning 
+    float 
+
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _1_U (not function type) 
+    instance of type _1_U (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to double 
+    double 
+  returning 
+    double 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_U (not function type) 
+    instance of type _1_U (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to double 
+    double 
+  returning 
+    double 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_U (not function type) 
+    instance of type _1_U (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+success!
+satisfying assertion 55 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _1_U (not function type) 
+    instance of type _1_U (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with declaration 8 ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to double 
+    double 
+  returning 
+    double 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to double 
+    double 
+  returning 
+    double 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+success!
+satisfying assertion 51 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with declaration 4 ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_U (not function type) 
+    instance of type _1_U (not function type) 
+  returning 
+    instance of type _1_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+actual expression:
+        Variable Expression: b: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to instance of type _0_T (not function type) 
+cost is( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to signed int 
+            signed int 
+          returning 
+            signed int 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to float 
+            float 
+          returning 
+            float 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _1_U (not function type) 
+            instance of type _1_U (not function type) 
+          returning 
+            instance of type _1_U (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            signed int 
+          returning 
+            float 
+
+ to pointer to function
+          with parameters
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _1_U (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            signed int 
+            float 
+          returning 
+            float 
+
+ to pointer to function
+          with parameters
+            instance of type _0_T (not function type) 
+            instance of type _1_U (not function type) 
+          returning 
+            instance of type _1_U (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type _0_T (not function type) 
+actuals are:
+                  Variable Expression: b: signed int 
+
+bindings are:
+        ( _0_T ) -> signed int 
+        ( _1_U ) -> float  (no widening)
+cost of conversion is:( 0, 12, 0 )
+alternatives before prune:
+Cost ( 0, 12, 0 ): Application of
+  Variable Expression: k: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+        U: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type U (not function type) 
+                  instance of type U (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+            f: pointer to function
+                with parameters
+                  instance of type T (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+            j: pointer to function
+                with parameters
+                  instance of type T (not function type) 
+                  instance of type U (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type U (not function type) 
+
+to arguments
+      Variable Expression: b: signed int 
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+  ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+  f: function
+    with parameters
+      signed int 
+    returning 
+      float 
+
+  j: function
+    with parameters
+      signed int 
+      float 
+    returning 
+      float 
+
+(types:
+    instance of type _1_U (not function type) 
+)
+Environment:   ( _0_T ) -> signed int 
+  ( _1_U ) -> float  (no widening)
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 12, 0 ): Application of
+  Variable Expression: k: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+        U: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type U (not function type) 
+                  instance of type U (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+            f: pointer to function
+                with parameters
+                  instance of type T (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+            j: pointer to function
+                with parameters
+                  instance of type T (not function type) 
+                  instance of type U (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type U (not function type) 
+
+to arguments
+      Variable Expression: b: signed int 
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+  ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+  f: function
+    with parameters
+      signed int 
+    returning 
+      float 
+
+  j: function
+    with parameters
+      signed int 
+      float 
+    returning 
+      float 
+
+(types:
+    float 
+)
+Environment:   ( _0_T ) -> signed int 
+  ( _1_U ) -> float  (no widening)
+
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: i: function
+            with parameters
+              float 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  float 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is float 
+actual type is float 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Application of
+          Variable Expression: k: forall
+                T: type
+                  with assertions
+                    ?=?: pointer to function
+                        with parameters
+                          pointer to instance of type T (not function type) 
+                          instance of type T (not function type) 
+                        returning 
+                          instance of type T (not function type) 
+
+
+                U: type
+                  with assertions
+                    ?=?: pointer to function
+                        with parameters
+                          pointer to instance of type U (not function type) 
+                          instance of type U (not function type) 
+                        returning 
+                          instance of type U (not function type) 
+
+                    f: pointer to function
+                        with parameters
+                          instance of type T (not function type) 
+                        returning 
+                          instance of type U (not function type) 
+
+                    j: pointer to function
+                        with parameters
+                          instance of type T (not function type) 
+                          instance of type U (not function type) 
+                        returning 
+                          instance of type U (not function type) 
+
+
+              function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+        to arguments
+                      Variable Expression: b: signed int 
+
+        with inferred parameters:
+          ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+          ?=?: function
+            with parameters
+              pointer to float 
+              float 
+            returning 
+              float 
+
+          f: function
+            with parameters
+              signed int 
+            returning 
+              float 
+
+          j: function
+            with parameters
+              signed int 
+              float 
+            returning 
+              float 
+
+--- results are
+        float 
+
+converting float 
+ to float 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        float 
+actuals are:
+                  Application of
+            Variable Expression: k: forall
+                  T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type T (not function type) 
+                            instance of type T (not function type) 
+                          returning 
+                            instance of type T (not function type) 
+
+
+                  U: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type U (not function type) 
+                            instance of type U (not function type) 
+                          returning 
+                            instance of type U (not function type) 
+
+                      f: pointer to function
+                          with parameters
+                            instance of type T (not function type) 
+                          returning 
+                            instance of type U (not function type) 
+
+                      j: pointer to function
+                          with parameters
+                            instance of type T (not function type) 
+                            instance of type U (not function type) 
+                          returning 
+                            instance of type U (not function type) 
+
+
+                function
+                with parameters
+                  instance of type T (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+          to arguments
+                          Variable Expression: b: signed int 
+
+          with inferred parameters:
+            ?=?: function
+              with parameters
+                pointer to signed int 
+                signed int 
+              returning 
+                signed int 
+
+            ?=?: function
+              with parameters
+                pointer to float 
+                float 
+              returning 
+                float 
+
+            f: function
+              with parameters
+                signed int 
+              returning 
+                float 
+
+            j: function
+              with parameters
+                signed int 
+                float 
+              returning 
+                float 
+
+
+bindings are:
+        ( _0_T ) -> signed int  (no widening)
+        ( _1_U ) -> float  (no widening)
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: i: function
+      with parameters
+        float 
+      returning 
+        nothing 
+
+to arguments
+      Application of
+      Variable Expression: k: forall
+            T: type
+              with assertions
+                ?=?: pointer to function
+                    with parameters
+                      pointer to instance of type T (not function type) 
+                      instance of type T (not function type) 
+                    returning 
+                      instance of type T (not function type) 
+
+
+            U: type
+              with assertions
+                ?=?: pointer to function
+                    with parameters
+                      pointer to instance of type U (not function type) 
+                      instance of type U (not function type) 
+                    returning 
+                      instance of type U (not function type) 
+
+                f: pointer to function
+                    with parameters
+                      instance of type T (not function type) 
+                    returning 
+                      instance of type U (not function type) 
+
+                j: pointer to function
+                    with parameters
+                      instance of type T (not function type) 
+                      instance of type U (not function type) 
+                    returning 
+                      instance of type U (not function type) 
+
+
+          function
+          with parameters
+            instance of type T (not function type) 
+          returning 
+            instance of type U (not function type) 
+
+    to arguments
+              Variable Expression: b: signed int 
+
+    with inferred parameters:
+      ?=?: function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+      ?=?: function
+        with parameters
+          pointer to float 
+          float 
+        returning 
+          float 
+
+      f: function
+        with parameters
+          signed int 
+        returning 
+          float 
+
+      j: function
+        with parameters
+          signed int 
+          float 
+        returning 
+          float 
+
+
+(types:
+)
+Environment:   ( _0_T ) -> signed int  (no widening)
+  ( _1_U ) -> float  (no widening)
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: i: function
+        with parameters
+          float 
+        returning 
+          nothing 
+
+  to arguments
+          Application of
+        Variable Expression: k: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+              U: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type U (not function type) 
+                        instance of type U (not function type) 
+                      returning 
+                        instance of type U (not function type) 
+
+                  f: pointer to function
+                      with parameters
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type U (not function type) 
+
+                  j: pointer to function
+                      with parameters
+                        instance of type T (not function type) 
+                        instance of type U (not function type) 
+                      returning 
+                        instance of type U (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+      to arguments
+                  Variable Expression: b: signed int 
+
+      with inferred parameters:
+        ?=?: function
+          with parameters
+            pointer to signed int 
+            signed int 
+          returning 
+            signed int 
+
+        ?=?: function
+          with parameters
+            pointer to float 
+            float 
+          returning 
+            float 
+
+        f: function
+          with parameters
+            signed int 
+          returning 
+            float 
+
+        j: function
+          with parameters
+            signed int 
+            float 
+          returning 
+            float 
+
+
+
+to:
+  nothing
+(types:
+)
+Environment:   ( _0_T ) -> signed int  (no widening)
+  ( _1_U ) -> float  (no widening)
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+int ___operator_assign__Fi_Pii_(int *, int );
+float ___operator_assign__Ff_Pff_(float *, float );
+double ___operator_assign__Fd_Pdd_(double *, double );
+void __g__A2_0_0____operator_assign__PFt0_Pt0t0____operator_assign__PFt1_Pt1t1___f__PFt1_t0__Ft1_t0_(void (*_adapterF2tU_2tT_)(void (*)(), void *, void *), void (*_adapterF2tU_P2tU2tU_)(void (*)(), void *, void *, void *), void (*_adapterF2tT_P2tT2tT_)(void (*)(), void *, void *, void *), long unsigned int T, long unsigned int U, void (*___operator_assign__PF2tT_P2tT2tT_)(), void (*___operator_assign__PF2tU_P2tU2tU_)(), void (*__f__PF2tU_2tT_)(), void *, void *);
+float __f__Ff_i_(int );
+double __f__Fd_i_(int );
+void __i__F_f_(float );
+void __h__F__(){
+    int __a__i;
+    float _temp0;
+    void _adapterFi_Pii_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
+        ((*((int *)_ret))=((int (*)(int *, int ))_adaptee)(_p0, (*((int *)_p1))));
+    }
+    void _adapterFf_Pff_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
+        ((*((float *)_ret))=((float (*)(float *, float ))_adaptee)(_p0, (*((float *)_p1))));
+    }
+    void _adapterFf_i_(void (*_adaptee)(), void *_ret, void *_p0){
+        ((*((float *)_ret))=((float (*)(int ))_adaptee)((*((int *)_p0))));
+    }
+    __i__F_f_((__g__A2_0_0____operator_assign__PFt0_Pt0t0____operator_assign__PFt1_Pt1t1___f__PFt1_t0__Ft1_t0_(_adapterFf_i_, _adapterFf_Pff_, _adapterFi_Pii_, sizeof(int ), sizeof(float ), ((void (*)())___operator_assign__Fi_Pii_), ((void (*)())___operator_assign__Ff_Pff_), ((void (*)())__f__Ff_i_), (&_temp0), (&__a__i)) , _temp0));
+}
+;
+float __j__Ff_if_(int , float );
+void __k__A2_0_0____operator_assign__PFt0_Pt0t0____operator_assign__PFt1_Pt1t1___f__PFt1_t0___j__PFt1_t0t1__Ft1_t0_(void (*_adapterF2tU_2tT2tU_)(void (*)(), void *, void *, void *), void (*_adapterF2tU_2tT_)(void (*)(), void *, void *), void (*_adapterF2tU_P2tU2tU_)(void (*)(), void *, void *, void *), void (*_adapterF2tT_P2tT2tT_)(void (*)(), void *, void *, void *), long unsigned int T, long unsigned int U, void (*___operator_assign__PF2tT_P2tT2tT_)(), void (*___operator_assign__PF2tU_P2tU2tU_)(), void (*__f__PF2tU_2tT_)(), void (*__j__PF2tU_2tT2tU_)(), void *, void *);
+void __l__F__(){
+    int __b__i;
+    float _temp1;
+    void _adapterFi_Pii_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
+        ((*((int *)_ret))=((int (*)(int *, int ))_adaptee)(_p0, (*((int *)_p1))));
+    }
+    void _adapterFf_Pff_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
+        ((*((float *)_ret))=((float (*)(float *, float ))_adaptee)(_p0, (*((float *)_p1))));
+    }
+    void _adapterFf_i_(void (*_adaptee)(), void *_ret, void *_p0){
+        ((*((float *)_ret))=((float (*)(int ))_adaptee)((*((int *)_p0))));
+    }
+    void _adapterFf_if_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
+        ((*((float *)_ret))=((float (*)(int , float ))_adaptee)((*((int *)_p0)), (*((float *)_p1))));
+    }
+    __i__F_f_((__k__A2_0_0____operator_assign__PFt0_Pt0t0____operator_assign__PFt1_Pt1t1___f__PFt1_t0___j__PFt1_t0t1__Ft1_t0_(_adapterFf_if_, _adapterFf_i_, _adapterFf_Pff_, _adapterFi_Pii_, sizeof(int ), sizeof(float ), ((void (*)())___operator_assign__Fi_Pii_), ((void (*)())___operator_assign__Ff_Pff_), ((void (*)())__f__Ff_i_), ((void (*)())__j__Ff_if_), (&_temp1), (&__b__i)) , _temp1));
+}
Index: src/Tests/Expect-r/Initialization.txt
===================================================================
--- src/Tests/Expect-r/Initialization.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Initialization.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,15674 @@
+nameExpr is 0
+nameExpr is 0
+nameExpr is 0
+nameExpr is 0
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 20 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 20 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 20 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 20 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                w: tuple of types
+                  signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  w: tuple of types
+    signed int 
+
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    w: tuple of types
+      signed int 
+
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    w: tuple of types
+      signed int 
+
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  w: tuple of types
+    signed int 
+
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  w: tuple of types
+    signed int 
+
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue instance of struct __anonymous0 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+(types:
+    instance of struct __anonymous0 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 2 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 2 signed int (types:
+    signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+  constant expression 2 signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                w: tuple of types
+                  signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+      Declaration of _index0: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index0: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index0: signed int 
+constant expression 3 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index0: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+
+
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous1 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _index0: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: _index0: signed int 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: _index0: signed int 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+nameExpr is 0
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                w: tuple of types
+                  signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+      Declaration of _index0: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index0: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index0: signed int 
+constant expression 3 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index0: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+
+
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous1 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  b: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    b: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous1 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    b: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous1 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  b: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous1 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  b: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous1 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous1 
+(types:
+    lvalue instance of struct __anonymous1 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+(types:
+    instance of struct __anonymous1 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is 1
+nameExpr is 1
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 2 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                w: tuple of types
+                  signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+      Declaration of _index0: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index0: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index0: signed int 
+constant expression 3 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index0: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+
+
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous2 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+there are 3 alternatives before elimination
+there are 3 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  g1: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    g1: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous2 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    g1: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous2 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  g1: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous2 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  g1: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous2 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                w: tuple of types
+                  signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+      Declaration of _index0: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index0: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index0: signed int 
+constant expression 3 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index0: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+
+
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous2 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+there are 3 alternatives before elimination
+there are 3 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  g2: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    g2: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous2 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    g2: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous2 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  g2: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous2 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  g2: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous2 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                w: tuple of types
+                  signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+      Declaration of _index0: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index0: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index0: signed int 
+constant expression 3 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index0: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+
+
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous2 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+there are 3 alternatives before elimination
+there are 3 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  g3: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    g3: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous2 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    g3: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous2 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  g3: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous2 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  g3: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous2 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous2 
+(types:
+    lvalue instance of struct __anonymous2 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+(types:
+    instance of struct __anonymous2 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 4 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 4 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                w: tuple of types
+                  signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+      Declaration of _index0: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index0: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index0: signed int 
+constant expression 3 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index0: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+
+
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+      Declaration of _index1: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index1: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index1: signed int 
+constant expression 4 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index1: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+
+
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous3 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  f1: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    f1: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous3 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    f1: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous3 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  f1: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous3 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  f1: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous3 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                w: tuple of types
+                  signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+      Declaration of _index0: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index0: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index0: signed int 
+constant expression 3 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index0: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+
+
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+      Declaration of _index1: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index1: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index1: signed int 
+constant expression 4 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index1: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+
+
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous3 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  f2: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    f2: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous3 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    f2: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous3 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  f2: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous3 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  f2: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous3 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                w: tuple of types
+                  signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+      Declaration of _index0: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index0: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index0: signed int 
+constant expression 3 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index0: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+
+
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+      Declaration of _index1: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index1: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index1: signed int 
+constant expression 4 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index1: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+
+
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous3 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  f3: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    f3: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous3 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    f3: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous3 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  f3: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous3 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  f3: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous3 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                w: tuple of types
+                  signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+      Declaration of _index0: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index0: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index0: signed int 
+constant expression 3 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index0: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+
+
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+      Declaration of _index1: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index1: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index1: signed int 
+constant expression 4 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index1: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+
+
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous3 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _index1: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: _index1: signed int 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: _index1: signed int 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+nameExpr is 0
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous3 
+(types:
+    lvalue instance of struct __anonymous3 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+(types:
+    instance of struct __anonymous3 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 4 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is 0
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 7 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                w: tuple of types
+                  signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+      Declaration of _index0: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index0: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index0: signed int 
+constant expression 3 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index0: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+
+
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+      Declaration of _index1: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index1: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index1: signed int 
+constant expression 4 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index1: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+
+
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous4 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+there are 5 alternatives before elimination
+there are 5 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y1: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y1: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous4 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y1: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous4 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y1: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous4 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y1: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous4 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                w: tuple of types
+                  signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+      Declaration of _index0: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index0: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index0: signed int 
+constant expression 3 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index0: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+
+
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+      Declaration of _index1: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index1: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index1: signed int 
+constant expression 4 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index1: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+
+
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous4 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+there are 5 alternatives before elimination
+there are 5 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y2: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y2: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous4 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y2: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous4 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y2: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous4 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y2: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous4 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                w: tuple of types
+                  signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+      Declaration of _index0: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index0: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index0: signed int 
+constant expression 3 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index0: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+
+
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+      Declaration of _index1: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index1: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index1: signed int 
+constant expression 4 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index1: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+
+
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous4 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+there are 5 alternatives before elimination
+there are 5 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y3: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y3: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous4 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y3: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous4 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y3: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous4 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y3: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous4 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous4 
+(types:
+    lvalue instance of struct __anonymous4 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+(types:
+    instance of struct __anonymous4 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                w: tuple of types
+                  signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+      Declaration of _index0: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index0: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index0: signed int 
+constant expression 3 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index0: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+
+
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+      Declaration of _index1: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index1: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index1: signed int 
+constant expression 4 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index1: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+
+
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct point 
+    _src: instance of struct point 
+  returning 
+    instance of struct point 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  z: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                z: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous4 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                y: instance of struct __anonymous4 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                w: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct point 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct point 
+      _src: instance of struct point 
+    returning 
+      instance of struct point 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct point 
+      _src: instance of struct point 
+    returning 
+      instance of struct point 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct point 
+          _src: instance of struct point 
+        returning 
+          instance of struct point 
+
+)
+Environment: 
+
+there are 6 alternatives before elimination
+there are 6 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct point 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    x: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct point 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    x: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct point 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct point 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct point 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct point 
+              _src: instance of struct point 
+            returning 
+              instance of struct point 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct point 
+                  _src: instance of struct point 
+                returning 
+                  instance of struct point 
+
+)
+        Environment: 
+formal type is pointer to instance of struct point 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                w: tuple of types
+                  signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+      Declaration of _index0: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index0: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index0: signed int 
+constant expression 3 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index0: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+
+
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+      Declaration of _index1: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index1: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index1: signed int 
+constant expression 4 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index1: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+
+
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct point 
+    _src: instance of struct point 
+  returning 
+    instance of struct point 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  z: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                z: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous4 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                y: instance of struct __anonymous4 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                w: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct point 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct point 
+      _src: instance of struct point 
+    returning 
+      instance of struct point 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct point 
+      _src: instance of struct point 
+    returning 
+      instance of struct point 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct point 
+          _src: instance of struct point 
+        returning 
+          instance of struct point 
+
+)
+Environment: 
+
+there are 6 alternatives before elimination
+there are 6 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  z: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct point 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    z: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct point 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    z: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct point 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  z: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct point 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  z: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct point 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct point 
+              _src: instance of struct point 
+            returning 
+              instance of struct point 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct point 
+                  _src: instance of struct point 
+                returning 
+                  instance of struct point 
+
+)
+        Environment: 
+formal type is pointer to instance of struct point 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                w: tuple of types
+                  signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+      Declaration of _index0: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index0: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index0: signed int 
+constant expression 3 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index0: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+
+
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+      Declaration of _index1: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index1: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index1: signed int 
+constant expression 4 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index1: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+
+
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct point 
+    _src: instance of struct point 
+  returning 
+    instance of struct point 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  z: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                z: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous4 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                y: instance of struct __anonymous4 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                w: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct point 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct point 
+      _src: instance of struct point 
+    returning 
+      instance of struct point 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct point 
+      _src: instance of struct point 
+    returning 
+      instance of struct point 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct point 
+          _src: instance of struct point 
+        returning 
+          instance of struct point 
+
+)
+Environment: 
+
+there are 6 alternatives before elimination
+there are 6 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: instance of struct __anonymous4 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct point 
+(types:
+    lvalue instance of struct __anonymous4 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y: instance of struct __anonymous4 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct point 
+(types:
+    pointer to instance of struct __anonymous4 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y: instance of struct __anonymous4 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct point 
+(types:
+    pointer to instance of struct __anonymous4 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: instance of struct __anonymous4 
+from aggregate: 
+  Variable Expression: _src: instance of struct point 
+(types:
+    lvalue instance of struct __anonymous4 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: instance of struct __anonymous4 
+from aggregate: 
+  Variable Expression: _src: instance of struct point 
+(types:
+    lvalue instance of struct __anonymous4 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct point 
+              _src: instance of struct point 
+            returning 
+              instance of struct point 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct point 
+                  _src: instance of struct point 
+                returning 
+                  instance of struct point 
+
+)
+        Environment: 
+formal type is pointer to instance of struct point 
+actual type is pointer to instance of struct __anonymous4 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to instance of struct __anonymous4 
+formal type is instance of struct __anonymous4 
+actual type is lvalue instance of struct __anonymous4 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to instance of struct __anonymous4 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to instance of struct __anonymous4 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to instance of struct __anonymous4 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to instance of struct __anonymous4 
+actual expression:
+        Address of:
+          Member Expression, with field: 
+            y: instance of struct __anonymous4 
+          from aggregate: 
+            Applying untyped: 
+                Name: *?
+            ...to: 
+                Variable Expression: _dst: pointer to instance of struct point 
+--- results are
+        pointer to instance of struct __anonymous4 
+
+converting pointer to instance of struct __anonymous4 
+ to pointer to instance of struct __anonymous4 
+cost is( 0, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          y: instance of struct __anonymous4 
+        from aggregate: 
+          Variable Expression: _src: instance of struct point 
+--- results are
+        lvalue instance of struct __anonymous4 
+
+converting lvalue instance of struct __anonymous4 
+ to instance of struct __anonymous4 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        _dst: pointer to instance of struct __anonymous4 
+        _src: instance of struct __anonymous4 
+actuals are:
+                  Address of:
+            Member Expression, with field: 
+              y: instance of struct __anonymous4 
+            from aggregate: 
+              Applying untyped: 
+                  Name: *?
+              ...to: 
+                  Variable Expression: _dst: pointer to instance of struct point 
+
+                  Member Expression, with field: 
+            y: instance of struct __anonymous4 
+          from aggregate: 
+            Variable Expression: _src: instance of struct point 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?=?: inline static function
+      with parameters
+        _dst: pointer to instance of struct __anonymous4 
+        _src: instance of struct __anonymous4 
+      returning 
+        instance of struct __anonymous4 
+
+to arguments
+      Address of:
+      Member Expression, with field: 
+        y: instance of struct __anonymous4 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct point 
+
+      Member Expression, with field: 
+      y: instance of struct __anonymous4 
+    from aggregate: 
+      Variable Expression: _src: instance of struct point 
+
+(types:
+    instance of struct __anonymous4 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?=?: inline static function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+  to arguments
+          Address of:
+        Member Expression, with field: 
+          y: instance of struct __anonymous4 
+        from aggregate: 
+          Applying untyped: 
+              Name: *?
+          ...to: 
+              Variable Expression: _dst: pointer to instance of struct point 
+
+          Member Expression, with field: 
+        y: instance of struct __anonymous4 
+      from aggregate: 
+        Variable Expression: _src: instance of struct point 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                w: tuple of types
+                  signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+      Declaration of _index0: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index0: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index0: signed int 
+constant expression 3 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index0: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+
+
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+      Declaration of _index1: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index1: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index1: signed int 
+constant expression 4 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index1: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+
+
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct point 
+    _src: instance of struct point 
+  returning 
+    instance of struct point 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  z: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                z: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous4 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous4 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                w: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct point 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct point 
+      _src: instance of struct point 
+    returning 
+      instance of struct point 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct point 
+      _src: instance of struct point 
+    returning 
+      instance of struct point 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct point 
+          _src: instance of struct point 
+        returning 
+          instance of struct point 
+
+)
+Environment: 
+
+there are 6 alternatives before elimination
+there are 6 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  w: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct point 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    w: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct point 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    w: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct point 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  w: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct point 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  w: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct point 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct point 
+              _src: instance of struct point 
+            returning 
+              instance of struct point 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct point 
+                  _src: instance of struct point 
+                returning 
+                  instance of struct point 
+
+)
+        Environment: 
+formal type is pointer to instance of struct point 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct point 
+(types:
+    lvalue instance of struct point 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct point 
+
+to:
+  instance of struct point 
+(types:
+    instance of struct point 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                w: tuple of types
+                  signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+      Declaration of _index0: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index0: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index0: signed int 
+constant expression 3 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index0: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+
+
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+      Declaration of _index1: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index1: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index1: signed int 
+constant expression 4 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index1: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+
+
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct point 
+    _src: instance of struct point 
+  returning 
+    instance of struct point 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  z: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                z: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous4 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous4 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                w: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct point 
+
+to:
+  instance of struct point 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct point 
+      _src: instance of struct point 
+    returning 
+      instance of struct point 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct quintet 
+    _src: instance of struct quintet 
+  returning 
+    instance of struct quintet 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  v: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                v: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                w: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  z: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                z: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct quintet 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct quintet 
+      _src: instance of struct quintet 
+    returning 
+      instance of struct quintet 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct point 
+      _src: instance of struct point 
+    returning 
+      instance of struct point 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct point 
+          _src: instance of struct point 
+        returning 
+          instance of struct point 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct quintet 
+      _src: instance of struct quintet 
+    returning 
+      instance of struct quintet 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct quintet 
+          _src: instance of struct quintet 
+        returning 
+          instance of struct quintet 
+
+)
+Environment: 
+
+there are 7 alternatives before elimination
+there are 7 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  v: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct quintet 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    v: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct quintet 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    v: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct quintet 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  v: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct quintet 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  v: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct quintet 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct quintet 
+              _src: instance of struct quintet 
+            returning 
+              instance of struct quintet 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct quintet 
+                  _src: instance of struct quintet 
+                returning 
+                  instance of struct quintet 
+
+)
+        Environment: 
+formal type is pointer to instance of struct quintet 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct point 
+              _src: instance of struct point 
+            returning 
+              instance of struct point 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct point 
+                  _src: instance of struct point 
+                returning 
+                  instance of struct point 
+
+)
+        Environment: 
+formal type is pointer to instance of struct point 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                w: tuple of types
+                  signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+      Declaration of _index0: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index0: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index0: signed int 
+constant expression 3 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index0: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+
+
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+      Declaration of _index1: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index1: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index1: signed int 
+constant expression 4 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index1: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+
+
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct point 
+    _src: instance of struct point 
+  returning 
+    instance of struct point 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  z: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                z: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous4 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous4 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                w: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct point 
+
+to:
+  instance of struct point 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct point 
+      _src: instance of struct point 
+    returning 
+      instance of struct point 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct quintet 
+    _src: instance of struct quintet 
+  returning 
+    instance of struct quintet 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  v: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                v: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                w: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  z: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                z: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct quintet 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct quintet 
+      _src: instance of struct quintet 
+    returning 
+      instance of struct quintet 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct point 
+      _src: instance of struct point 
+    returning 
+      instance of struct point 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct point 
+          _src: instance of struct point 
+        returning 
+          instance of struct point 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct quintet 
+      _src: instance of struct quintet 
+    returning 
+      instance of struct quintet 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct quintet 
+          _src: instance of struct quintet 
+        returning 
+          instance of struct quintet 
+
+)
+Environment: 
+
+there are 7 alternatives before elimination
+there are 7 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  w: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct quintet 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    w: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct quintet 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    w: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct quintet 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  w: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct quintet 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  w: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct quintet 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct quintet 
+              _src: instance of struct quintet 
+            returning 
+              instance of struct quintet 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct quintet 
+                  _src: instance of struct quintet 
+                returning 
+                  instance of struct quintet 
+
+)
+        Environment: 
+formal type is pointer to instance of struct quintet 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct point 
+              _src: instance of struct point 
+            returning 
+              instance of struct point 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct point 
+                  _src: instance of struct point 
+                returning 
+                  instance of struct point 
+
+)
+        Environment: 
+formal type is pointer to instance of struct point 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                w: tuple of types
+                  signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+      Declaration of _index0: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index0: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index0: signed int 
+constant expression 3 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index0: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+
+
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+      Declaration of _index1: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index1: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index1: signed int 
+constant expression 4 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index1: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+
+
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct point 
+    _src: instance of struct point 
+  returning 
+    instance of struct point 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  z: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                z: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous4 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous4 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                w: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct point 
+
+to:
+  instance of struct point 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct point 
+      _src: instance of struct point 
+    returning 
+      instance of struct point 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct quintet 
+    _src: instance of struct quintet 
+  returning 
+    instance of struct quintet 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  v: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                v: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                w: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  z: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                z: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct quintet 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct quintet 
+      _src: instance of struct quintet 
+    returning 
+      instance of struct quintet 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct point 
+      _src: instance of struct point 
+    returning 
+      instance of struct point 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct point 
+          _src: instance of struct point 
+        returning 
+          instance of struct point 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct quintet 
+      _src: instance of struct quintet 
+    returning 
+      instance of struct quintet 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct quintet 
+          _src: instance of struct quintet 
+        returning 
+          instance of struct quintet 
+
+)
+Environment: 
+
+there are 7 alternatives before elimination
+there are 7 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct quintet 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    x: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct quintet 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    x: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct quintet 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct quintet 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct quintet 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct quintet 
+              _src: instance of struct quintet 
+            returning 
+              instance of struct quintet 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct quintet 
+                  _src: instance of struct quintet 
+                returning 
+                  instance of struct quintet 
+
+)
+        Environment: 
+formal type is pointer to instance of struct quintet 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct point 
+              _src: instance of struct point 
+            returning 
+              instance of struct point 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct point 
+                  _src: instance of struct point 
+                returning 
+                  instance of struct point 
+
+)
+        Environment: 
+formal type is pointer to instance of struct point 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                w: tuple of types
+                  signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+      Declaration of _index0: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index0: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index0: signed int 
+constant expression 3 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index0: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+
+
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+      Declaration of _index1: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index1: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index1: signed int 
+constant expression 4 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index1: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+
+
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct point 
+    _src: instance of struct point 
+  returning 
+    instance of struct point 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  z: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                z: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous4 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous4 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                w: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct point 
+
+to:
+  instance of struct point 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct point 
+      _src: instance of struct point 
+    returning 
+      instance of struct point 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct quintet 
+    _src: instance of struct quintet 
+  returning 
+    instance of struct quintet 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  v: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                v: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                w: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  z: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                z: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct quintet 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct quintet 
+      _src: instance of struct quintet 
+    returning 
+      instance of struct quintet 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct point 
+      _src: instance of struct point 
+    returning 
+      instance of struct point 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct point 
+          _src: instance of struct point 
+        returning 
+          instance of struct point 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct quintet 
+      _src: instance of struct quintet 
+    returning 
+      instance of struct quintet 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct quintet 
+          _src: instance of struct quintet 
+        returning 
+          instance of struct quintet 
+
+)
+Environment: 
+
+there are 7 alternatives before elimination
+there are 7 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct quintet 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct quintet 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct quintet 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct quintet 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct quintet 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct quintet 
+              _src: instance of struct quintet 
+            returning 
+              instance of struct quintet 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct quintet 
+                  _src: instance of struct quintet 
+                returning 
+                  instance of struct quintet 
+
+)
+        Environment: 
+formal type is pointer to instance of struct quintet 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct point 
+              _src: instance of struct point 
+            returning 
+              instance of struct point 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct point 
+                  _src: instance of struct point 
+                returning 
+                  instance of struct point 
+
+)
+        Environment: 
+formal type is pointer to instance of struct point 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                w: tuple of types
+                  signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+      Declaration of _index0: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index0: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index0: signed int 
+constant expression 3 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index0: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            a: array of signed int with dimension of                             Cast of:
+constant expression 3 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous1 
+                          Variable Expression: _index0: signed int 
+
+
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  g3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                g3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+      Declaration of _index1: C signed int 
+              Labels: {}
+        For Statement
+          initialization: 
+            Expression Statement:
+              Applying untyped: 
+                  Name: ?=?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index1: signed int 
+                  Name: 0
+
+          condition: 
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Variable Expression: _index1: signed int 
+constant expression 4 signed int 
+          increment: 
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Variable Expression: _index1: signed int 
+
+          statement block: 
+            CompoundStmt
+                              Expression Statement:
+                  Applying untyped: 
+                      Name: ?=?
+                  ...to: 
+                      Applying untyped: 
+                          Name: ?+?
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+                      Applying untyped: 
+                          Name: ?[?]
+                      ...to: 
+                          Member Expression, with field: 
+                            f4: array of instance of struct __anonymous2 with dimension of                             Cast of:
+constant expression 4 signed int 
+                            to:
+                              long unsigned int 
+                            with environment:
+                              Types:
+                              Non-types:
+
+                          from aggregate: 
+                            Variable Expression: _src: instance of struct __anonymous3 
+                          Variable Expression: _index1: signed int 
+
+
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct point 
+    _src: instance of struct point 
+  returning 
+    instance of struct point 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  z: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                z: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous4 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous4 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct point 
+              Member Expression, with field: 
+                w: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct point 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct point 
+
+to:
+  instance of struct point 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct point 
+      _src: instance of struct point 
+    returning 
+      instance of struct point 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct quintet 
+    _src: instance of struct quintet 
+  returning 
+    instance of struct quintet 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  v: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                v: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  w: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                w: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  z: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct quintet 
+              Member Expression, with field: 
+                z: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct quintet 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct quintet 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct quintet 
+      _src: instance of struct quintet 
+    returning 
+      instance of struct quintet 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct point 
+      _src: instance of struct point 
+    returning 
+      instance of struct point 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct point 
+          _src: instance of struct point 
+        returning 
+          instance of struct point 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct quintet 
+      _src: instance of struct quintet 
+    returning 
+      instance of struct quintet 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct quintet 
+          _src: instance of struct quintet 
+        returning 
+          instance of struct quintet 
+
+)
+Environment: 
+
+there are 7 alternatives before elimination
+there are 7 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  z: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct quintet 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    z: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct quintet 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    z: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct quintet 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  z: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct quintet 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  z: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct quintet 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct quintet 
+              _src: instance of struct quintet 
+            returning 
+              instance of struct quintet 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct quintet 
+                  _src: instance of struct quintet 
+                returning 
+                  instance of struct quintet 
+
+)
+        Environment: 
+formal type is pointer to instance of struct quintet 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct point 
+              _src: instance of struct point 
+            returning 
+              instance of struct point 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct point 
+                  _src: instance of struct point 
+                returning 
+                  instance of struct point 
+
+)
+        Environment: 
+formal type is pointer to instance of struct point 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct quintet 
+(types:
+    lvalue instance of struct quintet 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct quintet 
+
+to:
+  instance of struct quintet 
+(types:
+    instance of struct quintet 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 4 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 5 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 6 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 17 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 5 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 4 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        w: tuple of types
+          signed int 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      w: tuple of types
+        signed int 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Cast of:
+  Tuple:
+    constant expression 2 signed int 
+
+to:
+  instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        b: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous1 
+    Member Expression, with field: 
+      b: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous1 
+
+Error: No reasonable alternatives for expression Name: 1
+
+Error: No reasonable alternatives for expression Name: 1
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 2 signed int 
+to:
+  pointer to instance of struct __anonymous1 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        g1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous2 
+    Member Expression, with field: 
+      g1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        g2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous2 
+    Member Expression, with field: 
+      g2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        g3: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous2 
+    Member Expression, with field: 
+      g3: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        f1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous3 
+    Member Expression, with field: 
+      f1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        f2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous3 
+    Member Expression, with field: 
+      f2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        f3: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous3 
+    Member Expression, with field: 
+      f3: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 4 signed int 
+to:
+  instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 3 signed int 
+to:
+  instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 3 signed int 
+to:
+  instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 7 signed int 
+to:
+  instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous4 
+    Member Expression, with field: 
+      y1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous4 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous4 
+    Member Expression, with field: 
+      y2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous4 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y3: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous4 
+    Member Expression, with field: 
+      y3: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous4 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct point 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct point 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        z: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct point 
+    Member Expression, with field: 
+      z: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct point 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        w: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct point 
+    Member Expression, with field: 
+      w: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct point 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        v: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct quintet 
+    Member Expression, with field: 
+      v: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct quintet 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        w: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct quintet 
+    Member Expression, with field: 
+      w: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct quintet 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct quintet 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct quintet 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct quintet 
+    Member Expression, with field: 
+      y: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct quintet 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        z: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct quintet 
+    Member Expression, with field: 
+      z: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct quintet 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 3 signed int 
+to:
+  instance of struct point 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 3 signed int 
+to:
+  instance of struct point 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 4 signed int 
+to:
+  instance of struct point 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 5 signed int 
+to:
+  instance of struct point 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 6 signed int 
+to:
+  instance of struct point 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 17 signed int 
+to:
+  instance of struct point 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 5 signed int 
+to:
+  instance of struct point 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 4 signed int 
+to:
+  instance of struct point 
+
Index: src/Tests/Expect-r/Initialization2.txt
===================================================================
--- src/Tests/Expect-r/Initialization2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Initialization2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,21582 @@
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+constant expression 3 signed int 
+to:
+  signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    x: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    x: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue instance of struct __anonymous0 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+(types:
+    instance of struct __anonymous0 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 7 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous1 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    x: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous1 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    x: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous1 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous1 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous1 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous1 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous1 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous1 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous1 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous1 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous1 
+(types:
+    lvalue instance of struct __anonymous1 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+(types:
+    instance of struct __anonymous1 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous2 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+there are 3 alternatives before elimination
+there are 3 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    x: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous2 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    x: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous2 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous2 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous2 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous2 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+there are 3 alternatives before elimination
+there are 3 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous2 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous2 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous2 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous2 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous2 
+(types:
+    lvalue instance of struct __anonymous2 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+(types:
+    instance of struct __anonymous2 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 4 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous3 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y1: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y1: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous3 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y1: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous3 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y1: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous3 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y1: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous3 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous3 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y2: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y2: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous3 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y2: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous3 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y2: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous3 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y2: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous3 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous3 
+(types:
+    lvalue instance of struct __anonymous3 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+(types:
+    instance of struct __anonymous3 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous3 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y: instance of struct __anonymous3 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous4 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+there are 5 alternatives before elimination
+there are 5 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    x: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous4 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    x: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous4 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous4 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous4 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous3 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                y: instance of struct __anonymous3 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous4 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+there are 5 alternatives before elimination
+there are 5 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: instance of struct __anonymous3 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+(types:
+    lvalue instance of struct __anonymous3 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y: instance of struct __anonymous3 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous4 
+(types:
+    pointer to instance of struct __anonymous3 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y: instance of struct __anonymous3 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous4 
+(types:
+    pointer to instance of struct __anonymous3 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: instance of struct __anonymous3 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous4 
+(types:
+    lvalue instance of struct __anonymous3 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: instance of struct __anonymous3 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous4 
+(types:
+    lvalue instance of struct __anonymous3 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to instance of struct __anonymous3 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to instance of struct __anonymous3 
+formal type is instance of struct __anonymous3 
+actual type is lvalue instance of struct __anonymous3 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to instance of struct __anonymous3 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to instance of struct __anonymous3 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to instance of struct __anonymous3 
+actual expression:
+        Address of:
+          Member Expression, with field: 
+            y: instance of struct __anonymous3 
+          from aggregate: 
+            Applying untyped: 
+                Name: *?
+            ...to: 
+                Variable Expression: _dst: pointer to instance of struct __anonymous4 
+--- results are
+        pointer to instance of struct __anonymous3 
+
+converting pointer to instance of struct __anonymous3 
+ to pointer to instance of struct __anonymous3 
+cost is( 0, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          y: instance of struct __anonymous3 
+        from aggregate: 
+          Variable Expression: _src: instance of struct __anonymous4 
+--- results are
+        lvalue instance of struct __anonymous3 
+
+converting lvalue instance of struct __anonymous3 
+ to instance of struct __anonymous3 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        _dst: pointer to instance of struct __anonymous3 
+        _src: instance of struct __anonymous3 
+actuals are:
+                  Address of:
+            Member Expression, with field: 
+              y: instance of struct __anonymous3 
+            from aggregate: 
+              Applying untyped: 
+                  Name: *?
+              ...to: 
+                  Variable Expression: _dst: pointer to instance of struct __anonymous4 
+
+                  Member Expression, with field: 
+            y: instance of struct __anonymous3 
+          from aggregate: 
+            Variable Expression: _src: instance of struct __anonymous4 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?=?: inline static function
+      with parameters
+        _dst: pointer to instance of struct __anonymous3 
+        _src: instance of struct __anonymous3 
+      returning 
+        instance of struct __anonymous3 
+
+to arguments
+      Address of:
+      Member Expression, with field: 
+        y: instance of struct __anonymous3 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous4 
+
+      Member Expression, with field: 
+      y: instance of struct __anonymous3 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous4 
+
+(types:
+    instance of struct __anonymous3 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?=?: inline static function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+  to arguments
+          Address of:
+        Member Expression, with field: 
+          y: instance of struct __anonymous3 
+        from aggregate: 
+          Applying untyped: 
+              Name: *?
+          ...to: 
+              Variable Expression: _dst: pointer to instance of struct __anonymous4 
+
+          Member Expression, with field: 
+        y: instance of struct __anonymous3 
+      from aggregate: 
+        Variable Expression: _src: instance of struct __anonymous4 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous4 
+(types:
+    lvalue instance of struct __anonymous4 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+(types:
+    instance of struct __anonymous4 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 4 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 5 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous3 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous3 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous5 
+    _src: instance of struct __anonymous5 
+  returning 
+    instance of struct __anonymous5 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous5 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous5 
+          _src: instance of struct __anonymous5 
+        returning 
+          instance of struct __anonymous5 
+
+)
+Environment: 
+
+there are 6 alternatives before elimination
+there are 6 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y1: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y1: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous5 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y1: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous5 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y1: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous5 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y1: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous5 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous5 
+              _src: instance of struct __anonymous5 
+            returning 
+              instance of struct __anonymous5 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous5 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous3 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous3 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous5 
+    _src: instance of struct __anonymous5 
+  returning 
+    instance of struct __anonymous5 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous5 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous5 
+          _src: instance of struct __anonymous5 
+        returning 
+          instance of struct __anonymous5 
+
+)
+Environment: 
+
+there are 6 alternatives before elimination
+there are 6 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y2: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y2: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous5 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y2: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous5 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y2: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous5 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y2: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous5 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous5 
+              _src: instance of struct __anonymous5 
+            returning 
+              instance of struct __anonymous5 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous5 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous5 
+(types:
+    lvalue instance of struct __anonymous5 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous5 
+
+to:
+  instance of struct __anonymous5 
+(types:
+    instance of struct __anonymous5 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous3 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous3 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous5 
+    _src: instance of struct __anonymous5 
+  returning 
+    instance of struct __anonymous5 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous5 
+
+to:
+  instance of struct __anonymous5 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous6 
+    _src: instance of struct __anonymous6 
+  returning 
+    instance of struct __anonymous6 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous5 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+              Member Expression, with field: 
+                y: instance of struct __anonymous5 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous6 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous5 
+          _src: instance of struct __anonymous5 
+        returning 
+          instance of struct __anonymous5 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous6 
+          _src: instance of struct __anonymous6 
+        returning 
+          instance of struct __anonymous6 
+
+)
+Environment: 
+
+there are 7 alternatives before elimination
+there are 7 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    x: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous6 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    x: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous6 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous6 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous6 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous6 
+              _src: instance of struct __anonymous6 
+            returning 
+              instance of struct __anonymous6 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous6 
+                  _src: instance of struct __anonymous6 
+                returning 
+                  instance of struct __anonymous6 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous6 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous5 
+              _src: instance of struct __anonymous5 
+            returning 
+              instance of struct __anonymous5 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous5 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous3 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous3 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous5 
+    _src: instance of struct __anonymous5 
+  returning 
+    instance of struct __anonymous5 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous5 
+
+to:
+  instance of struct __anonymous5 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous6 
+    _src: instance of struct __anonymous6 
+  returning 
+    instance of struct __anonymous6 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous5 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+              Member Expression, with field: 
+                y: instance of struct __anonymous5 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous6 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous5 
+          _src: instance of struct __anonymous5 
+        returning 
+          instance of struct __anonymous5 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous6 
+          _src: instance of struct __anonymous6 
+        returning 
+          instance of struct __anonymous6 
+
+)
+Environment: 
+
+there are 7 alternatives before elimination
+there are 7 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: instance of struct __anonymous5 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+(types:
+    lvalue instance of struct __anonymous5 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y: instance of struct __anonymous5 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous6 
+(types:
+    pointer to instance of struct __anonymous5 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y: instance of struct __anonymous5 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous6 
+(types:
+    pointer to instance of struct __anonymous5 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: instance of struct __anonymous5 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous6 
+(types:
+    lvalue instance of struct __anonymous5 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: instance of struct __anonymous5 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous6 
+(types:
+    lvalue instance of struct __anonymous5 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous6 
+              _src: instance of struct __anonymous6 
+            returning 
+              instance of struct __anonymous6 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous6 
+                  _src: instance of struct __anonymous6 
+                returning 
+                  instance of struct __anonymous6 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous6 
+actual type is pointer to instance of struct __anonymous5 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous5 
+              _src: instance of struct __anonymous5 
+            returning 
+              instance of struct __anonymous5 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous5 
+actual type is pointer to instance of struct __anonymous5 
+formal type is instance of struct __anonymous5 
+actual type is lvalue instance of struct __anonymous5 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to instance of struct __anonymous5 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to instance of struct __anonymous5 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to instance of struct __anonymous5 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to instance of struct __anonymous5 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to instance of struct __anonymous5 
+actual expression:
+        Address of:
+          Member Expression, with field: 
+            y: instance of struct __anonymous5 
+          from aggregate: 
+            Applying untyped: 
+                Name: *?
+            ...to: 
+                Variable Expression: _dst: pointer to instance of struct __anonymous6 
+--- results are
+        pointer to instance of struct __anonymous5 
+
+converting pointer to instance of struct __anonymous5 
+ to pointer to instance of struct __anonymous5 
+cost is( 0, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          y: instance of struct __anonymous5 
+        from aggregate: 
+          Variable Expression: _src: instance of struct __anonymous6 
+--- results are
+        lvalue instance of struct __anonymous5 
+
+converting lvalue instance of struct __anonymous5 
+ to instance of struct __anonymous5 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        _dst: pointer to instance of struct __anonymous5 
+        _src: instance of struct __anonymous5 
+actuals are:
+                  Address of:
+            Member Expression, with field: 
+              y: instance of struct __anonymous5 
+            from aggregate: 
+              Applying untyped: 
+                  Name: *?
+              ...to: 
+                  Variable Expression: _dst: pointer to instance of struct __anonymous6 
+
+                  Member Expression, with field: 
+            y: instance of struct __anonymous5 
+          from aggregate: 
+            Variable Expression: _src: instance of struct __anonymous6 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?=?: inline static function
+      with parameters
+        _dst: pointer to instance of struct __anonymous5 
+        _src: instance of struct __anonymous5 
+      returning 
+        instance of struct __anonymous5 
+
+to arguments
+      Address of:
+      Member Expression, with field: 
+        y: instance of struct __anonymous5 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous6 
+
+      Member Expression, with field: 
+      y: instance of struct __anonymous5 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous6 
+
+(types:
+    instance of struct __anonymous5 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?=?: inline static function
+        with parameters
+          _dst: pointer to instance of struct __anonymous5 
+          _src: instance of struct __anonymous5 
+        returning 
+          instance of struct __anonymous5 
+
+  to arguments
+          Address of:
+        Member Expression, with field: 
+          y: instance of struct __anonymous5 
+        from aggregate: 
+          Applying untyped: 
+              Name: *?
+          ...to: 
+              Variable Expression: _dst: pointer to instance of struct __anonymous6 
+
+          Member Expression, with field: 
+        y: instance of struct __anonymous5 
+      from aggregate: 
+        Variable Expression: _src: instance of struct __anonymous6 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous6 
+(types:
+    lvalue instance of struct __anonymous6 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous6 
+
+to:
+  instance of struct __anonymous6 
+(types:
+    instance of struct __anonymous6 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 9 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 8 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 7 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous3 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous3 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous5 
+    _src: instance of struct __anonymous5 
+  returning 
+    instance of struct __anonymous5 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous5 
+
+to:
+  instance of struct __anonymous5 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous6 
+    _src: instance of struct __anonymous6 
+  returning 
+    instance of struct __anonymous6 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous5 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous5 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous6 
+
+to:
+  instance of struct __anonymous6 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous7 
+    _src: instance of struct __anonymous7 
+  returning 
+    instance of struct __anonymous7 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous7 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous5 
+          _src: instance of struct __anonymous5 
+        returning 
+          instance of struct __anonymous5 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous6 
+          _src: instance of struct __anonymous6 
+        returning 
+          instance of struct __anonymous6 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous7 
+          _src: instance of struct __anonymous7 
+        returning 
+          instance of struct __anonymous7 
+
+)
+Environment: 
+
+there are 8 alternatives before elimination
+there are 8 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y1: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y1: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous7 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y1: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous7 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y1: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous7 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y1: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous7 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous7 
+              _src: instance of struct __anonymous7 
+            returning 
+              instance of struct __anonymous7 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous7 
+                  _src: instance of struct __anonymous7 
+                returning 
+                  instance of struct __anonymous7 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous7 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous6 
+              _src: instance of struct __anonymous6 
+            returning 
+              instance of struct __anonymous6 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous6 
+                  _src: instance of struct __anonymous6 
+                returning 
+                  instance of struct __anonymous6 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous6 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous5 
+              _src: instance of struct __anonymous5 
+            returning 
+              instance of struct __anonymous5 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous5 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous3 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous3 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous5 
+    _src: instance of struct __anonymous5 
+  returning 
+    instance of struct __anonymous5 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous5 
+
+to:
+  instance of struct __anonymous5 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous6 
+    _src: instance of struct __anonymous6 
+  returning 
+    instance of struct __anonymous6 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous5 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous5 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous6 
+
+to:
+  instance of struct __anonymous6 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous7 
+    _src: instance of struct __anonymous7 
+  returning 
+    instance of struct __anonymous7 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous7 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous5 
+          _src: instance of struct __anonymous5 
+        returning 
+          instance of struct __anonymous5 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous6 
+          _src: instance of struct __anonymous6 
+        returning 
+          instance of struct __anonymous6 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous7 
+          _src: instance of struct __anonymous7 
+        returning 
+          instance of struct __anonymous7 
+
+)
+Environment: 
+
+there are 8 alternatives before elimination
+there are 8 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y2: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y2: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous7 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y2: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous7 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y2: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous7 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y2: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous7 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous7 
+              _src: instance of struct __anonymous7 
+            returning 
+              instance of struct __anonymous7 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous7 
+                  _src: instance of struct __anonymous7 
+                returning 
+                  instance of struct __anonymous7 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous7 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous6 
+              _src: instance of struct __anonymous6 
+            returning 
+              instance of struct __anonymous6 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous6 
+                  _src: instance of struct __anonymous6 
+                returning 
+                  instance of struct __anonymous6 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous6 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous5 
+              _src: instance of struct __anonymous5 
+            returning 
+              instance of struct __anonymous5 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous5 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous7 
+(types:
+    lvalue instance of struct __anonymous7 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous7 
+
+to:
+  instance of struct __anonymous7 
+(types:
+    instance of struct __anonymous7 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous3 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous3 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous5 
+    _src: instance of struct __anonymous5 
+  returning 
+    instance of struct __anonymous5 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous5 
+
+to:
+  instance of struct __anonymous5 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous6 
+    _src: instance of struct __anonymous6 
+  returning 
+    instance of struct __anonymous6 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous5 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous5 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous6 
+
+to:
+  instance of struct __anonymous6 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous7 
+    _src: instance of struct __anonymous7 
+  returning 
+    instance of struct __anonymous7 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous7 
+
+to:
+  instance of struct __anonymous7 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous8 
+    _src: instance of struct __anonymous8 
+  returning 
+    instance of struct __anonymous8 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous8 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous8 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous7 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous8 
+              Member Expression, with field: 
+                y: instance of struct __anonymous7 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous8 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous8 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous8 
+      _src: instance of struct __anonymous8 
+    returning 
+      instance of struct __anonymous8 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous5 
+          _src: instance of struct __anonymous5 
+        returning 
+          instance of struct __anonymous5 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous6 
+          _src: instance of struct __anonymous6 
+        returning 
+          instance of struct __anonymous6 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous7 
+          _src: instance of struct __anonymous7 
+        returning 
+          instance of struct __anonymous7 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous8 
+      _src: instance of struct __anonymous8 
+    returning 
+      instance of struct __anonymous8 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous8 
+          _src: instance of struct __anonymous8 
+        returning 
+          instance of struct __anonymous8 
+
+)
+Environment: 
+
+there are 9 alternatives before elimination
+there are 9 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous8 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    x: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous8 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    x: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous8 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous8 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous8 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous8 
+              _src: instance of struct __anonymous8 
+            returning 
+              instance of struct __anonymous8 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous8 
+                  _src: instance of struct __anonymous8 
+                returning 
+                  instance of struct __anonymous8 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous8 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous7 
+              _src: instance of struct __anonymous7 
+            returning 
+              instance of struct __anonymous7 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous7 
+                  _src: instance of struct __anonymous7 
+                returning 
+                  instance of struct __anonymous7 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous7 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous6 
+              _src: instance of struct __anonymous6 
+            returning 
+              instance of struct __anonymous6 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous6 
+                  _src: instance of struct __anonymous6 
+                returning 
+                  instance of struct __anonymous6 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous6 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous5 
+              _src: instance of struct __anonymous5 
+            returning 
+              instance of struct __anonymous5 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous5 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous3 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous3 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous5 
+    _src: instance of struct __anonymous5 
+  returning 
+    instance of struct __anonymous5 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous5 
+
+to:
+  instance of struct __anonymous5 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous6 
+    _src: instance of struct __anonymous6 
+  returning 
+    instance of struct __anonymous6 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous5 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous5 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous6 
+
+to:
+  instance of struct __anonymous6 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous7 
+    _src: instance of struct __anonymous7 
+  returning 
+    instance of struct __anonymous7 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous7 
+
+to:
+  instance of struct __anonymous7 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous8 
+    _src: instance of struct __anonymous8 
+  returning 
+    instance of struct __anonymous8 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous8 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous8 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous7 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous8 
+              Member Expression, with field: 
+                y: instance of struct __anonymous7 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous8 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous8 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous8 
+      _src: instance of struct __anonymous8 
+    returning 
+      instance of struct __anonymous8 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous5 
+          _src: instance of struct __anonymous5 
+        returning 
+          instance of struct __anonymous5 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous6 
+          _src: instance of struct __anonymous6 
+        returning 
+          instance of struct __anonymous6 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous7 
+          _src: instance of struct __anonymous7 
+        returning 
+          instance of struct __anonymous7 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous8 
+      _src: instance of struct __anonymous8 
+    returning 
+      instance of struct __anonymous8 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous8 
+          _src: instance of struct __anonymous8 
+        returning 
+          instance of struct __anonymous8 
+
+)
+Environment: 
+
+there are 9 alternatives before elimination
+there are 9 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: instance of struct __anonymous7 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous8 
+(types:
+    lvalue instance of struct __anonymous7 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y: instance of struct __anonymous7 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous8 
+(types:
+    pointer to instance of struct __anonymous7 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y: instance of struct __anonymous7 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous8 
+(types:
+    pointer to instance of struct __anonymous7 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: instance of struct __anonymous7 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous8 
+(types:
+    lvalue instance of struct __anonymous7 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: instance of struct __anonymous7 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous8 
+(types:
+    lvalue instance of struct __anonymous7 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous8 
+              _src: instance of struct __anonymous8 
+            returning 
+              instance of struct __anonymous8 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous8 
+                  _src: instance of struct __anonymous8 
+                returning 
+                  instance of struct __anonymous8 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous8 
+actual type is pointer to instance of struct __anonymous7 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous7 
+              _src: instance of struct __anonymous7 
+            returning 
+              instance of struct __anonymous7 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous7 
+                  _src: instance of struct __anonymous7 
+                returning 
+                  instance of struct __anonymous7 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous7 
+actual type is pointer to instance of struct __anonymous7 
+formal type is instance of struct __anonymous7 
+actual type is lvalue instance of struct __anonymous7 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous6 
+              _src: instance of struct __anonymous6 
+            returning 
+              instance of struct __anonymous6 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous6 
+                  _src: instance of struct __anonymous6 
+                returning 
+                  instance of struct __anonymous6 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous6 
+actual type is pointer to instance of struct __anonymous7 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous5 
+              _src: instance of struct __anonymous5 
+            returning 
+              instance of struct __anonymous5 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous5 
+actual type is pointer to instance of struct __anonymous7 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to instance of struct __anonymous7 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to instance of struct __anonymous7 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to instance of struct __anonymous7 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to instance of struct __anonymous7 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to instance of struct __anonymous7 
+actual expression:
+        Address of:
+          Member Expression, with field: 
+            y: instance of struct __anonymous7 
+          from aggregate: 
+            Applying untyped: 
+                Name: *?
+            ...to: 
+                Variable Expression: _dst: pointer to instance of struct __anonymous8 
+--- results are
+        pointer to instance of struct __anonymous7 
+
+converting pointer to instance of struct __anonymous7 
+ to pointer to instance of struct __anonymous7 
+cost is( 0, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          y: instance of struct __anonymous7 
+        from aggregate: 
+          Variable Expression: _src: instance of struct __anonymous8 
+--- results are
+        lvalue instance of struct __anonymous7 
+
+converting lvalue instance of struct __anonymous7 
+ to instance of struct __anonymous7 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        _dst: pointer to instance of struct __anonymous7 
+        _src: instance of struct __anonymous7 
+actuals are:
+                  Address of:
+            Member Expression, with field: 
+              y: instance of struct __anonymous7 
+            from aggregate: 
+              Applying untyped: 
+                  Name: *?
+              ...to: 
+                  Variable Expression: _dst: pointer to instance of struct __anonymous8 
+
+                  Member Expression, with field: 
+            y: instance of struct __anonymous7 
+          from aggregate: 
+            Variable Expression: _src: instance of struct __anonymous8 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?=?: inline static function
+      with parameters
+        _dst: pointer to instance of struct __anonymous7 
+        _src: instance of struct __anonymous7 
+      returning 
+        instance of struct __anonymous7 
+
+to arguments
+      Address of:
+      Member Expression, with field: 
+        y: instance of struct __anonymous7 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous8 
+
+      Member Expression, with field: 
+      y: instance of struct __anonymous7 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous8 
+
+(types:
+    instance of struct __anonymous7 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?=?: inline static function
+        with parameters
+          _dst: pointer to instance of struct __anonymous7 
+          _src: instance of struct __anonymous7 
+        returning 
+          instance of struct __anonymous7 
+
+  to arguments
+          Address of:
+        Member Expression, with field: 
+          y: instance of struct __anonymous7 
+        from aggregate: 
+          Applying untyped: 
+              Name: *?
+          ...to: 
+              Variable Expression: _dst: pointer to instance of struct __anonymous8 
+
+          Member Expression, with field: 
+        y: instance of struct __anonymous7 
+      from aggregate: 
+        Variable Expression: _src: instance of struct __anonymous8 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous8 
+(types:
+    lvalue instance of struct __anonymous8 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous8 
+
+to:
+  instance of struct __anonymous8 
+(types:
+    instance of struct __anonymous8 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 7 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 9 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 8 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous3 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous3 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous5 
+    _src: instance of struct __anonymous5 
+  returning 
+    instance of struct __anonymous5 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous5 
+
+to:
+  instance of struct __anonymous5 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous6 
+    _src: instance of struct __anonymous6 
+  returning 
+    instance of struct __anonymous6 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous5 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous5 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous6 
+
+to:
+  instance of struct __anonymous6 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous7 
+    _src: instance of struct __anonymous7 
+  returning 
+    instance of struct __anonymous7 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous7 
+
+to:
+  instance of struct __anonymous7 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous8 
+    _src: instance of struct __anonymous8 
+  returning 
+    instance of struct __anonymous8 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous8 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous8 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous7 
+                  _src: instance of struct __anonymous7 
+                returning 
+                  instance of struct __anonymous7 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous7 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous8 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous7 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous8 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous8 
+
+to:
+  instance of struct __anonymous8 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous8 
+      _src: instance of struct __anonymous8 
+    returning 
+      instance of struct __anonymous8 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous9 
+    _src: instance of struct __anonymous9 
+  returning 
+    instance of struct __anonymous9 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous9 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous9 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous9 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous9 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous9 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous9 
+      _src: instance of struct __anonymous9 
+    returning 
+      instance of struct __anonymous9 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous5 
+          _src: instance of struct __anonymous5 
+        returning 
+          instance of struct __anonymous5 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous6 
+          _src: instance of struct __anonymous6 
+        returning 
+          instance of struct __anonymous6 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous7 
+          _src: instance of struct __anonymous7 
+        returning 
+          instance of struct __anonymous7 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous8 
+      _src: instance of struct __anonymous8 
+    returning 
+      instance of struct __anonymous8 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous8 
+          _src: instance of struct __anonymous8 
+        returning 
+          instance of struct __anonymous8 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous9 
+      _src: instance of struct __anonymous9 
+    returning 
+      instance of struct __anonymous9 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous9 
+          _src: instance of struct __anonymous9 
+        returning 
+          instance of struct __anonymous9 
+
+)
+Environment: 
+
+there are 10 alternatives before elimination
+there are 10 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y1: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous9 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y1: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous9 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y1: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous9 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y1: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous9 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y1: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous9 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous9 
+              _src: instance of struct __anonymous9 
+            returning 
+              instance of struct __anonymous9 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous9 
+                  _src: instance of struct __anonymous9 
+                returning 
+                  instance of struct __anonymous9 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous9 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous8 
+              _src: instance of struct __anonymous8 
+            returning 
+              instance of struct __anonymous8 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous8 
+                  _src: instance of struct __anonymous8 
+                returning 
+                  instance of struct __anonymous8 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous8 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous7 
+              _src: instance of struct __anonymous7 
+            returning 
+              instance of struct __anonymous7 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous7 
+                  _src: instance of struct __anonymous7 
+                returning 
+                  instance of struct __anonymous7 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous7 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous6 
+              _src: instance of struct __anonymous6 
+            returning 
+              instance of struct __anonymous6 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous6 
+                  _src: instance of struct __anonymous6 
+                returning 
+                  instance of struct __anonymous6 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous6 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous5 
+              _src: instance of struct __anonymous5 
+            returning 
+              instance of struct __anonymous5 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous5 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous3 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous3 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous5 
+    _src: instance of struct __anonymous5 
+  returning 
+    instance of struct __anonymous5 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous5 
+
+to:
+  instance of struct __anonymous5 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous6 
+    _src: instance of struct __anonymous6 
+  returning 
+    instance of struct __anonymous6 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous5 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous5 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous6 
+
+to:
+  instance of struct __anonymous6 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous7 
+    _src: instance of struct __anonymous7 
+  returning 
+    instance of struct __anonymous7 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous7 
+
+to:
+  instance of struct __anonymous7 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous8 
+    _src: instance of struct __anonymous8 
+  returning 
+    instance of struct __anonymous8 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous8 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous8 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous7 
+                  _src: instance of struct __anonymous7 
+                returning 
+                  instance of struct __anonymous7 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous7 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous8 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous7 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous8 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous8 
+
+to:
+  instance of struct __anonymous8 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous8 
+      _src: instance of struct __anonymous8 
+    returning 
+      instance of struct __anonymous8 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous9 
+    _src: instance of struct __anonymous9 
+  returning 
+    instance of struct __anonymous9 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous9 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous9 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous9 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous9 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous9 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous9 
+      _src: instance of struct __anonymous9 
+    returning 
+      instance of struct __anonymous9 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous5 
+          _src: instance of struct __anonymous5 
+        returning 
+          instance of struct __anonymous5 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous6 
+          _src: instance of struct __anonymous6 
+        returning 
+          instance of struct __anonymous6 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous7 
+          _src: instance of struct __anonymous7 
+        returning 
+          instance of struct __anonymous7 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous8 
+      _src: instance of struct __anonymous8 
+    returning 
+      instance of struct __anonymous8 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous8 
+          _src: instance of struct __anonymous8 
+        returning 
+          instance of struct __anonymous8 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous9 
+      _src: instance of struct __anonymous9 
+    returning 
+      instance of struct __anonymous9 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous9 
+          _src: instance of struct __anonymous9 
+        returning 
+          instance of struct __anonymous9 
+
+)
+Environment: 
+
+there are 10 alternatives before elimination
+there are 10 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y2: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous9 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y2: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous9 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y2: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous9 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y2: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous9 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y2: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous9 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous9 
+              _src: instance of struct __anonymous9 
+            returning 
+              instance of struct __anonymous9 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous9 
+                  _src: instance of struct __anonymous9 
+                returning 
+                  instance of struct __anonymous9 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous9 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous8 
+              _src: instance of struct __anonymous8 
+            returning 
+              instance of struct __anonymous8 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous8 
+                  _src: instance of struct __anonymous8 
+                returning 
+                  instance of struct __anonymous8 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous8 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous7 
+              _src: instance of struct __anonymous7 
+            returning 
+              instance of struct __anonymous7 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous7 
+                  _src: instance of struct __anonymous7 
+                returning 
+                  instance of struct __anonymous7 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous7 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous6 
+              _src: instance of struct __anonymous6 
+            returning 
+              instance of struct __anonymous6 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous6 
+                  _src: instance of struct __anonymous6 
+                returning 
+                  instance of struct __anonymous6 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous6 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous5 
+              _src: instance of struct __anonymous5 
+            returning 
+              instance of struct __anonymous5 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous5 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous9 
+(types:
+    lvalue instance of struct __anonymous9 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous9 
+
+to:
+  instance of struct __anonymous9 
+(types:
+    instance of struct __anonymous9 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous3 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous3 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous5 
+    _src: instance of struct __anonymous5 
+  returning 
+    instance of struct __anonymous5 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous5 
+
+to:
+  instance of struct __anonymous5 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous6 
+    _src: instance of struct __anonymous6 
+  returning 
+    instance of struct __anonymous6 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous5 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous5 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous6 
+
+to:
+  instance of struct __anonymous6 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous7 
+    _src: instance of struct __anonymous7 
+  returning 
+    instance of struct __anonymous7 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous7 
+
+to:
+  instance of struct __anonymous7 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous8 
+    _src: instance of struct __anonymous8 
+  returning 
+    instance of struct __anonymous8 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous8 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous8 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous7 
+                  _src: instance of struct __anonymous7 
+                returning 
+                  instance of struct __anonymous7 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous7 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous8 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous7 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous8 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous8 
+
+to:
+  instance of struct __anonymous8 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous8 
+      _src: instance of struct __anonymous8 
+    returning 
+      instance of struct __anonymous8 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous9 
+    _src: instance of struct __anonymous9 
+  returning 
+    instance of struct __anonymous9 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous9 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous9 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous9 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous9 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous9 
+
+to:
+  instance of struct __anonymous9 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous9 
+      _src: instance of struct __anonymous9 
+    returning 
+      instance of struct __anonymous9 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous10 
+    _src: instance of struct __anonymous10 
+  returning 
+    instance of struct __anonymous10 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous10 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous10 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous9 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous10 
+              Member Expression, with field: 
+                y: instance of struct __anonymous9 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous10 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous10 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous10 
+      _src: instance of struct __anonymous10 
+    returning 
+      instance of struct __anonymous10 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous5 
+          _src: instance of struct __anonymous5 
+        returning 
+          instance of struct __anonymous5 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous6 
+          _src: instance of struct __anonymous6 
+        returning 
+          instance of struct __anonymous6 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous7 
+          _src: instance of struct __anonymous7 
+        returning 
+          instance of struct __anonymous7 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous8 
+      _src: instance of struct __anonymous8 
+    returning 
+      instance of struct __anonymous8 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous8 
+          _src: instance of struct __anonymous8 
+        returning 
+          instance of struct __anonymous8 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous9 
+      _src: instance of struct __anonymous9 
+    returning 
+      instance of struct __anonymous9 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous9 
+          _src: instance of struct __anonymous9 
+        returning 
+          instance of struct __anonymous9 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous10 
+      _src: instance of struct __anonymous10 
+    returning 
+      instance of struct __anonymous10 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous10 
+          _src: instance of struct __anonymous10 
+        returning 
+          instance of struct __anonymous10 
+
+)
+Environment: 
+
+there are 11 alternatives before elimination
+there are 11 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous10 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    x: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous10 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    x: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous10 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous10 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous10 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous10 
+              _src: instance of struct __anonymous10 
+            returning 
+              instance of struct __anonymous10 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous10 
+                  _src: instance of struct __anonymous10 
+                returning 
+                  instance of struct __anonymous10 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous10 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous9 
+              _src: instance of struct __anonymous9 
+            returning 
+              instance of struct __anonymous9 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous9 
+                  _src: instance of struct __anonymous9 
+                returning 
+                  instance of struct __anonymous9 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous9 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous8 
+              _src: instance of struct __anonymous8 
+            returning 
+              instance of struct __anonymous8 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous8 
+                  _src: instance of struct __anonymous8 
+                returning 
+                  instance of struct __anonymous8 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous8 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous7 
+              _src: instance of struct __anonymous7 
+            returning 
+              instance of struct __anonymous7 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous7 
+                  _src: instance of struct __anonymous7 
+                returning 
+                  instance of struct __anonymous7 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous7 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous6 
+              _src: instance of struct __anonymous6 
+            returning 
+              instance of struct __anonymous6 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous6 
+                  _src: instance of struct __anonymous6 
+                returning 
+                  instance of struct __anonymous6 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous6 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous5 
+              _src: instance of struct __anonymous5 
+            returning 
+              instance of struct __anonymous5 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous5 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous3 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous3 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous5 
+    _src: instance of struct __anonymous5 
+  returning 
+    instance of struct __anonymous5 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous5 
+
+to:
+  instance of struct __anonymous5 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous6 
+    _src: instance of struct __anonymous6 
+  returning 
+    instance of struct __anonymous6 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous5 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous5 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous6 
+
+to:
+  instance of struct __anonymous6 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous7 
+    _src: instance of struct __anonymous7 
+  returning 
+    instance of struct __anonymous7 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous7 
+
+to:
+  instance of struct __anonymous7 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous8 
+    _src: instance of struct __anonymous8 
+  returning 
+    instance of struct __anonymous8 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous8 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous8 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous7 
+                  _src: instance of struct __anonymous7 
+                returning 
+                  instance of struct __anonymous7 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous7 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous8 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous7 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous8 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous8 
+
+to:
+  instance of struct __anonymous8 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous8 
+      _src: instance of struct __anonymous8 
+    returning 
+      instance of struct __anonymous8 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous9 
+    _src: instance of struct __anonymous9 
+  returning 
+    instance of struct __anonymous9 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous9 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous9 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous9 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous9 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous9 
+
+to:
+  instance of struct __anonymous9 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous9 
+      _src: instance of struct __anonymous9 
+    returning 
+      instance of struct __anonymous9 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous10 
+    _src: instance of struct __anonymous10 
+  returning 
+    instance of struct __anonymous10 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous10 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous10 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous9 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous10 
+              Member Expression, with field: 
+                y: instance of struct __anonymous9 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous10 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous10 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous10 
+      _src: instance of struct __anonymous10 
+    returning 
+      instance of struct __anonymous10 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous5 
+          _src: instance of struct __anonymous5 
+        returning 
+          instance of struct __anonymous5 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous6 
+          _src: instance of struct __anonymous6 
+        returning 
+          instance of struct __anonymous6 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous7 
+          _src: instance of struct __anonymous7 
+        returning 
+          instance of struct __anonymous7 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous8 
+      _src: instance of struct __anonymous8 
+    returning 
+      instance of struct __anonymous8 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous8 
+          _src: instance of struct __anonymous8 
+        returning 
+          instance of struct __anonymous8 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous9 
+      _src: instance of struct __anonymous9 
+    returning 
+      instance of struct __anonymous9 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous9 
+          _src: instance of struct __anonymous9 
+        returning 
+          instance of struct __anonymous9 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous10 
+      _src: instance of struct __anonymous10 
+    returning 
+      instance of struct __anonymous10 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous10 
+          _src: instance of struct __anonymous10 
+        returning 
+          instance of struct __anonymous10 
+
+)
+Environment: 
+
+there are 11 alternatives before elimination
+there are 11 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: instance of struct __anonymous9 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous10 
+(types:
+    lvalue instance of struct __anonymous9 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y: instance of struct __anonymous9 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous10 
+(types:
+    pointer to instance of struct __anonymous9 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y: instance of struct __anonymous9 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous10 
+(types:
+    pointer to instance of struct __anonymous9 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: instance of struct __anonymous9 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous10 
+(types:
+    lvalue instance of struct __anonymous9 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: instance of struct __anonymous9 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous10 
+(types:
+    lvalue instance of struct __anonymous9 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous10 
+              _src: instance of struct __anonymous10 
+            returning 
+              instance of struct __anonymous10 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous10 
+                  _src: instance of struct __anonymous10 
+                returning 
+                  instance of struct __anonymous10 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous10 
+actual type is pointer to instance of struct __anonymous9 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous9 
+              _src: instance of struct __anonymous9 
+            returning 
+              instance of struct __anonymous9 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous9 
+                  _src: instance of struct __anonymous9 
+                returning 
+                  instance of struct __anonymous9 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous9 
+actual type is pointer to instance of struct __anonymous9 
+formal type is instance of struct __anonymous9 
+actual type is lvalue instance of struct __anonymous9 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous8 
+              _src: instance of struct __anonymous8 
+            returning 
+              instance of struct __anonymous8 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous8 
+                  _src: instance of struct __anonymous8 
+                returning 
+                  instance of struct __anonymous8 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous8 
+actual type is pointer to instance of struct __anonymous9 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous7 
+              _src: instance of struct __anonymous7 
+            returning 
+              instance of struct __anonymous7 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous7 
+                  _src: instance of struct __anonymous7 
+                returning 
+                  instance of struct __anonymous7 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous7 
+actual type is pointer to instance of struct __anonymous9 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous6 
+              _src: instance of struct __anonymous6 
+            returning 
+              instance of struct __anonymous6 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous6 
+                  _src: instance of struct __anonymous6 
+                returning 
+                  instance of struct __anonymous6 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous6 
+actual type is pointer to instance of struct __anonymous9 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous5 
+              _src: instance of struct __anonymous5 
+            returning 
+              instance of struct __anonymous5 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous5 
+actual type is pointer to instance of struct __anonymous9 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to instance of struct __anonymous9 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to instance of struct __anonymous9 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to instance of struct __anonymous9 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to instance of struct __anonymous9 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to instance of struct __anonymous9 
+actual expression:
+        Address of:
+          Member Expression, with field: 
+            y: instance of struct __anonymous9 
+          from aggregate: 
+            Applying untyped: 
+                Name: *?
+            ...to: 
+                Variable Expression: _dst: pointer to instance of struct __anonymous10 
+--- results are
+        pointer to instance of struct __anonymous9 
+
+converting pointer to instance of struct __anonymous9 
+ to pointer to instance of struct __anonymous9 
+cost is( 0, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          y: instance of struct __anonymous9 
+        from aggregate: 
+          Variable Expression: _src: instance of struct __anonymous10 
+--- results are
+        lvalue instance of struct __anonymous9 
+
+converting lvalue instance of struct __anonymous9 
+ to instance of struct __anonymous9 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        _dst: pointer to instance of struct __anonymous9 
+        _src: instance of struct __anonymous9 
+actuals are:
+                  Address of:
+            Member Expression, with field: 
+              y: instance of struct __anonymous9 
+            from aggregate: 
+              Applying untyped: 
+                  Name: *?
+              ...to: 
+                  Variable Expression: _dst: pointer to instance of struct __anonymous10 
+
+                  Member Expression, with field: 
+            y: instance of struct __anonymous9 
+          from aggregate: 
+            Variable Expression: _src: instance of struct __anonymous10 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?=?: inline static function
+      with parameters
+        _dst: pointer to instance of struct __anonymous9 
+        _src: instance of struct __anonymous9 
+      returning 
+        instance of struct __anonymous9 
+
+to arguments
+      Address of:
+      Member Expression, with field: 
+        y: instance of struct __anonymous9 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous10 
+
+      Member Expression, with field: 
+      y: instance of struct __anonymous9 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous10 
+
+(types:
+    instance of struct __anonymous9 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?=?: inline static function
+        with parameters
+          _dst: pointer to instance of struct __anonymous9 
+          _src: instance of struct __anonymous9 
+        returning 
+          instance of struct __anonymous9 
+
+  to arguments
+          Address of:
+        Member Expression, with field: 
+          y: instance of struct __anonymous9 
+        from aggregate: 
+          Applying untyped: 
+              Name: *?
+          ...to: 
+              Variable Expression: _dst: pointer to instance of struct __anonymous10 
+
+          Member Expression, with field: 
+        y: instance of struct __anonymous9 
+      from aggregate: 
+        Variable Expression: _src: instance of struct __anonymous10 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous10 
+(types:
+    lvalue instance of struct __anonymous10 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous10 
+
+to:
+  instance of struct __anonymous10 
+(types:
+    instance of struct __anonymous10 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 4 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 5 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous3 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous3 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous5 
+    _src: instance of struct __anonymous5 
+  returning 
+    instance of struct __anonymous5 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous5 
+
+to:
+  instance of struct __anonymous5 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous6 
+    _src: instance of struct __anonymous6 
+  returning 
+    instance of struct __anonymous6 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous5 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous5 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous6 
+
+to:
+  instance of struct __anonymous6 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous7 
+    _src: instance of struct __anonymous7 
+  returning 
+    instance of struct __anonymous7 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous7 
+
+to:
+  instance of struct __anonymous7 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous8 
+    _src: instance of struct __anonymous8 
+  returning 
+    instance of struct __anonymous8 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous8 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous8 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous7 
+                  _src: instance of struct __anonymous7 
+                returning 
+                  instance of struct __anonymous7 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous7 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous8 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous7 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous8 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous8 
+
+to:
+  instance of struct __anonymous8 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous8 
+      _src: instance of struct __anonymous8 
+    returning 
+      instance of struct __anonymous8 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous9 
+    _src: instance of struct __anonymous9 
+  returning 
+    instance of struct __anonymous9 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous9 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous9 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous9 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous9 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous9 
+
+to:
+  instance of struct __anonymous9 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous9 
+      _src: instance of struct __anonymous9 
+    returning 
+      instance of struct __anonymous9 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous10 
+    _src: instance of struct __anonymous10 
+  returning 
+    instance of struct __anonymous10 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous10 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous10 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous9 
+                  _src: instance of struct __anonymous9 
+                returning 
+                  instance of struct __anonymous9 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous9 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous10 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous9 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous10 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous10 
+
+to:
+  instance of struct __anonymous10 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous10 
+      _src: instance of struct __anonymous10 
+    returning 
+      instance of struct __anonymous10 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct t 
+    _src: instance of struct t 
+  returning 
+    instance of struct t 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct t 
+              Member Expression, with field: 
+                a: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct t 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct t 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct t 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct t 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct t 
+      _src: instance of struct t 
+    returning 
+      instance of struct t 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous5 
+          _src: instance of struct __anonymous5 
+        returning 
+          instance of struct __anonymous5 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous6 
+          _src: instance of struct __anonymous6 
+        returning 
+          instance of struct __anonymous6 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous7 
+          _src: instance of struct __anonymous7 
+        returning 
+          instance of struct __anonymous7 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous8 
+      _src: instance of struct __anonymous8 
+    returning 
+      instance of struct __anonymous8 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous8 
+          _src: instance of struct __anonymous8 
+        returning 
+          instance of struct __anonymous8 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous9 
+      _src: instance of struct __anonymous9 
+    returning 
+      instance of struct __anonymous9 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous9 
+          _src: instance of struct __anonymous9 
+        returning 
+          instance of struct __anonymous9 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous10 
+      _src: instance of struct __anonymous10 
+    returning 
+      instance of struct __anonymous10 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous10 
+          _src: instance of struct __anonymous10 
+        returning 
+          instance of struct __anonymous10 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct t 
+      _src: instance of struct t 
+    returning 
+      instance of struct t 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct t 
+          _src: instance of struct t 
+        returning 
+          instance of struct t 
+
+)
+Environment: 
+
+there are 12 alternatives before elimination
+there are 12 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct t 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    a: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct t 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    a: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct t 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct t 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct t 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct t 
+              _src: instance of struct t 
+            returning 
+              instance of struct t 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct t 
+                  _src: instance of struct t 
+                returning 
+                  instance of struct t 
+
+)
+        Environment: 
+formal type is pointer to instance of struct t 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous10 
+              _src: instance of struct __anonymous10 
+            returning 
+              instance of struct __anonymous10 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous10 
+                  _src: instance of struct __anonymous10 
+                returning 
+                  instance of struct __anonymous10 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous10 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous9 
+              _src: instance of struct __anonymous9 
+            returning 
+              instance of struct __anonymous9 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous9 
+                  _src: instance of struct __anonymous9 
+                returning 
+                  instance of struct __anonymous9 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous9 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous8 
+              _src: instance of struct __anonymous8 
+            returning 
+              instance of struct __anonymous8 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous8 
+                  _src: instance of struct __anonymous8 
+                returning 
+                  instance of struct __anonymous8 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous8 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous7 
+              _src: instance of struct __anonymous7 
+            returning 
+              instance of struct __anonymous7 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous7 
+                  _src: instance of struct __anonymous7 
+                returning 
+                  instance of struct __anonymous7 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous7 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous6 
+              _src: instance of struct __anonymous6 
+            returning 
+              instance of struct __anonymous6 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous6 
+                  _src: instance of struct __anonymous6 
+                returning 
+                  instance of struct __anonymous6 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous6 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous5 
+              _src: instance of struct __anonymous5 
+            returning 
+              instance of struct __anonymous5 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous5 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous3 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous3 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous5 
+    _src: instance of struct __anonymous5 
+  returning 
+    instance of struct __anonymous5 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous5 
+
+to:
+  instance of struct __anonymous5 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous6 
+    _src: instance of struct __anonymous6 
+  returning 
+    instance of struct __anonymous6 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous5 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous5 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous6 
+
+to:
+  instance of struct __anonymous6 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous7 
+    _src: instance of struct __anonymous7 
+  returning 
+    instance of struct __anonymous7 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous7 
+
+to:
+  instance of struct __anonymous7 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous8 
+    _src: instance of struct __anonymous8 
+  returning 
+    instance of struct __anonymous8 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous8 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous8 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous7 
+                  _src: instance of struct __anonymous7 
+                returning 
+                  instance of struct __anonymous7 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous7 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous8 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous7 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous8 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous8 
+
+to:
+  instance of struct __anonymous8 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous8 
+      _src: instance of struct __anonymous8 
+    returning 
+      instance of struct __anonymous8 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous9 
+    _src: instance of struct __anonymous9 
+  returning 
+    instance of struct __anonymous9 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous9 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous9 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous9 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous9 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous9 
+
+to:
+  instance of struct __anonymous9 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous9 
+      _src: instance of struct __anonymous9 
+    returning 
+      instance of struct __anonymous9 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous10 
+    _src: instance of struct __anonymous10 
+  returning 
+    instance of struct __anonymous10 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous10 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous10 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous9 
+                  _src: instance of struct __anonymous9 
+                returning 
+                  instance of struct __anonymous9 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous9 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous10 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous9 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous10 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous10 
+
+to:
+  instance of struct __anonymous10 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous10 
+      _src: instance of struct __anonymous10 
+    returning 
+      instance of struct __anonymous10 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct t 
+    _src: instance of struct t 
+  returning 
+    instance of struct t 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct t 
+              Member Expression, with field: 
+                a: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct t 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct t 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct t 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct t 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct t 
+      _src: instance of struct t 
+    returning 
+      instance of struct t 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous5 
+          _src: instance of struct __anonymous5 
+        returning 
+          instance of struct __anonymous5 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous6 
+          _src: instance of struct __anonymous6 
+        returning 
+          instance of struct __anonymous6 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous7 
+          _src: instance of struct __anonymous7 
+        returning 
+          instance of struct __anonymous7 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous8 
+      _src: instance of struct __anonymous8 
+    returning 
+      instance of struct __anonymous8 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous8 
+          _src: instance of struct __anonymous8 
+        returning 
+          instance of struct __anonymous8 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous9 
+      _src: instance of struct __anonymous9 
+    returning 
+      instance of struct __anonymous9 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous9 
+          _src: instance of struct __anonymous9 
+        returning 
+          instance of struct __anonymous9 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous10 
+      _src: instance of struct __anonymous10 
+    returning 
+      instance of struct __anonymous10 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous10 
+          _src: instance of struct __anonymous10 
+        returning 
+          instance of struct __anonymous10 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct t 
+      _src: instance of struct t 
+    returning 
+      instance of struct t 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct t 
+          _src: instance of struct t 
+        returning 
+          instance of struct t 
+
+)
+Environment: 
+
+there are 12 alternatives before elimination
+there are 12 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  b: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct t 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    b: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct t 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    b: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct t 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  b: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct t 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  b: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct t 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct t 
+              _src: instance of struct t 
+            returning 
+              instance of struct t 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct t 
+                  _src: instance of struct t 
+                returning 
+                  instance of struct t 
+
+)
+        Environment: 
+formal type is pointer to instance of struct t 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous10 
+              _src: instance of struct __anonymous10 
+            returning 
+              instance of struct __anonymous10 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous10 
+                  _src: instance of struct __anonymous10 
+                returning 
+                  instance of struct __anonymous10 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous10 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous9 
+              _src: instance of struct __anonymous9 
+            returning 
+              instance of struct __anonymous9 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous9 
+                  _src: instance of struct __anonymous9 
+                returning 
+                  instance of struct __anonymous9 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous9 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous8 
+              _src: instance of struct __anonymous8 
+            returning 
+              instance of struct __anonymous8 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous8 
+                  _src: instance of struct __anonymous8 
+                returning 
+                  instance of struct __anonymous8 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous8 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous7 
+              _src: instance of struct __anonymous7 
+            returning 
+              instance of struct __anonymous7 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous7 
+                  _src: instance of struct __anonymous7 
+                returning 
+                  instance of struct __anonymous7 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous7 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous6 
+              _src: instance of struct __anonymous6 
+            returning 
+              instance of struct __anonymous6 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous6 
+                  _src: instance of struct __anonymous6 
+                returning 
+                  instance of struct __anonymous6 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous6 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous5 
+              _src: instance of struct __anonymous5 
+            returning 
+              instance of struct __anonymous5 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous5 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct t 
+(types:
+    lvalue instance of struct t 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct t 
+
+to:
+  instance of struct t 
+(types:
+    instance of struct t 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 4 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous3 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous3 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous5 
+    _src: instance of struct __anonymous5 
+  returning 
+    instance of struct __anonymous5 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous5 
+
+to:
+  instance of struct __anonymous5 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous6 
+    _src: instance of struct __anonymous6 
+  returning 
+    instance of struct __anonymous6 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous5 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous5 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous6 
+
+to:
+  instance of struct __anonymous6 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous7 
+    _src: instance of struct __anonymous7 
+  returning 
+    instance of struct __anonymous7 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous7 
+
+to:
+  instance of struct __anonymous7 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous8 
+    _src: instance of struct __anonymous8 
+  returning 
+    instance of struct __anonymous8 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous8 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous8 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous7 
+                  _src: instance of struct __anonymous7 
+                returning 
+                  instance of struct __anonymous7 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous7 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous8 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous7 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous8 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous8 
+
+to:
+  instance of struct __anonymous8 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous8 
+      _src: instance of struct __anonymous8 
+    returning 
+      instance of struct __anonymous8 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous9 
+    _src: instance of struct __anonymous9 
+  returning 
+    instance of struct __anonymous9 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous9 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous9 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous9 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous9 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous9 
+
+to:
+  instance of struct __anonymous9 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous9 
+      _src: instance of struct __anonymous9 
+    returning 
+      instance of struct __anonymous9 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous10 
+    _src: instance of struct __anonymous10 
+  returning 
+    instance of struct __anonymous10 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous10 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous10 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous9 
+                  _src: instance of struct __anonymous9 
+                returning 
+                  instance of struct __anonymous9 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous9 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous10 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous9 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous10 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous10 
+
+to:
+  instance of struct __anonymous10 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous10 
+      _src: instance of struct __anonymous10 
+    returning 
+      instance of struct __anonymous10 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous11 
+    _src: instance of struct __anonymous11 
+  returning 
+    instance of struct __anonymous11 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous11 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous11 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous11 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous11 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous11 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous11 
+      _src: instance of struct __anonymous11 
+    returning 
+      instance of struct __anonymous11 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct t 
+    _src: instance of struct t 
+  returning 
+    instance of struct t 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct t 
+              Member Expression, with field: 
+                a: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct t 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct t 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct t 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct t 
+
+to:
+  instance of struct t 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct t 
+      _src: instance of struct t 
+    returning 
+      instance of struct t 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous5 
+          _src: instance of struct __anonymous5 
+        returning 
+          instance of struct __anonymous5 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous6 
+          _src: instance of struct __anonymous6 
+        returning 
+          instance of struct __anonymous6 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous7 
+          _src: instance of struct __anonymous7 
+        returning 
+          instance of struct __anonymous7 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous8 
+      _src: instance of struct __anonymous8 
+    returning 
+      instance of struct __anonymous8 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous8 
+          _src: instance of struct __anonymous8 
+        returning 
+          instance of struct __anonymous8 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous9 
+      _src: instance of struct __anonymous9 
+    returning 
+      instance of struct __anonymous9 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous9 
+          _src: instance of struct __anonymous9 
+        returning 
+          instance of struct __anonymous9 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous10 
+      _src: instance of struct __anonymous10 
+    returning 
+      instance of struct __anonymous10 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous10 
+          _src: instance of struct __anonymous10 
+        returning 
+          instance of struct __anonymous10 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous11 
+      _src: instance of struct __anonymous11 
+    returning 
+      instance of struct __anonymous11 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous11 
+          _src: instance of struct __anonymous11 
+        returning 
+          instance of struct __anonymous11 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct t 
+      _src: instance of struct t 
+    returning 
+      instance of struct t 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct t 
+          _src: instance of struct t 
+        returning 
+          instance of struct t 
+
+)
+Environment: 
+
+there are 13 alternatives before elimination
+there are 13 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous11 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    x: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous11 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    x: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous11 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous11 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  x: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous11 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct t 
+              _src: instance of struct t 
+            returning 
+              instance of struct t 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct t 
+                  _src: instance of struct t 
+                returning 
+                  instance of struct t 
+
+)
+        Environment: 
+formal type is pointer to instance of struct t 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous11 
+              _src: instance of struct __anonymous11 
+            returning 
+              instance of struct __anonymous11 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous11 
+                  _src: instance of struct __anonymous11 
+                returning 
+                  instance of struct __anonymous11 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous11 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous10 
+              _src: instance of struct __anonymous10 
+            returning 
+              instance of struct __anonymous10 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous10 
+                  _src: instance of struct __anonymous10 
+                returning 
+                  instance of struct __anonymous10 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous10 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous9 
+              _src: instance of struct __anonymous9 
+            returning 
+              instance of struct __anonymous9 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous9 
+                  _src: instance of struct __anonymous9 
+                returning 
+                  instance of struct __anonymous9 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous9 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous8 
+              _src: instance of struct __anonymous8 
+            returning 
+              instance of struct __anonymous8 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous8 
+                  _src: instance of struct __anonymous8 
+                returning 
+                  instance of struct __anonymous8 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous8 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous7 
+              _src: instance of struct __anonymous7 
+            returning 
+              instance of struct __anonymous7 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous7 
+                  _src: instance of struct __anonymous7 
+                returning 
+                  instance of struct __anonymous7 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous7 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous6 
+              _src: instance of struct __anonymous6 
+            returning 
+              instance of struct __anonymous6 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous6 
+                  _src: instance of struct __anonymous6 
+                returning 
+                  instance of struct __anonymous6 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous6 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous5 
+              _src: instance of struct __anonymous5 
+            returning 
+              instance of struct __anonymous5 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous5 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous2 
+    _src: instance of struct __anonymous2 
+  returning 
+    instance of struct __anonymous2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous2 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous2 
+
+to:
+  instance of struct __anonymous2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous3 
+    _src: instance of struct __anonymous3 
+  returning 
+    instance of struct __anonymous3 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous3 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous3 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous3 
+
+to:
+  instance of struct __anonymous3 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous4 
+    _src: instance of struct __anonymous4 
+  returning 
+    instance of struct __anonymous4 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous3 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous4 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous3 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous4 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous4 
+
+to:
+  instance of struct __anonymous4 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous5 
+    _src: instance of struct __anonymous5 
+  returning 
+    instance of struct __anonymous5 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous5 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous5 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous5 
+
+to:
+  instance of struct __anonymous5 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous6 
+    _src: instance of struct __anonymous6 
+  returning 
+    instance of struct __anonymous6 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous5 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous6 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous5 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous6 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous6 
+
+to:
+  instance of struct __anonymous6 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous7 
+    _src: instance of struct __anonymous7 
+  returning 
+    instance of struct __anonymous7 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous7 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous7 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous7 
+
+to:
+  instance of struct __anonymous7 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous8 
+    _src: instance of struct __anonymous8 
+  returning 
+    instance of struct __anonymous8 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous8 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous8 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous7 
+                  _src: instance of struct __anonymous7 
+                returning 
+                  instance of struct __anonymous7 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous7 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous8 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous7 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous8 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous8 
+
+to:
+  instance of struct __anonymous8 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous8 
+      _src: instance of struct __anonymous8 
+    returning 
+      instance of struct __anonymous8 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous9 
+    _src: instance of struct __anonymous9 
+  returning 
+    instance of struct __anonymous9 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous9 
+              Member Expression, with field: 
+                y1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous9 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous9 
+              Member Expression, with field: 
+                y2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous9 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous9 
+
+to:
+  instance of struct __anonymous9 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous9 
+      _src: instance of struct __anonymous9 
+    returning 
+      instance of struct __anonymous9 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous10 
+    _src: instance of struct __anonymous10 
+  returning 
+    instance of struct __anonymous10 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous10 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous10 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous9 
+                  _src: instance of struct __anonymous9 
+                returning 
+                  instance of struct __anonymous9 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: instance of struct __anonymous9 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous10 
+
+                          Member Expression, with field: 
+                y: instance of struct __anonymous9 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous10 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous10 
+
+to:
+  instance of struct __anonymous10 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous10 
+      _src: instance of struct __anonymous10 
+    returning 
+      instance of struct __anonymous10 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous11 
+    _src: instance of struct __anonymous11 
+  returning 
+    instance of struct __anonymous11 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous11 
+              Member Expression, with field: 
+                x: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous11 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous11 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous11 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous11 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous11 
+      _src: instance of struct __anonymous11 
+    returning 
+      instance of struct __anonymous11 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct t 
+    _src: instance of struct t 
+  returning 
+    instance of struct t 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct t 
+              Member Expression, with field: 
+                a: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct t 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct t 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct t 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct t 
+
+to:
+  instance of struct t 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct t 
+      _src: instance of struct t 
+    returning 
+      instance of struct t 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous2 
+          _src: instance of struct __anonymous2 
+        returning 
+          instance of struct __anonymous2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous3 
+          _src: instance of struct __anonymous3 
+        returning 
+          instance of struct __anonymous3 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous4 
+          _src: instance of struct __anonymous4 
+        returning 
+          instance of struct __anonymous4 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous5 
+          _src: instance of struct __anonymous5 
+        returning 
+          instance of struct __anonymous5 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous6 
+          _src: instance of struct __anonymous6 
+        returning 
+          instance of struct __anonymous6 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous7 
+          _src: instance of struct __anonymous7 
+        returning 
+          instance of struct __anonymous7 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous8 
+      _src: instance of struct __anonymous8 
+    returning 
+      instance of struct __anonymous8 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous8 
+          _src: instance of struct __anonymous8 
+        returning 
+          instance of struct __anonymous8 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous9 
+      _src: instance of struct __anonymous9 
+    returning 
+      instance of struct __anonymous9 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous9 
+          _src: instance of struct __anonymous9 
+        returning 
+          instance of struct __anonymous9 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous10 
+      _src: instance of struct __anonymous10 
+    returning 
+      instance of struct __anonymous10 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous10 
+          _src: instance of struct __anonymous10 
+        returning 
+          instance of struct __anonymous10 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous11 
+      _src: instance of struct __anonymous11 
+    returning 
+      instance of struct __anonymous11 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous11 
+          _src: instance of struct __anonymous11 
+        returning 
+          instance of struct __anonymous11 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct t 
+      _src: instance of struct t 
+    returning 
+      instance of struct t 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct t 
+          _src: instance of struct t 
+        returning 
+          instance of struct t 
+
+)
+Environment: 
+
+there are 13 alternatives before elimination
+there are 13 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous11 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous11 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous11 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous11 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous11 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct t 
+              _src: instance of struct t 
+            returning 
+              instance of struct t 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct t 
+                  _src: instance of struct t 
+                returning 
+                  instance of struct t 
+
+)
+        Environment: 
+formal type is pointer to instance of struct t 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous11 
+              _src: instance of struct __anonymous11 
+            returning 
+              instance of struct __anonymous11 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous11 
+                  _src: instance of struct __anonymous11 
+                returning 
+                  instance of struct __anonymous11 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous11 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous10 
+              _src: instance of struct __anonymous10 
+            returning 
+              instance of struct __anonymous10 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous10 
+                  _src: instance of struct __anonymous10 
+                returning 
+                  instance of struct __anonymous10 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous10 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous9 
+              _src: instance of struct __anonymous9 
+            returning 
+              instance of struct __anonymous9 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous9 
+                  _src: instance of struct __anonymous9 
+                returning 
+                  instance of struct __anonymous9 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous9 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous8 
+              _src: instance of struct __anonymous8 
+            returning 
+              instance of struct __anonymous8 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous8 
+                  _src: instance of struct __anonymous8 
+                returning 
+                  instance of struct __anonymous8 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous8 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous7 
+              _src: instance of struct __anonymous7 
+            returning 
+              instance of struct __anonymous7 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous7 
+                  _src: instance of struct __anonymous7 
+                returning 
+                  instance of struct __anonymous7 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous7 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous6 
+              _src: instance of struct __anonymous6 
+            returning 
+              instance of struct __anonymous6 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous6 
+                  _src: instance of struct __anonymous6 
+                returning 
+                  instance of struct __anonymous6 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous6 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous5 
+              _src: instance of struct __anonymous5 
+            returning 
+              instance of struct __anonymous5 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous5 
+                  _src: instance of struct __anonymous5 
+                returning 
+                  instance of struct __anonymous5 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous5 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous4 
+              _src: instance of struct __anonymous4 
+            returning 
+              instance of struct __anonymous4 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous4 
+                  _src: instance of struct __anonymous4 
+                returning 
+                  instance of struct __anonymous4 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous4 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous3 
+              _src: instance of struct __anonymous3 
+            returning 
+              instance of struct __anonymous3 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous3 
+                  _src: instance of struct __anonymous3 
+                returning 
+                  instance of struct __anonymous3 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous3 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous2 
+              _src: instance of struct __anonymous2 
+            returning 
+              instance of struct __anonymous2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous2 
+                  _src: instance of struct __anonymous2 
+                returning 
+                  instance of struct __anonymous2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous2 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous11 
+(types:
+    lvalue instance of struct __anonymous11 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous11 
+
+to:
+  instance of struct __anonymous11 
+(types:
+    instance of struct __anonymous11 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 5 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 6 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 4 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      y: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 3 signed int 
+to:
+  instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 7 signed int 
+to:
+  instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous1 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous1 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous1 
+    Member Expression, with field: 
+      y: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous1 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 3 signed int 
+to:
+  instance of struct __anonymous1 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous2 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous2 
+    Member Expression, with field: 
+      y: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous2 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 3 signed int 
+to:
+  instance of struct __anonymous2 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 4 signed int 
+to:
+  instance of struct __anonymous2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous3 
+    Member Expression, with field: 
+      y1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous3 
+    Member Expression, with field: 
+      y2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous3 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous4 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous4 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 3 signed int 
+to:
+  instance of struct __anonymous4 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 4 signed int 
+to:
+  instance of struct __anonymous4 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 5 signed int 
+to:
+  instance of struct __anonymous4 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous5 
+    Member Expression, with field: 
+      y1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous5 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous5 
+    Member Expression, with field: 
+      y2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous5 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous6 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous6 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 9 signed int 
+to:
+  instance of struct __anonymous6 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 8 signed int 
+to:
+  instance of struct __anonymous6 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 7 signed int 
+to:
+  instance of struct __anonymous6 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous7 
+    Member Expression, with field: 
+      y1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous7 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous7 
+    Member Expression, with field: 
+      y2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous7 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous8 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous8 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 7 signed int 
+to:
+  instance of struct __anonymous8 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 9 signed int 
+to:
+  instance of struct __anonymous8 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 8 signed int 
+to:
+  instance of struct __anonymous8 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous9 
+    Member Expression, with field: 
+      y1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous9 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous9 
+    Member Expression, with field: 
+      y2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous9 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous10 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous10 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 3 signed int 
+to:
+  instance of struct __anonymous10 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 4 signed int 
+to:
+  instance of struct __anonymous10 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 5 signed int 
+to:
+  instance of struct __anonymous10 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        a: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct t 
+    Member Expression, with field: 
+      a: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct t 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        b: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct t 
+    Member Expression, with field: 
+      b: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct t 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 4 signed int 
+to:
+  instance of struct t 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 3 signed int 
+to:
+  instance of struct t 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        x: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous11 
+    Member Expression, with field: 
+      x: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous11 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        y: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous11 
+    Member Expression, with field: 
+      y: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous11 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 5 signed int 
+to:
+  instance of struct __anonymous11 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 6 signed int 
+to:
+  instance of struct __anonymous11 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 4 signed int 
+to:
+  instance of struct __anonymous11 
+
Index: src/Tests/Expect-r/LabelledExit.txt
===================================================================
--- src/Tests/Expect-r/LabelledExit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/LabelledExit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,1 @@
+Error: 'continue' target label must be an enclosing loop: 
Index: src/Tests/Expect-r/Members.txt
===================================================================
--- src/Tests/Expect-r/Members.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Members.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,9113 @@
+nameExpr is ?=?
+decl is ?=?: forall
+    DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type DT (not function type) 
+    pointer to instance of type DT (not function type) 
+  returning 
+    pointer to instance of type DT (not function type) 
+
+newExpr is Variable Expression: ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct a_struct 
+    _src: instance of struct a_struct 
+  returning 
+    instance of struct a_struct 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+              Member Expression, with field: 
+                a: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  a: char 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+              Member Expression, with field: 
+                a: char 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  a: float 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+              Member Expression, with field: 
+                a: float 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct a_struct 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct a_struct 
+      _src: instance of struct a_struct 
+    returning 
+      instance of struct a_struct 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+(types:
+    pointer to forall
+          _0_DT: incomplete type
+        function
+        with parameters
+          pointer to pointer to instance of type _0_DT (not function type) 
+          pointer to instance of type _0_DT (not function type) 
+        returning 
+          pointer to instance of type _0_DT (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct a_struct 
+      _src: instance of struct a_struct 
+    returning 
+      instance of struct a_struct 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct a_struct 
+          _src: instance of struct a_struct 
+        returning 
+          instance of struct a_struct 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to char 
+          char 
+        returning 
+          char 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to float 
+          float 
+        returning 
+          float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 5 alternatives before elimination
+there are 5 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct a_struct 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    a: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct a_struct 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    a: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct a_struct 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct a_struct 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct a_struct 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is pointer to signed int 
+actual type is pointer to signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to float 
+              float 
+            returning 
+              float 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to float 
+                  float 
+                returning 
+                  float 
+
+)
+        Environment: 
+formal type is pointer to float 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to char 
+              char 
+            returning 
+              char 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+)
+        Environment: 
+formal type is pointer to char 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct a_struct 
+              _src: instance of struct a_struct 
+            returning 
+              instance of struct a_struct 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct a_struct 
+                  _src: instance of struct a_struct 
+                returning 
+                  instance of struct a_struct 
+
+)
+        Environment: 
+formal type is pointer to instance of struct a_struct 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: forall
+              DT: incomplete type
+            function
+            with parameters
+              pointer to pointer to instance of type DT (not function type) 
+              pointer to instance of type DT (not function type) 
+            returning 
+              pointer to instance of type DT (not function type) 
+
+(types:
+            pointer to forall
+                  _0_DT: incomplete type
+                function
+                with parameters
+                  pointer to pointer to instance of type _0_DT (not function type) 
+                  pointer to instance of type _0_DT (not function type) 
+                returning 
+                  pointer to instance of type _0_DT (not function type) 
+
+)
+        Environment: 
+formal type is pointer to pointer to instance of type _0_DT (not function type) 
+actual type is pointer to signed int 
+actual expression:
+        Address of:
+          Member Expression, with field: 
+            a: signed int 
+          from aggregate: 
+            Applying untyped: 
+                Name: *?
+            ...to: 
+                Variable Expression: _dst: pointer to instance of struct a_struct 
+--- results are
+        pointer to signed int 
+
+converting pointer to signed int 
+ to pointer to signed int 
+cost is( 0, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          a: signed int 
+        from aggregate: 
+          Variable Expression: _src: instance of struct a_struct 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        pointer to signed int 
+        signed int 
+actuals are:
+                  Address of:
+            Member Expression, with field: 
+              a: signed int 
+            from aggregate: 
+              Applying untyped: 
+                  Name: *?
+              ...to: 
+                  Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                  Member Expression, with field: 
+            a: signed int 
+          from aggregate: 
+            Variable Expression: _src: instance of struct a_struct 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?=?: function
+      with parameters
+        pointer to signed int 
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Address of:
+      Member Expression, with field: 
+        a: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct a_struct 
+
+      Member Expression, with field: 
+      a: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct a_struct 
+
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?=?: function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Address of:
+        Member Expression, with field: 
+          a: signed int 
+        from aggregate: 
+          Applying untyped: 
+              Name: *?
+          ...to: 
+              Variable Expression: _dst: pointer to instance of struct a_struct 
+
+          Member Expression, with field: 
+        a: signed int 
+      from aggregate: 
+        Variable Expression: _src: instance of struct a_struct 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: forall
+    DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type DT (not function type) 
+    pointer to instance of type DT (not function type) 
+  returning 
+    pointer to instance of type DT (not function type) 
+
+newExpr is Variable Expression: ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct a_struct 
+    _src: instance of struct a_struct 
+  returning 
+    instance of struct a_struct 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                          Member Expression, with field: 
+                a: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  a: char 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+              Member Expression, with field: 
+                a: char 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  a: float 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+              Member Expression, with field: 
+                a: float 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct a_struct 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct a_struct 
+      _src: instance of struct a_struct 
+    returning 
+      instance of struct a_struct 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+(types:
+    pointer to forall
+          _0_DT: incomplete type
+        function
+        with parameters
+          pointer to pointer to instance of type _0_DT (not function type) 
+          pointer to instance of type _0_DT (not function type) 
+        returning 
+          pointer to instance of type _0_DT (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct a_struct 
+      _src: instance of struct a_struct 
+    returning 
+      instance of struct a_struct 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct a_struct 
+          _src: instance of struct a_struct 
+        returning 
+          instance of struct a_struct 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to char 
+          char 
+        returning 
+          char 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to float 
+          float 
+        returning 
+          float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 5 alternatives before elimination
+there are 5 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: char 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct a_struct 
+(types:
+    lvalue char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    a: char 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct a_struct 
+(types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    a: char 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct a_struct 
+(types:
+    pointer to char 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: char 
+from aggregate: 
+  Variable Expression: _src: instance of struct a_struct 
+(types:
+    lvalue char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: char 
+from aggregate: 
+  Variable Expression: _src: instance of struct a_struct 
+(types:
+    lvalue char 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is pointer to signed int 
+actual type is pointer to char 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to float 
+              float 
+            returning 
+              float 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to float 
+                  float 
+                returning 
+                  float 
+
+)
+        Environment: 
+formal type is pointer to float 
+actual type is pointer to char 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to char 
+              char 
+            returning 
+              char 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+)
+        Environment: 
+formal type is pointer to char 
+actual type is pointer to char 
+formal type is char 
+actual type is lvalue char 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct a_struct 
+              _src: instance of struct a_struct 
+            returning 
+              instance of struct a_struct 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct a_struct 
+                  _src: instance of struct a_struct 
+                returning 
+                  instance of struct a_struct 
+
+)
+        Environment: 
+formal type is pointer to instance of struct a_struct 
+actual type is pointer to char 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: forall
+              DT: incomplete type
+            function
+            with parameters
+              pointer to pointer to instance of type DT (not function type) 
+              pointer to instance of type DT (not function type) 
+            returning 
+              pointer to instance of type DT (not function type) 
+
+(types:
+            pointer to forall
+                  _0_DT: incomplete type
+                function
+                with parameters
+                  pointer to pointer to instance of type _0_DT (not function type) 
+                  pointer to instance of type _0_DT (not function type) 
+                returning 
+                  pointer to instance of type _0_DT (not function type) 
+
+)
+        Environment: 
+formal type is pointer to pointer to instance of type _0_DT (not function type) 
+actual type is pointer to char 
+actual expression:
+        Address of:
+          Member Expression, with field: 
+            a: char 
+          from aggregate: 
+            Applying untyped: 
+                Name: *?
+            ...to: 
+                Variable Expression: _dst: pointer to instance of struct a_struct 
+--- results are
+        pointer to char 
+
+converting pointer to char 
+ to pointer to char 
+cost is( 0, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          a: char 
+        from aggregate: 
+          Variable Expression: _src: instance of struct a_struct 
+--- results are
+        lvalue char 
+
+converting lvalue char 
+ to char 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        pointer to char 
+        char 
+actuals are:
+                  Address of:
+            Member Expression, with field: 
+              a: char 
+            from aggregate: 
+              Applying untyped: 
+                  Name: *?
+              ...to: 
+                  Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                  Member Expression, with field: 
+            a: char 
+          from aggregate: 
+            Variable Expression: _src: instance of struct a_struct 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?=?: function
+      with parameters
+        pointer to char 
+        char 
+      returning 
+        char 
+
+to arguments
+      Address of:
+      Member Expression, with field: 
+        a: char 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct a_struct 
+
+      Member Expression, with field: 
+      a: char 
+    from aggregate: 
+      Variable Expression: _src: instance of struct a_struct 
+
+(types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?=?: function
+        with parameters
+          pointer to char 
+          char 
+        returning 
+          char 
+
+  to arguments
+          Address of:
+        Member Expression, with field: 
+          a: char 
+        from aggregate: 
+          Applying untyped: 
+              Name: *?
+          ...to: 
+              Variable Expression: _dst: pointer to instance of struct a_struct 
+
+          Member Expression, with field: 
+        a: char 
+      from aggregate: 
+        Variable Expression: _src: instance of struct a_struct 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: forall
+    DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type DT (not function type) 
+    pointer to instance of type DT (not function type) 
+  returning 
+    pointer to instance of type DT (not function type) 
+
+newExpr is Variable Expression: ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct a_struct 
+    _src: instance of struct a_struct 
+  returning 
+    instance of struct a_struct 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                          Member Expression, with field: 
+                a: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  a: char 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                          Member Expression, with field: 
+                a: char 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  a: float 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+              Member Expression, with field: 
+                a: float 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct a_struct 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct a_struct 
+      _src: instance of struct a_struct 
+    returning 
+      instance of struct a_struct 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+(types:
+    pointer to forall
+          _0_DT: incomplete type
+        function
+        with parameters
+          pointer to pointer to instance of type _0_DT (not function type) 
+          pointer to instance of type _0_DT (not function type) 
+        returning 
+          pointer to instance of type _0_DT (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct a_struct 
+      _src: instance of struct a_struct 
+    returning 
+      instance of struct a_struct 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct a_struct 
+          _src: instance of struct a_struct 
+        returning 
+          instance of struct a_struct 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to char 
+          char 
+        returning 
+          char 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to float 
+          float 
+        returning 
+          float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 5 alternatives before elimination
+there are 5 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: float 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct a_struct 
+(types:
+    lvalue float 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    a: float 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct a_struct 
+(types:
+    pointer to float 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    a: float 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct a_struct 
+(types:
+    pointer to float 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: float 
+from aggregate: 
+  Variable Expression: _src: instance of struct a_struct 
+(types:
+    lvalue float 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: float 
+from aggregate: 
+  Variable Expression: _src: instance of struct a_struct 
+(types:
+    lvalue float 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is pointer to signed int 
+actual type is pointer to float 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to float 
+              float 
+            returning 
+              float 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to float 
+                  float 
+                returning 
+                  float 
+
+)
+        Environment: 
+formal type is pointer to float 
+actual type is pointer to float 
+formal type is float 
+actual type is lvalue float 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to char 
+              char 
+            returning 
+              char 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+)
+        Environment: 
+formal type is pointer to char 
+actual type is pointer to float 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct a_struct 
+              _src: instance of struct a_struct 
+            returning 
+              instance of struct a_struct 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct a_struct 
+                  _src: instance of struct a_struct 
+                returning 
+                  instance of struct a_struct 
+
+)
+        Environment: 
+formal type is pointer to instance of struct a_struct 
+actual type is pointer to float 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: forall
+              DT: incomplete type
+            function
+            with parameters
+              pointer to pointer to instance of type DT (not function type) 
+              pointer to instance of type DT (not function type) 
+            returning 
+              pointer to instance of type DT (not function type) 
+
+(types:
+            pointer to forall
+                  _0_DT: incomplete type
+                function
+                with parameters
+                  pointer to pointer to instance of type _0_DT (not function type) 
+                  pointer to instance of type _0_DT (not function type) 
+                returning 
+                  pointer to instance of type _0_DT (not function type) 
+
+)
+        Environment: 
+formal type is pointer to pointer to instance of type _0_DT (not function type) 
+actual type is pointer to float 
+actual expression:
+        Address of:
+          Member Expression, with field: 
+            a: float 
+          from aggregate: 
+            Applying untyped: 
+                Name: *?
+            ...to: 
+                Variable Expression: _dst: pointer to instance of struct a_struct 
+--- results are
+        pointer to float 
+
+converting pointer to float 
+ to pointer to float 
+cost is( 0, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          a: float 
+        from aggregate: 
+          Variable Expression: _src: instance of struct a_struct 
+--- results are
+        lvalue float 
+
+converting lvalue float 
+ to float 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        pointer to float 
+        float 
+actuals are:
+                  Address of:
+            Member Expression, with field: 
+              a: float 
+            from aggregate: 
+              Applying untyped: 
+                  Name: *?
+              ...to: 
+                  Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                  Member Expression, with field: 
+            a: float 
+          from aggregate: 
+            Variable Expression: _src: instance of struct a_struct 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?=?: function
+      with parameters
+        pointer to float 
+        float 
+      returning 
+        float 
+
+to arguments
+      Address of:
+      Member Expression, with field: 
+        a: float 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct a_struct 
+
+      Member Expression, with field: 
+      a: float 
+    from aggregate: 
+      Variable Expression: _src: instance of struct a_struct 
+
+(types:
+    float 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?=?: function
+        with parameters
+          pointer to float 
+          float 
+        returning 
+          float 
+
+  to arguments
+          Address of:
+        Member Expression, with field: 
+          a: float 
+        from aggregate: 
+          Applying untyped: 
+              Name: *?
+          ...to: 
+              Variable Expression: _dst: pointer to instance of struct a_struct 
+
+          Member Expression, with field: 
+        a: float 
+      from aggregate: 
+        Variable Expression: _src: instance of struct a_struct 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct a_struct 
+(types:
+    lvalue instance of struct a_struct 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct a_struct 
+
+to:
+  instance of struct a_struct 
+(types:
+    instance of struct a_struct 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is __builtin_memcpy
+decl is __builtin_memcpy: function
+    accepting unspecified arguments
+  returning 
+    pointer to char 
+
+newExpr is Variable Expression: __builtin_memcpy: function
+      accepting unspecified arguments
+    returning 
+      pointer to char 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: __builtin_memcpy: function
+      accepting unspecified arguments
+    returning 
+      pointer to char 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          pointer to char 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _dst: pointer to instance of union b_struct 
+(types:
+    lvalue pointer to instance of union b_struct 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: _dst: pointer to instance of union b_struct 
+(types:
+    lvalue pointer to instance of union b_struct 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of union b_struct 
+(types:
+    lvalue instance of union b_struct 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: _src: instance of union b_struct 
+(types:
+    pointer to instance of union b_struct 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: _src: instance of union b_struct 
+(types:
+    pointer to instance of union b_struct 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Sizeof Expression on: instance of union b_struct 
+(types:
+    unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Sizeof Expression on: instance of union b_struct 
+(types:
+    unsigned int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: __builtin_memcpy: function
+              accepting unspecified arguments
+            returning 
+              pointer to char 
+
+(types:
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  pointer to char 
+
+)
+        Environment: 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Variable Expression: _dst: pointer to instance of union b_struct 
+--- results are
+        lvalue pointer to instance of union b_struct 
+actual expression:
+        Address of:
+          Variable Expression: _src: instance of union b_struct 
+--- results are
+        pointer to instance of union b_struct 
+actual expression:
+        Sizeof Expression on: instance of union b_struct 
+--- results are
+        unsigned int 
+Case +++++++++++++
+formals are:
+actuals are:
+                  Variable Expression: _dst: pointer to instance of union b_struct 
+
+                  Address of:
+            Variable Expression: _src: instance of union b_struct 
+
+                  Sizeof Expression on: instance of union b_struct 
+
+bindings are:
+cost of conversion is:( 3, 0, 0 )
+alternatives before prune:
+Cost ( 3, 0, 0 ): Application of
+  Variable Expression: __builtin_memcpy: function
+        accepting unspecified arguments
+      returning 
+        pointer to char 
+
+to arguments
+      Variable Expression: _dst: pointer to instance of union b_struct 
+
+      Address of:
+      Variable Expression: _src: instance of union b_struct 
+
+      Sizeof Expression on: instance of union b_struct 
+
+(types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: __builtin_memcpy: function
+          accepting unspecified arguments
+        returning 
+          pointer to char 
+
+  to arguments
+          Variable Expression: _dst: pointer to instance of union b_struct 
+
+          Address of:
+        Variable Expression: _src: instance of union b_struct 
+
+          Sizeof Expression on: instance of union b_struct 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of union b_struct 
+(types:
+    lvalue instance of union b_struct 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of union b_struct 
+
+to:
+  instance of union b_struct 
+(types:
+    instance of union b_struct 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is a
+decl is a: function
+  with parameters
+    char 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: a: function
+    with parameters
+      char 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: function
+    with parameters
+      char 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          char 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is the_struct
+decl is the_struct: instance of struct a_struct 
+newExpr is Variable Expression: the_struct: instance of struct a_struct 
+
+decl is the_struct: instance of union b_struct 
+newExpr is Variable Expression: the_struct: instance of union b_struct 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue instance of struct a_struct 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue instance of union b_struct 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to signed int 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to char 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to float 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: signed int 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: char 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: float 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue float 
+)
+Environment: 
+
+there are 6 alternatives before elimination
+there are 6 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: signed int 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: float 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: char 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to signed int 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to float 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to char 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to char 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: a: function
+            with parameters
+              char 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  char 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is char 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is char 
+actual type is lvalue float 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is char 
+actual type is lvalue char 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is char 
+actual type is lvalue pointer to signed int 
+formal type is char 
+actual type is lvalue pointer to float 
+formal type is char 
+actual type is lvalue pointer to char 
+actual expression:
+        Member Expression, with field: 
+          a: signed int 
+        from aggregate: 
+          Variable Expression: the_struct: instance of struct a_struct 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to char 
+cost is( 1, 0, 0 )
+Case +++++++++++++
+formals are:
+        char 
+actuals are:
+                  Cast of:
+            Member Expression, with field: 
+              a: signed int 
+            from aggregate: 
+              Variable Expression: the_struct: instance of struct a_struct 
+
+          to:
+            char 
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          a: float 
+        from aggregate: 
+          Variable Expression: the_struct: instance of struct a_struct 
+--- results are
+        lvalue float 
+
+converting lvalue float 
+ to char 
+cost is( 1, 0, 0 )
+Case +++++++++++++
+formals are:
+        char 
+actuals are:
+                  Cast of:
+            Member Expression, with field: 
+              a: float 
+            from aggregate: 
+              Variable Expression: the_struct: instance of struct a_struct 
+
+          to:
+            char 
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          a: char 
+        from aggregate: 
+          Variable Expression: the_struct: instance of struct a_struct 
+--- results are
+        lvalue char 
+
+converting lvalue char 
+ to char 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        char 
+actuals are:
+                  Member Expression, with field: 
+            a: char 
+          from aggregate: 
+            Variable Expression: the_struct: instance of struct a_struct 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 1, 0, 0 ): Application of
+  Variable Expression: a: function
+      with parameters
+        char 
+      returning 
+        nothing 
+
+to arguments
+      Cast of:
+      Member Expression, with field: 
+        a: signed int 
+      from aggregate: 
+        Variable Expression: the_struct: instance of struct a_struct 
+
+    to:
+      char 
+
+(types:
+)
+Environment: 
+
+Cost ( 1, 0, 0 ): Application of
+  Variable Expression: a: function
+      with parameters
+        char 
+      returning 
+        nothing 
+
+to arguments
+      Cast of:
+      Member Expression, with field: 
+        a: float 
+      from aggregate: 
+        Variable Expression: the_struct: instance of struct a_struct 
+
+    to:
+      char 
+
+(types:
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: a: function
+      with parameters
+        char 
+      returning 
+        nothing 
+
+to arguments
+      Member Expression, with field: 
+      a: char 
+    from aggregate: 
+      Variable Expression: the_struct: instance of struct a_struct 
+
+(types:
+)
+Environment: 
+
+marking ambiguous
+cost ( 0, 0, 0 ) beats ( 1, 0, 0 )
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: a: function
+        with parameters
+          char 
+        returning 
+          nothing 
+
+  to arguments
+          Member Expression, with field: 
+        a: char 
+      from aggregate: 
+        Variable Expression: the_struct: instance of struct a_struct 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is b
+decl is b: function
+  with parameters
+    signed int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: b: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is the_struct
+decl is the_struct: instance of struct a_struct 
+newExpr is Variable Expression: the_struct: instance of struct a_struct 
+
+decl is the_struct: instance of union b_struct 
+newExpr is Variable Expression: the_struct: instance of union b_struct 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue instance of struct a_struct 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue instance of union b_struct 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to signed int 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to char 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to float 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: signed int 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: char 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: float 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue float 
+)
+Environment: 
+
+there are 6 alternatives before elimination
+there are 6 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: signed int 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: float 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: char 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to signed int 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to float 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to char 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to char 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: b: function
+            with parameters
+              signed int 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue float 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue char 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue pointer to signed int 
+formal type is signed int 
+actual type is lvalue pointer to float 
+formal type is signed int 
+actual type is lvalue pointer to char 
+actual expression:
+        Member Expression, with field: 
+          a: signed int 
+        from aggregate: 
+          Variable Expression: the_struct: instance of struct a_struct 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+                  Member Expression, with field: 
+            a: signed int 
+          from aggregate: 
+            Variable Expression: the_struct: instance of struct a_struct 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          a: float 
+        from aggregate: 
+          Variable Expression: the_struct: instance of struct a_struct 
+--- results are
+        lvalue float 
+
+converting lvalue float 
+ to signed int 
+cost is( 1, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+                  Cast of:
+            Member Expression, with field: 
+              a: float 
+            from aggregate: 
+              Variable Expression: the_struct: instance of struct a_struct 
+
+          to:
+            signed int 
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          a: char 
+        from aggregate: 
+          Variable Expression: the_struct: instance of struct a_struct 
+--- results are
+        lvalue char 
+
+converting lvalue char 
+ to signed int 
+cost is( 0, 0, 4 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+                  Cast of:
+            Member Expression, with field: 
+              a: char 
+            from aggregate: 
+              Variable Expression: the_struct: instance of struct a_struct 
+
+          to:
+            signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 4 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: b: function
+      with parameters
+        signed int 
+      returning 
+        nothing 
+
+to arguments
+      Member Expression, with field: 
+      a: signed int 
+    from aggregate: 
+      Variable Expression: the_struct: instance of struct a_struct 
+
+(types:
+)
+Environment: 
+
+Cost ( 1, 0, 0 ): Application of
+  Variable Expression: b: function
+      with parameters
+        signed int 
+      returning 
+        nothing 
+
+to arguments
+      Cast of:
+      Member Expression, with field: 
+        a: float 
+      from aggregate: 
+        Variable Expression: the_struct: instance of struct a_struct 
+
+    to:
+      signed int 
+
+(types:
+)
+Environment: 
+
+Cost ( 0, 0, 4 ): Application of
+  Variable Expression: b: function
+      with parameters
+        signed int 
+      returning 
+        nothing 
+
+to arguments
+      Cast of:
+      Member Expression, with field: 
+        a: char 
+      from aggregate: 
+        Variable Expression: the_struct: instance of struct a_struct 
+
+    to:
+      signed int 
+
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: b: function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+  to arguments
+          Member Expression, with field: 
+        a: signed int 
+      from aggregate: 
+        Variable Expression: the_struct: instance of struct a_struct 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is c
+decl is c: function
+  with parameters
+    pointer to signed int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: c: function
+    with parameters
+      pointer to signed int 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: c: function
+    with parameters
+      pointer to signed int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is the_struct
+decl is the_struct: instance of struct a_struct 
+newExpr is Variable Expression: the_struct: instance of struct a_struct 
+
+decl is the_struct: instance of union b_struct 
+newExpr is Variable Expression: the_struct: instance of union b_struct 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue instance of struct a_struct 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue instance of union b_struct 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to signed int 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to char 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to float 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: signed int 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: char 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: float 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue float 
+)
+Environment: 
+
+there are 6 alternatives before elimination
+there are 6 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: signed int 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: float 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: char 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to signed int 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to float 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to char 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to char 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: c: function
+            with parameters
+              pointer to signed int 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to signed int 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is pointer to signed int 
+actual type is lvalue signed int 
+formal type is pointer to signed int 
+actual type is lvalue float 
+formal type is pointer to signed int 
+actual type is lvalue char 
+formal type is pointer to signed int 
+actual type is lvalue pointer to signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is pointer to signed int 
+actual type is lvalue pointer to float 
+formal type is pointer to signed int 
+actual type is lvalue pointer to char 
+actual expression:
+        Member Expression, with field: 
+          a: pointer to signed int 
+        from aggregate: 
+          Variable Expression: the_struct: instance of union b_struct 
+--- results are
+        lvalue pointer to signed int 
+
+converting lvalue pointer to signed int 
+ to pointer to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        pointer to signed int 
+actuals are:
+                  Member Expression, with field: 
+            a: pointer to signed int 
+          from aggregate: 
+            Variable Expression: the_struct: instance of union b_struct 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: c: function
+      with parameters
+        pointer to signed int 
+      returning 
+        nothing 
+
+to arguments
+      Member Expression, with field: 
+      a: pointer to signed int 
+    from aggregate: 
+      Variable Expression: the_struct: instance of union b_struct 
+
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: c: function
+        with parameters
+          pointer to signed int 
+        returning 
+          nothing 
+
+  to arguments
+          Member Expression, with field: 
+        a: pointer to signed int 
+      from aggregate: 
+        Variable Expression: the_struct: instance of union b_struct 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is d
+decl is d: function
+  with parameters
+    pointer to float 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: d: function
+    with parameters
+      pointer to float 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: d: function
+    with parameters
+      pointer to float 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to float 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is the_struct
+decl is the_struct: instance of struct a_struct 
+newExpr is Variable Expression: the_struct: instance of struct a_struct 
+
+decl is the_struct: instance of union b_struct 
+newExpr is Variable Expression: the_struct: instance of union b_struct 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue instance of struct a_struct 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue instance of union b_struct 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to signed int 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to char 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to float 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: signed int 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: char 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: float 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue float 
+)
+Environment: 
+
+there are 6 alternatives before elimination
+there are 6 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: signed int 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: float 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: char 
+from aggregate: 
+  Variable Expression: the_struct: instance of struct a_struct 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to signed int 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to float 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: pointer to char 
+from aggregate: 
+  Variable Expression: the_struct: instance of union b_struct 
+(types:
+    lvalue pointer to char 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: d: function
+            with parameters
+              pointer to float 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to float 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is pointer to float 
+actual type is lvalue signed int 
+formal type is pointer to float 
+actual type is lvalue float 
+formal type is pointer to float 
+actual type is lvalue char 
+formal type is pointer to float 
+actual type is lvalue pointer to signed int 
+formal type is pointer to float 
+actual type is lvalue pointer to float 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is pointer to float 
+actual type is lvalue pointer to char 
+actual expression:
+        Member Expression, with field: 
+          a: pointer to float 
+        from aggregate: 
+          Variable Expression: the_struct: instance of union b_struct 
+--- results are
+        lvalue pointer to float 
+
+converting lvalue pointer to float 
+ to pointer to float 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        pointer to float 
+actuals are:
+                  Member Expression, with field: 
+            a: pointer to float 
+          from aggregate: 
+            Variable Expression: the_struct: instance of union b_struct 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: d: function
+      with parameters
+        pointer to float 
+      returning 
+        nothing 
+
+to arguments
+      Member Expression, with field: 
+      a: pointer to float 
+    from aggregate: 
+      Variable Expression: the_struct: instance of union b_struct 
+
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: d: function
+        with parameters
+          pointer to float 
+        returning 
+          nothing 
+
+  to arguments
+          Member Expression, with field: 
+        a: pointer to float 
+      from aggregate: 
+        Variable Expression: the_struct: instance of union b_struct 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: forall
+    DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type DT (not function type) 
+    pointer to instance of type DT (not function type) 
+  returning 
+    pointer to instance of type DT (not function type) 
+
+newExpr is Variable Expression: ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct a_struct 
+    _src: instance of struct a_struct 
+  returning 
+    instance of struct a_struct 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                          Member Expression, with field: 
+                a: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  a: char 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                          Member Expression, with field: 
+                a: char 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to float 
+                  float 
+                returning 
+                  float 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  a: float 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                          Member Expression, with field: 
+                a: float 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct a_struct 
+
+to:
+  instance of struct a_struct 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct a_struct 
+      _src: instance of struct a_struct 
+    returning 
+      instance of struct a_struct 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct c_struct 
+    _src: instance of struct c_struct 
+  returning 
+    instance of struct c_struct 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct c_struct 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct c_struct 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  char 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct c_struct 
+              Member Expression, with field: 
+                char 
+              from aggregate: 
+                Variable Expression: _src: instance of struct c_struct 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  float 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct c_struct 
+              Member Expression, with field: 
+                float 
+              from aggregate: 
+                Variable Expression: _src: instance of struct c_struct 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct c_struct 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct c_struct 
+      _src: instance of struct c_struct 
+    returning 
+      instance of struct c_struct 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of union b_struct 
+    _src: instance of union b_struct 
+  returning 
+    instance of union b_struct 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Application of
+            Variable Expression: __builtin_memcpy: function
+                  accepting unspecified arguments
+                returning 
+                  pointer to char 
+
+          to arguments
+                          Variable Expression: _dst: pointer to instance of union b_struct 
+
+                          Address of:
+                Variable Expression: _src: instance of union b_struct 
+
+                          Sizeof Expression on: instance of union b_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of union b_struct 
+
+to:
+  instance of union b_struct 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of union b_struct 
+      _src: instance of union b_struct 
+    returning 
+      instance of union b_struct 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+(types:
+    pointer to forall
+          _0_DT: incomplete type
+        function
+        with parameters
+          pointer to pointer to instance of type _0_DT (not function type) 
+          pointer to instance of type _0_DT (not function type) 
+        returning 
+          pointer to instance of type _0_DT (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct a_struct 
+      _src: instance of struct a_struct 
+    returning 
+      instance of struct a_struct 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct a_struct 
+          _src: instance of struct a_struct 
+        returning 
+          instance of struct a_struct 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct c_struct 
+      _src: instance of struct c_struct 
+    returning 
+      instance of struct c_struct 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct c_struct 
+          _src: instance of struct c_struct 
+        returning 
+          instance of struct c_struct 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of union b_struct 
+      _src: instance of union b_struct 
+    returning 
+      instance of union b_struct 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of union b_struct 
+          _src: instance of union b_struct 
+        returning 
+          instance of union b_struct 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to char 
+          char 
+        returning 
+          char 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to float 
+          float 
+        returning 
+          float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 7 alternatives before elimination
+there are 7 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct c_struct 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct c_struct 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct c_struct 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct c_struct 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct c_struct 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is pointer to signed int 
+actual type is pointer to signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to float 
+              float 
+            returning 
+              float 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to float 
+                  float 
+                returning 
+                  float 
+
+)
+        Environment: 
+formal type is pointer to float 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to char 
+              char 
+            returning 
+              char 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+)
+        Environment: 
+formal type is pointer to char 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of union b_struct 
+              _src: instance of union b_struct 
+            returning 
+              instance of union b_struct 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of union b_struct 
+                  _src: instance of union b_struct 
+                returning 
+                  instance of union b_struct 
+
+)
+        Environment: 
+formal type is pointer to instance of union b_struct 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct c_struct 
+              _src: instance of struct c_struct 
+            returning 
+              instance of struct c_struct 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct c_struct 
+                  _src: instance of struct c_struct 
+                returning 
+                  instance of struct c_struct 
+
+)
+        Environment: 
+formal type is pointer to instance of struct c_struct 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct a_struct 
+              _src: instance of struct a_struct 
+            returning 
+              instance of struct a_struct 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct a_struct 
+                  _src: instance of struct a_struct 
+                returning 
+                  instance of struct a_struct 
+
+)
+        Environment: 
+formal type is pointer to instance of struct a_struct 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: forall
+              DT: incomplete type
+            function
+            with parameters
+              pointer to pointer to instance of type DT (not function type) 
+              pointer to instance of type DT (not function type) 
+            returning 
+              pointer to instance of type DT (not function type) 
+
+(types:
+            pointer to forall
+                  _0_DT: incomplete type
+                function
+                with parameters
+                  pointer to pointer to instance of type _0_DT (not function type) 
+                  pointer to instance of type _0_DT (not function type) 
+                returning 
+                  pointer to instance of type _0_DT (not function type) 
+
+)
+        Environment: 
+formal type is pointer to pointer to instance of type _0_DT (not function type) 
+actual type is pointer to signed int 
+actual expression:
+        Address of:
+          Member Expression, with field: 
+            signed int 
+          from aggregate: 
+            Applying untyped: 
+                Name: *?
+            ...to: 
+                Variable Expression: _dst: pointer to instance of struct c_struct 
+--- results are
+        pointer to signed int 
+
+converting pointer to signed int 
+ to pointer to signed int 
+cost is( 0, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          signed int 
+        from aggregate: 
+          Variable Expression: _src: instance of struct c_struct 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        pointer to signed int 
+        signed int 
+actuals are:
+                  Address of:
+            Member Expression, with field: 
+              signed int 
+            from aggregate: 
+              Applying untyped: 
+                  Name: *?
+              ...to: 
+                  Variable Expression: _dst: pointer to instance of struct c_struct 
+
+                  Member Expression, with field: 
+            signed int 
+          from aggregate: 
+            Variable Expression: _src: instance of struct c_struct 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?=?: function
+      with parameters
+        pointer to signed int 
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Address of:
+      Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct c_struct 
+
+      Member Expression, with field: 
+      signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct c_struct 
+
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?=?: function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Address of:
+        Member Expression, with field: 
+          signed int 
+        from aggregate: 
+          Applying untyped: 
+              Name: *?
+          ...to: 
+              Variable Expression: _dst: pointer to instance of struct c_struct 
+
+          Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Variable Expression: _src: instance of struct c_struct 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: forall
+    DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type DT (not function type) 
+    pointer to instance of type DT (not function type) 
+  returning 
+    pointer to instance of type DT (not function type) 
+
+newExpr is Variable Expression: ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct a_struct 
+    _src: instance of struct a_struct 
+  returning 
+    instance of struct a_struct 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                          Member Expression, with field: 
+                a: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  a: char 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                          Member Expression, with field: 
+                a: char 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to float 
+                  float 
+                returning 
+                  float 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  a: float 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                          Member Expression, with field: 
+                a: float 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct a_struct 
+
+to:
+  instance of struct a_struct 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct a_struct 
+      _src: instance of struct a_struct 
+    returning 
+      instance of struct a_struct 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct c_struct 
+    _src: instance of struct c_struct 
+  returning 
+    instance of struct c_struct 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct c_struct 
+
+                          Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct c_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  char 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct c_struct 
+              Member Expression, with field: 
+                char 
+              from aggregate: 
+                Variable Expression: _src: instance of struct c_struct 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  float 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct c_struct 
+              Member Expression, with field: 
+                float 
+              from aggregate: 
+                Variable Expression: _src: instance of struct c_struct 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct c_struct 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct c_struct 
+      _src: instance of struct c_struct 
+    returning 
+      instance of struct c_struct 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of union b_struct 
+    _src: instance of union b_struct 
+  returning 
+    instance of union b_struct 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Application of
+            Variable Expression: __builtin_memcpy: function
+                  accepting unspecified arguments
+                returning 
+                  pointer to char 
+
+          to arguments
+                          Variable Expression: _dst: pointer to instance of union b_struct 
+
+                          Address of:
+                Variable Expression: _src: instance of union b_struct 
+
+                          Sizeof Expression on: instance of union b_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of union b_struct 
+
+to:
+  instance of union b_struct 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of union b_struct 
+      _src: instance of union b_struct 
+    returning 
+      instance of union b_struct 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+(types:
+    pointer to forall
+          _0_DT: incomplete type
+        function
+        with parameters
+          pointer to pointer to instance of type _0_DT (not function type) 
+          pointer to instance of type _0_DT (not function type) 
+        returning 
+          pointer to instance of type _0_DT (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct a_struct 
+      _src: instance of struct a_struct 
+    returning 
+      instance of struct a_struct 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct a_struct 
+          _src: instance of struct a_struct 
+        returning 
+          instance of struct a_struct 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct c_struct 
+      _src: instance of struct c_struct 
+    returning 
+      instance of struct c_struct 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct c_struct 
+          _src: instance of struct c_struct 
+        returning 
+          instance of struct c_struct 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of union b_struct 
+      _src: instance of union b_struct 
+    returning 
+      instance of union b_struct 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of union b_struct 
+          _src: instance of union b_struct 
+        returning 
+          instance of union b_struct 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to char 
+          char 
+        returning 
+          char 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to float 
+          float 
+        returning 
+          float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 7 alternatives before elimination
+there are 7 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  char 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct c_struct 
+(types:
+    lvalue char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    char 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct c_struct 
+(types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    char 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct c_struct 
+(types:
+    pointer to char 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  char 
+from aggregate: 
+  Variable Expression: _src: instance of struct c_struct 
+(types:
+    lvalue char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  char 
+from aggregate: 
+  Variable Expression: _src: instance of struct c_struct 
+(types:
+    lvalue char 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is pointer to signed int 
+actual type is pointer to char 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to float 
+              float 
+            returning 
+              float 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to float 
+                  float 
+                returning 
+                  float 
+
+)
+        Environment: 
+formal type is pointer to float 
+actual type is pointer to char 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to char 
+              char 
+            returning 
+              char 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+)
+        Environment: 
+formal type is pointer to char 
+actual type is pointer to char 
+formal type is char 
+actual type is lvalue char 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of union b_struct 
+              _src: instance of union b_struct 
+            returning 
+              instance of union b_struct 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of union b_struct 
+                  _src: instance of union b_struct 
+                returning 
+                  instance of union b_struct 
+
+)
+        Environment: 
+formal type is pointer to instance of union b_struct 
+actual type is pointer to char 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct c_struct 
+              _src: instance of struct c_struct 
+            returning 
+              instance of struct c_struct 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct c_struct 
+                  _src: instance of struct c_struct 
+                returning 
+                  instance of struct c_struct 
+
+)
+        Environment: 
+formal type is pointer to instance of struct c_struct 
+actual type is pointer to char 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct a_struct 
+              _src: instance of struct a_struct 
+            returning 
+              instance of struct a_struct 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct a_struct 
+                  _src: instance of struct a_struct 
+                returning 
+                  instance of struct a_struct 
+
+)
+        Environment: 
+formal type is pointer to instance of struct a_struct 
+actual type is pointer to char 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: forall
+              DT: incomplete type
+            function
+            with parameters
+              pointer to pointer to instance of type DT (not function type) 
+              pointer to instance of type DT (not function type) 
+            returning 
+              pointer to instance of type DT (not function type) 
+
+(types:
+            pointer to forall
+                  _0_DT: incomplete type
+                function
+                with parameters
+                  pointer to pointer to instance of type _0_DT (not function type) 
+                  pointer to instance of type _0_DT (not function type) 
+                returning 
+                  pointer to instance of type _0_DT (not function type) 
+
+)
+        Environment: 
+formal type is pointer to pointer to instance of type _0_DT (not function type) 
+actual type is pointer to char 
+actual expression:
+        Address of:
+          Member Expression, with field: 
+            char 
+          from aggregate: 
+            Applying untyped: 
+                Name: *?
+            ...to: 
+                Variable Expression: _dst: pointer to instance of struct c_struct 
+--- results are
+        pointer to char 
+
+converting pointer to char 
+ to pointer to char 
+cost is( 0, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          char 
+        from aggregate: 
+          Variable Expression: _src: instance of struct c_struct 
+--- results are
+        lvalue char 
+
+converting lvalue char 
+ to char 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        pointer to char 
+        char 
+actuals are:
+                  Address of:
+            Member Expression, with field: 
+              char 
+            from aggregate: 
+              Applying untyped: 
+                  Name: *?
+              ...to: 
+                  Variable Expression: _dst: pointer to instance of struct c_struct 
+
+                  Member Expression, with field: 
+            char 
+          from aggregate: 
+            Variable Expression: _src: instance of struct c_struct 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?=?: function
+      with parameters
+        pointer to char 
+        char 
+      returning 
+        char 
+
+to arguments
+      Address of:
+      Member Expression, with field: 
+        char 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct c_struct 
+
+      Member Expression, with field: 
+      char 
+    from aggregate: 
+      Variable Expression: _src: instance of struct c_struct 
+
+(types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?=?: function
+        with parameters
+          pointer to char 
+          char 
+        returning 
+          char 
+
+  to arguments
+          Address of:
+        Member Expression, with field: 
+          char 
+        from aggregate: 
+          Applying untyped: 
+              Name: *?
+          ...to: 
+              Variable Expression: _dst: pointer to instance of struct c_struct 
+
+          Member Expression, with field: 
+        char 
+      from aggregate: 
+        Variable Expression: _src: instance of struct c_struct 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: forall
+    DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type DT (not function type) 
+    pointer to instance of type DT (not function type) 
+  returning 
+    pointer to instance of type DT (not function type) 
+
+newExpr is Variable Expression: ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct a_struct 
+    _src: instance of struct a_struct 
+  returning 
+    instance of struct a_struct 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                          Member Expression, with field: 
+                a: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  a: char 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                          Member Expression, with field: 
+                a: char 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to float 
+                  float 
+                returning 
+                  float 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  a: float 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                          Member Expression, with field: 
+                a: float 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct a_struct 
+
+to:
+  instance of struct a_struct 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct a_struct 
+      _src: instance of struct a_struct 
+    returning 
+      instance of struct a_struct 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct c_struct 
+    _src: instance of struct c_struct 
+  returning 
+    instance of struct c_struct 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct c_struct 
+
+                          Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct c_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  char 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct c_struct 
+
+                          Member Expression, with field: 
+                char 
+              from aggregate: 
+                Variable Expression: _src: instance of struct c_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  float 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct c_struct 
+              Member Expression, with field: 
+                float 
+              from aggregate: 
+                Variable Expression: _src: instance of struct c_struct 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct c_struct 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct c_struct 
+      _src: instance of struct c_struct 
+    returning 
+      instance of struct c_struct 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of union b_struct 
+    _src: instance of union b_struct 
+  returning 
+    instance of union b_struct 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Application of
+            Variable Expression: __builtin_memcpy: function
+                  accepting unspecified arguments
+                returning 
+                  pointer to char 
+
+          to arguments
+                          Variable Expression: _dst: pointer to instance of union b_struct 
+
+                          Address of:
+                Variable Expression: _src: instance of union b_struct 
+
+                          Sizeof Expression on: instance of union b_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of union b_struct 
+
+to:
+  instance of union b_struct 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of union b_struct 
+      _src: instance of union b_struct 
+    returning 
+      instance of union b_struct 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+(types:
+    pointer to forall
+          _0_DT: incomplete type
+        function
+        with parameters
+          pointer to pointer to instance of type _0_DT (not function type) 
+          pointer to instance of type _0_DT (not function type) 
+        returning 
+          pointer to instance of type _0_DT (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct a_struct 
+      _src: instance of struct a_struct 
+    returning 
+      instance of struct a_struct 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct a_struct 
+          _src: instance of struct a_struct 
+        returning 
+          instance of struct a_struct 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct c_struct 
+      _src: instance of struct c_struct 
+    returning 
+      instance of struct c_struct 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct c_struct 
+          _src: instance of struct c_struct 
+        returning 
+          instance of struct c_struct 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of union b_struct 
+      _src: instance of union b_struct 
+    returning 
+      instance of union b_struct 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of union b_struct 
+          _src: instance of union b_struct 
+        returning 
+          instance of union b_struct 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to char 
+          char 
+        returning 
+          char 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to float 
+          float 
+        returning 
+          float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 7 alternatives before elimination
+there are 7 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  float 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct c_struct 
+(types:
+    lvalue float 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    float 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct c_struct 
+(types:
+    pointer to float 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    float 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct c_struct 
+(types:
+    pointer to float 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  float 
+from aggregate: 
+  Variable Expression: _src: instance of struct c_struct 
+(types:
+    lvalue float 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  float 
+from aggregate: 
+  Variable Expression: _src: instance of struct c_struct 
+(types:
+    lvalue float 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is pointer to signed int 
+actual type is pointer to float 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to float 
+              float 
+            returning 
+              float 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to float 
+                  float 
+                returning 
+                  float 
+
+)
+        Environment: 
+formal type is pointer to float 
+actual type is pointer to float 
+formal type is float 
+actual type is lvalue float 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to char 
+              char 
+            returning 
+              char 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+)
+        Environment: 
+formal type is pointer to char 
+actual type is pointer to float 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of union b_struct 
+              _src: instance of union b_struct 
+            returning 
+              instance of union b_struct 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of union b_struct 
+                  _src: instance of union b_struct 
+                returning 
+                  instance of union b_struct 
+
+)
+        Environment: 
+formal type is pointer to instance of union b_struct 
+actual type is pointer to float 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct c_struct 
+              _src: instance of struct c_struct 
+            returning 
+              instance of struct c_struct 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct c_struct 
+                  _src: instance of struct c_struct 
+                returning 
+                  instance of struct c_struct 
+
+)
+        Environment: 
+formal type is pointer to instance of struct c_struct 
+actual type is pointer to float 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct a_struct 
+              _src: instance of struct a_struct 
+            returning 
+              instance of struct a_struct 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct a_struct 
+                  _src: instance of struct a_struct 
+                returning 
+                  instance of struct a_struct 
+
+)
+        Environment: 
+formal type is pointer to instance of struct a_struct 
+actual type is pointer to float 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: forall
+              DT: incomplete type
+            function
+            with parameters
+              pointer to pointer to instance of type DT (not function type) 
+              pointer to instance of type DT (not function type) 
+            returning 
+              pointer to instance of type DT (not function type) 
+
+(types:
+            pointer to forall
+                  _0_DT: incomplete type
+                function
+                with parameters
+                  pointer to pointer to instance of type _0_DT (not function type) 
+                  pointer to instance of type _0_DT (not function type) 
+                returning 
+                  pointer to instance of type _0_DT (not function type) 
+
+)
+        Environment: 
+formal type is pointer to pointer to instance of type _0_DT (not function type) 
+actual type is pointer to float 
+actual expression:
+        Address of:
+          Member Expression, with field: 
+            float 
+          from aggregate: 
+            Applying untyped: 
+                Name: *?
+            ...to: 
+                Variable Expression: _dst: pointer to instance of struct c_struct 
+--- results are
+        pointer to float 
+
+converting pointer to float 
+ to pointer to float 
+cost is( 0, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          float 
+        from aggregate: 
+          Variable Expression: _src: instance of struct c_struct 
+--- results are
+        lvalue float 
+
+converting lvalue float 
+ to float 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        pointer to float 
+        float 
+actuals are:
+                  Address of:
+            Member Expression, with field: 
+              float 
+            from aggregate: 
+              Applying untyped: 
+                  Name: *?
+              ...to: 
+                  Variable Expression: _dst: pointer to instance of struct c_struct 
+
+                  Member Expression, with field: 
+            float 
+          from aggregate: 
+            Variable Expression: _src: instance of struct c_struct 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?=?: function
+      with parameters
+        pointer to float 
+        float 
+      returning 
+        float 
+
+to arguments
+      Address of:
+      Member Expression, with field: 
+        float 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct c_struct 
+
+      Member Expression, with field: 
+      float 
+    from aggregate: 
+      Variable Expression: _src: instance of struct c_struct 
+
+(types:
+    float 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?=?: function
+        with parameters
+          pointer to float 
+          float 
+        returning 
+          float 
+
+  to arguments
+          Address of:
+        Member Expression, with field: 
+          float 
+        from aggregate: 
+          Applying untyped: 
+              Name: *?
+          ...to: 
+              Variable Expression: _dst: pointer to instance of struct c_struct 
+
+          Member Expression, with field: 
+        float 
+      from aggregate: 
+        Variable Expression: _src: instance of struct c_struct 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct c_struct 
+(types:
+    lvalue instance of struct c_struct 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct c_struct 
+
+to:
+  instance of struct c_struct 
+(types:
+    instance of struct c_struct 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is __builtin_memcpy
+decl is __builtin_memcpy: function
+    accepting unspecified arguments
+  returning 
+    pointer to char 
+
+newExpr is Variable Expression: __builtin_memcpy: function
+      accepting unspecified arguments
+    returning 
+      pointer to char 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: __builtin_memcpy: function
+      accepting unspecified arguments
+    returning 
+      pointer to char 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          pointer to char 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _dst: pointer to instance of union d_struct 
+(types:
+    lvalue pointer to instance of union d_struct 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: _dst: pointer to instance of union d_struct 
+(types:
+    lvalue pointer to instance of union d_struct 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of union d_struct 
+(types:
+    lvalue instance of union d_struct 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: _src: instance of union d_struct 
+(types:
+    pointer to instance of union d_struct 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: _src: instance of union d_struct 
+(types:
+    pointer to instance of union d_struct 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Sizeof Expression on: instance of union d_struct 
+(types:
+    unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Sizeof Expression on: instance of union d_struct 
+(types:
+    unsigned int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: __builtin_memcpy: function
+              accepting unspecified arguments
+            returning 
+              pointer to char 
+
+(types:
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  pointer to char 
+
+)
+        Environment: 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Variable Expression: _dst: pointer to instance of union d_struct 
+--- results are
+        lvalue pointer to instance of union d_struct 
+actual expression:
+        Address of:
+          Variable Expression: _src: instance of union d_struct 
+--- results are
+        pointer to instance of union d_struct 
+actual expression:
+        Sizeof Expression on: instance of union d_struct 
+--- results are
+        unsigned int 
+Case +++++++++++++
+formals are:
+actuals are:
+                  Variable Expression: _dst: pointer to instance of union d_struct 
+
+                  Address of:
+            Variable Expression: _src: instance of union d_struct 
+
+                  Sizeof Expression on: instance of union d_struct 
+
+bindings are:
+cost of conversion is:( 3, 0, 0 )
+alternatives before prune:
+Cost ( 3, 0, 0 ): Application of
+  Variable Expression: __builtin_memcpy: function
+        accepting unspecified arguments
+      returning 
+        pointer to char 
+
+to arguments
+      Variable Expression: _dst: pointer to instance of union d_struct 
+
+      Address of:
+      Variable Expression: _src: instance of union d_struct 
+
+      Sizeof Expression on: instance of union d_struct 
+
+(types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: __builtin_memcpy: function
+          accepting unspecified arguments
+        returning 
+          pointer to char 
+
+  to arguments
+          Variable Expression: _dst: pointer to instance of union d_struct 
+
+          Address of:
+        Variable Expression: _src: instance of union d_struct 
+
+          Sizeof Expression on: instance of union d_struct 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of union d_struct 
+(types:
+    lvalue instance of union d_struct 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of union d_struct 
+
+to:
+  instance of union d_struct 
+(types:
+    instance of union d_struct 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is a
+decl is a: function
+  with parameters
+    char 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: a: function
+    with parameters
+      char 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: function
+    with parameters
+      char 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          char 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is x
+decl is x: instance of struct c_struct 
+newExpr is Variable Expression: x: instance of struct c_struct 
+
+decl is x: instance of union d_struct 
+newExpr is Variable Expression: x: instance of union d_struct 
+
+decl is x: short unsigned int 
+newExpr is Variable Expression: x: short unsigned int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue instance of struct c_struct 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  char 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  float 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue instance of union d_struct 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to char 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to char 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to float 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: short unsigned int 
+(types:
+    lvalue short unsigned int 
+)
+Environment: 
+
+there are 9 alternatives before elimination
+there are 9 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  float 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  char 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: short unsigned int 
+(types:
+    lvalue short unsigned int 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to float 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to float 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to char 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue instance of union d_struct 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue instance of struct c_struct 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: a: function
+            with parameters
+              char 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  char 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is char 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is char 
+actual type is lvalue float 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is char 
+actual type is lvalue char 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is char 
+actual type is lvalue short unsigned int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is char 
+actual type is lvalue pointer to signed int 
+formal type is char 
+actual type is lvalue pointer to float 
+formal type is char 
+actual type is lvalue pointer to char 
+formal type is char 
+actual type is lvalue instance of union d_struct 
+formal type is char 
+actual type is lvalue instance of struct c_struct 
+actual expression:
+        Member Expression, with field: 
+          signed int 
+        from aggregate: 
+          Variable Expression: x: instance of struct c_struct 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to char 
+cost is( 1, 0, 0 )
+Case +++++++++++++
+formals are:
+        char 
+actuals are:
+                  Cast of:
+            Member Expression, with field: 
+              signed int 
+            from aggregate: 
+              Variable Expression: x: instance of struct c_struct 
+
+          to:
+            char 
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          float 
+        from aggregate: 
+          Variable Expression: x: instance of struct c_struct 
+--- results are
+        lvalue float 
+
+converting lvalue float 
+ to char 
+cost is( 1, 0, 0 )
+Case +++++++++++++
+formals are:
+        char 
+actuals are:
+                  Cast of:
+            Member Expression, with field: 
+              float 
+            from aggregate: 
+              Variable Expression: x: instance of struct c_struct 
+
+          to:
+            char 
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          char 
+        from aggregate: 
+          Variable Expression: x: instance of struct c_struct 
+--- results are
+        lvalue char 
+
+converting lvalue char 
+ to char 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        char 
+actuals are:
+                  Member Expression, with field: 
+            char 
+          from aggregate: 
+            Variable Expression: x: instance of struct c_struct 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+actual expression:
+        Variable Expression: x: short unsigned int 
+--- results are
+        lvalue short unsigned int 
+
+converting lvalue short unsigned int 
+ to char 
+cost is( 1, 0, 0 )
+Case +++++++++++++
+formals are:
+        char 
+actuals are:
+                  Cast of:
+            Variable Expression: x: short unsigned int 
+
+          to:
+            char 
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+alternatives before prune:
+Cost ( 1, 0, 0 ): Application of
+  Variable Expression: a: function
+      with parameters
+        char 
+      returning 
+        nothing 
+
+to arguments
+      Cast of:
+      Variable Expression: x: short unsigned int 
+
+    to:
+      char 
+
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: a: function
+        with parameters
+          char 
+        returning 
+          nothing 
+
+  to arguments
+          Cast of:
+        Variable Expression: x: short unsigned int 
+
+      to:
+        char 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is b
+decl is b: function
+  with parameters
+    signed int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: b: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is x
+decl is x: instance of struct c_struct 
+newExpr is Variable Expression: x: instance of struct c_struct 
+
+decl is x: instance of union d_struct 
+newExpr is Variable Expression: x: instance of union d_struct 
+
+decl is x: short unsigned int 
+newExpr is Variable Expression: x: short unsigned int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue instance of struct c_struct 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  char 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  float 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue instance of union d_struct 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to char 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to char 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to float 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: short unsigned int 
+(types:
+    lvalue short unsigned int 
+)
+Environment: 
+
+there are 9 alternatives before elimination
+there are 9 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  float 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  char 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: short unsigned int 
+(types:
+    lvalue short unsigned int 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to float 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to float 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to char 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue instance of union d_struct 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue instance of struct c_struct 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: b: function
+            with parameters
+              signed int 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue float 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue char 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue short unsigned int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue pointer to signed int 
+formal type is signed int 
+actual type is lvalue pointer to float 
+formal type is signed int 
+actual type is lvalue pointer to char 
+formal type is signed int 
+actual type is lvalue instance of union d_struct 
+formal type is signed int 
+actual type is lvalue instance of struct c_struct 
+actual expression:
+        Member Expression, with field: 
+          signed int 
+        from aggregate: 
+          Variable Expression: x: instance of struct c_struct 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+                  Member Expression, with field: 
+            signed int 
+          from aggregate: 
+            Variable Expression: x: instance of struct c_struct 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          float 
+        from aggregate: 
+          Variable Expression: x: instance of struct c_struct 
+--- results are
+        lvalue float 
+
+converting lvalue float 
+ to signed int 
+cost is( 1, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+                  Cast of:
+            Member Expression, with field: 
+              float 
+            from aggregate: 
+              Variable Expression: x: instance of struct c_struct 
+
+          to:
+            signed int 
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          char 
+        from aggregate: 
+          Variable Expression: x: instance of struct c_struct 
+--- results are
+        lvalue char 
+
+converting lvalue char 
+ to signed int 
+cost is( 0, 0, 4 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+                  Cast of:
+            Member Expression, with field: 
+              char 
+            from aggregate: 
+              Variable Expression: x: instance of struct c_struct 
+
+          to:
+            signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 4 )
+actual expression:
+        Variable Expression: x: short unsigned int 
+--- results are
+        lvalue short unsigned int 
+
+converting lvalue short unsigned int 
+ to signed int 
+cost is( 0, 0, 1 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+                  Cast of:
+            Variable Expression: x: short unsigned int 
+
+          to:
+            signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 1 )
+alternatives before prune:
+Cost ( 0, 0, 1 ): Application of
+  Variable Expression: b: function
+      with parameters
+        signed int 
+      returning 
+        nothing 
+
+to arguments
+      Cast of:
+      Variable Expression: x: short unsigned int 
+
+    to:
+      signed int 
+
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: b: function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+  to arguments
+          Cast of:
+        Variable Expression: x: short unsigned int 
+
+      to:
+        signed int 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is c
+decl is c: function
+  with parameters
+    pointer to signed int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: c: function
+    with parameters
+      pointer to signed int 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: c: function
+    with parameters
+      pointer to signed int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is x
+decl is x: instance of struct c_struct 
+newExpr is Variable Expression: x: instance of struct c_struct 
+
+decl is x: instance of union d_struct 
+newExpr is Variable Expression: x: instance of union d_struct 
+
+decl is x: short unsigned int 
+newExpr is Variable Expression: x: short unsigned int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue instance of struct c_struct 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  char 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  float 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue instance of union d_struct 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to char 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to char 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to float 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: short unsigned int 
+(types:
+    lvalue short unsigned int 
+)
+Environment: 
+
+there are 9 alternatives before elimination
+there are 9 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  float 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  char 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: short unsigned int 
+(types:
+    lvalue short unsigned int 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to float 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to float 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to char 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue instance of union d_struct 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue instance of struct c_struct 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: c: function
+            with parameters
+              pointer to signed int 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to signed int 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is pointer to signed int 
+actual type is lvalue signed int 
+formal type is pointer to signed int 
+actual type is lvalue float 
+formal type is pointer to signed int 
+actual type is lvalue char 
+formal type is pointer to signed int 
+actual type is lvalue short unsigned int 
+formal type is pointer to signed int 
+actual type is lvalue pointer to signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is pointer to signed int 
+actual type is lvalue pointer to float 
+formal type is pointer to signed int 
+actual type is lvalue pointer to char 
+formal type is pointer to signed int 
+actual type is lvalue instance of union d_struct 
+formal type is pointer to signed int 
+actual type is lvalue instance of struct c_struct 
+actual expression:
+        Member Expression, with field: 
+          pointer to signed int 
+        from aggregate: 
+          Variable Expression: x: instance of union d_struct 
+--- results are
+        lvalue pointer to signed int 
+
+converting lvalue pointer to signed int 
+ to pointer to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        pointer to signed int 
+actuals are:
+                  Member Expression, with field: 
+            pointer to signed int 
+          from aggregate: 
+            Variable Expression: x: instance of union d_struct 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: c: function
+      with parameters
+        pointer to signed int 
+      returning 
+        nothing 
+
+to arguments
+      Member Expression, with field: 
+      pointer to signed int 
+    from aggregate: 
+      Variable Expression: x: instance of union d_struct 
+
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: c: function
+        with parameters
+          pointer to signed int 
+        returning 
+          nothing 
+
+  to arguments
+          Member Expression, with field: 
+        pointer to signed int 
+      from aggregate: 
+        Variable Expression: x: instance of union d_struct 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is d
+decl is d: function
+  with parameters
+    pointer to float 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: d: function
+    with parameters
+      pointer to float 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: d: function
+    with parameters
+      pointer to float 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to float 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is x
+decl is x: instance of struct c_struct 
+newExpr is Variable Expression: x: instance of struct c_struct 
+
+decl is x: instance of union d_struct 
+newExpr is Variable Expression: x: instance of union d_struct 
+
+decl is x: short unsigned int 
+newExpr is Variable Expression: x: short unsigned int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue instance of struct c_struct 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  char 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  float 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue instance of union d_struct 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to char 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to char 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to float 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: short unsigned int 
+(types:
+    lvalue short unsigned int 
+)
+Environment: 
+
+there are 9 alternatives before elimination
+there are 9 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  float 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  char 
+from aggregate: 
+  Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: short unsigned int 
+(types:
+    lvalue short unsigned int 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to float 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to float 
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Member Expression, with field: 
+  pointer to char 
+from aggregate: 
+  Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue pointer to char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: instance of union d_struct 
+(types:
+    lvalue instance of union d_struct 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: instance of struct c_struct 
+(types:
+    lvalue instance of struct c_struct 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: d: function
+            with parameters
+              pointer to float 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to float 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is pointer to float 
+actual type is lvalue signed int 
+formal type is pointer to float 
+actual type is lvalue float 
+formal type is pointer to float 
+actual type is lvalue char 
+formal type is pointer to float 
+actual type is lvalue short unsigned int 
+formal type is pointer to float 
+actual type is lvalue pointer to signed int 
+formal type is pointer to float 
+actual type is lvalue pointer to float 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is pointer to float 
+actual type is lvalue pointer to char 
+formal type is pointer to float 
+actual type is lvalue instance of union d_struct 
+formal type is pointer to float 
+actual type is lvalue instance of struct c_struct 
+actual expression:
+        Member Expression, with field: 
+          pointer to float 
+        from aggregate: 
+          Variable Expression: x: instance of union d_struct 
+--- results are
+        lvalue pointer to float 
+
+converting lvalue pointer to float 
+ to pointer to float 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        pointer to float 
+actuals are:
+                  Member Expression, with field: 
+            pointer to float 
+          from aggregate: 
+            Variable Expression: x: instance of union d_struct 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: d: function
+      with parameters
+        pointer to float 
+      returning 
+        nothing 
+
+to arguments
+      Member Expression, with field: 
+      pointer to float 
+    from aggregate: 
+      Variable Expression: x: instance of union d_struct 
+
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: d: function
+        with parameters
+          pointer to float 
+        returning 
+          nothing 
+
+  to arguments
+          Member Expression, with field: 
+        pointer to float 
+      from aggregate: 
+        Variable Expression: x: instance of union d_struct 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: forall
+    DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type DT (not function type) 
+    pointer to instance of type DT (not function type) 
+  returning 
+    pointer to instance of type DT (not function type) 
+
+newExpr is Variable Expression: ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct forward 
+    _src: instance of struct forward 
+  returning 
+    instance of struct forward 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct forward 
+              Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct forward 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct forward 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct forward 
+      _src: instance of struct forward 
+    returning 
+      instance of struct forward 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct a_struct 
+    _src: instance of struct a_struct 
+  returning 
+    instance of struct a_struct 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                          Member Expression, with field: 
+                a: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  a: char 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                          Member Expression, with field: 
+                a: char 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to float 
+                  float 
+                returning 
+                  float 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  a: float 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                          Member Expression, with field: 
+                a: float 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct a_struct 
+
+to:
+  instance of struct a_struct 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct a_struct 
+      _src: instance of struct a_struct 
+    returning 
+      instance of struct a_struct 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct c_struct 
+    _src: instance of struct c_struct 
+  returning 
+    instance of struct c_struct 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct c_struct 
+
+                          Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct c_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  char 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct c_struct 
+
+                          Member Expression, with field: 
+                char 
+              from aggregate: 
+                Variable Expression: _src: instance of struct c_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to float 
+                  float 
+                returning 
+                  float 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  float 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct c_struct 
+
+                          Member Expression, with field: 
+                float 
+              from aggregate: 
+                Variable Expression: _src: instance of struct c_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct c_struct 
+
+to:
+  instance of struct c_struct 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct c_struct 
+      _src: instance of struct c_struct 
+    returning 
+      instance of struct c_struct 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of union b_struct 
+    _src: instance of union b_struct 
+  returning 
+    instance of union b_struct 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Application of
+            Variable Expression: __builtin_memcpy: function
+                  accepting unspecified arguments
+                returning 
+                  pointer to char 
+
+          to arguments
+                          Variable Expression: _dst: pointer to instance of union b_struct 
+
+                          Address of:
+                Variable Expression: _src: instance of union b_struct 
+
+                          Sizeof Expression on: instance of union b_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of union b_struct 
+
+to:
+  instance of union b_struct 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of union b_struct 
+      _src: instance of union b_struct 
+    returning 
+      instance of union b_struct 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of union d_struct 
+    _src: instance of union d_struct 
+  returning 
+    instance of union d_struct 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Application of
+            Variable Expression: __builtin_memcpy: function
+                  accepting unspecified arguments
+                returning 
+                  pointer to char 
+
+          to arguments
+                          Variable Expression: _dst: pointer to instance of union d_struct 
+
+                          Address of:
+                Variable Expression: _src: instance of union d_struct 
+
+                          Sizeof Expression on: instance of union d_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of union d_struct 
+
+to:
+  instance of union d_struct 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of union d_struct 
+      _src: instance of union d_struct 
+    returning 
+      instance of union d_struct 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+(types:
+    pointer to forall
+          _0_DT: incomplete type
+        function
+        with parameters
+          pointer to pointer to instance of type _0_DT (not function type) 
+          pointer to instance of type _0_DT (not function type) 
+        returning 
+          pointer to instance of type _0_DT (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct forward 
+      _src: instance of struct forward 
+    returning 
+      instance of struct forward 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct forward 
+          _src: instance of struct forward 
+        returning 
+          instance of struct forward 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct a_struct 
+      _src: instance of struct a_struct 
+    returning 
+      instance of struct a_struct 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct a_struct 
+          _src: instance of struct a_struct 
+        returning 
+          instance of struct a_struct 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct c_struct 
+      _src: instance of struct c_struct 
+    returning 
+      instance of struct c_struct 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct c_struct 
+          _src: instance of struct c_struct 
+        returning 
+          instance of struct c_struct 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of union b_struct 
+      _src: instance of union b_struct 
+    returning 
+      instance of union b_struct 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of union b_struct 
+          _src: instance of union b_struct 
+        returning 
+          instance of union b_struct 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of union d_struct 
+      _src: instance of union d_struct 
+    returning 
+      instance of union d_struct 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of union d_struct 
+          _src: instance of union d_struct 
+        returning 
+          instance of union d_struct 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to char 
+          char 
+        returning 
+          char 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to float 
+          float 
+        returning 
+          float 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 9 alternatives before elimination
+there are 9 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct forward 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct forward 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    y: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct forward 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct forward 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  y: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct forward 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is pointer to signed int 
+actual type is pointer to signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to float 
+              float 
+            returning 
+              float 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to float 
+                  float 
+                returning 
+                  float 
+
+)
+        Environment: 
+formal type is pointer to float 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to char 
+              char 
+            returning 
+              char 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+)
+        Environment: 
+formal type is pointer to char 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of union d_struct 
+              _src: instance of union d_struct 
+            returning 
+              instance of union d_struct 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of union d_struct 
+                  _src: instance of union d_struct 
+                returning 
+                  instance of union d_struct 
+
+)
+        Environment: 
+formal type is pointer to instance of union d_struct 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of union b_struct 
+              _src: instance of union b_struct 
+            returning 
+              instance of union b_struct 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of union b_struct 
+                  _src: instance of union b_struct 
+                returning 
+                  instance of union b_struct 
+
+)
+        Environment: 
+formal type is pointer to instance of union b_struct 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct c_struct 
+              _src: instance of struct c_struct 
+            returning 
+              instance of struct c_struct 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct c_struct 
+                  _src: instance of struct c_struct 
+                returning 
+                  instance of struct c_struct 
+
+)
+        Environment: 
+formal type is pointer to instance of struct c_struct 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct a_struct 
+              _src: instance of struct a_struct 
+            returning 
+              instance of struct a_struct 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct a_struct 
+                  _src: instance of struct a_struct 
+                returning 
+                  instance of struct a_struct 
+
+)
+        Environment: 
+formal type is pointer to instance of struct a_struct 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct forward 
+              _src: instance of struct forward 
+            returning 
+              instance of struct forward 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct forward 
+                  _src: instance of struct forward 
+                returning 
+                  instance of struct forward 
+
+)
+        Environment: 
+formal type is pointer to instance of struct forward 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: forall
+              DT: incomplete type
+            function
+            with parameters
+              pointer to pointer to instance of type DT (not function type) 
+              pointer to instance of type DT (not function type) 
+            returning 
+              pointer to instance of type DT (not function type) 
+
+(types:
+            pointer to forall
+                  _0_DT: incomplete type
+                function
+                with parameters
+                  pointer to pointer to instance of type _0_DT (not function type) 
+                  pointer to instance of type _0_DT (not function type) 
+                returning 
+                  pointer to instance of type _0_DT (not function type) 
+
+)
+        Environment: 
+formal type is pointer to pointer to instance of type _0_DT (not function type) 
+actual type is pointer to signed int 
+actual expression:
+        Address of:
+          Member Expression, with field: 
+            y: signed int 
+          from aggregate: 
+            Applying untyped: 
+                Name: *?
+            ...to: 
+                Variable Expression: _dst: pointer to instance of struct forward 
+--- results are
+        pointer to signed int 
+
+converting pointer to signed int 
+ to pointer to signed int 
+cost is( 0, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          y: signed int 
+        from aggregate: 
+          Variable Expression: _src: instance of struct forward 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        pointer to signed int 
+        signed int 
+actuals are:
+                  Address of:
+            Member Expression, with field: 
+              y: signed int 
+            from aggregate: 
+              Applying untyped: 
+                  Name: *?
+              ...to: 
+                  Variable Expression: _dst: pointer to instance of struct forward 
+
+                  Member Expression, with field: 
+            y: signed int 
+          from aggregate: 
+            Variable Expression: _src: instance of struct forward 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?=?: function
+      with parameters
+        pointer to signed int 
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Address of:
+      Member Expression, with field: 
+        y: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct forward 
+
+      Member Expression, with field: 
+      y: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct forward 
+
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?=?: function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Address of:
+        Member Expression, with field: 
+          y: signed int 
+        from aggregate: 
+          Applying untyped: 
+              Name: *?
+          ...to: 
+              Variable Expression: _dst: pointer to instance of struct forward 
+
+          Member Expression, with field: 
+        y: signed int 
+      from aggregate: 
+        Variable Expression: _src: instance of struct forward 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct forward 
+(types:
+    lvalue instance of struct forward 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct forward 
+
+to:
+  instance of struct forward 
+(types:
+    instance of struct forward 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is *?
+decl is *?: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    pointer to instance of type T (not function type) 
+  returning 
+    lvalue instance of type T (not function type) 
+
+newExpr is Variable Expression: *?: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      pointer to instance of type T (not function type) 
+    returning 
+      lvalue instance of type T (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: *?: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      pointer to instance of type T (not function type) 
+    returning 
+      lvalue instance of type T (not function type) 
+
+(types:
+    pointer to forall
+          _0_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+
+        function
+        with parameters
+          pointer to instance of type _0_T (not function type) 
+        returning 
+          lvalue instance of type _0_T (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is q
+decl is q: pointer to instance of struct forward 
+newExpr is Variable Expression: q: pointer to instance of struct forward 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: q: pointer to instance of struct forward 
+(types:
+    lvalue pointer to instance of struct forward 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: q: pointer to instance of struct forward 
+(types:
+    lvalue pointer to instance of struct forward 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: *?: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              pointer to instance of type T (not function type) 
+            returning 
+              lvalue instance of type T (not function type) 
+
+(types:
+            pointer to forall
+                  _0_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _0_T (not function type) 
+
+
+                function
+                with parameters
+                  pointer to instance of type _0_T (not function type) 
+                returning 
+                  lvalue instance of type _0_T (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type _0_T (not function type) 
+actual type is lvalue pointer to instance of struct forward 
+need assertions:
+?=?: pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+
+inferRecursive: candidate is ?=?: forall
+    DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type DT (not function type) 
+    pointer to instance of type DT (not function type) 
+  returning 
+    pointer to instance of type DT (not function type) 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to forall
+    _1_DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type _1_DT (not function type) 
+    pointer to instance of type _1_DT (not function type) 
+  returning 
+    pointer to instance of type _1_DT (not function type) 
+
+inferRecursive: candidate is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct forward 
+    _src: instance of struct forward 
+  returning 
+    instance of struct forward 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct forward 
+
+                          Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct forward 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct forward 
+
+to:
+  instance of struct forward 
+with environment:
+  Types:
+  Non-types:
+
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    _dst: pointer to instance of struct forward 
+    _src: instance of struct forward 
+  returning 
+    instance of struct forward 
+
+success!
+satisfying assertion 25 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with declaration 79 ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct forward 
+    _src: instance of struct forward 
+  returning 
+    instance of struct forward 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct forward 
+
+                          Member Expression, with field: 
+                y: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct forward 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct forward 
+
+to:
+  instance of struct forward 
+with environment:
+  Types:
+  Non-types:
+
+
+
+inferRecursive: candidate is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct a_struct 
+    _src: instance of struct a_struct 
+  returning 
+    instance of struct a_struct 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                          Member Expression, with field: 
+                a: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  a: char 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                          Member Expression, with field: 
+                a: char 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to float 
+                  float 
+                returning 
+                  float 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  a: float 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct a_struct 
+
+                          Member Expression, with field: 
+                a: float 
+              from aggregate: 
+                Variable Expression: _src: instance of struct a_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct a_struct 
+
+to:
+  instance of struct a_struct 
+with environment:
+  Types:
+  Non-types:
+
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    _dst: pointer to instance of struct a_struct 
+    _src: instance of struct a_struct 
+  returning 
+    instance of struct a_struct 
+
+inferRecursive: candidate is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct c_struct 
+    _src: instance of struct c_struct 
+  returning 
+    instance of struct c_struct 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct c_struct 
+
+                          Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct c_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to char 
+                  char 
+                returning 
+                  char 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  char 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct c_struct 
+
+                          Member Expression, with field: 
+                char 
+              from aggregate: 
+                Variable Expression: _src: instance of struct c_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: function
+                with parameters
+                  pointer to float 
+                  float 
+                returning 
+                  float 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  float 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct c_struct 
+
+                          Member Expression, with field: 
+                float 
+              from aggregate: 
+                Variable Expression: _src: instance of struct c_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct c_struct 
+
+to:
+  instance of struct c_struct 
+with environment:
+  Types:
+  Non-types:
+
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    _dst: pointer to instance of struct c_struct 
+    _src: instance of struct c_struct 
+  returning 
+    instance of struct c_struct 
+
+inferRecursive: candidate is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of union b_struct 
+    _src: instance of union b_struct 
+  returning 
+    instance of union b_struct 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Application of
+            Variable Expression: __builtin_memcpy: function
+                  accepting unspecified arguments
+                returning 
+                  pointer to char 
+
+          to arguments
+                          Variable Expression: _dst: pointer to instance of union b_struct 
+
+                          Address of:
+                Variable Expression: _src: instance of union b_struct 
+
+                          Sizeof Expression on: instance of union b_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of union b_struct 
+
+to:
+  instance of union b_struct 
+with environment:
+  Types:
+  Non-types:
+
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    _dst: pointer to instance of union b_struct 
+    _src: instance of union b_struct 
+  returning 
+    instance of union b_struct 
+
+inferRecursive: candidate is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of union d_struct 
+    _src: instance of union d_struct 
+  returning 
+    instance of union d_struct 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Application of
+            Variable Expression: __builtin_memcpy: function
+                  accepting unspecified arguments
+                returning 
+                  pointer to char 
+
+          to arguments
+                          Variable Expression: _dst: pointer to instance of union d_struct 
+
+                          Address of:
+                Variable Expression: _src: instance of union d_struct 
+
+                          Sizeof Expression on: instance of union d_struct 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of union d_struct 
+
+to:
+  instance of union d_struct 
+with environment:
+  Types:
+  Non-types:
+
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    _dst: pointer to instance of union d_struct 
+    _src: instance of union d_struct 
+  returning 
+    instance of union d_struct 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to char 
+    char 
+  returning 
+    char 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to float 
+    float 
+  returning 
+    float 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+actual expression:
+        Variable Expression: q: pointer to instance of struct forward 
+--- results are
+        lvalue pointer to instance of struct forward 
+
+converting lvalue pointer to instance of struct forward 
+ to pointer to instance of type _0_T (not function type) 
+cost is( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            _dst: pointer to instance of struct forward 
+            _src: instance of struct forward 
+          returning 
+            instance of struct forward 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        pointer to instance of type _0_T (not function type) 
+actuals are:
+                  Variable Expression: q: pointer to instance of struct forward 
+
+bindings are:
+        ( _0_T ) -> instance of struct forward  (no widening)
+cost of conversion is:( 0, 4, 0 )
+alternatives before prune:
+Cost ( 0, 4, 0 ): Application of
+  Variable Expression: *?: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        pointer to instance of type T (not function type) 
+      returning 
+        lvalue instance of type T (not function type) 
+
+to arguments
+      Variable Expression: q: pointer to instance of struct forward 
+
+with inferred parameters:
+  ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct forward 
+      _src: instance of struct forward 
+    returning 
+      instance of struct forward 
+
+(types:
+    lvalue instance of type _0_T (not function type) 
+)
+Environment:   ( _0_T ) -> instance of struct forward  (no widening)
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 4, 0 ): Member Expression, with field: 
+  y: signed int 
+from aggregate: 
+  Application of
+    Variable Expression: *?: forall
+          T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type T (not function type) 
+                    instance of type T (not function type) 
+                  returning 
+                    instance of type T (not function type) 
+
+
+        function
+        with parameters
+          pointer to instance of type T (not function type) 
+        returning 
+          lvalue instance of type T (not function type) 
+
+  to arguments
+          Variable Expression: q: pointer to instance of struct forward 
+
+  with inferred parameters:
+    ?=?: inline static function
+      with parameters
+        _dst: pointer to instance of struct forward 
+        _src: instance of struct forward 
+      returning 
+        instance of struct forward 
+
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Member Expression, with field: 
+    y: signed int 
+  from aggregate: 
+    Application of
+      Variable Expression: *?: forall
+            T: type
+              with assertions
+                ?=?: pointer to function
+                    with parameters
+                      pointer to instance of type T (not function type) 
+                      instance of type T (not function type) 
+                    returning 
+                      instance of type T (not function type) 
+
+
+          function
+          with parameters
+            pointer to instance of type T (not function type) 
+          returning 
+            lvalue instance of type T (not function type) 
+
+    to arguments
+              Variable Expression: q: pointer to instance of struct forward 
+
+    with inferred parameters:
+      ?=?: inline static function
+        with parameters
+          _dst: pointer to instance of struct forward 
+          _src: instance of struct forward 
+        returning 
+          instance of struct forward 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+Error: unbound type variable in application Application of
+  Variable Expression: *?: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        pointer to instance of type T (not function type) 
+      returning 
+        pointer to instance of type T (not function type) 
+
+to arguments
+      Variable Expression: q: pointer to instance of struct forward 
+
+with inferred parameters:
+  ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct forward 
+      _src: instance of struct forward 
+    returning 
+      instance of struct forward 
+
+
Index: src/Tests/Expect-r/Misc.txt
===================================================================
--- src/Tests/Expect-r/Misc.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Misc.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,1510 @@
+nameExpr is g
+decl is g: function
+  with parameters
+    unsigned int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: g: function
+    with parameters
+      unsigned int 
+    returning 
+      nothing 
+
+
+decl is g: function
+  with parameters
+    signed int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: g: function
+    with parameters
+      unsigned int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          unsigned int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is a
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Variable Expression: a: signed int 
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is b
+decl is b: float 
+newExpr is Variable Expression: b: float 
+
+decl is b: signed int 
+newExpr is Variable Expression: b: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: float 
+(types:
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Comma Expression:
+  Variable Expression: a: signed int 
+
+  Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Comma Expression:
+  Variable Expression: a: signed int 
+
+  Variable Expression: b: float 
+(types:
+    lvalue float 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Comma Expression:
+  Variable Expression: a: signed int 
+
+  Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Comma Expression:
+  Variable Expression: a: signed int 
+
+  Variable Expression: b: float 
+(types:
+    lvalue float 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: g: function
+            with parameters
+              signed int 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue float 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: g: function
+            with parameters
+              unsigned int 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  unsigned int 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is unsigned int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is unsigned int 
+actual type is lvalue float 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Comma Expression:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+                  Comma Expression:
+            Variable Expression: a: signed int 
+
+            Variable Expression: b: signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+actual expression:
+        Comma Expression:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: float 
+--- results are
+        lvalue float 
+
+converting lvalue float 
+ to signed int 
+cost is( 1, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+                  Cast of:
+            Comma Expression:
+              Variable Expression: a: signed int 
+
+              Variable Expression: b: float 
+
+          to:
+            signed int 
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+actual expression:
+        Comma Expression:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to unsigned int 
+cost is( 0, 0, 1 )
+Case +++++++++++++
+formals are:
+        unsigned int 
+actuals are:
+                  Cast of:
+            Comma Expression:
+              Variable Expression: a: signed int 
+
+              Variable Expression: b: signed int 
+
+          to:
+            unsigned int 
+
+bindings are:
+cost of conversion is:( 0, 0, 1 )
+actual expression:
+        Comma Expression:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: float 
+--- results are
+        lvalue float 
+
+converting lvalue float 
+ to unsigned int 
+cost is( 1, 0, 0 )
+Case +++++++++++++
+formals are:
+        unsigned int 
+actuals are:
+                  Cast of:
+            Comma Expression:
+              Variable Expression: a: signed int 
+
+              Variable Expression: b: float 
+
+          to:
+            unsigned int 
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: g: function
+      with parameters
+        signed int 
+      returning 
+        nothing 
+
+to arguments
+      Comma Expression:
+      Variable Expression: a: signed int 
+
+      Variable Expression: b: signed int 
+
+(types:
+)
+Environment: 
+
+Cost ( 1, 0, 0 ): Application of
+  Variable Expression: g: function
+      with parameters
+        signed int 
+      returning 
+        nothing 
+
+to arguments
+      Cast of:
+      Comma Expression:
+        Variable Expression: a: signed int 
+
+        Variable Expression: b: float 
+
+    to:
+      signed int 
+
+(types:
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Application of
+  Variable Expression: g: function
+      with parameters
+        unsigned int 
+      returning 
+        nothing 
+
+to arguments
+      Cast of:
+      Comma Expression:
+        Variable Expression: a: signed int 
+
+        Variable Expression: b: signed int 
+
+    to:
+      unsigned int 
+
+(types:
+)
+Environment: 
+
+Cost ( 1, 0, 0 ): Application of
+  Variable Expression: g: function
+      with parameters
+        unsigned int 
+      returning 
+        nothing 
+
+to arguments
+      Cast of:
+      Comma Expression:
+        Variable Expression: a: signed int 
+
+        Variable Expression: b: float 
+
+    to:
+      unsigned int 
+
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: g: function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+  to arguments
+          Comma Expression:
+        Variable Expression: a: signed int 
+
+        Variable Expression: b: signed int 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is g
+decl is g: function
+  with parameters
+    unsigned int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: g: function
+    with parameters
+      unsigned int 
+    returning 
+      nothing 
+
+
+decl is g: function
+  with parameters
+    signed int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: g: function
+    with parameters
+      unsigned int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          unsigned int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is a
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Variable Expression: a: signed int 
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is a
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Comma Expression:
+  Variable Expression: a: signed int 
+
+  Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Comma Expression:
+    Variable Expression: a: signed int 
+
+    Variable Expression: a: signed int 
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is b
+decl is b: float 
+newExpr is Variable Expression: b: float 
+
+decl is b: signed int 
+newExpr is Variable Expression: b: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: float 
+(types:
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Comma Expression:
+  Comma Expression:
+    Variable Expression: a: signed int 
+
+    Variable Expression: a: signed int 
+
+  Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Comma Expression:
+  Comma Expression:
+    Variable Expression: a: signed int 
+
+    Variable Expression: a: signed int 
+
+  Variable Expression: b: float 
+(types:
+    lvalue float 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Comma Expression:
+  Comma Expression:
+    Variable Expression: a: signed int 
+
+    Variable Expression: a: signed int 
+
+  Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Comma Expression:
+  Comma Expression:
+    Variable Expression: a: signed int 
+
+    Variable Expression: a: signed int 
+
+  Variable Expression: b: float 
+(types:
+    lvalue float 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: g: function
+            with parameters
+              signed int 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue float 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: g: function
+            with parameters
+              unsigned int 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  unsigned int 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is unsigned int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is unsigned int 
+actual type is lvalue float 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Comma Expression:
+          Comma Expression:
+            Variable Expression: a: signed int 
+
+            Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+                  Comma Expression:
+            Comma Expression:
+              Variable Expression: a: signed int 
+
+              Variable Expression: a: signed int 
+
+            Variable Expression: b: signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+actual expression:
+        Comma Expression:
+          Comma Expression:
+            Variable Expression: a: signed int 
+
+            Variable Expression: a: signed int 
+
+          Variable Expression: b: float 
+--- results are
+        lvalue float 
+
+converting lvalue float 
+ to signed int 
+cost is( 1, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+                  Cast of:
+            Comma Expression:
+              Comma Expression:
+                Variable Expression: a: signed int 
+
+                Variable Expression: a: signed int 
+
+              Variable Expression: b: float 
+
+          to:
+            signed int 
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+actual expression:
+        Comma Expression:
+          Comma Expression:
+            Variable Expression: a: signed int 
+
+            Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to unsigned int 
+cost is( 0, 0, 1 )
+Case +++++++++++++
+formals are:
+        unsigned int 
+actuals are:
+                  Cast of:
+            Comma Expression:
+              Comma Expression:
+                Variable Expression: a: signed int 
+
+                Variable Expression: a: signed int 
+
+              Variable Expression: b: signed int 
+
+          to:
+            unsigned int 
+
+bindings are:
+cost of conversion is:( 0, 0, 1 )
+actual expression:
+        Comma Expression:
+          Comma Expression:
+            Variable Expression: a: signed int 
+
+            Variable Expression: a: signed int 
+
+          Variable Expression: b: float 
+--- results are
+        lvalue float 
+
+converting lvalue float 
+ to unsigned int 
+cost is( 1, 0, 0 )
+Case +++++++++++++
+formals are:
+        unsigned int 
+actuals are:
+                  Cast of:
+            Comma Expression:
+              Comma Expression:
+                Variable Expression: a: signed int 
+
+                Variable Expression: a: signed int 
+
+              Variable Expression: b: float 
+
+          to:
+            unsigned int 
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: g: function
+      with parameters
+        signed int 
+      returning 
+        nothing 
+
+to arguments
+      Comma Expression:
+      Comma Expression:
+        Variable Expression: a: signed int 
+
+        Variable Expression: a: signed int 
+
+      Variable Expression: b: signed int 
+
+(types:
+)
+Environment: 
+
+Cost ( 1, 0, 0 ): Application of
+  Variable Expression: g: function
+      with parameters
+        signed int 
+      returning 
+        nothing 
+
+to arguments
+      Cast of:
+      Comma Expression:
+        Comma Expression:
+          Variable Expression: a: signed int 
+
+          Variable Expression: a: signed int 
+
+        Variable Expression: b: float 
+
+    to:
+      signed int 
+
+(types:
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Application of
+  Variable Expression: g: function
+      with parameters
+        unsigned int 
+      returning 
+        nothing 
+
+to arguments
+      Cast of:
+      Comma Expression:
+        Comma Expression:
+          Variable Expression: a: signed int 
+
+          Variable Expression: a: signed int 
+
+        Variable Expression: b: signed int 
+
+    to:
+      unsigned int 
+
+(types:
+)
+Environment: 
+
+Cost ( 1, 0, 0 ): Application of
+  Variable Expression: g: function
+      with parameters
+        unsigned int 
+      returning 
+        nothing 
+
+to arguments
+      Cast of:
+      Comma Expression:
+        Comma Expression:
+          Variable Expression: a: signed int 
+
+          Variable Expression: a: signed int 
+
+        Variable Expression: b: float 
+
+    to:
+      unsigned int 
+
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: g: function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+  to arguments
+          Comma Expression:
+        Comma Expression:
+          Variable Expression: a: signed int 
+
+          Variable Expression: a: signed int 
+
+        Variable Expression: b: signed int 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is g
+decl is g: function
+  with parameters
+    unsigned int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: g: function
+    with parameters
+      unsigned int 
+    returning 
+      nothing 
+
+
+decl is g: function
+  with parameters
+    signed int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: g: function
+    with parameters
+      unsigned int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          unsigned int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is a
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Sizeof Expression on:   Variable Expression: a: signed int 
+
+(types:
+    unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Sizeof Expression on:   Variable Expression: a: signed int 
+
+(types:
+    unsigned int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: g: function
+            with parameters
+              signed int 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is unsigned int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: g: function
+            with parameters
+              unsigned int 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  unsigned int 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is unsigned int 
+actual type is unsigned int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Sizeof Expression on:           Variable Expression: a: signed int 
+
+--- results are
+        unsigned int 
+
+converting unsigned int 
+ to signed int 
+cost is( 1, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+                  Cast of:
+            Sizeof Expression on:               Variable Expression: a: signed int 
+
+
+          to:
+            signed int 
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+actual expression:
+        Sizeof Expression on:           Variable Expression: a: signed int 
+
+--- results are
+        unsigned int 
+
+converting unsigned int 
+ to unsigned int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        unsigned int 
+actuals are:
+                  Sizeof Expression on:             Variable Expression: a: signed int 
+
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 1, 0, 0 ): Application of
+  Variable Expression: g: function
+      with parameters
+        signed int 
+      returning 
+        nothing 
+
+to arguments
+      Cast of:
+      Sizeof Expression on:         Variable Expression: a: signed int 
+
+
+    to:
+      signed int 
+
+(types:
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: g: function
+      with parameters
+        unsigned int 
+      returning 
+        nothing 
+
+to arguments
+      Sizeof Expression on:       Variable Expression: a: signed int 
+
+
+(types:
+)
+Environment: 
+
+cost ( 0, 0, 0 ) beats ( 1, 0, 0 )
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: g: function
+        with parameters
+          unsigned int 
+        returning 
+          nothing 
+
+  to arguments
+          Sizeof Expression on:         Variable Expression: a: signed int 
+
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is g
+decl is g: function
+  with parameters
+    unsigned int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: g: function
+    with parameters
+      unsigned int 
+    returning 
+      nothing 
+
+
+decl is g: function
+  with parameters
+    signed int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: g: function
+    with parameters
+      unsigned int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          unsigned int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Sizeof Expression on: signed int 
+(types:
+    unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Sizeof Expression on: signed int 
+(types:
+    unsigned int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: g: function
+            with parameters
+              signed int 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is unsigned int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: g: function
+            with parameters
+              unsigned int 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  unsigned int 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is unsigned int 
+actual type is unsigned int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Sizeof Expression on: signed int 
+--- results are
+        unsigned int 
+
+converting unsigned int 
+ to signed int 
+cost is( 1, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+                  Cast of:
+            Sizeof Expression on: signed int 
+
+          to:
+            signed int 
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+actual expression:
+        Sizeof Expression on: signed int 
+--- results are
+        unsigned int 
+
+converting unsigned int 
+ to unsigned int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        unsigned int 
+actuals are:
+                  Sizeof Expression on: signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 1, 0, 0 ): Application of
+  Variable Expression: g: function
+      with parameters
+        signed int 
+      returning 
+        nothing 
+
+to arguments
+      Cast of:
+      Sizeof Expression on: signed int 
+
+    to:
+      signed int 
+
+(types:
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: g: function
+      with parameters
+        unsigned int 
+      returning 
+        nothing 
+
+to arguments
+      Sizeof Expression on: signed int 
+
+(types:
+)
+Environment: 
+
+cost ( 0, 0, 0 ) beats ( 1, 0, 0 )
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: g: function
+        with parameters
+          unsigned int 
+        returning 
+          nothing 
+
+  to arguments
+          Sizeof Expression on: signed int 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+int __a__i;
+int __b__i;
+float __b__f;
+void __g__F_i_(int );
+void __g__F_Ui_(unsigned int );
+void __f__F__(void){
+    __g__F_i_((__a__i , __b__i));
+    __g__F_i_(((__a__i , __a__i) , __b__i));
+    __g__F_Ui_(sizeof(__a__i));
+    __g__F_Ui_(sizeof(int ));
+}
Index: src/Tests/Expect-r/MiscError.txt
===================================================================
--- src/Tests/Expect-r/MiscError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/MiscError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,385 @@
+nameExpr is g
+decl is g: function
+  with parameters
+    signed int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is b
+decl is b: float 
+newExpr is Variable Expression: b: float 
+
+decl is b: signed int 
+newExpr is Variable Expression: b: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: float 
+(types:
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Variable Expression: b: signed int 
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Cast of:
+  Variable Expression: b: float 
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+marking ambiguous
+there are 1 alternatives before elimination
+nameExpr is g
+decl is g: function
+  with parameters
+    signed int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is b
+decl is b: float 
+newExpr is Variable Expression: b: float 
+
+decl is b: signed int 
+newExpr is Variable Expression: b: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: float 
+(types:
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Variable Expression: b: signed int 
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Cast of:
+  Variable Expression: b: float 
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+marking ambiguous
+there are 1 alternatives before elimination
+nameExpr is g
+decl is g: function
+  with parameters
+    signed int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is a
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Variable Expression: a: signed int 
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is b
+decl is b: float 
+newExpr is Variable Expression: b: float 
+
+decl is b: signed int 
+newExpr is Variable Expression: b: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: float 
+(types:
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Comma Expression:
+  Variable Expression: a: signed int 
+
+  Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Comma Expression:
+  Variable Expression: a: signed int 
+
+  Variable Expression: b: float 
+(types:
+    lvalue float 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Comma Expression:
+    Variable Expression: a: signed int 
+
+    Variable Expression: b: signed int 
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+Cost ( 0, 0, 1 ): Cast of:
+  Comma Expression:
+    Variable Expression: a: signed int 
+
+    Variable Expression: b: float 
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+marking ambiguous
+there are 1 alternatives before elimination
+nameExpr is b
+decl is b: float 
+newExpr is Variable Expression: b: float 
+
+decl is b: signed int 
+newExpr is Variable Expression: b: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: float 
+(types:
+    lvalue float 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+Error: Can't choose between alternatives for expression Cast of:
+  Name: b
+
+to:
+  nothing
+Alternatives are:        Cost ( 0, 0, 1 ):         Cast of:
+          Variable Expression: b: signed int 
+
+        to:
+          nothing
+(types:
+)
+        Environment: 
+
+        Cost ( 0, 0, 1 ):         Cast of:
+          Variable Expression: b: float 
+
+        to:
+          nothing
+(types:
+)
+        Environment: 
+
+
+Error: Can't choose between alternatives for expression Cast of:
+  Name: b
+
+to:
+  nothing
+Alternatives are:        Cost ( 0, 0, 1 ):         Cast of:
+          Variable Expression: b: signed int 
+
+        to:
+          nothing
+(types:
+)
+        Environment: 
+
+        Cost ( 0, 0, 1 ):         Cast of:
+          Variable Expression: b: float 
+
+        to:
+          nothing
+(types:
+)
+        Environment: 
+
+
+Error: Can't choose between alternatives for expression Cast of:
+  Comma Expression:
+    Name: a
+
+    Name: b
+
+to:
+  nothing
+Alternatives are:        Cost ( 0, 0, 1 ):         Cast of:
+          Comma Expression:
+            Variable Expression: a: signed int 
+
+            Variable Expression: b: signed int 
+
+        to:
+          nothing
+(types:
+)
+        Environment: 
+
+        Cost ( 0, 0, 1 ):         Cast of:
+          Comma Expression:
+            Variable Expression: a: signed int 
+
+            Variable Expression: b: float 
+
+        to:
+          nothing
+(types:
+)
+        Environment: 
+
+
+Error: Ambiguous expression in sizeof operand: Name: b
+
Index: src/Tests/Expect-r/NamedParmArg.txt
===================================================================
--- src/Tests/Expect-r/NamedParmArg.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/NamedParmArg.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,1095 @@
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+constant expression 3 signed int 
+to:
+  signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is 0
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+constant expression 3 signed int 
+to:
+  signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is f1
+decl is f1: function
+  with parameters
+    i: signed int with initializer 
+      Simple Initializer:         Cast of:
+constant expression 3 signed int 
+        to:
+          signed int 
+        with environment:
+          Types:
+          Non-types:
+
+    j: pointer to signed int with initializer 
+      Simple Initializer:         Name: 0
+
+  returning 
+    signed int 
+  with body 
+    CompoundStmt
+
+newExpr is Variable Expression: f1: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer:           Cast of:
+constant expression 3 signed int 
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      j: pointer to signed int with initializer 
+        Simple Initializer:           Name: 0
+
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f1: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer:           Cast of:
+constant expression 3 signed int 
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      j: pointer to signed int with initializer 
+        Simple Initializer:           Name: 0
+
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          i: signed int with initializer 
+            Simple Initializer:               Cast of:
+constant expression 3 signed int 
+              to:
+                signed int 
+              with environment:
+                Types:
+                Non-types:
+
+          j: pointer to signed int with initializer 
+            Simple Initializer:               Name: 0
+
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f1: function
+            with parameters
+              i: signed int with initializer 
+                Simple Initializer:                   Cast of:
+constant expression 3 signed int 
+                  to:
+                    signed int 
+                  with environment:
+                    Types:
+                    Non-types:
+
+              j: pointer to signed int with initializer 
+                Simple Initializer:                   Name: 0
+
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  i: signed int with initializer 
+                    Simple Initializer:                       Cast of:
+constant expression 3 signed int 
+                      to:
+                        signed int 
+                      with environment:
+                        Types:
+                        Non-types:
+
+                  j: pointer to signed int with initializer 
+                    Simple Initializer:                       Name: 0
+
+                returning 
+                  signed int 
+
+)
+        Environment: 
+nameExpr is f1
+decl is f1: function
+  with parameters
+    i: signed int with initializer 
+      Simple Initializer:         Cast of:
+constant expression 3 signed int 
+        to:
+          signed int 
+        with environment:
+          Types:
+          Non-types:
+
+    j: pointer to signed int with initializer 
+      Simple Initializer:         Name: 0
+
+  returning 
+    signed int 
+  with body 
+    CompoundStmt
+
+newExpr is Variable Expression: f1: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer:           Cast of:
+constant expression 3 signed int 
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      j: pointer to signed int with initializer 
+        Simple Initializer:           Name: 0
+
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f1: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer:           Cast of:
+constant expression 3 signed int 
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      j: pointer to signed int with initializer 
+        Simple Initializer:           Name: 0
+
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          i: signed int with initializer 
+            Simple Initializer:               Cast of:
+constant expression 3 signed int 
+              to:
+                signed int 
+              with environment:
+                Types:
+                Non-types:
+
+          j: pointer to signed int with initializer 
+            Simple Initializer:               Name: 0
+
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f1: function
+            with parameters
+              i: signed int with initializer 
+                Simple Initializer:                   Cast of:
+constant expression 3 signed int 
+                  to:
+                    signed int 
+                  with environment:
+                    Types:
+                    Non-types:
+
+              j: pointer to signed int with initializer 
+                Simple Initializer:                   Name: 0
+
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  i: signed int with initializer 
+                    Simple Initializer:                       Cast of:
+constant expression 3 signed int 
+                      to:
+                        signed int 
+                      with environment:
+                        Types:
+                        Non-types:
+
+                  j: pointer to signed int with initializer 
+                    Simple Initializer:                       Name: 0
+
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is signed int 
+nameExpr is f1
+decl is f1: function
+  with parameters
+    i: signed int with initializer 
+      Simple Initializer:         Cast of:
+constant expression 3 signed int 
+        to:
+          signed int 
+        with environment:
+          Types:
+          Non-types:
+
+    j: pointer to signed int with initializer 
+      Simple Initializer:         Name: 0
+
+  returning 
+    signed int 
+  with body 
+    CompoundStmt
+
+newExpr is Variable Expression: f1: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer:           Cast of:
+constant expression 3 signed int 
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      j: pointer to signed int with initializer 
+        Simple Initializer:           Name: 0
+
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f1: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer:           Cast of:
+constant expression 3 signed int 
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      j: pointer to signed int with initializer 
+        Simple Initializer:           Name: 0
+
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          i: signed int with initializer 
+            Simple Initializer:               Cast of:
+constant expression 3 signed int 
+              to:
+                signed int 
+              with environment:
+                Types:
+                Non-types:
+
+          j: pointer to signed int with initializer 
+            Simple Initializer:               Name: 0
+
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f1: function
+            with parameters
+              i: signed int with initializer 
+                Simple Initializer:                   Cast of:
+constant expression 3 signed int 
+                  to:
+                    signed int 
+                  with environment:
+                    Types:
+                    Non-types:
+
+              j: pointer to signed int with initializer 
+                Simple Initializer:                   Name: 0
+
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  i: signed int with initializer 
+                    Simple Initializer:                       Cast of:
+constant expression 3 signed int 
+                      to:
+                        signed int 
+                      with environment:
+                        Types:
+                        Non-types:
+
+                  j: pointer to signed int with initializer 
+                    Simple Initializer:                       Name: 0
+
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is signed int 
+nameExpr is f1
+decl is f1: function
+  with parameters
+    i: signed int with initializer 
+      Simple Initializer:         Cast of:
+constant expression 3 signed int 
+        to:
+          signed int 
+        with environment:
+          Types:
+          Non-types:
+
+    j: pointer to signed int with initializer 
+      Simple Initializer:         Name: 0
+
+  returning 
+    signed int 
+  with body 
+    CompoundStmt
+
+newExpr is Variable Expression: f1: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer:           Cast of:
+constant expression 3 signed int 
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      j: pointer to signed int with initializer 
+        Simple Initializer:           Name: 0
+
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f1: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer:           Cast of:
+constant expression 3 signed int 
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      j: pointer to signed int with initializer 
+        Simple Initializer:           Name: 0
+
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          i: signed int with initializer 
+            Simple Initializer:               Cast of:
+constant expression 3 signed int 
+              to:
+                signed int 
+              with environment:
+                Types:
+                Non-types:
+
+          j: pointer to signed int with initializer 
+            Simple Initializer:               Name: 0
+
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+nameExpr is 0
+nameExpr is f1
+decl is f1: function
+  with parameters
+    i: signed int with initializer 
+      Simple Initializer:         Cast of:
+constant expression 3 signed int 
+        to:
+          signed int 
+        with environment:
+          Types:
+          Non-types:
+
+    j: pointer to signed int with initializer 
+      Simple Initializer:         Name: 0
+
+  returning 
+    signed int 
+  with body 
+    CompoundStmt
+
+newExpr is Variable Expression: f1: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer:           Cast of:
+constant expression 3 signed int 
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      j: pointer to signed int with initializer 
+        Simple Initializer:           Name: 0
+
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f1: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer:           Cast of:
+constant expression 3 signed int 
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      j: pointer to signed int with initializer 
+        Simple Initializer:           Name: 0
+
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          i: signed int with initializer 
+            Simple Initializer:               Cast of:
+constant expression 3 signed int 
+              to:
+                signed int 
+              with environment:
+                Types:
+                Non-types:
+
+          j: pointer to signed int with initializer 
+            Simple Initializer:               Name: 0
+
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+nameExpr is 0
+nameExpr is f1
+decl is f1: function
+  with parameters
+    i: signed int with initializer 
+      Simple Initializer:         Cast of:
+constant expression 3 signed int 
+        to:
+          signed int 
+        with environment:
+          Types:
+          Non-types:
+
+    j: pointer to signed int with initializer 
+      Simple Initializer:         Name: 0
+
+  returning 
+    signed int 
+  with body 
+    CompoundStmt
+
+newExpr is Variable Expression: f1: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer:           Cast of:
+constant expression 3 signed int 
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      j: pointer to signed int with initializer 
+        Simple Initializer:           Name: 0
+
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f1: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer:           Cast of:
+constant expression 3 signed int 
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      j: pointer to signed int with initializer 
+        Simple Initializer:           Name: 0
+
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          i: signed int with initializer 
+            Simple Initializer:               Cast of:
+constant expression 3 signed int 
+              to:
+                signed int 
+              with environment:
+                Types:
+                Non-types:
+
+          j: pointer to signed int with initializer 
+            Simple Initializer:               Name: 0
+
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is 0
+nameExpr is f1
+decl is f1: function
+  with parameters
+    i: signed int with initializer 
+      Simple Initializer:         Cast of:
+constant expression 3 signed int 
+        to:
+          signed int 
+        with environment:
+          Types:
+          Non-types:
+
+    j: pointer to signed int with initializer 
+      Simple Initializer:         Name: 0
+
+  returning 
+    signed int 
+  with body 
+    CompoundStmt
+
+newExpr is Variable Expression: f1: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer:           Cast of:
+constant expression 3 signed int 
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      j: pointer to signed int with initializer 
+        Simple Initializer:           Name: 0
+
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f1: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer:           Cast of:
+constant expression 3 signed int 
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      j: pointer to signed int with initializer 
+        Simple Initializer:           Name: 0
+
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          i: signed int with initializer 
+            Simple Initializer:               Cast of:
+constant expression 3 signed int 
+              to:
+                signed int 
+              with environment:
+                Types:
+                Non-types:
+
+          j: pointer to signed int with initializer 
+            Simple Initializer:               Name: 0
+
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int with designator:  Name: i
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 3 signed int with designator:  Name: i
+(types:
+    signed int 
+)
+Environment: 
+
+nameExpr is 0
+nameExpr is f1
+decl is f1: function
+  with parameters
+    i: signed int with initializer 
+      Simple Initializer:         Cast of:
+constant expression 3 signed int 
+        to:
+          signed int 
+        with environment:
+          Types:
+          Non-types:
+
+    j: pointer to signed int with initializer 
+      Simple Initializer:         Name: 0
+
+  returning 
+    signed int 
+  with body 
+    CompoundStmt
+
+newExpr is Variable Expression: f1: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer:           Cast of:
+constant expression 3 signed int 
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      j: pointer to signed int with initializer 
+        Simple Initializer:           Name: 0
+
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f1: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer:           Cast of:
+constant expression 3 signed int 
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      j: pointer to signed int with initializer 
+        Simple Initializer:           Name: 0
+
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          i: signed int with initializer 
+            Simple Initializer:               Cast of:
+constant expression 3 signed int 
+              to:
+                signed int 
+              with environment:
+                Types:
+                Non-types:
+
+          j: pointer to signed int with initializer 
+            Simple Initializer:               Name: 0
+
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is 0
+nameExpr is f1
+decl is f1: function
+  with parameters
+    i: signed int with initializer 
+      Simple Initializer:         Cast of:
+constant expression 3 signed int 
+        to:
+          signed int 
+        with environment:
+          Types:
+          Non-types:
+
+    j: pointer to signed int with initializer 
+      Simple Initializer:         Name: 0
+
+  returning 
+    signed int 
+  with body 
+    CompoundStmt
+
+newExpr is Variable Expression: f1: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer:           Cast of:
+constant expression 3 signed int 
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      j: pointer to signed int with initializer 
+        Simple Initializer:           Name: 0
+
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f1: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer:           Cast of:
+constant expression 3 signed int 
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      j: pointer to signed int with initializer 
+        Simple Initializer:           Name: 0
+
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          i: signed int with initializer 
+            Simple Initializer:               Cast of:
+constant expression 3 signed int 
+              to:
+                signed int 
+              with environment:
+                Types:
+                Non-types:
+
+          j: pointer to signed int with initializer 
+            Simple Initializer:               Name: 0
+
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is f2
+decl is f2: function
+  with parameters
+    i: signed int with initializer 
+      Simple Initializer:         Cast of:
+constant expression 3 signed int 
+        to:
+          signed int 
+        with environment:
+          Types:
+          Non-types:
+
+    j: pointer to signed int 
+  returning 
+    signed int 
+    signed int 
+  with body 
+    CompoundStmt
+
+newExpr is Variable Expression: f2: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer:           Cast of:
+constant expression 3 signed int 
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      j: pointer to signed int 
+    returning 
+      signed int 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f2: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer:           Cast of:
+constant expression 3 signed int 
+          to:
+            signed int 
+          with environment:
+            Types:
+            Non-types:
+
+      j: pointer to signed int 
+    returning 
+      signed int 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          i: signed int with initializer 
+            Simple Initializer:               Cast of:
+constant expression 3 signed int 
+              to:
+                signed int 
+              with environment:
+                Types:
+                Non-types:
+
+          j: pointer to signed int 
+        returning 
+          signed int 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f2: function
+            with parameters
+              i: signed int with initializer 
+                Simple Initializer:                   Cast of:
+constant expression 3 signed int 
+                  to:
+                    signed int 
+                  with environment:
+                    Types:
+                    Non-types:
+
+              j: pointer to signed int 
+            returning 
+              signed int 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  i: signed int with initializer 
+                    Simple Initializer:                       Cast of:
+constant expression 3 signed int 
+                      to:
+                        signed int 
+                      with environment:
+                        Types:
+                        Non-types:
+
+                  j: pointer to signed int 
+                returning 
+                  signed int 
+                  signed int 
+
+)
+        Environment: 
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: f1
+...to: 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: f1
+...to: 
+constant expression 3 signed int 
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: f1
+...to: 
+constant expression 3 signed int 
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Name: 0
+with designator:  Name: j
+
+Error: No reasonable alternatives for expression Name: 0
+with designator:  Name: j
+
+Error: No reasonable alternatives for expression Name: 0
+with designator:  Name: j
+
+Error: No reasonable alternatives for expression Name: 0
+with designator:  Name: j
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: f2
+...to: 
+with designator:  Tuple:
+          Name: j
+
+          Name: i
+
+
Index: src/Tests/Expect-r/NumericConstants.txt
===================================================================
--- src/Tests/Expect-r/NumericConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/NumericConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,744 @@
+nameExpr is 1
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 21 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 21 signed int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 2147483647 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 2147483647 signed int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 37LL long long signed int (types:
+    long long signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 37LL long long signed int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 45ull long long unsigned int (types:
+    long long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 45ull long long unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 89llu long long unsigned int (types:
+    long long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 89llu long long unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 99LLu long long unsigned int (types:
+    long long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 99LLu long long unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 56lu long unsigned int (types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 56lu long unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 88LLu long long unsigned int (types:
+    long long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 88LLu long long unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 0u unsigned int (types:
+    unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 0u unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 0377 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 0377 signed int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 0377ul long unsigned int (types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 0377ul long unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 0x1 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 0x1 signed int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 0x1u unsigned int (types:
+    unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 0x1u unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 0xabL long signed int (types:
+    long signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 0xabL long signed int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 0x80000000 unsigned int (types:
+    unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 0x80000000 unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 0xfff signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 0xfff signed int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 0xef3daa5c unsigned int (types:
+    unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 0xef3daa5c unsigned int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 0x3LL long long signed int (types:
+    long long signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 0x3LL long long signed int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3. double (types:
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 3. double 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3100. double (types:
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 3100. double 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 1000000. double (types:
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 1000000. double 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3.1 double (types:
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 3.1 double 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3.141592654L long double (types:
+    long double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 3.141592654L long double 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 123456.123456 double (types:
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 123456.123456 double 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3E1 double (types:
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 3E1 double 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3e1f float (types:
+    float 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 3e1f float 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3E11F float (types:
+    float 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 3E11F float 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3E11 double (types:
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 3E11 double 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3e+11 double (types:
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 3e+11 double 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3E-11 double (types:
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 3E-11 double 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3.0E1 double (types:
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 3.0E1 double 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3.0E1L long double (types:
+    long double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 3.0E1L long double 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3.0e11 double (types:
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 3.0e11 double 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3.0E11l long double (types:
+    long double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 3.0E11l long double 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3.0e+11l long double (types:
+    long double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 3.0e+11l long double 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3.0E-11 double (types:
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 3.0E-11 double 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 123456.123456E-16 double (types:
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 123456.123456E-16 double 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 0xff.ffp0 double (types:
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 0xff.ffp0 double 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 0x1.ffffffffp128l long double (types:
+    long double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 0x1.ffffffffp128l long double 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+Error: No reasonable alternatives for expression Name: 1
+
Index: src/Tests/Expect-r/OccursError.txt
===================================================================
--- src/Tests/Expect-r/OccursError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/OccursError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,303 @@
+nameExpr is f
+decl is f: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    pointer to function
+        with parameters
+          instance of type T (not function type) 
+          pointer to instance of type T (not function type) 
+        returning 
+          nothing 
+
+  returning 
+    nothing 
+
+newExpr is Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      pointer to function
+          with parameters
+            instance of type T (not function type) 
+            pointer to instance of type T (not function type) 
+          returning 
+            nothing 
+
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      pointer to function
+          with parameters
+            instance of type T (not function type) 
+            pointer to instance of type T (not function type) 
+          returning 
+            nothing 
+
+    returning 
+      nothing 
+
+(types:
+    pointer to forall
+          _0_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+
+        function
+        with parameters
+          pointer to function
+              with parameters
+                instance of type _0_T (not function type) 
+                pointer to instance of type _0_T (not function type) 
+              returning 
+                nothing 
+
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is g
+decl is g: forall
+    U: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type U (not function type) 
+              instance of type U (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+
+  function
+  with parameters
+    pointer to instance of type U (not function type) 
+    instance of type U (not function type) 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: g: forall
+      U: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      pointer to instance of type U (not function type) 
+      instance of type U (not function type) 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: g: forall
+      U: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      pointer to instance of type U (not function type) 
+      instance of type U (not function type) 
+    returning 
+      nothing 
+
+(types:
+    pointer to forall
+          _1_U: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _1_U (not function type) 
+                    instance of type _1_U (not function type) 
+                  returning 
+                    instance of type _1_U (not function type) 
+
+
+        function
+        with parameters
+          pointer to instance of type _1_U (not function type) 
+          instance of type _1_U (not function type) 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: g: forall
+      U: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      pointer to instance of type U (not function type) 
+      instance of type U (not function type) 
+    returning 
+      nothing 
+
+(types:
+    pointer to forall
+          _1_U: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _1_U (not function type) 
+                    instance of type _1_U (not function type) 
+                  returning 
+                    instance of type _1_U (not function type) 
+
+
+        function
+        with parameters
+          pointer to instance of type _1_U (not function type) 
+          instance of type _1_U (not function type) 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              pointer to function
+                  with parameters
+                    instance of type T (not function type) 
+                    pointer to instance of type T (not function type) 
+                  returning 
+                    nothing 
+
+            returning 
+              nothing 
+
+(types:
+            pointer to forall
+                  _0_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _0_T (not function type) 
+
+
+                function
+                with parameters
+                  pointer to function
+                      with parameters
+                        instance of type _0_T (not function type) 
+                        pointer to instance of type _0_T (not function type) 
+                      returning 
+                        nothing 
+
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    pointer to instance of type _0_T (not function type) 
+  returning 
+    nothing 
+
+actual type is pointer to forall
+    _1_U: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type _1_U (not function type) 
+              instance of type _1_U (not function type) 
+            returning 
+              instance of type _1_U (not function type) 
+
+
+  function
+  with parameters
+    pointer to instance of type _1_U (not function type) 
+    instance of type _1_U (not function type) 
+  returning 
+    nothing 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: f
+...to: 
+    Name: g
+
Index: src/Tests/Expect-r/Operators.txt
===================================================================
--- src/Tests/Expect-r/Operators.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Operators.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,1796 @@
+nameExpr is ?*?
+decl is ?*?: function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?*?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?*?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is number1
+decl is number1: signed int 
+newExpr is Variable Expression: number1: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: number1: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: number1: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is number2
+decl is number2: signed int 
+newExpr is Variable Expression: number2: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: number2: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: number2: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?*?: function
+            with parameters
+              signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Variable Expression: number1: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: number2: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+actuals are:
+                  Variable Expression: number1: signed int 
+
+                  Variable Expression: number2: signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?*?: function
+      with parameters
+        signed int 
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Variable Expression: number1: signed int 
+
+      Variable Expression: number2: signed int 
+
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: ?*?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: number1: signed int 
+
+          Variable Expression: number2: signed int 
+
+
+to:
+  signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct accumulator 
+    _src: instance of struct accumulator 
+  returning 
+    instance of struct accumulator 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  total: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct accumulator 
+              Member Expression, with field: 
+                total: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct accumulator 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct accumulator 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct accumulator 
+      _src: instance of struct accumulator 
+    returning 
+      instance of struct accumulator 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct accumulator 
+      _src: instance of struct accumulator 
+    returning 
+      instance of struct accumulator 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct accumulator 
+          _src: instance of struct accumulator 
+        returning 
+          instance of struct accumulator 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  total: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct accumulator 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    total: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct accumulator 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    total: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct accumulator 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  total: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct accumulator 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  total: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct accumulator 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is pointer to signed int 
+actual type is pointer to signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct accumulator 
+              _src: instance of struct accumulator 
+            returning 
+              instance of struct accumulator 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct accumulator 
+                  _src: instance of struct accumulator 
+                returning 
+                  instance of struct accumulator 
+
+)
+        Environment: 
+formal type is pointer to instance of struct accumulator 
+actual type is pointer to signed int 
+actual expression:
+        Address of:
+          Member Expression, with field: 
+            total: signed int 
+          from aggregate: 
+            Applying untyped: 
+                Name: *?
+            ...to: 
+                Variable Expression: _dst: pointer to instance of struct accumulator 
+--- results are
+        pointer to signed int 
+
+converting pointer to signed int 
+ to pointer to signed int 
+cost is( 0, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          total: signed int 
+        from aggregate: 
+          Variable Expression: _src: instance of struct accumulator 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        pointer to signed int 
+        signed int 
+actuals are:
+                  Address of:
+            Member Expression, with field: 
+              total: signed int 
+            from aggregate: 
+              Applying untyped: 
+                  Name: *?
+              ...to: 
+                  Variable Expression: _dst: pointer to instance of struct accumulator 
+
+                  Member Expression, with field: 
+            total: signed int 
+          from aggregate: 
+            Variable Expression: _src: instance of struct accumulator 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?=?: function
+      with parameters
+        pointer to signed int 
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Address of:
+      Member Expression, with field: 
+        total: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct accumulator 
+
+      Member Expression, with field: 
+      total: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct accumulator 
+
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?=?: function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Address of:
+        Member Expression, with field: 
+          total: signed int 
+        from aggregate: 
+          Applying untyped: 
+              Name: *?
+          ...to: 
+              Variable Expression: _dst: pointer to instance of struct accumulator 
+
+          Member Expression, with field: 
+        total: signed int 
+      from aggregate: 
+        Variable Expression: _src: instance of struct accumulator 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct accumulator 
+(types:
+    lvalue instance of struct accumulator 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct accumulator 
+
+to:
+  instance of struct accumulator 
+(types:
+    instance of struct accumulator 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?()
+decl is ?(): function
+  with parameters
+    a: instance of struct accumulator 
+    number1: char 
+    number2: char 
+  returning 
+    char 
+
+newExpr is Variable Expression: ?(): function
+    with parameters
+      a: instance of struct accumulator 
+      number1: char 
+      number2: char 
+    returning 
+      char 
+
+
+decl is ?(): function
+  with parameters
+    number1: signed int 
+    number2: signed int 
+  returning 
+    signed int 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Cast of:
+  Application of
+    Variable Expression: ?*?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: number1: signed int 
+
+          Variable Expression: number2: signed int 
+
+
+to:
+  signed int 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?(): function
+    with parameters
+      number1: signed int 
+      number2: signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?(): function
+    with parameters
+      a: instance of struct accumulator 
+      number1: char 
+      number2: char 
+    returning 
+      char 
+
+(types:
+    pointer to function
+        with parameters
+          a: instance of struct accumulator 
+          number1: char 
+          number2: char 
+        returning 
+          char 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?(): function
+    with parameters
+      number1: signed int 
+      number2: signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          number1: signed int 
+          number2: signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is a
+decl is a: char 
+newExpr is Variable Expression: a: char 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+nameExpr is b
+decl is b: char 
+newExpr is Variable Expression: b: char 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: b: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?(): function
+            with parameters
+              number1: signed int 
+              number2: signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  number1: signed int 
+                  number2: signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue char 
+formal type is signed int 
+actual type is lvalue char 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?(): function
+            with parameters
+              a: instance of struct accumulator 
+              number1: char 
+              number2: char 
+            returning 
+              char 
+
+(types:
+            pointer to function
+                with parameters
+                  a: instance of struct accumulator 
+                  number1: char 
+                  number2: char 
+                returning 
+                  char 
+
+)
+        Environment: 
+formal type is instance of struct accumulator 
+actual type is lvalue char 
+actual expression:
+        Variable Expression: a: char 
+--- results are
+        lvalue char 
+
+converting lvalue char 
+ to signed int 
+cost is( 0, 0, 4 )
+actual expression:
+        Variable Expression: b: char 
+--- results are
+        lvalue char 
+
+converting lvalue char 
+ to signed int 
+cost is( 0, 0, 4 )
+Case +++++++++++++
+formals are:
+        number1: signed int 
+        number2: signed int 
+actuals are:
+                  Cast of:
+            Variable Expression: a: char 
+
+          to:
+            signed int 
+
+                  Cast of:
+            Variable Expression: b: char 
+
+          to:
+            signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 8 )
+alternatives before prune:
+Cost ( 0, 0, 8 ): Application of
+  Variable Expression: ?(): function
+      with parameters
+        number1: signed int 
+        number2: signed int 
+      returning 
+        signed int 
+
+to arguments
+      Cast of:
+      Variable Expression: a: char 
+
+    to:
+      signed int 
+
+      Cast of:
+      Variable Expression: b: char 
+
+    to:
+      signed int 
+
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?(): function
+        with parameters
+          number1: signed int 
+          number2: signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Cast of:
+        Variable Expression: a: char 
+
+      to:
+        signed int 
+
+          Cast of:
+        Variable Expression: b: char 
+
+      to:
+        signed int 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is a
+decl is a: char 
+newExpr is Variable Expression: a: char 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is b
+decl is b: char 
+newExpr is Variable Expression: b: char 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: b: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: a: char 
+(types:
+            lvalue char 
+)
+        Environment: 
+nameExpr is ?()
+decl is ?(): function
+  with parameters
+    a: instance of struct accumulator 
+    number1: char 
+    number2: char 
+  returning 
+    char 
+
+newExpr is Variable Expression: ?(): function
+    with parameters
+      a: instance of struct accumulator 
+      number1: char 
+      number2: char 
+    returning 
+      char 
+
+
+decl is ?(): function
+  with parameters
+    number1: signed int 
+    number2: signed int 
+  returning 
+    signed int 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Cast of:
+  Application of
+    Variable Expression: ?*?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: number1: signed int 
+
+          Variable Expression: number2: signed int 
+
+
+to:
+  signed int 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?(): function
+    with parameters
+      number1: signed int 
+      number2: signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?(): function
+    with parameters
+      a: instance of struct accumulator 
+      number1: char 
+      number2: char 
+    returning 
+      char 
+
+(types:
+    pointer to function
+        with parameters
+          a: instance of struct accumulator 
+          number1: char 
+          number2: char 
+        returning 
+          char 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?(): function
+    with parameters
+      number1: signed int 
+      number2: signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          number1: signed int 
+          number2: signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+known function ops:
+        Cost ( 0, 0, 0 ):         Variable Expression: ?(): function
+            with parameters
+              number1: signed int 
+              number2: signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  number1: signed int 
+                  number2: signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+
+        Cost ( 0, 0, 0 ):         Variable Expression: ?(): function
+            with parameters
+              a: instance of struct accumulator 
+              number1: char 
+              number2: char 
+            returning 
+              char 
+
+(types:
+            pointer to function
+                with parameters
+                  a: instance of struct accumulator 
+                  number1: char 
+                  number2: char 
+                returning 
+                  char 
+
+)
+        Environment: 
+
+formal type is signed int 
+actual type is lvalue char 
+formal type is signed int 
+actual type is lvalue char 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is instance of struct accumulator 
+actual type is lvalue char 
+actual expression:
+        Variable Expression: a: char 
+--- results are
+        lvalue char 
+
+converting lvalue char 
+ to signed int 
+cost is( 0, 0, 4 )
+actual expression:
+        Variable Expression: b: char 
+--- results are
+        lvalue char 
+
+converting lvalue char 
+ to signed int 
+cost is( 0, 0, 4 )
+Case +++++++++++++
+formals are:
+        number1: signed int 
+        number2: signed int 
+actuals are:
+                  Cast of:
+            Variable Expression: a: char 
+
+          to:
+            signed int 
+
+                  Cast of:
+            Variable Expression: b: char 
+
+          to:
+            signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 8 )
+alternatives before prune:
+Cost ( 0, 0, 8 ): Application of
+  Variable Expression: ?(): function
+      with parameters
+        number1: signed int 
+        number2: signed int 
+      returning 
+        signed int 
+
+to arguments
+      Cast of:
+      Variable Expression: a: char 
+
+    to:
+      signed int 
+
+      Cast of:
+      Variable Expression: b: char 
+
+    to:
+      signed int 
+
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?(): function
+        with parameters
+          number1: signed int 
+          number2: signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Cast of:
+        Variable Expression: a: char 
+
+      to:
+        signed int 
+
+          Cast of:
+        Variable Expression: b: char 
+
+      to:
+        signed int 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?+?
+decl is ?+?: function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?+?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?+?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is a
+decl is a: char 
+newExpr is Variable Expression: a: char 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+nameExpr is b
+decl is b: char 
+newExpr is Variable Expression: b: char 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: b: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?+?: function
+            with parameters
+              signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue char 
+formal type is signed int 
+actual type is lvalue char 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Variable Expression: a: char 
+--- results are
+        lvalue char 
+
+converting lvalue char 
+ to signed int 
+cost is( 0, 0, 4 )
+actual expression:
+        Variable Expression: b: char 
+--- results are
+        lvalue char 
+
+converting lvalue char 
+ to signed int 
+cost is( 0, 0, 4 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+actuals are:
+                  Cast of:
+            Variable Expression: a: char 
+
+          to:
+            signed int 
+
+                  Cast of:
+            Variable Expression: b: char 
+
+          to:
+            signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 8 )
+alternatives before prune:
+Cost ( 0, 0, 8 ): Application of
+  Variable Expression: ?+?: function
+      with parameters
+        signed int 
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Cast of:
+      Variable Expression: a: char 
+
+    to:
+      signed int 
+
+      Cast of:
+      Variable Expression: b: char 
+
+    to:
+      signed int 
+
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?+?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Cast of:
+        Variable Expression: a: char 
+
+      to:
+        signed int 
+
+          Cast of:
+        Variable Expression: b: char 
+
+      to:
+        signed int 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?+?
+decl is ?+?: instance of struct accumulator 
+newExpr is Variable Expression: ?+?: instance of struct accumulator 
+
+decl is ?+?: function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?+?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?+?: instance of struct accumulator 
+(types:
+    lvalue instance of struct accumulator 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?+?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is a
+decl is a: char 
+newExpr is Variable Expression: a: char 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+nameExpr is b
+decl is b: char 
+newExpr is Variable Expression: b: char 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: b: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?+?: function
+            with parameters
+              signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue char 
+formal type is signed int 
+actual type is lvalue char 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?+?: instance of struct accumulator 
+(types:
+            lvalue instance of struct accumulator 
+)
+        Environment: 
+nameExpr is ?()
+decl is ?(): function
+  with parameters
+    a: instance of struct accumulator 
+    number1: char 
+    number2: char 
+  returning 
+    char 
+
+newExpr is Variable Expression: ?(): function
+    with parameters
+      a: instance of struct accumulator 
+      number1: char 
+      number2: char 
+    returning 
+      char 
+
+
+decl is ?(): function
+  with parameters
+    number1: signed int 
+    number2: signed int 
+  returning 
+    signed int 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Cast of:
+  Application of
+    Variable Expression: ?*?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: number1: signed int 
+
+          Variable Expression: number2: signed int 
+
+
+to:
+  signed int 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?(): function
+    with parameters
+      number1: signed int 
+      number2: signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?(): function
+    with parameters
+      a: instance of struct accumulator 
+      number1: char 
+      number2: char 
+    returning 
+      char 
+
+(types:
+    pointer to function
+        with parameters
+          a: instance of struct accumulator 
+          number1: char 
+          number2: char 
+        returning 
+          char 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?(): function
+    with parameters
+      number1: signed int 
+      number2: signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          number1: signed int 
+          number2: signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+known function ops:
+        Cost ( 0, 0, 0 ):         Variable Expression: ?(): function
+            with parameters
+              number1: signed int 
+              number2: signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  number1: signed int 
+                  number2: signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+
+        Cost ( 0, 0, 0 ):         Variable Expression: ?(): function
+            with parameters
+              a: instance of struct accumulator 
+              number1: char 
+              number2: char 
+            returning 
+              char 
+
+(types:
+            pointer to function
+                with parameters
+                  a: instance of struct accumulator 
+                  number1: char 
+                  number2: char 
+                returning 
+                  char 
+
+)
+        Environment: 
+
+formal type is signed int 
+actual type is lvalue instance of struct accumulator 
+formal type is instance of struct accumulator 
+actual type is lvalue instance of struct accumulator 
+formal type is char 
+actual type is lvalue char 
+formal type is char 
+actual type is lvalue char 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Variable Expression: a: char 
+--- results are
+        lvalue char 
+
+converting lvalue char 
+ to signed int 
+cost is( 0, 0, 4 )
+actual expression:
+        Variable Expression: b: char 
+--- results are
+        lvalue char 
+
+converting lvalue char 
+ to signed int 
+cost is( 0, 0, 4 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+actuals are:
+                  Cast of:
+            Variable Expression: a: char 
+
+          to:
+            signed int 
+
+                  Cast of:
+            Variable Expression: b: char 
+
+          to:
+            signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 8 )
+actual expression:
+        Variable Expression: ?+?: instance of struct accumulator 
+--- results are
+        lvalue instance of struct accumulator 
+
+converting lvalue instance of struct accumulator 
+ to instance of struct accumulator 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: a: char 
+--- results are
+        lvalue char 
+
+converting lvalue char 
+ to char 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: b: char 
+--- results are
+        lvalue char 
+
+converting lvalue char 
+ to char 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        a: instance of struct accumulator 
+        number1: char 
+        number2: char 
+actuals are:
+                  Variable Expression: ?+?: instance of struct accumulator 
+
+                  Variable Expression: a: char 
+
+                  Variable Expression: b: char 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 8 ): Application of
+  Variable Expression: ?+?: function
+      with parameters
+        signed int 
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Cast of:
+      Variable Expression: a: char 
+
+    to:
+      signed int 
+
+      Cast of:
+      Variable Expression: b: char 
+
+    to:
+      signed int 
+
+(types:
+    signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?(): function
+      with parameters
+        a: instance of struct accumulator 
+        number1: char 
+        number2: char 
+      returning 
+        char 
+
+to arguments
+      Variable Expression: ?+?: instance of struct accumulator 
+
+      Variable Expression: a: char 
+
+      Variable Expression: b: char 
+
+(types:
+    char 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?(): function
+        with parameters
+          a: instance of struct accumulator 
+          number1: char 
+          number2: char 
+        returning 
+          char 
+
+  to arguments
+          Variable Expression: ?+?: instance of struct accumulator 
+
+          Variable Expression: a: char 
+
+          Variable Expression: b: char 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+int ___operator_multiply__Fi_ii_(int , int );
+int ___operator_call__Fi_ii_(int __number1__i, int __number2__i){
+    return ___operator_multiply__Fi_ii_(__number1__i, __number2__i);
+}
+int ___operator_add__Fi_ii_(int , int );
+int ___operator_assign__Fi_Pii_(int *, int );
+struct accumulator
+{
+    int __total__i;
+};
+static inline struct accumulator ___operator_assign__F12saccumulator_P12saccumulator12saccumulator_(struct accumulator *___dst__P12saccumulator, struct accumulator ___src__12saccumulator){
+    ___operator_assign__Fi_Pii_((&(*___dst__P12saccumulator).__total__i), ___src__12saccumulator.__total__i);
+    return ___src__12saccumulator;
+}
+char ___operator_call__Fc_12saccumulatorcc_(struct accumulator __a__12saccumulator, char __number1__c, char __number2__c);
+void __f__F__(void){
+    char __a__c;
+    char __b__c;
+    ___operator_call__Fi_ii_(((int )__a__c), ((int )__b__c));
+    ___operator_call__Fi_ii_(((int )__a__c), ((int )__b__c));
+    ___operator_add__Fi_ii_(((int )__a__c), ((int )__b__c));
+    struct accumulator ___operator_add__12saccumulator;
+    ___operator_call__Fc_12saccumulatorcc_(___operator_add__12saccumulator, __a__c, __b__c);
+}
Index: src/Tests/Expect-r/Quad.txt
===================================================================
--- src/Tests/Expect-r/Quad.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Quad.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,1851 @@
+nameExpr is ?*?
+decl is ?*?: function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?*?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+decl is ?*?: pointer to function
+  with parameters
+    instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+newExpr is Variable Expression: ?*?: pointer to function
+    with parameters
+      instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?*?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?*?: pointer to function
+    with parameters
+      instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    lvalue pointer to function
+        with parameters
+          instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is t
+decl is t: instance of type T (not function type) 
+newExpr is Variable Expression: t: instance of type T (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: t: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: t: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+nameExpr is t
+decl is t: instance of type T (not function type) 
+newExpr is Variable Expression: t: instance of type T (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: t: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: t: instance of type T (not function type) 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?*?: function
+            with parameters
+              signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?*?: pointer to function
+            with parameters
+              instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+(types:
+            lvalue pointer to function
+                with parameters
+                  instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+)
+        Environment: 
+formal type is instance of type T (not function type) 
+actual type is lvalue instance of type T (not function type) 
+formal type is instance of type T (not function type) 
+actual type is lvalue instance of type T (not function type) 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Variable Expression: t: instance of type T (not function type) 
+--- results are
+        lvalue instance of type T (not function type) 
+
+converting lvalue instance of type T (not function type) 
+ to instance of type T (not function type) 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: t: instance of type T (not function type) 
+--- results are
+        lvalue instance of type T (not function type) 
+
+converting lvalue instance of type T (not function type) 
+ to instance of type T (not function type) 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type T (not function type) 
+        instance of type T (not function type) 
+actuals are:
+                  Variable Expression: t: instance of type T (not function type) 
+
+                  Variable Expression: t: instance of type T (not function type) 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?*?: pointer to function
+      with parameters
+        instance of type T (not function type) 
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Variable Expression: t: instance of type T (not function type) 
+
+      Variable Expression: t: instance of type T (not function type) 
+
+(types:
+    instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: ?*?: pointer to function
+        with parameters
+          instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+  to arguments
+          Variable Expression: t: instance of type T (not function type) 
+
+          Variable Expression: t: instance of type T (not function type) 
+
+
+to:
+  instance of type T (not function type) 
+(types:
+    instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is square
+decl is square: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+        ?*?: pointer to function
+            with parameters
+              instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    t: instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Cast of:
+  Application of
+    Variable Expression: ?*?: pointer to function
+        with parameters
+          instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+  to arguments
+          Variable Expression: t: instance of type T (not function type) 
+
+          Variable Expression: t: instance of type T (not function type) 
+
+
+to:
+  instance of type T (not function type) 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: square: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?*?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      t: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+decl is square: pointer to function
+  with parameters
+    instance of type U (not function type) 
+  returning 
+    instance of type U (not function type) 
+
+newExpr is Variable Expression: square: pointer to function
+    with parameters
+      instance of type U (not function type) 
+    returning 
+      instance of type U (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: square: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?*?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      t: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    pointer to forall
+          _0_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+              ?*?: pointer to function
+                  with parameters
+                    instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+
+        function
+        with parameters
+          t: instance of type _0_T (not function type) 
+        returning 
+          instance of type _0_T (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: square: pointer to function
+    with parameters
+      instance of type U (not function type) 
+    returning 
+      instance of type U (not function type) 
+
+(types:
+    lvalue pointer to function
+        with parameters
+          instance of type U (not function type) 
+        returning 
+          instance of type U (not function type) 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is square
+decl is square: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+        ?*?: pointer to function
+            with parameters
+              instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    t: instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Cast of:
+  Application of
+    Variable Expression: ?*?: pointer to function
+        with parameters
+          instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+  to arguments
+          Variable Expression: t: instance of type T (not function type) 
+
+          Variable Expression: t: instance of type T (not function type) 
+
+
+to:
+  instance of type T (not function type) 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: square: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?*?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      t: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+decl is square: pointer to function
+  with parameters
+    instance of type U (not function type) 
+  returning 
+    instance of type U (not function type) 
+
+newExpr is Variable Expression: square: pointer to function
+    with parameters
+      instance of type U (not function type) 
+    returning 
+      instance of type U (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: square: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?*?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      t: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    pointer to forall
+          _1_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _1_T (not function type) 
+                    instance of type _1_T (not function type) 
+                  returning 
+                    instance of type _1_T (not function type) 
+
+              ?*?: pointer to function
+                  with parameters
+                    instance of type _1_T (not function type) 
+                    instance of type _1_T (not function type) 
+                  returning 
+                    instance of type _1_T (not function type) 
+
+
+        function
+        with parameters
+          t: instance of type _1_T (not function type) 
+        returning 
+          instance of type _1_T (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: square: pointer to function
+    with parameters
+      instance of type U (not function type) 
+    returning 
+      instance of type U (not function type) 
+
+(types:
+    lvalue pointer to function
+        with parameters
+          instance of type U (not function type) 
+        returning 
+          instance of type U (not function type) 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is u
+decl is u: instance of type U (not function type) 
+newExpr is Variable Expression: u: instance of type U (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: u: instance of type U (not function type) 
+(types:
+    lvalue instance of type U (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: u: instance of type U (not function type) 
+(types:
+    lvalue instance of type U (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: square: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+                  ?*?: pointer to function
+                      with parameters
+                        instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              t: instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+(types:
+            pointer to forall
+                  _1_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _1_T (not function type) 
+                            instance of type _1_T (not function type) 
+                          returning 
+                            instance of type _1_T (not function type) 
+
+                      ?*?: pointer to function
+                          with parameters
+                            instance of type _1_T (not function type) 
+                            instance of type _1_T (not function type) 
+                          returning 
+                            instance of type _1_T (not function type) 
+
+
+                function
+                with parameters
+                  t: instance of type _1_T (not function type) 
+                returning 
+                  instance of type _1_T (not function type) 
+
+)
+        Environment: 
+formal type is instance of type _1_T (not function type) 
+actual type is lvalue instance of type U (not function type) 
+need assertions:
+?*?: pointer to function
+          with parameters
+            instance of type _1_T (not function type) 
+            instance of type _1_T (not function type) 
+          returning 
+            instance of type _1_T (not function type) 
+(used)?=?: pointer to function
+          with parameters
+            pointer to instance of type _1_T (not function type) 
+            instance of type _1_T (not function type) 
+          returning 
+            instance of type _1_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?*?: pointer to function
+  with parameters
+    instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+
+inferRecursive: candidate is ?*?: function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: square: pointer to function
+            with parameters
+              instance of type U (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+(types:
+            lvalue pointer to function
+                with parameters
+                  instance of type U (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+)
+        Environment: 
+formal type is instance of type U (not function type) 
+actual type is lvalue instance of type U (not function type) 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Variable Expression: u: instance of type U (not function type) 
+--- results are
+        lvalue instance of type U (not function type) 
+
+converting lvalue instance of type U (not function type) 
+ to instance of type U (not function type) 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type U (not function type) 
+actuals are:
+                  Variable Expression: u: instance of type U (not function type) 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: square: pointer to function
+      with parameters
+        instance of type U (not function type) 
+      returning 
+        instance of type U (not function type) 
+
+to arguments
+      Variable Expression: u: instance of type U (not function type) 
+
+(types:
+    instance of type U (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: square: pointer to function
+      with parameters
+        instance of type U (not function type) 
+      returning 
+        instance of type U (not function type) 
+
+to arguments
+      Variable Expression: u: instance of type U (not function type) 
+
+(types:
+    instance of type U (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: square: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+                  ?*?: pointer to function
+                      with parameters
+                        instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              t: instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+(types:
+            pointer to forall
+                  _0_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _0_T (not function type) 
+
+                      ?*?: pointer to function
+                          with parameters
+                            instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _0_T (not function type) 
+
+
+                function
+                with parameters
+                  t: instance of type _0_T (not function type) 
+                returning 
+                  instance of type _0_T (not function type) 
+
+)
+        Environment: 
+formal type is instance of type _0_T (not function type) 
+actual type is instance of type U (not function type) 
+need assertions:
+?=?: pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)?*?: pointer to function
+          with parameters
+            instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+inferRecursive: candidate is ?=?: pointer to function
+  with parameters
+    pointer to instance of type U (not function type) 
+    instance of type U (not function type) 
+  returning 
+    instance of type U (not function type) 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to instance of type U (not function type) 
+    instance of type U (not function type) 
+  returning 
+    instance of type U (not function type) 
+
+success!
+satisfying assertion 12 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with declaration 23 ?=?: pointer to function
+  with parameters
+    pointer to instance of type U (not function type) 
+    instance of type U (not function type) 
+  returning 
+    instance of type U (not function type) 
+
+inferRecursive: assertion is ?*?: pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+
+inferRecursive: candidate is ?*?: function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: square: pointer to function
+            with parameters
+              instance of type U (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+(types:
+            lvalue pointer to function
+                with parameters
+                  instance of type U (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+)
+        Environment: 
+formal type is instance of type U (not function type) 
+actual type is instance of type U (not function type) 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Application of
+          Variable Expression: square: pointer to function
+              with parameters
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+        to arguments
+                      Variable Expression: u: instance of type U (not function type) 
+
+--- results are
+        instance of type U (not function type) 
+
+converting instance of type U (not function type) 
+ to instance of type U (not function type) 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type U (not function type) 
+actuals are:
+                  Application of
+            Variable Expression: square: pointer to function
+                with parameters
+                  instance of type U (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+          to arguments
+                          Variable Expression: u: instance of type U (not function type) 
+
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: square: pointer to function
+      with parameters
+        instance of type U (not function type) 
+      returning 
+        instance of type U (not function type) 
+
+to arguments
+      Application of
+      Variable Expression: square: pointer to function
+          with parameters
+            instance of type U (not function type) 
+          returning 
+            instance of type U (not function type) 
+
+    to arguments
+              Variable Expression: u: instance of type U (not function type) 
+
+
+(types:
+    instance of type U (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: square: pointer to function
+        with parameters
+          instance of type U (not function type) 
+        returning 
+          instance of type U (not function type) 
+
+  to arguments
+          Application of
+        Variable Expression: square: pointer to function
+            with parameters
+              instance of type U (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+      to arguments
+                  Variable Expression: u: instance of type U (not function type) 
+
+
+
+to:
+  instance of type U (not function type) 
+(types:
+    instance of type U (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is quad
+decl is quad: forall
+    U: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type U (not function type) 
+              instance of type U (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+        square: pointer to function
+            with parameters
+              instance of type U (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+
+  function
+  with parameters
+    u: instance of type U (not function type) 
+  returning 
+    instance of type U (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Cast of:
+  Application of
+    Variable Expression: square: pointer to function
+        with parameters
+          instance of type U (not function type) 
+        returning 
+          instance of type U (not function type) 
+
+  to arguments
+          Application of
+        Variable Expression: square: pointer to function
+            with parameters
+              instance of type U (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+      to arguments
+                  Variable Expression: u: instance of type U (not function type) 
+
+
+
+to:
+  instance of type U (not function type) 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: quad: forall
+      U: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+          square: pointer to function
+              with parameters
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      u: instance of type U (not function type) 
+    returning 
+      instance of type U (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: quad: forall
+      U: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+          square: pointer to function
+              with parameters
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      u: instance of type U (not function type) 
+    returning 
+      instance of type U (not function type) 
+
+(types:
+    pointer to forall
+          _0_U: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_U (not function type) 
+                    instance of type _0_U (not function type) 
+                  returning 
+                    instance of type _0_U (not function type) 
+
+              square: pointer to function
+                  with parameters
+                    instance of type _0_U (not function type) 
+                  returning 
+                    instance of type _0_U (not function type) 
+
+
+        function
+        with parameters
+          u: instance of type _0_U (not function type) 
+        returning 
+          instance of type _0_U (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 7 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 7 signed int (types:
+    signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: quad: forall
+              U: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type U (not function type) 
+                        instance of type U (not function type) 
+                      returning 
+                        instance of type U (not function type) 
+
+                  square: pointer to function
+                      with parameters
+                        instance of type U (not function type) 
+                      returning 
+                        instance of type U (not function type) 
+
+
+            function
+            with parameters
+              u: instance of type U (not function type) 
+            returning 
+              instance of type U (not function type) 
+
+(types:
+            pointer to forall
+                  _0_U: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _0_U (not function type) 
+                            instance of type _0_U (not function type) 
+                          returning 
+                            instance of type _0_U (not function type) 
+
+                      square: pointer to function
+                          with parameters
+                            instance of type _0_U (not function type) 
+                          returning 
+                            instance of type _0_U (not function type) 
+
+
+                function
+                with parameters
+                  u: instance of type _0_U (not function type) 
+                returning 
+                  instance of type _0_U (not function type) 
+
+)
+        Environment: 
+formal type is instance of type _0_U (not function type) 
+actual type is signed int 
+need assertions:
+square: pointer to function
+          with parameters
+            instance of type _0_U (not function type) 
+          returning 
+            instance of type _0_U (not function type) 
+(used)?=?: pointer to function
+          with parameters
+            pointer to instance of type _0_U (not function type) 
+            instance of type _0_U (not function type) 
+          returning 
+            instance of type _0_U (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is square: pointer to function
+  with parameters
+    instance of type _0_U (not function type) 
+  returning 
+    instance of type _0_U (not function type) 
+
+inferRecursive: candidate is square: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+        ?*?: pointer to function
+            with parameters
+              instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    t: instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Cast of:
+  Application of
+    Variable Expression: ?*?: pointer to function
+        with parameters
+          instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+  to arguments
+          Variable Expression: t: instance of type T (not function type) 
+
+          Variable Expression: t: instance of type T (not function type) 
+
+
+to:
+  instance of type T (not function type) 
+with environment:
+  Types:
+  Non-types:
+
+
+
+unifying pointer to function
+  with parameters
+    instance of type _0_U (not function type) 
+  returning 
+    instance of type _0_U (not function type) 
+ with pointer to forall
+    _1_T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type _1_T (not function type) 
+              instance of type _1_T (not function type) 
+            returning 
+              instance of type _1_T (not function type) 
+
+        ?*?: pointer to function
+            with parameters
+              instance of type _1_T (not function type) 
+              instance of type _1_T (not function type) 
+            returning 
+              instance of type _1_T (not function type) 
+
+
+  function
+  with parameters
+    t: instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+
+success!
+satisfying assertion 26 square: pointer to function
+  with parameters
+    instance of type _0_U (not function type) 
+  returning 
+    instance of type _0_U (not function type) 
+ with declaration 19 square: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+        ?*?: pointer to function
+            with parameters
+              instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    t: instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Cast of:
+  Application of
+    Variable Expression: ?*?: pointer to function
+        with parameters
+          instance of type T (not function type) 
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+  to arguments
+          Variable Expression: t: instance of type T (not function type) 
+
+          Variable Expression: t: instance of type T (not function type) 
+
+
+to:
+  instance of type T (not function type) 
+with environment:
+  Types:
+  Non-types:
+
+
+
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_U (not function type) 
+    instance of type _0_U (not function type) 
+  returning 
+    instance of type _0_U (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_U (not function type) 
+    instance of type _0_U (not function type) 
+  returning 
+    instance of type _0_U (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+success!
+satisfying assertion 23 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_U (not function type) 
+    instance of type _0_U (not function type) 
+  returning 
+    instance of type _0_U (not function type) 
+ with declaration 4 ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+recursing with new set:
+?*?: pointer to function
+          with parameters
+            instance of type _1_T (not function type) 
+            instance of type _1_T (not function type) 
+          returning 
+            instance of type _1_T (not function type) 
+(used)?=?: pointer to function
+          with parameters
+            pointer to instance of type _1_T (not function type) 
+            instance of type _1_T (not function type) 
+          returning 
+            instance of type _1_T (not function type) 
+(used)inferRecursive: assertion is ?*?: pointer to function
+  with parameters
+    instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+
+inferRecursive: candidate is ?*?: function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+success!
+satisfying assertion 16 ?*?: pointer to function
+  with parameters
+    instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with declaration 8 ?*?: function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+success!
+satisfying assertion 12 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with declaration 4 ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+actual expression:
+constant expression 7 signed int --- results are
+        signed int 
+
+converting signed int 
+ to instance of type _0_U (not function type) 
+cost is( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to signed int 
+            signed int 
+          returning 
+            signed int 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _1_T (not function type) 
+            instance of type _1_T (not function type) 
+          returning 
+            instance of type _1_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            signed int 
+            signed int 
+          returning 
+            signed int 
+
+ to pointer to function
+          with parameters
+            instance of type _1_T (not function type) 
+            instance of type _1_T (not function type) 
+          returning 
+            instance of type _1_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to signed int 
+            signed int 
+          returning 
+            signed int 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _0_U (not function type) 
+            instance of type _0_U (not function type) 
+          returning 
+            instance of type _0_U (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+
+converting pointer to forall
+            _1_T: type
+              with assertions
+                ?=?: pointer to function
+                    with parameters
+                      pointer to instance of type _1_T (not function type) 
+                      instance of type _1_T (not function type) 
+                    returning 
+                      instance of type _1_T (not function type) 
+
+                ?*?: pointer to function
+                    with parameters
+                      instance of type _1_T (not function type) 
+                      instance of type _1_T (not function type) 
+                    returning 
+                      instance of type _1_T (not function type) 
+
+
+          function
+          with parameters
+            t: instance of type _1_T (not function type) 
+          returning 
+            instance of type _1_T (not function type) 
+
+ to pointer to function
+          with parameters
+            instance of type _0_U (not function type) 
+          returning 
+            instance of type _0_U (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        u: instance of type _0_U (not function type) 
+actuals are:
+        constant expression 7 signed int 
+bindings are:
+        ( _0_U _1_T ) -> signed int  (no widening)
+cost of conversion is:( 0, 20, 0 )
+alternatives before prune:
+Cost ( 0, 20, 0 ): Application of
+  Variable Expression: quad: forall
+        U: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type U (not function type) 
+                  instance of type U (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+            square: pointer to function
+                with parameters
+                  instance of type U (not function type) 
+                returning 
+                  instance of type U (not function type) 
+
+
+      function
+      with parameters
+        u: instance of type U (not function type) 
+      returning 
+        instance of type U (not function type) 
+
+to arguments
+  constant expression 7 signed int 
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+  ?*?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+  ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+  square: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?*?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      t: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    instance of type _0_U (not function type) 
+)
+Environment:   ( _0_U _1_T ) -> signed int  (no widening)
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: quad: forall
+          U: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type U (not function type) 
+                    instance of type U (not function type) 
+                  returning 
+                    instance of type U (not function type) 
+
+              square: pointer to function
+                  with parameters
+                    instance of type U (not function type) 
+                  returning 
+                    instance of type U (not function type) 
+
+
+        function
+        with parameters
+          u: instance of type U (not function type) 
+        returning 
+          instance of type U (not function type) 
+
+  to arguments
+    constant expression 7 signed int 
+  with inferred parameters:
+    ?=?: function
+      with parameters
+        pointer to signed int 
+        signed int 
+      returning 
+        signed int 
+
+    ?*?: function
+      with parameters
+        signed int 
+        signed int 
+      returning 
+        signed int 
+
+    ?=?: function
+      with parameters
+        pointer to signed int 
+        signed int 
+      returning 
+        signed int 
+
+    square: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+            ?*?: pointer to function
+                with parameters
+                  instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        t: instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+
+to:
+  nothing
+(types:
+)
+Environment:   ( _0_U _1_T ) -> signed int  (no widening)
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+int ___operator_assign__Fi_Pii_(int *, int );
+int ___operator_multiply__Fi_ii_(int , int );
+void __square__A1_0_0____operator_assign__PFt0_Pt0t0____operator_multiply__PFt0_t0t0__Ft0_t0_(void (*_adapterF2tT_2tT2tT_)(void (*)(), void *, void *, void *), void (*_adapterF2tT_P2tT2tT_)(void (*)(), void *, void *, void *), long unsigned int T, void (*___operator_assign__PF2tT_P2tT2tT_)(), void (*___operator_multiply__PF2tT_2tT2tT_)(), void *_retparm, void *__t__2tT){
+    _adapterF2tT_2tT2tT_(___operator_multiply__PF2tT_2tT2tT_, _retparm, __t__2tT, __t__2tT);
+    return ;
+}
+void __quad__A1_0_0____operator_assign__PFt0_Pt0t0___square__PFt0_t0__Ft0_t0_(void (*_adapterF2tU_2tU_)(void (*)(), void *, void *), void (*_adapterF2tU_P2tU2tU_)(void (*)(), void *, void *, void *), long unsigned int U, void (*___operator_assign__PF2tU_P2tU2tU_)(), void (*__square__PF2tU_2tU_)(), void *_retparm, void *__u__2tU){
+    void *_temp0;
+    (_temp0=__builtin_alloca(U));
+    _adapterF2tU_2tU_(__square__PF2tU_2tU_, _retparm, (_adapterF2tU_2tU_(__square__PF2tU_2tU_, _temp0, __u__2tU) , _temp0));
+    return ;
+}
+void __f__F__(){
+    int _thunk0(int _p0){
+        int _temp1;
+        void _adapterFi_Pii_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
+            ((*((int *)_ret))=((int (*)(int *, int ))_adaptee)(_p0, (*((int *)_p1))));
+        }
+        void _adapterFi_ii_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
+            ((*((int *)_ret))=((int (*)(int , int ))_adaptee)((*((int *)_p0)), (*((int *)_p1))));
+        }
+        return (__square__A1_0_0____operator_assign__PFt0_Pt0t0____operator_multiply__PFt0_t0t0__Ft0_t0_(_adapterFi_ii_, _adapterFi_Pii_, sizeof(int ), ((void (*)())___operator_assign__Fi_Pii_), ((void (*)())___operator_multiply__Fi_ii_), (&_temp1), (&_p0)) , _temp1);
+    }
+    int _temp2;
+    int _temp3;
+    (_temp3=7);
+    void _adapterFi_Pii_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
+        ((*((int *)_ret))=((int (*)(int *, int ))_adaptee)(_p0, (*((int *)_p1))));
+    }
+    void _adapterFi_i_(void (*_adaptee)(), void *_ret, void *_p0){
+        ((*((int *)_ret))=((int (*)(int ))_adaptee)((*((int *)_p0))));
+    }
+    (__quad__A1_0_0____operator_assign__PFt0_Pt0t0___square__PFt0_t0__Ft0_t0_(_adapterFi_i_, _adapterFi_Pii_, sizeof(int ), ((void (*)())___operator_assign__Fi_Pii_), ((void (*)())(&_thunk0)), (&_temp2), (&_temp3)) , _temp2);
+}
Index: src/Tests/Expect-r/Rank2.txt
===================================================================
--- src/Tests/Expect-r/Rank2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Rank2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,3600 @@
+nameExpr is g
+decl is g: function
+  with parameters
+    p: pointer to forall
+          U: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type U (not function type) 
+                    instance of type U (not function type) 
+                  returning 
+                    instance of type U (not function type) 
+
+
+        function
+        with parameters
+          instance of type U (not function type) 
+        returning 
+          nothing 
+
+  returning 
+    nothing 
+
+newExpr is Variable Expression: g: function
+    with parameters
+      p: pointer to forall
+            U: type
+              with assertions
+                ?=?: pointer to function
+                    with parameters
+                      pointer to instance of type U (not function type) 
+                      instance of type U (not function type) 
+                    returning 
+                      instance of type U (not function type) 
+
+
+          function
+          with parameters
+            instance of type U (not function type) 
+          returning 
+            nothing 
+
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: g: function
+    with parameters
+      p: pointer to forall
+            U: type
+              with assertions
+                ?=?: pointer to function
+                    with parameters
+                      pointer to instance of type U (not function type) 
+                      instance of type U (not function type) 
+                    returning 
+                      instance of type U (not function type) 
+
+
+          function
+          with parameters
+            instance of type U (not function type) 
+          returning 
+            nothing 
+
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          p: pointer to forall
+                _0_U: type
+                  with assertions
+                    ?=?: pointer to function
+                        with parameters
+                          pointer to instance of type _0_U (not function type) 
+                          instance of type _0_U (not function type) 
+                        returning 
+                          instance of type _0_U (not function type) 
+
+
+              function
+              with parameters
+                instance of type _0_U (not function type) 
+              returning 
+                nothing 
+
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is f
+decl is f: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    instance of type T (not function type) 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      nothing 
+
+(types:
+    pointer to forall
+          _1_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _1_T (not function type) 
+                    instance of type _1_T (not function type) 
+                  returning 
+                    instance of type _1_T (not function type) 
+
+
+        function
+        with parameters
+          instance of type _1_T (not function type) 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      nothing 
+
+(types:
+    pointer to forall
+          _1_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _1_T (not function type) 
+                    instance of type _1_T (not function type) 
+                  returning 
+                    instance of type _1_T (not function type) 
+
+
+        function
+        with parameters
+          instance of type _1_T (not function type) 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: g: function
+            with parameters
+              p: pointer to forall
+                    U: type
+                      with assertions
+                        ?=?: pointer to function
+                            with parameters
+                              pointer to instance of type U (not function type) 
+                              instance of type U (not function type) 
+                            returning 
+                              instance of type U (not function type) 
+
+
+                  function
+                  with parameters
+                    instance of type U (not function type) 
+                  returning 
+                    nothing 
+
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  p: pointer to forall
+                        _0_U: type
+                          with assertions
+                            ?=?: pointer to function
+                                with parameters
+                                  pointer to instance of type _0_U (not function type) 
+                                  instance of type _0_U (not function type) 
+                                returning 
+                                  instance of type _0_U (not function type) 
+
+
+                      function
+                      with parameters
+                        instance of type _0_U (not function type) 
+                      returning 
+                        nothing 
+
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is pointer to forall
+    _0_U: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type _0_U (not function type) 
+              instance of type _0_U (not function type) 
+            returning 
+              instance of type _0_U (not function type) 
+
+
+  function
+  with parameters
+    instance of type _0_U (not function type) 
+  returning 
+    nothing 
+
+actual type is pointer to forall
+    _1_T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type _1_T (not function type) 
+              instance of type _1_T (not function type) 
+            returning 
+              instance of type _1_T (not function type) 
+
+
+  function
+  with parameters
+    instance of type _1_T (not function type) 
+  returning 
+    nothing 
+
+need assertions:
+?=?: pointer to function
+          with parameters
+            pointer to instance of type _1_T (not function type) 
+            instance of type _1_T (not function type) 
+          returning 
+            instance of type _1_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+
+inferRecursive: candidate is ?=?: forall
+    DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type DT (not function type) 
+    pointer to instance of type DT (not function type) 
+  returning 
+    pointer to instance of type DT (not function type) 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to forall
+    _2_DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type _2_DT (not function type) 
+    pointer to instance of type _2_DT (not function type) 
+  returning 
+    pointer to instance of type _2_DT (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+inferRecursive: candidate is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_U (not function type) 
+    instance of type _0_U (not function type) 
+  returning 
+    instance of type _0_U (not function type) 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to instance of type _0_U (not function type) 
+    instance of type _0_U (not function type) 
+  returning 
+    instance of type _0_U (not function type) 
+
+success!
+satisfying assertion 12 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with declaration 18 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_U (not function type) 
+    instance of type _0_U (not function type) 
+  returning 
+    instance of type _0_U (not function type) 
+
+actual expression:
+        Variable Expression: f: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              nothing 
+
+--- results are
+        pointer to forall
+              _1_T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type _1_T (not function type) 
+                        instance of type _1_T (not function type) 
+                      returning 
+                        instance of type _1_T (not function type) 
+
+
+            function
+            with parameters
+              instance of type _1_T (not function type) 
+            returning 
+              nothing 
+
+
+converting pointer to forall
+            _1_T: type
+              with assertions
+                ?=?: pointer to function
+                    with parameters
+                      pointer to instance of type _1_T (not function type) 
+                      instance of type _1_T (not function type) 
+                    returning 
+                      instance of type _1_T (not function type) 
+
+
+          function
+          with parameters
+            instance of type _1_T (not function type) 
+          returning 
+            nothing 
+
+ to pointer to forall
+            _0_U: type
+              with assertions
+                ?=?: pointer to function
+                    with parameters
+                      pointer to instance of type _0_U (not function type) 
+                      instance of type _0_U (not function type) 
+                    returning 
+                      instance of type _0_U (not function type) 
+
+
+          function
+          with parameters
+            instance of type _0_U (not function type) 
+          returning 
+            nothing 
+
+cost is( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to instance of type _0_U (not function type) 
+            instance of type _0_U (not function type) 
+          returning 
+            instance of type _0_U (not function type) 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _1_T (not function type) 
+            instance of type _1_T (not function type) 
+          returning 
+            instance of type _1_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        p: pointer to forall
+              _0_U: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type _0_U (not function type) 
+                        instance of type _0_U (not function type) 
+                      returning 
+                        instance of type _0_U (not function type) 
+
+
+            function
+            with parameters
+              instance of type _0_U (not function type) 
+            returning 
+              nothing 
+
+actuals are:
+                  Variable Expression: f: forall
+                T: type
+                  with assertions
+                    ?=?: pointer to function
+                        with parameters
+                          pointer to instance of type T (not function type) 
+                          instance of type T (not function type) 
+                        returning 
+                          instance of type T (not function type) 
+
+
+              function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                nothing 
+
+
+bindings are:
+        ( _1_T ) -> instance of type _0_U (not function type)  (no widening)
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: g: function
+      with parameters
+        p: pointer to forall
+              U: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type U (not function type) 
+                        instance of type U (not function type) 
+                      returning 
+                        instance of type U (not function type) 
+
+
+            function
+            with parameters
+              instance of type U (not function type) 
+            returning 
+              nothing 
+
+      returning 
+        nothing 
+
+to arguments
+      Variable Expression: f: forall
+          T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type T (not function type) 
+                    instance of type T (not function type) 
+                  returning 
+                    instance of type T (not function type) 
+
+
+        function
+        with parameters
+          instance of type T (not function type) 
+        returning 
+          nothing 
+
+
+with inferred parameters:
+  ?=?: pointer to function
+    with parameters
+      pointer to instance of type U (not function type) 
+      instance of type U (not function type) 
+    returning 
+      instance of type U (not function type) 
+
+(types:
+)
+Environment:   ( _1_T ) -> instance of type _0_U (not function type)  (no widening)
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: g: function
+        with parameters
+          p: pointer to forall
+                U: type
+                  with assertions
+                    ?=?: pointer to function
+                        with parameters
+                          pointer to instance of type U (not function type) 
+                          instance of type U (not function type) 
+                        returning 
+                          instance of type U (not function type) 
+
+
+              function
+              with parameters
+                instance of type U (not function type) 
+              returning 
+                nothing 
+
+        returning 
+          nothing 
+
+  to arguments
+          Variable Expression: f: forall
+            T: type
+              with assertions
+                ?=?: pointer to function
+                    with parameters
+                      pointer to instance of type T (not function type) 
+                      instance of type T (not function type) 
+                    returning 
+                      instance of type T (not function type) 
+
+
+          function
+          with parameters
+            instance of type T (not function type) 
+          returning 
+            nothing 
+
+
+  with inferred parameters:
+    ?=?: pointer to function
+      with parameters
+        pointer to instance of type U (not function type) 
+        instance of type U (not function type) 
+      returning 
+        instance of type U (not function type) 
+
+
+to:
+  nothing
+(types:
+)
+Environment:   ( _1_T ) -> instance of type _0_U (not function type)  (no widening)
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is h
+decl is h: function
+  with parameters
+    null: pointer to signed int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: h: function
+    with parameters
+      null: pointer to signed int 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: h: function
+    with parameters
+      null: pointer to signed int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          null: pointer to signed int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is id
+decl is id: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+newExpr is Variable Expression: id: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: id: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    pointer to forall
+          _0_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+
+        function
+        with parameters
+          instance of type _0_T (not function type) 
+        returning 
+          instance of type _0_T (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is id
+decl is id: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+newExpr is Variable Expression: id: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: id: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    pointer to forall
+          _1_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _1_T (not function type) 
+                    instance of type _1_T (not function type) 
+                  returning 
+                    instance of type _1_T (not function type) 
+
+
+        function
+        with parameters
+          instance of type _1_T (not function type) 
+        returning 
+          instance of type _1_T (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is id
+decl is id: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+newExpr is Variable Expression: id: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: id: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    pointer to forall
+          _2_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _2_T (not function type) 
+                    instance of type _2_T (not function type) 
+                  returning 
+                    instance of type _2_T (not function type) 
+
+
+        function
+        with parameters
+          instance of type _2_T (not function type) 
+        returning 
+          instance of type _2_T (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is 0
+decl is 0: forall
+    T: incomplete type
+  pointer to instance of type T (not function type) 
+newExpr is Variable Expression: 0: forall
+      T: incomplete type
+    pointer to instance of type T (not function type) 
+
+decl is 0: signed int 
+newExpr is Variable Expression: 0: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: 0: forall
+      T: incomplete type
+    pointer to instance of type T (not function type) 
+(types:
+    forall
+          _3_T: incomplete type
+        lvalue pointer to instance of type _3_T (not function type) 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: 0: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: 0: forall
+      T: incomplete type
+    pointer to instance of type T (not function type) 
+(types:
+    forall
+          _3_T: incomplete type
+        lvalue pointer to instance of type _3_T (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: id: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+(types:
+            pointer to forall
+                  _2_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _2_T (not function type) 
+                            instance of type _2_T (not function type) 
+                          returning 
+                            instance of type _2_T (not function type) 
+
+
+                function
+                with parameters
+                  instance of type _2_T (not function type) 
+                returning 
+                  instance of type _2_T (not function type) 
+
+)
+        Environment: 
+formal type is instance of type _2_T (not function type) 
+actual type is lvalue signed int 
+need assertions:
+?=?: pointer to function
+          with parameters
+            pointer to instance of type _2_T (not function type) 
+            instance of type _2_T (not function type) 
+          returning 
+            instance of type _2_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+T
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+T
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _2_T (not function type) 
+    instance of type _2_T (not function type) 
+  returning 
+    instance of type _2_T (not function type) 
+
+inferRecursive: candidate is ?=?: forall
+    DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type DT (not function type) 
+    pointer to instance of type DT (not function type) 
+  returning 
+    pointer to instance of type DT (not function type) 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _2_T (not function type) 
+    instance of type _2_T (not function type) 
+  returning 
+    instance of type _2_T (not function type) 
+ with pointer to forall
+    _4_DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type _4_DT (not function type) 
+    pointer to instance of type _4_DT (not function type) 
+  returning 
+    pointer to instance of type _4_DT (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _2_T (not function type) 
+    instance of type _2_T (not function type) 
+  returning 
+    instance of type _2_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+success!
+satisfying assertion 28 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _2_T (not function type) 
+    instance of type _2_T (not function type) 
+  returning 
+    instance of type _2_T (not function type) 
+ with declaration 4 ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+formal type is instance of type _2_T (not function type) 
+actual type is forall
+    _3_T: incomplete type
+  lvalue pointer to instance of type _3_T (not function type) 
+need assertions:
+?=?: pointer to function
+          with parameters
+            pointer to instance of type _2_T (not function type) 
+            instance of type _2_T (not function type) 
+          returning 
+            instance of type _2_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+T
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+T
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _2_T (not function type) 
+    instance of type _2_T (not function type) 
+  returning 
+    instance of type _2_T (not function type) 
+
+inferRecursive: candidate is ?=?: forall
+    DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type DT (not function type) 
+    pointer to instance of type DT (not function type) 
+  returning 
+    pointer to instance of type DT (not function type) 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _2_T (not function type) 
+    instance of type _2_T (not function type) 
+  returning 
+    instance of type _2_T (not function type) 
+ with pointer to forall
+    _5_DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type _5_DT (not function type) 
+    pointer to instance of type _5_DT (not function type) 
+  returning 
+    pointer to instance of type _5_DT (not function type) 
+
+success!
+satisfying assertion 28 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _2_T (not function type) 
+    instance of type _2_T (not function type) 
+  returning 
+    instance of type _2_T (not function type) 
+ with declaration 8 ?=?: forall
+    DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type DT (not function type) 
+    pointer to instance of type DT (not function type) 
+  returning 
+    pointer to instance of type DT (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _2_T (not function type) 
+    instance of type _2_T (not function type) 
+  returning 
+    instance of type _2_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+actual expression:
+        Variable Expression: 0: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to instance of type _2_T (not function type) 
+cost is( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to signed int 
+            signed int 
+          returning 
+            signed int 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _2_T (not function type) 
+            instance of type _2_T (not function type) 
+          returning 
+            instance of type _2_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type _2_T (not function type) 
+actuals are:
+                  Variable Expression: 0: signed int 
+
+bindings are:
+        ( _2_T ) -> signed int 
+cost of conversion is:( 0, 4, 0 )
+actual expression:
+        Variable Expression: 0: forall
+              T: incomplete type
+            pointer to instance of type T (not function type) 
+--- results are
+        forall
+              _3_T: incomplete type
+            lvalue pointer to instance of type _3_T (not function type) 
+
+converting forall
+            _3_T: incomplete type
+          lvalue pointer to instance of type _3_T (not function type) 
+ to instance of type _2_T (not function type) 
+cost is( 0, 0, 0 )
+
+converting pointer to forall
+            _5_DT: incomplete type
+          function
+          with parameters
+            pointer to pointer to instance of type _5_DT (not function type) 
+            pointer to instance of type _5_DT (not function type) 
+          returning 
+            pointer to instance of type _5_DT (not function type) 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _2_T (not function type) 
+            instance of type _2_T (not function type) 
+          returning 
+            instance of type _2_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type _2_T (not function type) 
+actuals are:
+                  Variable Expression: 0: forall
+                T: incomplete type
+              pointer to instance of type T (not function type) 
+
+bindings are:
+        ( _2_T ) -> forall
+            _3_T: incomplete type
+          pointer to instance of type _3_T (not function type) 
+        ( _3_T _5_DT ) (no widening)
+cost of conversion is:( 0, 4, 0 )
+alternatives before prune:
+Cost ( 0, 4, 0 ): Application of
+  Variable Expression: id: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Variable Expression: 0: signed int 
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    instance of type _2_T (not function type) 
+)
+Environment:   ( _2_T ) -> signed int 
+
+
+Cost ( 0, 4, 0 ): Application of
+  Variable Expression: id: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Variable Expression: 0: forall
+          T: incomplete type
+        pointer to instance of type T (not function type) 
+
+with inferred parameters:
+  ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+(types:
+    instance of type _2_T (not function type) 
+)
+Environment:   ( _2_T ) -> forall
+      _3_T: incomplete type
+    pointer to instance of type _3_T (not function type) 
+  ( _3_T _5_DT ) (no widening)
+
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+findSubExprs
+Cost ( 0, 4, 0 ): Application of
+  Variable Expression: id: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Variable Expression: 0: signed int 
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    signed int 
+)
+Environment:   ( _2_T ) -> signed int 
+
+
+Cost ( 0, 4, 0 ): Application of
+  Variable Expression: id: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Variable Expression: 0: forall
+          T: incomplete type
+        pointer to instance of type T (not function type) 
+
+with inferred parameters:
+  ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+(types:
+    forall
+          _3_T: incomplete type
+        pointer to instance of type _3_T (not function type) 
+)
+Environment:   ( _2_T ) -> forall
+      _3_T: incomplete type
+    pointer to instance of type _3_T (not function type) 
+  ( _3_T _5_DT ) (no widening)
+
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: id: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+(types:
+            pointer to forall
+                  _1_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _1_T (not function type) 
+                            instance of type _1_T (not function type) 
+                          returning 
+                            instance of type _1_T (not function type) 
+
+
+                function
+                with parameters
+                  instance of type _1_T (not function type) 
+                returning 
+                  instance of type _1_T (not function type) 
+
+)
+        Environment: 
+formal type is instance of type _1_T (not function type) 
+actual type is signed int 
+need assertions:
+?=?: pointer to function
+          with parameters
+            pointer to instance of type _1_T (not function type) 
+            instance of type _1_T (not function type) 
+          returning 
+            instance of type _1_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+T
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+T
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+
+inferRecursive: candidate is ?=?: forall
+    DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type DT (not function type) 
+    pointer to instance of type DT (not function type) 
+  returning 
+    pointer to instance of type DT (not function type) 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to forall
+    _6_DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type _6_DT (not function type) 
+    pointer to instance of type _6_DT (not function type) 
+  returning 
+    pointer to instance of type _6_DT (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+success!
+satisfying assertion 28 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with declaration 4 ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+formal type is instance of type _1_T (not function type) 
+actual type is forall
+    _3_T: incomplete type
+  pointer to instance of type _3_T (not function type) 
+need assertions:
+?=?: pointer to function
+          with parameters
+            pointer to instance of type _1_T (not function type) 
+            instance of type _1_T (not function type) 
+          returning 
+            instance of type _1_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+T
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+T
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+
+inferRecursive: candidate is ?=?: forall
+    DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type DT (not function type) 
+    pointer to instance of type DT (not function type) 
+  returning 
+    pointer to instance of type DT (not function type) 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to forall
+    _7_DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type _7_DT (not function type) 
+    pointer to instance of type _7_DT (not function type) 
+  returning 
+    pointer to instance of type _7_DT (not function type) 
+
+success!
+satisfying assertion 28 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with declaration 8 ?=?: forall
+    DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type DT (not function type) 
+    pointer to instance of type DT (not function type) 
+  returning 
+    pointer to instance of type DT (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _1_T (not function type) 
+    instance of type _1_T (not function type) 
+  returning 
+    instance of type _1_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+actual expression:
+        Application of
+          Variable Expression: id: forall
+                T: type
+                  with assertions
+                    ?=?: pointer to function
+                        with parameters
+                          pointer to instance of type T (not function type) 
+                          instance of type T (not function type) 
+                        returning 
+                          instance of type T (not function type) 
+
+
+              function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+        to arguments
+                      Variable Expression: 0: signed int 
+
+        with inferred parameters:
+          ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+--- results are
+        signed int 
+
+converting signed int 
+ to instance of type _1_T (not function type) 
+cost is( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to signed int 
+            signed int 
+          returning 
+            signed int 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _1_T (not function type) 
+            instance of type _1_T (not function type) 
+          returning 
+            instance of type _1_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type _1_T (not function type) 
+actuals are:
+                  Application of
+            Variable Expression: id: forall
+                  T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type T (not function type) 
+                            instance of type T (not function type) 
+                          returning 
+                            instance of type T (not function type) 
+
+
+                function
+                with parameters
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+          to arguments
+                          Variable Expression: 0: signed int 
+
+          with inferred parameters:
+            ?=?: function
+              with parameters
+                pointer to signed int 
+                signed int 
+              returning 
+                signed int 
+
+
+bindings are:
+        ( _2_T ) -> signed int  (no widening)
+        ( _1_T ) -> signed int 
+cost of conversion is:( 0, 4, 0 )
+actual expression:
+        Application of
+          Variable Expression: id: forall
+                T: type
+                  with assertions
+                    ?=?: pointer to function
+                        with parameters
+                          pointer to instance of type T (not function type) 
+                          instance of type T (not function type) 
+                        returning 
+                          instance of type T (not function type) 
+
+
+              function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+        to arguments
+                      Variable Expression: 0: forall
+                  T: incomplete type
+                pointer to instance of type T (not function type) 
+
+        with inferred parameters:
+          ?=?: forall
+              DT: incomplete type
+            function
+            with parameters
+              pointer to pointer to instance of type DT (not function type) 
+              pointer to instance of type DT (not function type) 
+            returning 
+              pointer to instance of type DT (not function type) 
+
+--- results are
+        forall
+              _3_T: incomplete type
+            pointer to instance of type _3_T (not function type) 
+
+converting forall
+            _3_T: incomplete type
+          pointer to instance of type _3_T (not function type) 
+ to instance of type _1_T (not function type) 
+cost is( 0, 0, 0 )
+
+converting pointer to forall
+            _7_DT: incomplete type
+          function
+          with parameters
+            pointer to pointer to instance of type _7_DT (not function type) 
+            pointer to instance of type _7_DT (not function type) 
+          returning 
+            pointer to instance of type _7_DT (not function type) 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _1_T (not function type) 
+            instance of type _1_T (not function type) 
+          returning 
+            instance of type _1_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type _1_T (not function type) 
+actuals are:
+                  Application of
+            Variable Expression: id: forall
+                  T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type T (not function type) 
+                            instance of type T (not function type) 
+                          returning 
+                            instance of type T (not function type) 
+
+
+                function
+                with parameters
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+          to arguments
+                          Variable Expression: 0: forall
+                    T: incomplete type
+                  pointer to instance of type T (not function type) 
+
+          with inferred parameters:
+            ?=?: forall
+                DT: incomplete type
+              function
+              with parameters
+                pointer to pointer to instance of type DT (not function type) 
+                pointer to instance of type DT (not function type) 
+              returning 
+                pointer to instance of type DT (not function type) 
+
+
+bindings are:
+        ( _2_T ) -> forall
+            _3_T: incomplete type
+          pointer to instance of type _3_T (not function type)  (no widening)
+        ( _1_T ) -> forall
+            _3_T: incomplete type
+          pointer to instance of type _3_T (not function type) 
+        ( _3_T _5_DT _7_DT ) (no widening)
+cost of conversion is:( 0, 4, 0 )
+alternatives before prune:
+Cost ( 0, 4, 0 ): Application of
+  Variable Expression: id: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Application of
+      Variable Expression: id: forall
+            T: type
+              with assertions
+                ?=?: pointer to function
+                    with parameters
+                      pointer to instance of type T (not function type) 
+                      instance of type T (not function type) 
+                    returning 
+                      instance of type T (not function type) 
+
+
+          function
+          with parameters
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+    to arguments
+              Variable Expression: 0: signed int 
+
+    with inferred parameters:
+      ?=?: function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    instance of type _1_T (not function type) 
+)
+Environment:   ( _2_T ) -> signed int  (no widening)
+  ( _1_T ) -> signed int 
+
+
+Cost ( 0, 4, 0 ): Application of
+  Variable Expression: id: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Application of
+      Variable Expression: id: forall
+            T: type
+              with assertions
+                ?=?: pointer to function
+                    with parameters
+                      pointer to instance of type T (not function type) 
+                      instance of type T (not function type) 
+                    returning 
+                      instance of type T (not function type) 
+
+
+          function
+          with parameters
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+    to arguments
+              Variable Expression: 0: forall
+              T: incomplete type
+            pointer to instance of type T (not function type) 
+
+    with inferred parameters:
+      ?=?: forall
+          DT: incomplete type
+        function
+        with parameters
+          pointer to pointer to instance of type DT (not function type) 
+          pointer to instance of type DT (not function type) 
+        returning 
+          pointer to instance of type DT (not function type) 
+
+
+with inferred parameters:
+  ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+(types:
+    instance of type _1_T (not function type) 
+)
+Environment:   ( _2_T ) -> forall
+      _3_T: incomplete type
+    pointer to instance of type _3_T (not function type)  (no widening)
+  ( _1_T ) -> forall
+      _3_T: incomplete type
+    pointer to instance of type _3_T (not function type) 
+  ( _3_T _5_DT _7_DT ) (no widening)
+
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+findSubExprs
+Cost ( 0, 4, 0 ): Application of
+  Variable Expression: id: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Application of
+      Variable Expression: id: forall
+            T: type
+              with assertions
+                ?=?: pointer to function
+                    with parameters
+                      pointer to instance of type T (not function type) 
+                      instance of type T (not function type) 
+                    returning 
+                      instance of type T (not function type) 
+
+
+          function
+          with parameters
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+    to arguments
+              Variable Expression: 0: signed int 
+
+    with inferred parameters:
+      ?=?: function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    signed int 
+)
+Environment:   ( _2_T ) -> signed int  (no widening)
+  ( _1_T ) -> signed int 
+
+
+Cost ( 0, 4, 0 ): Application of
+  Variable Expression: id: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Application of
+      Variable Expression: id: forall
+            T: type
+              with assertions
+                ?=?: pointer to function
+                    with parameters
+                      pointer to instance of type T (not function type) 
+                      instance of type T (not function type) 
+                    returning 
+                      instance of type T (not function type) 
+
+
+          function
+          with parameters
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+    to arguments
+              Variable Expression: 0: forall
+              T: incomplete type
+            pointer to instance of type T (not function type) 
+
+    with inferred parameters:
+      ?=?: forall
+          DT: incomplete type
+        function
+        with parameters
+          pointer to pointer to instance of type DT (not function type) 
+          pointer to instance of type DT (not function type) 
+        returning 
+          pointer to instance of type DT (not function type) 
+
+
+with inferred parameters:
+  ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+(types:
+    forall
+          _3_T: incomplete type
+        pointer to instance of type _3_T (not function type) 
+)
+Environment:   ( _2_T ) -> forall
+      _3_T: incomplete type
+    pointer to instance of type _3_T (not function type)  (no widening)
+  ( _1_T ) -> forall
+      _3_T: incomplete type
+    pointer to instance of type _3_T (not function type) 
+  ( _3_T _5_DT _7_DT ) (no widening)
+
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: id: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+(types:
+            pointer to forall
+                  _0_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _0_T (not function type) 
+
+
+                function
+                with parameters
+                  instance of type _0_T (not function type) 
+                returning 
+                  instance of type _0_T (not function type) 
+
+)
+        Environment: 
+formal type is instance of type _0_T (not function type) 
+actual type is signed int 
+need assertions:
+?=?: pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+T
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+T
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+
+inferRecursive: candidate is ?=?: forall
+    DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type DT (not function type) 
+    pointer to instance of type DT (not function type) 
+  returning 
+    pointer to instance of type DT (not function type) 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to forall
+    _8_DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type _8_DT (not function type) 
+    pointer to instance of type _8_DT (not function type) 
+  returning 
+    pointer to instance of type _8_DT (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+success!
+satisfying assertion 28 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with declaration 4 ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+formal type is instance of type _0_T (not function type) 
+actual type is forall
+    _3_T: incomplete type
+  pointer to instance of type _3_T (not function type) 
+need assertions:
+?=?: pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+T
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+T
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+
+inferRecursive: candidate is ?=?: forall
+    DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type DT (not function type) 
+    pointer to instance of type DT (not function type) 
+  returning 
+    pointer to instance of type DT (not function type) 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to forall
+    _9_DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type _9_DT (not function type) 
+    pointer to instance of type _9_DT (not function type) 
+  returning 
+    pointer to instance of type _9_DT (not function type) 
+
+success!
+satisfying assertion 28 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with declaration 8 ?=?: forall
+    DT: incomplete type
+  function
+  with parameters
+    pointer to pointer to instance of type DT (not function type) 
+    pointer to instance of type DT (not function type) 
+  returning 
+    pointer to instance of type DT (not function type) 
+
+inferRecursive: candidate is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+actual expression:
+        Application of
+          Variable Expression: id: forall
+                T: type
+                  with assertions
+                    ?=?: pointer to function
+                        with parameters
+                          pointer to instance of type T (not function type) 
+                          instance of type T (not function type) 
+                        returning 
+                          instance of type T (not function type) 
+
+
+              function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+        to arguments
+                      Application of
+              Variable Expression: id: forall
+                    T: type
+                      with assertions
+                        ?=?: pointer to function
+                            with parameters
+                              pointer to instance of type T (not function type) 
+                              instance of type T (not function type) 
+                            returning 
+                              instance of type T (not function type) 
+
+
+                  function
+                  with parameters
+                    instance of type T (not function type) 
+                  returning 
+                    instance of type T (not function type) 
+
+            to arguments
+                              Variable Expression: 0: signed int 
+
+            with inferred parameters:
+              ?=?: function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+
+        with inferred parameters:
+          ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+--- results are
+        signed int 
+
+converting signed int 
+ to instance of type _0_T (not function type) 
+cost is( 0, 0, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to signed int 
+            signed int 
+          returning 
+            signed int 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type _0_T (not function type) 
+actuals are:
+                  Application of
+            Variable Expression: id: forall
+                  T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type T (not function type) 
+                            instance of type T (not function type) 
+                          returning 
+                            instance of type T (not function type) 
+
+
+                function
+                with parameters
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+          to arguments
+                          Application of
+                Variable Expression: id: forall
+                      T: type
+                        with assertions
+                          ?=?: pointer to function
+                              with parameters
+                                pointer to instance of type T (not function type) 
+                                instance of type T (not function type) 
+                              returning 
+                                instance of type T (not function type) 
+
+
+                    function
+                    with parameters
+                      instance of type T (not function type) 
+                    returning 
+                      instance of type T (not function type) 
+
+              to arguments
+                                  Variable Expression: 0: signed int 
+
+              with inferred parameters:
+                ?=?: function
+                  with parameters
+                    pointer to signed int 
+                    signed int 
+                  returning 
+                    signed int 
+
+
+          with inferred parameters:
+            ?=?: function
+              with parameters
+                pointer to signed int 
+                signed int 
+              returning 
+                signed int 
+
+
+bindings are:
+        ( _2_T ) -> signed int  (no widening)
+        ( _1_T ) -> signed int  (no widening)
+        ( _0_T ) -> signed int 
+cost of conversion is:( 0, 4, 0 )
+actual expression:
+        Application of
+          Variable Expression: id: forall
+                T: type
+                  with assertions
+                    ?=?: pointer to function
+                        with parameters
+                          pointer to instance of type T (not function type) 
+                          instance of type T (not function type) 
+                        returning 
+                          instance of type T (not function type) 
+
+
+              function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+        to arguments
+                      Application of
+              Variable Expression: id: forall
+                    T: type
+                      with assertions
+                        ?=?: pointer to function
+                            with parameters
+                              pointer to instance of type T (not function type) 
+                              instance of type T (not function type) 
+                            returning 
+                              instance of type T (not function type) 
+
+
+                  function
+                  with parameters
+                    instance of type T (not function type) 
+                  returning 
+                    instance of type T (not function type) 
+
+            to arguments
+                              Variable Expression: 0: forall
+                      T: incomplete type
+                    pointer to instance of type T (not function type) 
+
+            with inferred parameters:
+              ?=?: forall
+                  DT: incomplete type
+                function
+                with parameters
+                  pointer to pointer to instance of type DT (not function type) 
+                  pointer to instance of type DT (not function type) 
+                returning 
+                  pointer to instance of type DT (not function type) 
+
+
+        with inferred parameters:
+          ?=?: forall
+              DT: incomplete type
+            function
+            with parameters
+              pointer to pointer to instance of type DT (not function type) 
+              pointer to instance of type DT (not function type) 
+            returning 
+              pointer to instance of type DT (not function type) 
+
+--- results are
+        forall
+              _3_T: incomplete type
+            pointer to instance of type _3_T (not function type) 
+
+converting forall
+            _3_T: incomplete type
+          pointer to instance of type _3_T (not function type) 
+ to instance of type _0_T (not function type) 
+cost is( 0, 0, 0 )
+
+converting pointer to forall
+            _9_DT: incomplete type
+          function
+          with parameters
+            pointer to pointer to instance of type _9_DT (not function type) 
+            pointer to instance of type _9_DT (not function type) 
+          returning 
+            pointer to instance of type _9_DT (not function type) 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type _0_T (not function type) 
+actuals are:
+                  Application of
+            Variable Expression: id: forall
+                  T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type T (not function type) 
+                            instance of type T (not function type) 
+                          returning 
+                            instance of type T (not function type) 
+
+
+                function
+                with parameters
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+          to arguments
+                          Application of
+                Variable Expression: id: forall
+                      T: type
+                        with assertions
+                          ?=?: pointer to function
+                              with parameters
+                                pointer to instance of type T (not function type) 
+                                instance of type T (not function type) 
+                              returning 
+                                instance of type T (not function type) 
+
+
+                    function
+                    with parameters
+                      instance of type T (not function type) 
+                    returning 
+                      instance of type T (not function type) 
+
+              to arguments
+                                  Variable Expression: 0: forall
+                        T: incomplete type
+                      pointer to instance of type T (not function type) 
+
+              with inferred parameters:
+                ?=?: forall
+                    DT: incomplete type
+                  function
+                  with parameters
+                    pointer to pointer to instance of type DT (not function type) 
+                    pointer to instance of type DT (not function type) 
+                  returning 
+                    pointer to instance of type DT (not function type) 
+
+
+          with inferred parameters:
+            ?=?: forall
+                DT: incomplete type
+              function
+              with parameters
+                pointer to pointer to instance of type DT (not function type) 
+                pointer to instance of type DT (not function type) 
+              returning 
+                pointer to instance of type DT (not function type) 
+
+
+bindings are:
+        ( _2_T ) -> forall
+            _3_T: incomplete type
+          pointer to instance of type _3_T (not function type)  (no widening)
+        ( _1_T ) -> forall
+            _3_T: incomplete type
+          pointer to instance of type _3_T (not function type)  (no widening)
+        ( _0_T ) -> forall
+            _3_T: incomplete type
+          pointer to instance of type _3_T (not function type) 
+        ( _3_T _5_DT _7_DT _9_DT ) (no widening)
+cost of conversion is:( 0, 4, 0 )
+alternatives before prune:
+Cost ( 0, 4, 0 ): Application of
+  Variable Expression: id: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Application of
+      Variable Expression: id: forall
+            T: type
+              with assertions
+                ?=?: pointer to function
+                    with parameters
+                      pointer to instance of type T (not function type) 
+                      instance of type T (not function type) 
+                    returning 
+                      instance of type T (not function type) 
+
+
+          function
+          with parameters
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+    to arguments
+              Application of
+          Variable Expression: id: forall
+                T: type
+                  with assertions
+                    ?=?: pointer to function
+                        with parameters
+                          pointer to instance of type T (not function type) 
+                          instance of type T (not function type) 
+                        returning 
+                          instance of type T (not function type) 
+
+
+              function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+        to arguments
+                      Variable Expression: 0: signed int 
+
+        with inferred parameters:
+          ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+
+    with inferred parameters:
+      ?=?: function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    instance of type _0_T (not function type) 
+)
+Environment:   ( _2_T ) -> signed int  (no widening)
+  ( _1_T ) -> signed int  (no widening)
+  ( _0_T ) -> signed int 
+
+
+Cost ( 0, 4, 0 ): Application of
+  Variable Expression: id: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Application of
+      Variable Expression: id: forall
+            T: type
+              with assertions
+                ?=?: pointer to function
+                    with parameters
+                      pointer to instance of type T (not function type) 
+                      instance of type T (not function type) 
+                    returning 
+                      instance of type T (not function type) 
+
+
+          function
+          with parameters
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+    to arguments
+              Application of
+          Variable Expression: id: forall
+                T: type
+                  with assertions
+                    ?=?: pointer to function
+                        with parameters
+                          pointer to instance of type T (not function type) 
+                          instance of type T (not function type) 
+                        returning 
+                          instance of type T (not function type) 
+
+
+              function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+        to arguments
+                      Variable Expression: 0: forall
+                  T: incomplete type
+                pointer to instance of type T (not function type) 
+
+        with inferred parameters:
+          ?=?: forall
+              DT: incomplete type
+            function
+            with parameters
+              pointer to pointer to instance of type DT (not function type) 
+              pointer to instance of type DT (not function type) 
+            returning 
+              pointer to instance of type DT (not function type) 
+
+
+    with inferred parameters:
+      ?=?: forall
+          DT: incomplete type
+        function
+        with parameters
+          pointer to pointer to instance of type DT (not function type) 
+          pointer to instance of type DT (not function type) 
+        returning 
+          pointer to instance of type DT (not function type) 
+
+
+with inferred parameters:
+  ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+(types:
+    instance of type _0_T (not function type) 
+)
+Environment:   ( _2_T ) -> forall
+      _3_T: incomplete type
+    pointer to instance of type _3_T (not function type)  (no widening)
+  ( _1_T ) -> forall
+      _3_T: incomplete type
+    pointer to instance of type _3_T (not function type)  (no widening)
+  ( _0_T ) -> forall
+      _3_T: incomplete type
+    pointer to instance of type _3_T (not function type) 
+  ( _3_T _5_DT _7_DT _9_DT ) (no widening)
+
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+findSubExprs
+Cost ( 0, 4, 0 ): Application of
+  Variable Expression: id: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Application of
+      Variable Expression: id: forall
+            T: type
+              with assertions
+                ?=?: pointer to function
+                    with parameters
+                      pointer to instance of type T (not function type) 
+                      instance of type T (not function type) 
+                    returning 
+                      instance of type T (not function type) 
+
+
+          function
+          with parameters
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+    to arguments
+              Application of
+          Variable Expression: id: forall
+                T: type
+                  with assertions
+                    ?=?: pointer to function
+                        with parameters
+                          pointer to instance of type T (not function type) 
+                          instance of type T (not function type) 
+                        returning 
+                          instance of type T (not function type) 
+
+
+              function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+        to arguments
+                      Variable Expression: 0: signed int 
+
+        with inferred parameters:
+          ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+
+    with inferred parameters:
+      ?=?: function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    signed int 
+)
+Environment:   ( _2_T ) -> signed int  (no widening)
+  ( _1_T ) -> signed int  (no widening)
+  ( _0_T ) -> signed int 
+
+
+Cost ( 0, 4, 0 ): Application of
+  Variable Expression: id: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        instance of type T (not function type) 
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Application of
+      Variable Expression: id: forall
+            T: type
+              with assertions
+                ?=?: pointer to function
+                    with parameters
+                      pointer to instance of type T (not function type) 
+                      instance of type T (not function type) 
+                    returning 
+                      instance of type T (not function type) 
+
+
+          function
+          with parameters
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+    to arguments
+              Application of
+          Variable Expression: id: forall
+                T: type
+                  with assertions
+                    ?=?: pointer to function
+                        with parameters
+                          pointer to instance of type T (not function type) 
+                          instance of type T (not function type) 
+                        returning 
+                          instance of type T (not function type) 
+
+
+              function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+        to arguments
+                      Variable Expression: 0: forall
+                  T: incomplete type
+                pointer to instance of type T (not function type) 
+
+        with inferred parameters:
+          ?=?: forall
+              DT: incomplete type
+            function
+            with parameters
+              pointer to pointer to instance of type DT (not function type) 
+              pointer to instance of type DT (not function type) 
+            returning 
+              pointer to instance of type DT (not function type) 
+
+
+    with inferred parameters:
+      ?=?: forall
+          DT: incomplete type
+        function
+        with parameters
+          pointer to pointer to instance of type DT (not function type) 
+          pointer to instance of type DT (not function type) 
+        returning 
+          pointer to instance of type DT (not function type) 
+
+
+with inferred parameters:
+  ?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+(types:
+    forall
+          _3_T: incomplete type
+        pointer to instance of type _3_T (not function type) 
+)
+Environment:   ( _2_T ) -> forall
+      _3_T: incomplete type
+    pointer to instance of type _3_T (not function type)  (no widening)
+  ( _1_T ) -> forall
+      _3_T: incomplete type
+    pointer to instance of type _3_T (not function type)  (no widening)
+  ( _0_T ) -> forall
+      _3_T: incomplete type
+    pointer to instance of type _3_T (not function type) 
+  ( _3_T _5_DT _7_DT _9_DT ) (no widening)
+
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: h: function
+            with parameters
+              null: pointer to signed int 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  null: pointer to signed int 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is pointer to signed int 
+actual type is signed int 
+formal type is pointer to signed int 
+actual type is forall
+    _3_T: incomplete type
+  pointer to instance of type _3_T (not function type) 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+T
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+T
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Application of
+          Variable Expression: id: forall
+                T: type
+                  with assertions
+                    ?=?: pointer to function
+                        with parameters
+                          pointer to instance of type T (not function type) 
+                          instance of type T (not function type) 
+                        returning 
+                          instance of type T (not function type) 
+
+
+              function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+        to arguments
+                      Application of
+              Variable Expression: id: forall
+                    T: type
+                      with assertions
+                        ?=?: pointer to function
+                            with parameters
+                              pointer to instance of type T (not function type) 
+                              instance of type T (not function type) 
+                            returning 
+                              instance of type T (not function type) 
+
+
+                  function
+                  with parameters
+                    instance of type T (not function type) 
+                  returning 
+                    instance of type T (not function type) 
+
+            to arguments
+                              Application of
+                  Variable Expression: id: forall
+                        T: type
+                          with assertions
+                            ?=?: pointer to function
+                                with parameters
+                                  pointer to instance of type T (not function type) 
+                                  instance of type T (not function type) 
+                                returning 
+                                  instance of type T (not function type) 
+
+
+                      function
+                      with parameters
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+                to arguments
+                                      Variable Expression: 0: forall
+                          T: incomplete type
+                        pointer to instance of type T (not function type) 
+
+                with inferred parameters:
+                  ?=?: forall
+                      DT: incomplete type
+                    function
+                    with parameters
+                      pointer to pointer to instance of type DT (not function type) 
+                      pointer to instance of type DT (not function type) 
+                    returning 
+                      pointer to instance of type DT (not function type) 
+
+
+            with inferred parameters:
+              ?=?: forall
+                  DT: incomplete type
+                function
+                with parameters
+                  pointer to pointer to instance of type DT (not function type) 
+                  pointer to instance of type DT (not function type) 
+                returning 
+                  pointer to instance of type DT (not function type) 
+
+
+        with inferred parameters:
+          ?=?: forall
+              DT: incomplete type
+            function
+            with parameters
+              pointer to pointer to instance of type DT (not function type) 
+              pointer to instance of type DT (not function type) 
+            returning 
+              pointer to instance of type DT (not function type) 
+
+--- results are
+        forall
+              _3_T: incomplete type
+            pointer to instance of type _3_T (not function type) 
+
+converting forall
+            _3_T: incomplete type
+          pointer to instance of type _3_T (not function type) 
+ to pointer to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        null: pointer to signed int 
+actuals are:
+                  Application of
+            Variable Expression: id: forall
+                  T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type T (not function type) 
+                            instance of type T (not function type) 
+                          returning 
+                            instance of type T (not function type) 
+
+
+                function
+                with parameters
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+          to arguments
+                          Application of
+                Variable Expression: id: forall
+                      T: type
+                        with assertions
+                          ?=?: pointer to function
+                              with parameters
+                                pointer to instance of type T (not function type) 
+                                instance of type T (not function type) 
+                              returning 
+                                instance of type T (not function type) 
+
+
+                    function
+                    with parameters
+                      instance of type T (not function type) 
+                    returning 
+                      instance of type T (not function type) 
+
+              to arguments
+                                  Application of
+                    Variable Expression: id: forall
+                          T: type
+                            with assertions
+                              ?=?: pointer to function
+                                  with parameters
+                                    pointer to instance of type T (not function type) 
+                                    instance of type T (not function type) 
+                                  returning 
+                                    instance of type T (not function type) 
+
+
+                        function
+                        with parameters
+                          instance of type T (not function type) 
+                        returning 
+                          instance of type T (not function type) 
+
+                  to arguments
+                                          Variable Expression: 0: forall
+                            T: incomplete type
+                          pointer to instance of type T (not function type) 
+
+                  with inferred parameters:
+                    ?=?: forall
+                        DT: incomplete type
+                      function
+                      with parameters
+                        pointer to pointer to instance of type DT (not function type) 
+                        pointer to instance of type DT (not function type) 
+                      returning 
+                        pointer to instance of type DT (not function type) 
+
+
+              with inferred parameters:
+                ?=?: forall
+                    DT: incomplete type
+                  function
+                  with parameters
+                    pointer to pointer to instance of type DT (not function type) 
+                    pointer to instance of type DT (not function type) 
+                  returning 
+                    pointer to instance of type DT (not function type) 
+
+
+          with inferred parameters:
+            ?=?: forall
+                DT: incomplete type
+              function
+              with parameters
+                pointer to pointer to instance of type DT (not function type) 
+                pointer to instance of type DT (not function type) 
+              returning 
+                pointer to instance of type DT (not function type) 
+
+
+bindings are:
+        ( _2_T ) -> forall
+            _3_T: incomplete type
+          pointer to instance of type _3_T (not function type)  (no widening)
+        ( _1_T ) -> forall
+            _3_T: incomplete type
+          pointer to instance of type _3_T (not function type)  (no widening)
+        ( _0_T ) -> forall
+            _3_T: incomplete type
+          pointer to instance of type _3_T (not function type)  (no widening)
+        ( _3_T _5_DT _7_DT _9_DT ) -> signed int  (no widening)
+cost of conversion is:( 0, 1, 0 )
+alternatives before prune:
+Cost ( 0, 1, 0 ): Application of
+  Variable Expression: h: function
+      with parameters
+        null: pointer to signed int 
+      returning 
+        nothing 
+
+to arguments
+      Application of
+      Variable Expression: id: forall
+            T: type
+              with assertions
+                ?=?: pointer to function
+                    with parameters
+                      pointer to instance of type T (not function type) 
+                      instance of type T (not function type) 
+                    returning 
+                      instance of type T (not function type) 
+
+
+          function
+          with parameters
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+    to arguments
+              Application of
+          Variable Expression: id: forall
+                T: type
+                  with assertions
+                    ?=?: pointer to function
+                        with parameters
+                          pointer to instance of type T (not function type) 
+                          instance of type T (not function type) 
+                        returning 
+                          instance of type T (not function type) 
+
+
+              function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+        to arguments
+                      Application of
+              Variable Expression: id: forall
+                    T: type
+                      with assertions
+                        ?=?: pointer to function
+                            with parameters
+                              pointer to instance of type T (not function type) 
+                              instance of type T (not function type) 
+                            returning 
+                              instance of type T (not function type) 
+
+
+                  function
+                  with parameters
+                    instance of type T (not function type) 
+                  returning 
+                    instance of type T (not function type) 
+
+            to arguments
+                              Variable Expression: 0: forall
+                      T: incomplete type
+                    pointer to instance of type T (not function type) 
+
+            with inferred parameters:
+              ?=?: forall
+                  DT: incomplete type
+                function
+                with parameters
+                  pointer to pointer to instance of type DT (not function type) 
+                  pointer to instance of type DT (not function type) 
+                returning 
+                  pointer to instance of type DT (not function type) 
+
+
+        with inferred parameters:
+          ?=?: forall
+              DT: incomplete type
+            function
+            with parameters
+              pointer to pointer to instance of type DT (not function type) 
+              pointer to instance of type DT (not function type) 
+            returning 
+              pointer to instance of type DT (not function type) 
+
+
+    with inferred parameters:
+      ?=?: forall
+          DT: incomplete type
+        function
+        with parameters
+          pointer to pointer to instance of type DT (not function type) 
+          pointer to instance of type DT (not function type) 
+        returning 
+          pointer to instance of type DT (not function type) 
+
+
+(types:
+)
+Environment:   ( _2_T ) -> forall
+      _3_T: incomplete type
+    pointer to instance of type _3_T (not function type)  (no widening)
+  ( _1_T ) -> forall
+      _3_T: incomplete type
+    pointer to instance of type _3_T (not function type)  (no widening)
+  ( _0_T ) -> forall
+      _3_T: incomplete type
+    pointer to instance of type _3_T (not function type)  (no widening)
+  ( _3_T _5_DT _7_DT _9_DT ) -> signed int  (no widening)
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: h: function
+        with parameters
+          null: pointer to signed int 
+        returning 
+          nothing 
+
+  to arguments
+          Application of
+        Variable Expression: id: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+      to arguments
+                  Application of
+            Variable Expression: id: forall
+                  T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type T (not function type) 
+                            instance of type T (not function type) 
+                          returning 
+                            instance of type T (not function type) 
+
+
+                function
+                with parameters
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+          to arguments
+                          Application of
+                Variable Expression: id: forall
+                      T: type
+                        with assertions
+                          ?=?: pointer to function
+                              with parameters
+                                pointer to instance of type T (not function type) 
+                                instance of type T (not function type) 
+                              returning 
+                                instance of type T (not function type) 
+
+
+                    function
+                    with parameters
+                      instance of type T (not function type) 
+                    returning 
+                      instance of type T (not function type) 
+
+              to arguments
+                                  Variable Expression: 0: forall
+                        T: incomplete type
+                      pointer to instance of type T (not function type) 
+
+              with inferred parameters:
+                ?=?: forall
+                    DT: incomplete type
+                  function
+                  with parameters
+                    pointer to pointer to instance of type DT (not function type) 
+                    pointer to instance of type DT (not function type) 
+                  returning 
+                    pointer to instance of type DT (not function type) 
+
+
+          with inferred parameters:
+            ?=?: forall
+                DT: incomplete type
+              function
+              with parameters
+                pointer to pointer to instance of type DT (not function type) 
+                pointer to instance of type DT (not function type) 
+              returning 
+                pointer to instance of type DT (not function type) 
+
+
+      with inferred parameters:
+        ?=?: forall
+            DT: incomplete type
+          function
+          with parameters
+            pointer to pointer to instance of type DT (not function type) 
+            pointer to instance of type DT (not function type) 
+          returning 
+            pointer to instance of type DT (not function type) 
+
+
+
+to:
+  nothing
+(types:
+)
+Environment:   ( _2_T ) -> forall
+      _3_T: incomplete type
+    pointer to instance of type _3_T (not function type)  (no widening)
+  ( _1_T ) -> forall
+      _3_T: incomplete type
+    pointer to instance of type _3_T (not function type)  (no widening)
+  ( _0_T ) -> forall
+      _3_T: incomplete type
+    pointer to instance of type _3_T (not function type)  (no widening)
+  ( _3_T _5_DT _7_DT _9_DT ) -> signed int  (no widening)
+
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+int ___operator_assign__Fi_Pii_(int *, int );
+void *___operator_assign__A0_1_0__FPd0_PPd0Pd0_(void **, void *);
+void __a__F__(){
+    void __f__A1_0_0____operator_assign__PFt0_Pt0t0__F_t0_(void (*_adapterF2tT_P2tT2tT_)(void (*)(), void *, void *, void *), long unsigned int T, void (*___operator_assign__PF2tT_P2tT2tT_)(), void *);
+    void __g__F_PA1_0_0____operator_assign__PFt0_Pt0t0__F_t0__(void (*__p__PA1_0_0____operator_assign__PFt0_Pt0t0__F_t0_)(void (*_adapterF2tU_P2tU2tU_)(void (*)(), void *, void *, void *), long unsigned int U, void (*___operator_assign__PF2tU_P2tU2tU_)(), void *));
+    __g__F_PA1_0_0____operator_assign__PFt0_Pt0t0__F_t0__(__f__A1_0_0____operator_assign__PFt0_Pt0t0__F_t0_);
+}
+void __g__F__(){
+    void __h__F_Pi_(int *__null__Pi);
+    void __id__A1_0_0____operator_assign__PFt0_Pt0t0__Ft0_t0_(void (*_adapterF2tT_P2tT2tT_)(void (*)(), void *, void *, void *), long unsigned int T, void (*___operator_assign__PF2tT_P2tT2tT_)(), void *, void *);
+    void *___constant_zero__A0_1_0__Pd0;
+    int ___constant_zero__i;
+    void *_thunk0(void **_p0, void *_p1){
+        return ___operator_assign__A0_1_0__FPd0_PPd0Pd0_(_p0, _p1);
+    }
+    void *_thunk1(void **_p0, void *_p1){
+        return ___operator_assign__A0_1_0__FPd0_PPd0Pd0_(_p0, _p1);
+    }
+    void *_thunk2(void **_p0, void *_p1){
+        return ___operator_assign__A0_1_0__FPd0_PPd0Pd0_(_p0, _p1);
+    }
+    void *_temp0;
+    void _adapterFA0_1_0__Pd0_PA0_1_0__Pd1A0_1_0__Pd2_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
+        ((*((_3_T **)_ret))=((void *(*)(void **, void *))_adaptee)(_p0, (*((_3_T **)_p1))));
+    }
+    void *_temp1;
+    void *_temp2;
+    __h__F_Pi_((__id__A1_0_0____operator_assign__PFt0_Pt0t0__Ft0_t0_(_adapterFA0_1_0__Pd0_PA0_1_0__Pd1A0_1_0__Pd2_, sizeof(_3_T *), ((void (*)())(&_thunk2)), (&_temp2), (&(__id__A1_0_0____operator_assign__PFt0_Pt0t0__Ft0_t0_(_adapterFA0_1_0__Pd0_PA0_1_0__Pd1A0_1_0__Pd2_, sizeof(_3_T *), ((void (*)())(&_thunk1)), (&_temp1), (&(__id__A1_0_0____operator_assign__PFt0_Pt0t0__Ft0_t0_(_adapterFA0_1_0__Pd0_PA0_1_0__Pd1A0_1_0__Pd2_, sizeof(_3_T *), ((void (*)())(&_thunk0)), (&_temp0), (&___constant_zero__A0_1_0__Pd0)) , _temp0))) , _temp1))) , _temp2));
+}
Index: src/Tests/Expect-r/Scope.txt
===================================================================
--- src/Tests/Expect-r/Scope.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Scope.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,3706 @@
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                a: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                b: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    a: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    a: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  a: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                a: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                b: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  b: double 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    lvalue double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    b: double 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    b: double 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to double 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  b: double 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  b: double 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue double 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to double 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue instance of struct __anonymous0 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+(types:
+    instance of struct __anonymous0 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                a: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                b: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type u (not function type) 
+    _src: instance of type u (not function type) 
+  returning 
+    instance of type u (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type u (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type u (not function type) 
+
+    to:
+      instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type u (not function type) 
+      _src: instance of type u (not function type) 
+    returning 
+      instance of type u (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type u (not function type) 
+      _src: instance of type u (not function type) 
+    returning 
+      instance of type u (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type u (not function type) 
+          _src: instance of type u (not function type) 
+        returning 
+          instance of type u (not function type) 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _dst: pointer to instance of type u (not function type) 
+(types:
+    lvalue pointer to instance of type u (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is y
+decl is y: double 
+newExpr is Variable Expression: y: double 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: y: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                a: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                b: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type u (not function type) 
+    _src: instance of type u (not function type) 
+  returning 
+    instance of type u (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type u (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type u (not function type) 
+
+    to:
+      instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type u (not function type) 
+      _src: instance of type u (not function type) 
+    returning 
+      instance of type u (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type x (not function type) 
+    _src: instance of type x (not function type) 
+  returning 
+    instance of type x (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type x (not function type) 
+      _src: instance of type x (not function type) 
+    returning 
+      instance of type x (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type u (not function type) 
+      _src: instance of type u (not function type) 
+    returning 
+      instance of type u (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type u (not function type) 
+          _src: instance of type u (not function type) 
+        returning 
+          instance of type u (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type x (not function type) 
+      _src: instance of type x (not function type) 
+    returning 
+      instance of type x (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type x (not function type) 
+          _src: instance of type x (not function type) 
+        returning 
+          instance of type x (not function type) 
+
+)
+Environment: 
+
+there are 3 alternatives before elimination
+there are 3 alternatives after elimination
+nameExpr is u
+nameExpr is t
+decl is t: function
+  with parameters
+    instance of type u (not function type) 
+  returning 
+    instance of type x (not function type) 
+
+newExpr is Variable Expression: t: function
+    with parameters
+      instance of type u (not function type) 
+    returning 
+      instance of type x (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: t: function
+    with parameters
+      instance of type u (not function type) 
+    returning 
+      instance of type x (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          instance of type u (not function type) 
+        returning 
+          instance of type x (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is u
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                a: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                b: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type u (not function type) 
+    _src: instance of type u (not function type) 
+  returning 
+    instance of type u (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type u (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type u (not function type) 
+
+    to:
+      instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type u (not function type) 
+      _src: instance of type u (not function type) 
+    returning 
+      instance of type u (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type x (not function type) 
+    _src: instance of type x (not function type) 
+  returning 
+    instance of type x (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type x (not function type) 
+      _src: instance of type x (not function type) 
+    returning 
+      instance of type x (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type u (not function type) 
+      _src: instance of type u (not function type) 
+    returning 
+      instance of type u (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type u (not function type) 
+          _src: instance of type u (not function type) 
+        returning 
+          instance of type u (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type x (not function type) 
+      _src: instance of type x (not function type) 
+    returning 
+      instance of type x (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type x (not function type) 
+          _src: instance of type x (not function type) 
+        returning 
+          instance of type x (not function type) 
+
+)
+Environment: 
+
+there are 3 alternatives before elimination
+there are 3 alternatives after elimination
+nameExpr is z
+decl is z: double 
+newExpr is Variable Expression: z: double 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: z: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: z: double 
+(types:
+    pointer to double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: z: double 
+(types:
+    pointer to double 
+)
+Environment: 
+
+nameExpr is t
+decl is t: function
+  with parameters
+    instance of type u (not function type) 
+  returning 
+    instance of type x (not function type) 
+
+newExpr is Variable Expression: t: function
+    with parameters
+      instance of type u (not function type) 
+    returning 
+      instance of type x (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: t: function
+    with parameters
+      instance of type u (not function type) 
+    returning 
+      instance of type x (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          instance of type u (not function type) 
+        returning 
+          instance of type x (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is u
+nameExpr is u
+decl is u: pointer to function
+  with parameters
+    instance of type t (not function type) 
+  returning 
+    instance of type t (not function type) 
+
+newExpr is Variable Expression: u: pointer to function
+    with parameters
+      instance of type t (not function type) 
+    returning 
+      instance of type t (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: u: pointer to function
+    with parameters
+      instance of type t (not function type) 
+    returning 
+      instance of type t (not function type) 
+
+(types:
+    lvalue pointer to function
+        with parameters
+          instance of type t (not function type) 
+        returning 
+          instance of type t (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is the_t
+decl is the_t: instance of type t (not function type) 
+newExpr is Variable Expression: the_t: instance of type t (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: the_t: instance of type t (not function type) 
+(types:
+    lvalue instance of type t (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: the_t: instance of type t (not function type) 
+(types:
+    lvalue instance of type t (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: u: pointer to function
+            with parameters
+              instance of type t (not function type) 
+            returning 
+              instance of type t (not function type) 
+
+(types:
+            lvalue pointer to function
+                with parameters
+                  instance of type t (not function type) 
+                returning 
+                  instance of type t (not function type) 
+
+)
+        Environment: 
+formal type is instance of type t (not function type) 
+actual type is lvalue instance of type t (not function type) 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Variable Expression: the_t: instance of type t (not function type) 
+--- results are
+        lvalue instance of type t (not function type) 
+
+converting lvalue instance of type t (not function type) 
+ to instance of type t (not function type) 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type t (not function type) 
+actuals are:
+                  Variable Expression: the_t: instance of type t (not function type) 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: u: pointer to function
+      with parameters
+        instance of type t (not function type) 
+      returning 
+        instance of type t (not function type) 
+
+to arguments
+      Variable Expression: the_t: instance of type t (not function type) 
+
+(types:
+    instance of type t (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: u: pointer to function
+        with parameters
+          instance of type t (not function type) 
+        returning 
+          instance of type t (not function type) 
+
+  to arguments
+          Variable Expression: the_t: instance of type t (not function type) 
+
+
+to:
+  instance of type t (not function type) 
+(types:
+    instance of type t (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                a: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                b: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type u (not function type) 
+    _src: instance of type u (not function type) 
+  returning 
+    instance of type u (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type u (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type u (not function type) 
+
+    to:
+      instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type u (not function type) 
+      _src: instance of type u (not function type) 
+    returning 
+      instance of type u (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type x (not function type) 
+    _src: instance of type x (not function type) 
+  returning 
+    instance of type x (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type x (not function type) 
+      _src: instance of type x (not function type) 
+    returning 
+      instance of type x (not function type) 
+
+
+decl is ?=?: pointer to function
+  with parameters
+    pointer to instance of type t (not function type) 
+    instance of type t (not function type) 
+  returning 
+    instance of type t (not function type) 
+
+newExpr is Variable Expression: ?=?: pointer to function
+    with parameters
+      pointer to instance of type t (not function type) 
+      instance of type t (not function type) 
+    returning 
+      instance of type t (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type u (not function type) 
+      _src: instance of type u (not function type) 
+    returning 
+      instance of type u (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type u (not function type) 
+          _src: instance of type u (not function type) 
+        returning 
+          instance of type u (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type x (not function type) 
+      _src: instance of type x (not function type) 
+    returning 
+      instance of type x (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type x (not function type) 
+          _src: instance of type x (not function type) 
+        returning 
+          instance of type x (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: pointer to function
+    with parameters
+      pointer to instance of type t (not function type) 
+      instance of type t (not function type) 
+    returning 
+      instance of type t (not function type) 
+
+(types:
+    lvalue pointer to function
+        with parameters
+          pointer to instance of type t (not function type) 
+          instance of type t (not function type) 
+        returning 
+          instance of type t (not function type) 
+
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+nameExpr is y
+decl is y: instance of type t (not function type) with initializer 
+Simple Initializer:   Cast of:
+    Application of
+      Variable Expression: u: pointer to function
+          with parameters
+            instance of type t (not function type) 
+          returning 
+            instance of type t (not function type) 
+
+    to arguments
+              Variable Expression: the_t: instance of type t (not function type) 
+
+
+  to:
+    instance of type t (not function type) 
+  with environment:
+    Types:
+    Non-types:
+
+newExpr is Variable Expression: y: instance of type t (not function type) 
+
+decl is y: double 
+newExpr is Variable Expression: y: double 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: y: instance of type t (not function type) 
+(types:
+    lvalue instance of type t (not function type) 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: y: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: y: double 
+(types:
+    pointer to double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: y: instance of type t (not function type) 
+(types:
+    pointer to instance of type t (not function type) 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: y: double 
+(types:
+    pointer to double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: y: instance of type t (not function type) 
+(types:
+    pointer to instance of type t (not function type) 
+)
+Environment: 
+
+nameExpr is u
+decl is u: pointer to function
+  with parameters
+    instance of type t (not function type) 
+  returning 
+    instance of type t (not function type) 
+
+newExpr is Variable Expression: u: pointer to function
+    with parameters
+      instance of type t (not function type) 
+    returning 
+      instance of type t (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: u: pointer to function
+    with parameters
+      instance of type t (not function type) 
+    returning 
+      instance of type t (not function type) 
+
+(types:
+    lvalue pointer to function
+        with parameters
+          instance of type t (not function type) 
+        returning 
+          instance of type t (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is the_t
+decl is the_t: instance of type t (not function type) 
+newExpr is Variable Expression: the_t: instance of type t (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: the_t: instance of type t (not function type) 
+(types:
+    lvalue instance of type t (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: the_t: instance of type t (not function type) 
+(types:
+    lvalue instance of type t (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: u: pointer to function
+            with parameters
+              instance of type t (not function type) 
+            returning 
+              instance of type t (not function type) 
+
+(types:
+            lvalue pointer to function
+                with parameters
+                  instance of type t (not function type) 
+                returning 
+                  instance of type t (not function type) 
+
+)
+        Environment: 
+formal type is instance of type t (not function type) 
+actual type is lvalue instance of type t (not function type) 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Variable Expression: the_t: instance of type t (not function type) 
+--- results are
+        lvalue instance of type t (not function type) 
+
+converting lvalue instance of type t (not function type) 
+ to instance of type t (not function type) 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        instance of type t (not function type) 
+actuals are:
+                  Variable Expression: the_t: instance of type t (not function type) 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: u: pointer to function
+      with parameters
+        instance of type t (not function type) 
+      returning 
+        instance of type t (not function type) 
+
+to arguments
+      Variable Expression: the_t: instance of type t (not function type) 
+
+(types:
+    instance of type t (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: u: pointer to function
+      with parameters
+        instance of type t (not function type) 
+      returning 
+        instance of type t (not function type) 
+
+to arguments
+      Variable Expression: the_t: instance of type t (not function type) 
+
+(types:
+    instance of type t (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type x (not function type) 
+              _src: instance of type x (not function type) 
+            returning 
+              instance of type x (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type x (not function type) 
+                  _src: instance of type x (not function type) 
+                returning 
+                  instance of type x (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type x (not function type) 
+actual type is pointer to double 
+formal type is pointer to instance of type x (not function type) 
+actual type is pointer to instance of type t (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type u (not function type) 
+              _src: instance of type u (not function type) 
+            returning 
+              instance of type u (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type u (not function type) 
+                  _src: instance of type u (not function type) 
+                returning 
+                  instance of type u (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type u (not function type) 
+actual type is pointer to double 
+formal type is pointer to instance of type u (not function type) 
+actual type is pointer to instance of type t (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to double 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to instance of type t (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: pointer to function
+            with parameters
+              pointer to instance of type t (not function type) 
+              instance of type t (not function type) 
+            returning 
+              instance of type t (not function type) 
+
+(types:
+            lvalue pointer to function
+                with parameters
+                  pointer to instance of type t (not function type) 
+                  instance of type t (not function type) 
+                returning 
+                  instance of type t (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type t (not function type) 
+actual type is pointer to double 
+formal type is pointer to instance of type t (not function type) 
+actual type is pointer to instance of type t (not function type) 
+formal type is instance of type t (not function type) 
+actual type is instance of type t (not function type) 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Address of:
+          Variable Expression: y: instance of type t (not function type) 
+--- results are
+        pointer to instance of type t (not function type) 
+
+converting pointer to instance of type t (not function type) 
+ to pointer to instance of type t (not function type) 
+cost is( 0, 0, 0 )
+actual expression:
+        Application of
+          Variable Expression: u: pointer to function
+              with parameters
+                instance of type t (not function type) 
+              returning 
+                instance of type t (not function type) 
+
+        to arguments
+                      Variable Expression: the_t: instance of type t (not function type) 
+
+--- results are
+        instance of type t (not function type) 
+
+converting instance of type t (not function type) 
+ to instance of type t (not function type) 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        pointer to instance of type t (not function type) 
+        instance of type t (not function type) 
+actuals are:
+                  Address of:
+            Variable Expression: y: instance of type t (not function type) 
+
+                  Application of
+            Variable Expression: u: pointer to function
+                with parameters
+                  instance of type t (not function type) 
+                returning 
+                  instance of type t (not function type) 
+
+          to arguments
+                          Variable Expression: the_t: instance of type t (not function type) 
+
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?=?: pointer to function
+      with parameters
+        pointer to instance of type t (not function type) 
+        instance of type t (not function type) 
+      returning 
+        instance of type t (not function type) 
+
+to arguments
+      Address of:
+      Variable Expression: y: instance of type t (not function type) 
+
+      Application of
+      Variable Expression: u: pointer to function
+          with parameters
+            instance of type t (not function type) 
+          returning 
+            instance of type t (not function type) 
+
+    to arguments
+              Variable Expression: the_t: instance of type t (not function type) 
+
+
+(types:
+    instance of type t (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?=?: pointer to function
+        with parameters
+          pointer to instance of type t (not function type) 
+          instance of type t (not function type) 
+        returning 
+          instance of type t (not function type) 
+
+  to arguments
+          Address of:
+        Variable Expression: y: instance of type t (not function type) 
+
+          Application of
+        Variable Expression: u: pointer to function
+            with parameters
+              instance of type t (not function type) 
+            returning 
+              instance of type t (not function type) 
+
+      to arguments
+                  Variable Expression: the_t: instance of type t (not function type) 
+
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is x
+decl is x: char 
+newExpr is Variable Expression: x: char 
+
+decl is x: signed int 
+newExpr is Variable Expression: x: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: x: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: x: char 
+
+to:
+  char 
+(types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                a: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                b: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type u (not function type) 
+    _src: instance of type u (not function type) 
+  returning 
+    instance of type u (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type u (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type u (not function type) 
+
+    to:
+      instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type u (not function type) 
+      _src: instance of type u (not function type) 
+    returning 
+      instance of type u (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type x (not function type) 
+    _src: instance of type x (not function type) 
+  returning 
+    instance of type x (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type x (not function type) 
+      _src: instance of type x (not function type) 
+    returning 
+      instance of type x (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type u (not function type) 
+      _src: instance of type u (not function type) 
+    returning 
+      instance of type u (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type u (not function type) 
+          _src: instance of type u (not function type) 
+        returning 
+          instance of type u (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type x (not function type) 
+      _src: instance of type x (not function type) 
+    returning 
+      instance of type x (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type x (not function type) 
+          _src: instance of type x (not function type) 
+        returning 
+          instance of type x (not function type) 
+
+)
+Environment: 
+
+there are 3 alternatives before elimination
+there are 3 alternatives after elimination
+nameExpr is z
+decl is z: char with initializer 
+Simple Initializer:   Cast of:
+    Variable Expression: x: char 
+
+  to:
+    char 
+  with environment:
+    Types:
+    Non-types:
+
+newExpr is Variable Expression: z: char 
+
+decl is z: double 
+newExpr is Variable Expression: z: double 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: z: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: z: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: z: double 
+(types:
+    pointer to double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: z: char 
+(types:
+    pointer to char 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: z: double 
+(types:
+    pointer to double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: z: char 
+(types:
+    pointer to char 
+)
+Environment: 
+
+nameExpr is x
+decl is x: char 
+newExpr is Variable Expression: x: char 
+
+decl is x: signed int 
+newExpr is Variable Expression: x: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: x: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: x: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type x (not function type) 
+              _src: instance of type x (not function type) 
+            returning 
+              instance of type x (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type x (not function type) 
+                  _src: instance of type x (not function type) 
+                returning 
+                  instance of type x (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type x (not function type) 
+actual type is pointer to double 
+formal type is pointer to instance of type x (not function type) 
+actual type is pointer to char 
+formal type is pointer to instance of type x (not function type) 
+actual type is pointer to double 
+formal type is pointer to instance of type x (not function type) 
+actual type is pointer to char 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type u (not function type) 
+              _src: instance of type u (not function type) 
+            returning 
+              instance of type u (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type u (not function type) 
+                  _src: instance of type u (not function type) 
+                returning 
+                  instance of type u (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type u (not function type) 
+actual type is pointer to double 
+formal type is pointer to instance of type u (not function type) 
+actual type is pointer to char 
+formal type is pointer to instance of type u (not function type) 
+actual type is pointer to double 
+formal type is pointer to instance of type u (not function type) 
+actual type is pointer to char 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to double 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to char 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to double 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to char 
+nameExpr is y
+decl is y: char 
+newExpr is Variable Expression: y: char 
+
+decl is y: double 
+newExpr is Variable Expression: y: double 
+
+decl is y: signed int 
+newExpr is Variable Expression: y: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: y: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: y: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: y: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 3 alternatives before elimination
+there are 3 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: y: char 
+
+to:
+  char 
+(types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                a: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                b: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type u (not function type) 
+    _src: instance of type u (not function type) 
+  returning 
+    instance of type u (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type u (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type u (not function type) 
+
+    to:
+      instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type u (not function type) 
+      _src: instance of type u (not function type) 
+    returning 
+      instance of type u (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type x (not function type) 
+    _src: instance of type x (not function type) 
+  returning 
+    instance of type x (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type x (not function type) 
+      _src: instance of type x (not function type) 
+    returning 
+      instance of type x (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type u (not function type) 
+      _src: instance of type u (not function type) 
+    returning 
+      instance of type u (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type u (not function type) 
+          _src: instance of type u (not function type) 
+        returning 
+          instance of type u (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type x (not function type) 
+      _src: instance of type x (not function type) 
+    returning 
+      instance of type x (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type x (not function type) 
+          _src: instance of type x (not function type) 
+        returning 
+          instance of type x (not function type) 
+
+)
+Environment: 
+
+there are 3 alternatives before elimination
+there are 3 alternatives after elimination
+nameExpr is x
+decl is x: char 
+newExpr is Variable Expression: x: char 
+
+decl is x: signed int 
+newExpr is Variable Expression: x: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: x: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: x: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: x: signed int 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: x: char 
+(types:
+    pointer to char 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: x: signed int 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: x: char 
+(types:
+    pointer to char 
+)
+Environment: 
+
+nameExpr is y
+decl is y: char 
+newExpr is Variable Expression: y: char 
+
+decl is y: double 
+newExpr is Variable Expression: y: double 
+
+decl is y: signed int 
+newExpr is Variable Expression: y: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: y: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: y: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: y: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 3 alternatives before elimination
+there are 3 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: y: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: y: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: y: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type x (not function type) 
+              _src: instance of type x (not function type) 
+            returning 
+              instance of type x (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type x (not function type) 
+                  _src: instance of type x (not function type) 
+                returning 
+                  instance of type x (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type x (not function type) 
+actual type is pointer to signed int 
+formal type is pointer to instance of type x (not function type) 
+actual type is pointer to char 
+formal type is pointer to instance of type x (not function type) 
+actual type is pointer to signed int 
+formal type is pointer to instance of type x (not function type) 
+actual type is pointer to char 
+formal type is pointer to instance of type x (not function type) 
+actual type is pointer to signed int 
+formal type is pointer to instance of type x (not function type) 
+actual type is pointer to char 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type u (not function type) 
+              _src: instance of type u (not function type) 
+            returning 
+              instance of type u (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type u (not function type) 
+                  _src: instance of type u (not function type) 
+                returning 
+                  instance of type u (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type u (not function type) 
+actual type is pointer to signed int 
+formal type is pointer to instance of type u (not function type) 
+actual type is pointer to char 
+formal type is pointer to instance of type u (not function type) 
+actual type is pointer to signed int 
+formal type is pointer to instance of type u (not function type) 
+actual type is pointer to char 
+formal type is pointer to instance of type u (not function type) 
+actual type is pointer to signed int 
+formal type is pointer to instance of type u (not function type) 
+actual type is pointer to char 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to char 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to char 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to char 
+nameExpr is y
+decl is y: char 
+newExpr is Variable Expression: y: char 
+
+decl is y: double 
+newExpr is Variable Expression: y: double 
+
+decl is y: signed int 
+newExpr is Variable Expression: y: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: y: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: y: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: y: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 3 alternatives before elimination
+there are 3 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: y: char 
+
+to:
+  char 
+(types:
+    char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                a: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                b: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type u (not function type) 
+    _src: instance of type u (not function type) 
+  returning 
+    instance of type u (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type u (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type u (not function type) 
+
+    to:
+      instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type u (not function type) 
+      _src: instance of type u (not function type) 
+    returning 
+      instance of type u (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type x (not function type) 
+    _src: instance of type x (not function type) 
+  returning 
+    instance of type x (not function type) 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type x (not function type) 
+      _src: instance of type x (not function type) 
+    returning 
+      instance of type x (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type u (not function type) 
+      _src: instance of type u (not function type) 
+    returning 
+      instance of type u (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type u (not function type) 
+          _src: instance of type u (not function type) 
+        returning 
+          instance of type u (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type x (not function type) 
+      _src: instance of type x (not function type) 
+    returning 
+      instance of type x (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type x (not function type) 
+          _src: instance of type x (not function type) 
+        returning 
+          instance of type x (not function type) 
+
+)
+Environment: 
+
+there are 3 alternatives before elimination
+there are 3 alternatives after elimination
+nameExpr is q
+decl is q: forall
+    t: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type t (not function type) 
+              instance of type t (not function type) 
+            returning 
+              instance of type t (not function type) 
+
+        u: pointer to function
+            with parameters
+              instance of type t (not function type) 
+            returning 
+              instance of type t (not function type) 
+
+
+  function
+  with parameters
+    the_t: instance of type t (not function type) 
+  returning 
+    double 
+  with body 
+    CompoundStmt
+      Declaration of y: instance of type t (not function type) with initializer 
+        Simple Initializer:           Cast of:
+            Application of
+              Variable Expression: u: pointer to function
+                  with parameters
+                    instance of type t (not function type) 
+                  returning 
+                    instance of type t (not function type) 
+
+            to arguments
+                              Variable Expression: the_t: instance of type t (not function type) 
+
+
+          to:
+            instance of type t (not function type) 
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: pointer to function
+                with parameters
+                  pointer to instance of type t (not function type) 
+                  instance of type t (not function type) 
+                returning 
+                  instance of type t (not function type) 
+
+          to arguments
+                          Address of:
+                Variable Expression: y: instance of type t (not function type) 
+
+                          Application of
+                Variable Expression: u: pointer to function
+                    with parameters
+                      instance of type t (not function type) 
+                    returning 
+                      instance of type t (not function type) 
+
+              to arguments
+                                  Variable Expression: the_t: instance of type t (not function type) 
+
+
+          with environment:
+            Types:
+            Non-types:
+
+
+newExpr is Variable Expression: q: forall
+      t: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type t (not function type) 
+                instance of type t (not function type) 
+              returning 
+                instance of type t (not function type) 
+
+          u: pointer to function
+              with parameters
+                instance of type t (not function type) 
+              returning 
+                instance of type t (not function type) 
+
+
+    function
+    with parameters
+      the_t: instance of type t (not function type) 
+    returning 
+      double 
+
+
+decl is q: char with initializer 
+Simple Initializer:   Cast of:
+    Variable Expression: y: char 
+
+  to:
+    char 
+  with environment:
+    Types:
+    Non-types:
+
+newExpr is Variable Expression: q: char 
+
+decl is q: double 
+newExpr is Variable Expression: q: double 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: q: forall
+      t: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type t (not function type) 
+                instance of type t (not function type) 
+              returning 
+                instance of type t (not function type) 
+
+          u: pointer to function
+              with parameters
+                instance of type t (not function type) 
+              returning 
+                instance of type t (not function type) 
+
+
+    function
+    with parameters
+      the_t: instance of type t (not function type) 
+    returning 
+      double 
+
+(types:
+    forall
+          _0_t: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_t (not function type) 
+                    instance of type _0_t (not function type) 
+                  returning 
+                    instance of type _0_t (not function type) 
+
+              u: pointer to function
+                  with parameters
+                    instance of type _0_t (not function type) 
+                  returning 
+                    instance of type _0_t (not function type) 
+
+
+        lvalue function
+        with parameters
+          the_t: instance of type _0_t (not function type) 
+        returning 
+          double 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+there are 3 alternatives before elimination
+there are 3 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: q: double 
+(types:
+    pointer to double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: q: char 
+(types:
+    pointer to char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: q: forall
+        t: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type t (not function type) 
+                  instance of type t (not function type) 
+                returning 
+                  instance of type t (not function type) 
+
+            u: pointer to function
+                with parameters
+                  instance of type t (not function type) 
+                returning 
+                  instance of type t (not function type) 
+
+
+      function
+      with parameters
+        the_t: instance of type t (not function type) 
+      returning 
+        double 
+
+(types:
+    pointer to forall
+          _0_t: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_t (not function type) 
+                    instance of type _0_t (not function type) 
+                  returning 
+                    instance of type _0_t (not function type) 
+
+              u: pointer to function
+                  with parameters
+                    instance of type _0_t (not function type) 
+                  returning 
+                    instance of type _0_t (not function type) 
+
+
+        function
+        with parameters
+          the_t: instance of type _0_t (not function type) 
+        returning 
+          double 
+
+)
+Environment: 
+
+there are 3 alternatives before elimination
+there are 3 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: q: double 
+(types:
+    pointer to double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: q: char 
+(types:
+    pointer to char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: q: forall
+        t: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type t (not function type) 
+                  instance of type t (not function type) 
+                returning 
+                  instance of type t (not function type) 
+
+            u: pointer to function
+                with parameters
+                  instance of type t (not function type) 
+                returning 
+                  instance of type t (not function type) 
+
+
+      function
+      with parameters
+        the_t: instance of type t (not function type) 
+      returning 
+        double 
+
+(types:
+    pointer to forall
+          _0_t: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_t (not function type) 
+                    instance of type _0_t (not function type) 
+                  returning 
+                    instance of type _0_t (not function type) 
+
+              u: pointer to function
+                  with parameters
+                    instance of type _0_t (not function type) 
+                  returning 
+                    instance of type _0_t (not function type) 
+
+
+        function
+        with parameters
+          the_t: instance of type _0_t (not function type) 
+        returning 
+          double 
+
+)
+Environment: 
+
+nameExpr is y
+decl is y: char 
+newExpr is Variable Expression: y: char 
+
+decl is y: double 
+newExpr is Variable Expression: y: double 
+
+decl is y: signed int 
+newExpr is Variable Expression: y: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: y: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: y: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: y: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 3 alternatives before elimination
+there are 3 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: y: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: y: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: y: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type x (not function type) 
+              _src: instance of type x (not function type) 
+            returning 
+              instance of type x (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type x (not function type) 
+                  _src: instance of type x (not function type) 
+                returning 
+                  instance of type x (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type x (not function type) 
+actual type is pointer to double 
+formal type is pointer to instance of type x (not function type) 
+actual type is pointer to char 
+formal type is pointer to instance of type x (not function type) 
+actual type is pointer to forall
+    _0_t: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type _0_t (not function type) 
+              instance of type _0_t (not function type) 
+            returning 
+              instance of type _0_t (not function type) 
+
+        u: pointer to function
+            with parameters
+              instance of type _0_t (not function type) 
+            returning 
+              instance of type _0_t (not function type) 
+
+
+  function
+  with parameters
+    the_t: instance of type _0_t (not function type) 
+  returning 
+    double 
+
+formal type is pointer to instance of type x (not function type) 
+actual type is pointer to double 
+formal type is pointer to instance of type x (not function type) 
+actual type is pointer to char 
+formal type is pointer to instance of type x (not function type) 
+actual type is pointer to forall
+    _0_t: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type _0_t (not function type) 
+              instance of type _0_t (not function type) 
+            returning 
+              instance of type _0_t (not function type) 
+
+        u: pointer to function
+            with parameters
+              instance of type _0_t (not function type) 
+            returning 
+              instance of type _0_t (not function type) 
+
+
+  function
+  with parameters
+    the_t: instance of type _0_t (not function type) 
+  returning 
+    double 
+
+formal type is pointer to instance of type x (not function type) 
+actual type is pointer to double 
+formal type is pointer to instance of type x (not function type) 
+actual type is pointer to char 
+formal type is pointer to instance of type x (not function type) 
+actual type is pointer to forall
+    _0_t: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type _0_t (not function type) 
+              instance of type _0_t (not function type) 
+            returning 
+              instance of type _0_t (not function type) 
+
+        u: pointer to function
+            with parameters
+              instance of type _0_t (not function type) 
+            returning 
+              instance of type _0_t (not function type) 
+
+
+  function
+  with parameters
+    the_t: instance of type _0_t (not function type) 
+  returning 
+    double 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type u (not function type) 
+              _src: instance of type u (not function type) 
+            returning 
+              instance of type u (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type u (not function type) 
+                  _src: instance of type u (not function type) 
+                returning 
+                  instance of type u (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type u (not function type) 
+actual type is pointer to double 
+formal type is pointer to instance of type u (not function type) 
+actual type is pointer to char 
+formal type is pointer to instance of type u (not function type) 
+actual type is pointer to forall
+    _0_t: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type _0_t (not function type) 
+              instance of type _0_t (not function type) 
+            returning 
+              instance of type _0_t (not function type) 
+
+        u: pointer to function
+            with parameters
+              instance of type _0_t (not function type) 
+            returning 
+              instance of type _0_t (not function type) 
+
+
+  function
+  with parameters
+    the_t: instance of type _0_t (not function type) 
+  returning 
+    double 
+
+formal type is pointer to instance of type u (not function type) 
+actual type is pointer to double 
+formal type is pointer to instance of type u (not function type) 
+actual type is pointer to char 
+formal type is pointer to instance of type u (not function type) 
+actual type is pointer to forall
+    _0_t: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type _0_t (not function type) 
+              instance of type _0_t (not function type) 
+            returning 
+              instance of type _0_t (not function type) 
+
+        u: pointer to function
+            with parameters
+              instance of type _0_t (not function type) 
+            returning 
+              instance of type _0_t (not function type) 
+
+
+  function
+  with parameters
+    the_t: instance of type _0_t (not function type) 
+  returning 
+    double 
+
+formal type is pointer to instance of type u (not function type) 
+actual type is pointer to double 
+formal type is pointer to instance of type u (not function type) 
+actual type is pointer to char 
+formal type is pointer to instance of type u (not function type) 
+actual type is pointer to forall
+    _0_t: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type _0_t (not function type) 
+              instance of type _0_t (not function type) 
+            returning 
+              instance of type _0_t (not function type) 
+
+        u: pointer to function
+            with parameters
+              instance of type _0_t (not function type) 
+            returning 
+              instance of type _0_t (not function type) 
+
+
+  function
+  with parameters
+    the_t: instance of type _0_t (not function type) 
+  returning 
+    double 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to double 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to char 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to forall
+    _0_t: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type _0_t (not function type) 
+              instance of type _0_t (not function type) 
+            returning 
+              instance of type _0_t (not function type) 
+
+        u: pointer to function
+            with parameters
+              instance of type _0_t (not function type) 
+            returning 
+              instance of type _0_t (not function type) 
+
+
+  function
+  with parameters
+    the_t: instance of type _0_t (not function type) 
+  returning 
+    double 
+
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to double 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to char 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to forall
+    _0_t: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type _0_t (not function type) 
+              instance of type _0_t (not function type) 
+            returning 
+              instance of type _0_t (not function type) 
+
+        u: pointer to function
+            with parameters
+              instance of type _0_t (not function type) 
+            returning 
+              instance of type _0_t (not function type) 
+
+
+  function
+  with parameters
+    the_t: instance of type _0_t (not function type) 
+  returning 
+    double 
+
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to double 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to char 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to forall
+    _0_t: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type _0_t (not function type) 
+              instance of type _0_t (not function type) 
+            returning 
+              instance of type _0_t (not function type) 
+
+        u: pointer to function
+            with parameters
+              instance of type _0_t (not function type) 
+            returning 
+              instance of type _0_t (not function type) 
+
+
+  function
+  with parameters
+    the_t: instance of type _0_t (not function type) 
+  returning 
+    double 
+
+nameExpr is some_func
+nameExpr is i
+decl is i: signed int 
+newExpr is Variable Expression: i: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: i: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is q
+decl is q: forall
+    t: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type t (not function type) 
+              instance of type t (not function type) 
+            returning 
+              instance of type t (not function type) 
+
+        u: pointer to function
+            with parameters
+              instance of type t (not function type) 
+            returning 
+              instance of type t (not function type) 
+
+
+  function
+  with parameters
+    the_t: instance of type t (not function type) 
+  returning 
+    double 
+  with body 
+    CompoundStmt
+      Declaration of y: instance of type t (not function type) with initializer 
+        Simple Initializer:           Cast of:
+            Application of
+              Variable Expression: u: pointer to function
+                  with parameters
+                    instance of type t (not function type) 
+                  returning 
+                    instance of type t (not function type) 
+
+            to arguments
+                              Variable Expression: the_t: instance of type t (not function type) 
+
+
+          to:
+            instance of type t (not function type) 
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: pointer to function
+                with parameters
+                  pointer to instance of type t (not function type) 
+                  instance of type t (not function type) 
+                returning 
+                  instance of type t (not function type) 
+
+          to arguments
+                          Address of:
+                Variable Expression: y: instance of type t (not function type) 
+
+                          Application of
+                Variable Expression: u: pointer to function
+                    with parameters
+                      instance of type t (not function type) 
+                    returning 
+                      instance of type t (not function type) 
+
+              to arguments
+                                  Variable Expression: the_t: instance of type t (not function type) 
+
+
+          with environment:
+            Types:
+            Non-types:
+
+
+newExpr is Variable Expression: q: forall
+      t: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type t (not function type) 
+                instance of type t (not function type) 
+              returning 
+                instance of type t (not function type) 
+
+          u: pointer to function
+              with parameters
+                instance of type t (not function type) 
+              returning 
+                instance of type t (not function type) 
+
+
+    function
+    with parameters
+      the_t: instance of type t (not function type) 
+    returning 
+      double 
+
+
+decl is q: function
+    accepting unspecified arguments
+  returning 
+    double 
+  with parameter names
+    i
+  with parameter declarations
+    i: signed int 
+  with body 
+    CompoundStmt
+              Switch on condition: Variable Expression: i: signed int 
+with environment:
+  Types:
+  Non-types:
+
+            Case Name: 0
+
+                Return Statement, returning: Name: q
+
+            Default 
+                Return Statement, returning: Name: i
+
+
+
+newExpr is Variable Expression: q: function
+      accepting unspecified arguments
+    returning 
+      double 
+
+
+decl is q: char with initializer 
+Simple Initializer:   Cast of:
+    Variable Expression: y: char 
+
+  to:
+    char 
+  with environment:
+    Types:
+    Non-types:
+
+newExpr is Variable Expression: q: char 
+
+decl is q: double 
+newExpr is Variable Expression: q: double 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: q: forall
+      t: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type t (not function type) 
+                instance of type t (not function type) 
+              returning 
+                instance of type t (not function type) 
+
+          u: pointer to function
+              with parameters
+                instance of type t (not function type) 
+              returning 
+                instance of type t (not function type) 
+
+
+    function
+    with parameters
+      the_t: instance of type t (not function type) 
+    returning 
+      double 
+
+(types:
+    pointer to forall
+          _0_t: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_t (not function type) 
+                    instance of type _0_t (not function type) 
+                  returning 
+                    instance of type _0_t (not function type) 
+
+              u: pointer to function
+                  with parameters
+                    instance of type _0_t (not function type) 
+                  returning 
+                    instance of type _0_t (not function type) 
+
+
+        function
+        with parameters
+          the_t: instance of type _0_t (not function type) 
+        returning 
+          double 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: function
+      accepting unspecified arguments
+    returning 
+      double 
+
+(types:
+    pointer to function
+          accepting unspecified arguments
+        returning 
+          double 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: char 
+(types:
+    lvalue char 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: q: double 
+(types:
+    lvalue double 
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: q: double 
+
+to:
+  double 
+(types:
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is i
+decl is i: signed int 
+newExpr is Variable Expression: i: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: i: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 6 ): Cast of:
+  Variable Expression: i: signed int 
+
+to:
+  double 
+(types:
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        a: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      a: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        b: double 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      b: double 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Cast of:
+  Variable Expression: _dst: pointer to instance of type u (not function type) 
+
+to:
+  pointer to instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Cast of:
+  Name: y
+
+to:
+  instance of type u (not function type) 
+
+Error: No reasonable alternatives for expression Name: u
+
+Error: No reasonable alternatives for expression Name: u
+
+Error: No reasonable alternatives for expression Name: u
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: z
+    Name: x
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: x
+    Name: y
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: q
+    Name: y
+
+Error: No reasonable alternatives for expression Name: some_func
+
Index: src/Tests/Expect-r/ScopeErrors.txt
===================================================================
--- src/Tests/Expect-r/ScopeErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/ScopeErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,8 @@
+Error: duplicate function definition for butThisIsAnError: function
+  with parameters
+    double 
+  returning 
+    double 
+  with body 
+    CompoundStmt
+
Index: src/Tests/Expect-r/ShortCircuit.txt
===================================================================
--- src/Tests/Expect-r/ShortCircuit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/ShortCircuit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,3202 @@
+nameExpr is g
+decl is g: function
+  with parameters
+    float 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: g: function
+    with parameters
+      float 
+    returning 
+      nothing 
+
+
+decl is g: function
+  with parameters
+    signed int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: g: function
+    with parameters
+      float 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          float 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is ?!=?
+decl is ?!=?: function
+  with parameters
+    float 
+    float 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?!=?: function
+    with parameters
+      float 
+      float 
+    returning 
+      signed int 
+
+
+decl is ?!=?: function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?!=?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?!=?: function
+    with parameters
+      float 
+      float 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          float 
+          float 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?!=?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is a
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is 0
+decl is 0: signed int 
+newExpr is Variable Expression: 0: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: 0: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: 0: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?!=?: function
+            with parameters
+              signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?!=?: function
+            with parameters
+              float 
+              float 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  float 
+                  float 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is float 
+actual type is lvalue signed int 
+formal type is float 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Variable Expression: a: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: 0: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+actuals are:
+                  Variable Expression: a: signed int 
+
+                  Variable Expression: 0: signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+actual expression:
+        Variable Expression: a: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to float 
+cost is( 0, 0, 5 )
+actual expression:
+        Variable Expression: 0: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to float 
+cost is( 0, 0, 5 )
+Case +++++++++++++
+formals are:
+        float 
+        float 
+actuals are:
+                  Cast of:
+            Variable Expression: a: signed int 
+
+          to:
+            float 
+
+                  Cast of:
+            Variable Expression: 0: signed int 
+
+          to:
+            float 
+
+bindings are:
+cost of conversion is:( 0, 0, 10 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?!=?: function
+      with parameters
+        signed int 
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Variable Expression: a: signed int 
+
+      Variable Expression: 0: signed int 
+
+(types:
+    signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 10 ): Application of
+  Variable Expression: ?!=?: function
+      with parameters
+        float 
+        float 
+      returning 
+        signed int 
+
+to arguments
+      Cast of:
+      Variable Expression: a: signed int 
+
+    to:
+      float 
+
+      Cast of:
+      Variable Expression: 0: signed int 
+
+    to:
+      float 
+
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is b
+decl is b: signed int 
+newExpr is Variable Expression: b: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is c
+decl is c: float 
+newExpr is Variable Expression: c: float 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: c: float 
+(types:
+    lvalue float 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+alternatives before prune:
+Cost ( 0, 0, 0 ): Conditional expression on: 
+  Cast of:
+    Application of
+      Variable Expression: ?!=?: function
+          with parameters
+            signed int 
+            signed int 
+          returning 
+            signed int 
+
+    to arguments
+              Variable Expression: a: signed int 
+
+              Variable Expression: 0: signed int 
+
+
+  to:
+    signed int 
+First alternative:
+  Variable Expression: b: signed int 
+Second alternative:
+  Variable Expression: c: float 
+
+(types:
+    lvalue float 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Conditional expression on: 
+  Cast of:
+    Application of
+      Variable Expression: ?!=?: function
+          with parameters
+            signed int 
+            signed int 
+          returning 
+            signed int 
+
+    to arguments
+              Variable Expression: a: signed int 
+
+              Variable Expression: 0: signed int 
+
+
+  to:
+    signed int 
+First alternative:
+  Variable Expression: b: signed int 
+Second alternative:
+  Variable Expression: c: float 
+
+(types:
+    lvalue float 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: g: function
+            with parameters
+              signed int 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue float 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: g: function
+            with parameters
+              float 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  float 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is float 
+actual type is lvalue float 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Conditional expression on: 
+          Cast of:
+            Application of
+              Variable Expression: ?!=?: function
+                  with parameters
+                    signed int 
+                    signed int 
+                  returning 
+                    signed int 
+
+            to arguments
+                              Variable Expression: a: signed int 
+
+                              Variable Expression: 0: signed int 
+
+
+          to:
+            signed int 
+        First alternative:
+          Variable Expression: b: signed int 
+        Second alternative:
+          Variable Expression: c: float 
+
+--- results are
+        lvalue float 
+
+converting lvalue float 
+ to signed int 
+cost is( 1, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+                  Cast of:
+            Conditional expression on: 
+              Cast of:
+                Application of
+                  Variable Expression: ?!=?: function
+                      with parameters
+                        signed int 
+                        signed int 
+                      returning 
+                        signed int 
+
+                to arguments
+                                      Variable Expression: a: signed int 
+
+                                      Variable Expression: 0: signed int 
+
+
+              to:
+                signed int 
+            First alternative:
+              Variable Expression: b: signed int 
+            Second alternative:
+              Variable Expression: c: float 
+
+
+          to:
+            signed int 
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+actual expression:
+        Conditional expression on: 
+          Cast of:
+            Application of
+              Variable Expression: ?!=?: function
+                  with parameters
+                    signed int 
+                    signed int 
+                  returning 
+                    signed int 
+
+            to arguments
+                              Variable Expression: a: signed int 
+
+                              Variable Expression: 0: signed int 
+
+
+          to:
+            signed int 
+        First alternative:
+          Variable Expression: b: signed int 
+        Second alternative:
+          Variable Expression: c: float 
+
+--- results are
+        lvalue float 
+
+converting lvalue float 
+ to float 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        float 
+actuals are:
+                  Conditional expression on: 
+            Cast of:
+              Application of
+                Variable Expression: ?!=?: function
+                    with parameters
+                      signed int 
+                      signed int 
+                    returning 
+                      signed int 
+
+              to arguments
+                                  Variable Expression: a: signed int 
+
+                                  Variable Expression: 0: signed int 
+
+
+            to:
+              signed int 
+          First alternative:
+            Variable Expression: b: signed int 
+          Second alternative:
+            Variable Expression: c: float 
+
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 1, 0, 0 ): Application of
+  Variable Expression: g: function
+      with parameters
+        signed int 
+      returning 
+        nothing 
+
+to arguments
+      Cast of:
+      Conditional expression on: 
+        Cast of:
+          Application of
+            Variable Expression: ?!=?: function
+                with parameters
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+          to arguments
+                          Variable Expression: a: signed int 
+
+                          Variable Expression: 0: signed int 
+
+
+        to:
+          signed int 
+      First alternative:
+        Variable Expression: b: signed int 
+      Second alternative:
+        Variable Expression: c: float 
+
+
+    to:
+      signed int 
+
+(types:
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: g: function
+      with parameters
+        float 
+      returning 
+        nothing 
+
+to arguments
+      Conditional expression on: 
+      Cast of:
+        Application of
+          Variable Expression: ?!=?: function
+              with parameters
+                signed int 
+                signed int 
+              returning 
+                signed int 
+
+        to arguments
+                      Variable Expression: a: signed int 
+
+                      Variable Expression: 0: signed int 
+
+
+      to:
+        signed int 
+    First alternative:
+      Variable Expression: b: signed int 
+    Second alternative:
+      Variable Expression: c: float 
+
+
+(types:
+)
+Environment: 
+
+cost ( 0, 0, 0 ) beats ( 1, 0, 0 )
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: g: function
+        with parameters
+          float 
+        returning 
+          nothing 
+
+  to arguments
+          Conditional expression on: 
+        Cast of:
+          Application of
+            Variable Expression: ?!=?: function
+                with parameters
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+          to arguments
+                          Variable Expression: a: signed int 
+
+                          Variable Expression: 0: signed int 
+
+
+        to:
+          signed int 
+      First alternative:
+        Variable Expression: b: signed int 
+      Second alternative:
+        Variable Expression: c: float 
+
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is g
+decl is g: function
+  with parameters
+    float 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: g: function
+    with parameters
+      float 
+    returning 
+      nothing 
+
+
+decl is g: function
+  with parameters
+    signed int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: g: function
+    with parameters
+      float 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          float 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is ?!=?
+decl is ?!=?: function
+  with parameters
+    float 
+    float 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?!=?: function
+    with parameters
+      float 
+      float 
+    returning 
+      signed int 
+
+
+decl is ?!=?: function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?!=?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?!=?: function
+    with parameters
+      float 
+      float 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          float 
+          float 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?!=?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is a
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is 0
+decl is 0: signed int 
+newExpr is Variable Expression: 0: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: 0: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: 0: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?!=?: function
+            with parameters
+              signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?!=?: function
+            with parameters
+              float 
+              float 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  float 
+                  float 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is float 
+actual type is lvalue signed int 
+formal type is float 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Variable Expression: a: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: 0: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+actuals are:
+                  Variable Expression: a: signed int 
+
+                  Variable Expression: 0: signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+actual expression:
+        Variable Expression: a: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to float 
+cost is( 0, 0, 5 )
+actual expression:
+        Variable Expression: 0: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to float 
+cost is( 0, 0, 5 )
+Case +++++++++++++
+formals are:
+        float 
+        float 
+actuals are:
+                  Cast of:
+            Variable Expression: a: signed int 
+
+          to:
+            float 
+
+                  Cast of:
+            Variable Expression: 0: signed int 
+
+          to:
+            float 
+
+bindings are:
+cost of conversion is:( 0, 0, 10 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?!=?: function
+      with parameters
+        signed int 
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Variable Expression: a: signed int 
+
+      Variable Expression: 0: signed int 
+
+(types:
+    signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 10 ): Application of
+  Variable Expression: ?!=?: function
+      with parameters
+        float 
+        float 
+      returning 
+        signed int 
+
+to arguments
+      Cast of:
+      Variable Expression: a: signed int 
+
+    to:
+      float 
+
+      Cast of:
+      Variable Expression: 0: signed int 
+
+    to:
+      float 
+
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?!=?
+decl is ?!=?: function
+  with parameters
+    float 
+    float 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?!=?: function
+    with parameters
+      float 
+      float 
+    returning 
+      signed int 
+
+
+decl is ?!=?: function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?!=?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?!=?: function
+    with parameters
+      float 
+      float 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          float 
+          float 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?!=?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is c
+decl is c: float 
+newExpr is Variable Expression: c: float 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: c: float 
+(types:
+    lvalue float 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: c: float 
+(types:
+    lvalue float 
+)
+Environment: 
+
+nameExpr is 0
+decl is 0: signed int 
+newExpr is Variable Expression: 0: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: 0: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: 0: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?!=?: function
+            with parameters
+              signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue float 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?!=?: function
+            with parameters
+              float 
+              float 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  float 
+                  float 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is float 
+actual type is lvalue float 
+formal type is float 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Variable Expression: c: float 
+--- results are
+        lvalue float 
+
+converting lvalue float 
+ to signed int 
+cost is( 1, 0, 0 )
+actual expression:
+        Variable Expression: 0: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+actuals are:
+                  Cast of:
+            Variable Expression: c: float 
+
+          to:
+            signed int 
+
+                  Variable Expression: 0: signed int 
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+actual expression:
+        Variable Expression: c: float 
+--- results are
+        lvalue float 
+
+converting lvalue float 
+ to float 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: 0: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to float 
+cost is( 0, 0, 5 )
+Case +++++++++++++
+formals are:
+        float 
+        float 
+actuals are:
+                  Variable Expression: c: float 
+
+                  Cast of:
+            Variable Expression: 0: signed int 
+
+          to:
+            float 
+
+bindings are:
+cost of conversion is:( 0, 0, 5 )
+alternatives before prune:
+Cost ( 1, 0, 0 ): Application of
+  Variable Expression: ?!=?: function
+      with parameters
+        signed int 
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Cast of:
+      Variable Expression: c: float 
+
+    to:
+      signed int 
+
+      Variable Expression: 0: signed int 
+
+(types:
+    signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 5 ): Application of
+  Variable Expression: ?!=?: function
+      with parameters
+        float 
+        float 
+      returning 
+        signed int 
+
+to arguments
+      Variable Expression: c: float 
+
+      Cast of:
+      Variable Expression: 0: signed int 
+
+    to:
+      float 
+
+(types:
+    signed int 
+)
+Environment: 
+
+cost ( 0, 0, 5 ) beats ( 1, 0, 0 )
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          float 
+          float 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: c: float 
+
+          Cast of:
+        Variable Expression: 0: signed int 
+
+      to:
+        float 
+
+
+to:
+  signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Short-circuited operation (and) on: Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+ and Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          float 
+          float 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: c: float 
+
+          Cast of:
+        Variable Expression: 0: signed int 
+
+      to:
+        float 
+
+
+to:
+  signed int 
+
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Short-circuited operation (and) on: Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+ and Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          float 
+          float 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: c: float 
+
+          Cast of:
+        Variable Expression: 0: signed int 
+
+      to:
+        float 
+
+
+to:
+  signed int 
+
+(types:
+    signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: g: function
+            with parameters
+              signed int 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: g: function
+            with parameters
+              float 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  float 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is float 
+actual type is signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Short-circuited operation (and) on: Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+ and Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          float 
+          float 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: c: float 
+
+          Cast of:
+        Variable Expression: 0: signed int 
+
+      to:
+        float 
+
+
+to:
+  signed int 
+
+--- results are
+        signed int 
+
+converting signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+                  Short-circuited operation (and) on: Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+ and Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          float 
+          float 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: c: float 
+
+          Cast of:
+        Variable Expression: 0: signed int 
+
+      to:
+        float 
+
+
+to:
+  signed int 
+
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+actual expression:
+        Short-circuited operation (and) on: Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+ and Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          float 
+          float 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: c: float 
+
+          Cast of:
+        Variable Expression: 0: signed int 
+
+      to:
+        float 
+
+
+to:
+  signed int 
+
+--- results are
+        signed int 
+
+converting signed int 
+ to float 
+cost is( 0, 0, 5 )
+Case +++++++++++++
+formals are:
+        float 
+actuals are:
+                  Cast of:
+            Short-circuited operation (and) on: Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+ and Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          float 
+          float 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: c: float 
+
+          Cast of:
+        Variable Expression: 0: signed int 
+
+      to:
+        float 
+
+
+to:
+  signed int 
+
+
+          to:
+            float 
+
+bindings are:
+cost of conversion is:( 0, 0, 5 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: g: function
+      with parameters
+        signed int 
+      returning 
+        nothing 
+
+to arguments
+      Short-circuited operation (and) on: Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+ and Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          float 
+          float 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: c: float 
+
+          Cast of:
+        Variable Expression: 0: signed int 
+
+      to:
+        float 
+
+
+to:
+  signed int 
+
+
+(types:
+)
+Environment: 
+
+Cost ( 0, 0, 5 ): Application of
+  Variable Expression: g: function
+      with parameters
+        float 
+      returning 
+        nothing 
+
+to arguments
+      Cast of:
+      Short-circuited operation (and) on: Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+ and Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          float 
+          float 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: c: float 
+
+          Cast of:
+        Variable Expression: 0: signed int 
+
+      to:
+        float 
+
+
+to:
+  signed int 
+
+
+    to:
+      float 
+
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: g: function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+  to arguments
+          Short-circuited operation (and) on: Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+ and Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          float 
+          float 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: c: float 
+
+          Cast of:
+        Variable Expression: 0: signed int 
+
+      to:
+        float 
+
+
+to:
+  signed int 
+
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is g
+decl is g: function
+  with parameters
+    float 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: g: function
+    with parameters
+      float 
+    returning 
+      nothing 
+
+
+decl is g: function
+  with parameters
+    signed int 
+  returning 
+    nothing 
+
+newExpr is Variable Expression: g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: g: function
+    with parameters
+      float 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          float 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is ?!=?
+decl is ?!=?: function
+  with parameters
+    float 
+    float 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?!=?: function
+    with parameters
+      float 
+      float 
+    returning 
+      signed int 
+
+
+decl is ?!=?: function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?!=?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?!=?: function
+    with parameters
+      float 
+      float 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          float 
+          float 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?!=?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is a
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is 0
+decl is 0: signed int 
+newExpr is Variable Expression: 0: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: 0: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: 0: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?!=?: function
+            with parameters
+              signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?!=?: function
+            with parameters
+              float 
+              float 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  float 
+                  float 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is float 
+actual type is lvalue signed int 
+formal type is float 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Variable Expression: a: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: 0: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+actuals are:
+                  Variable Expression: a: signed int 
+
+                  Variable Expression: 0: signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+actual expression:
+        Variable Expression: a: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to float 
+cost is( 0, 0, 5 )
+actual expression:
+        Variable Expression: 0: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to float 
+cost is( 0, 0, 5 )
+Case +++++++++++++
+formals are:
+        float 
+        float 
+actuals are:
+                  Cast of:
+            Variable Expression: a: signed int 
+
+          to:
+            float 
+
+                  Cast of:
+            Variable Expression: 0: signed int 
+
+          to:
+            float 
+
+bindings are:
+cost of conversion is:( 0, 0, 10 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?!=?: function
+      with parameters
+        signed int 
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Variable Expression: a: signed int 
+
+      Variable Expression: 0: signed int 
+
+(types:
+    signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 10 ): Application of
+  Variable Expression: ?!=?: function
+      with parameters
+        float 
+        float 
+      returning 
+        signed int 
+
+to arguments
+      Cast of:
+      Variable Expression: a: signed int 
+
+    to:
+      float 
+
+      Cast of:
+      Variable Expression: 0: signed int 
+
+    to:
+      float 
+
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?!=?
+decl is ?!=?: function
+  with parameters
+    float 
+    float 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?!=?: function
+    with parameters
+      float 
+      float 
+    returning 
+      signed int 
+
+
+decl is ?!=?: function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?!=?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?!=?: function
+    with parameters
+      float 
+      float 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          float 
+          float 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?!=?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is b
+decl is b: signed int 
+newExpr is Variable Expression: b: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is 0
+decl is 0: signed int 
+newExpr is Variable Expression: 0: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: 0: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: 0: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?!=?: function
+            with parameters
+              signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?!=?: function
+            with parameters
+              float 
+              float 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  float 
+                  float 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is float 
+actual type is lvalue signed int 
+formal type is float 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Variable Expression: b: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: 0: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+actuals are:
+                  Variable Expression: b: signed int 
+
+                  Variable Expression: 0: signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+actual expression:
+        Variable Expression: b: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to float 
+cost is( 0, 0, 5 )
+actual expression:
+        Variable Expression: 0: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to float 
+cost is( 0, 0, 5 )
+Case +++++++++++++
+formals are:
+        float 
+        float 
+actuals are:
+                  Cast of:
+            Variable Expression: b: signed int 
+
+          to:
+            float 
+
+                  Cast of:
+            Variable Expression: 0: signed int 
+
+          to:
+            float 
+
+bindings are:
+cost of conversion is:( 0, 0, 10 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?!=?: function
+      with parameters
+        signed int 
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Variable Expression: b: signed int 
+
+      Variable Expression: 0: signed int 
+
+(types:
+    signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 10 ): Application of
+  Variable Expression: ?!=?: function
+      with parameters
+        float 
+        float 
+      returning 
+        signed int 
+
+to arguments
+      Cast of:
+      Variable Expression: b: signed int 
+
+    to:
+      float 
+
+      Cast of:
+      Variable Expression: 0: signed int 
+
+    to:
+      float 
+
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: b: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Short-circuited operation (or) on: Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+ and Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: b: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Short-circuited operation (or) on: Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+ and Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: b: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+
+(types:
+    signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: g: function
+            with parameters
+              signed int 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: g: function
+            with parameters
+              float 
+            returning 
+              nothing 
+
+(types:
+            pointer to function
+                with parameters
+                  float 
+                returning 
+                  nothing 
+
+)
+        Environment: 
+formal type is float 
+actual type is signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Short-circuited operation (or) on: Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+ and Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: b: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+
+--- results are
+        signed int 
+
+converting signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+                  Short-circuited operation (or) on: Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+ and Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: b: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+actual expression:
+        Short-circuited operation (or) on: Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+ and Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: b: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+
+--- results are
+        signed int 
+
+converting signed int 
+ to float 
+cost is( 0, 0, 5 )
+Case +++++++++++++
+formals are:
+        float 
+actuals are:
+                  Cast of:
+            Short-circuited operation (or) on: Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+ and Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: b: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+
+
+          to:
+            float 
+
+bindings are:
+cost of conversion is:( 0, 0, 5 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: g: function
+      with parameters
+        signed int 
+      returning 
+        nothing 
+
+to arguments
+      Short-circuited operation (or) on: Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+ and Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: b: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+
+
+(types:
+)
+Environment: 
+
+Cost ( 0, 0, 5 ): Application of
+  Variable Expression: g: function
+      with parameters
+        float 
+      returning 
+        nothing 
+
+to arguments
+      Cast of:
+      Short-circuited operation (or) on: Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+ and Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: b: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+
+
+    to:
+      float 
+
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: g: function
+        with parameters
+          signed int 
+        returning 
+          nothing 
+
+  to arguments
+          Short-circuited operation (or) on: Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+ and Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: b: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+int ___operator_notequal__Fi_ii_(int , int );
+int ___operator_notequal__Fi_ff_(float , float );
+int ___constant_zero__i;
+void __g__F_f_(float );
+void __g__F_i_(int );
+void __f__F_i_(int __a__i){
+    int __b__i;
+    float __c__f;
+    __g__F_f_((((int )___operator_notequal__Fi_ii_(__a__i, ___constant_zero__i)) ? __b__i : __c__f));
+    __g__F_i_((((int )___operator_notequal__Fi_ii_(__a__i, ___constant_zero__i)) && ((int )___operator_notequal__Fi_ff_(__c__f, ((float )___constant_zero__i)))));
+    __g__F_i_((((int )___operator_notequal__Fi_ii_(__a__i, ___constant_zero__i)) || ((int )___operator_notequal__Fi_ii_(__b__i, ___constant_zero__i))));
+}
Index: src/Tests/Expect-r/Statement.txt
===================================================================
--- src/Tests/Expect-r/Statement.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Statement.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,1039 @@
+nameExpr is ?=?
+decl is ?=?: automatically generated inline function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                b: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: inline function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: function
+  with parameters
+    pointer to signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  b: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    b: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    b: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  b: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  b: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              pointer to signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  pointer to signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is pointer to signed int 
+actual type is pointer to signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+actual expression:
+        Address of:
+          Member Expression, with field: 
+            b: signed int 
+          from aggregate: 
+            Applying untyped: 
+                Name: *?
+            ...to: 
+                Variable Expression: _dst: pointer to instance of struct __anonymous0 
+--- results are
+        pointer to signed int 
+
+converting pointer to signed int 
+ to pointer to signed int 
+cost is( 0, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          b: signed int 
+        from aggregate: 
+          Variable Expression: _src: instance of struct __anonymous0 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        pointer to signed int 
+        signed int 
+actuals are:
+                  Address of:
+            Member Expression, with field: 
+              b: signed int 
+            from aggregate: 
+              Applying untyped: 
+                  Name: *?
+              ...to: 
+                  Variable Expression: _dst: pointer to instance of struct __anonymous0 
+
+                  Member Expression, with field: 
+            b: signed int 
+          from aggregate: 
+            Variable Expression: _src: instance of struct __anonymous0 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?=?: function
+      with parameters
+        pointer to signed int 
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Address of:
+      Member Expression, with field: 
+        b: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+
+      Member Expression, with field: 
+      b: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?=?: function
+        with parameters
+          pointer to signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Address of:
+        Member Expression, with field: 
+          b: signed int 
+        from aggregate: 
+          Applying untyped: 
+              Name: *?
+          ...to: 
+              Variable Expression: _dst: pointer to instance of struct __anonymous0 
+
+          Member Expression, with field: 
+        b: signed int 
+      from aggregate: 
+        Variable Expression: _src: instance of struct __anonymous0 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue instance of struct __anonymous0 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+(types:
+    instance of struct __anonymous0 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?!=?
+decl is ?!=?: function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?!=?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?!=?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is a
+decl is a: instance of struct __anonymous0 
+newExpr is Variable Expression: a: instance of struct __anonymous0 
+
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: instance of struct __anonymous0 
+(types:
+    lvalue instance of struct __anonymous0 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: a: instance of struct __anonymous0 
+(types:
+    lvalue instance of struct __anonymous0 
+)
+Environment: 
+
+nameExpr is 0
+decl is 0: signed int 
+newExpr is Variable Expression: 0: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: 0: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: 0: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?!=?: function
+            with parameters
+              signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+__anonymous0
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+__anonymous0
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue instance of struct __anonymous0 
+actual expression:
+        Variable Expression: a: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: 0: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+actuals are:
+                  Variable Expression: a: signed int 
+
+                  Variable Expression: 0: signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?!=?: function
+      with parameters
+        signed int 
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Variable Expression: a: signed int 
+
+      Variable Expression: 0: signed int 
+
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?!=?
+decl is ?!=?: function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?!=?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?!=?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is a
+decl is a: instance of struct __anonymous0 
+newExpr is Variable Expression: a: instance of struct __anonymous0 
+
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: instance of struct __anonymous0 
+(types:
+    lvalue instance of struct __anonymous0 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: a: instance of struct __anonymous0 
+(types:
+    lvalue instance of struct __anonymous0 
+)
+Environment: 
+
+nameExpr is 0
+decl is 0: signed int 
+newExpr is Variable Expression: 0: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: 0: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: 0: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?!=?: function
+            with parameters
+              signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue instance of struct __anonymous0 
+actual expression:
+        Variable Expression: a: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: 0: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+actuals are:
+                  Variable Expression: a: signed int 
+
+                  Variable Expression: 0: signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?!=?: function
+      with parameters
+        signed int 
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Variable Expression: a: signed int 
+
+      Variable Expression: 0: signed int 
+
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is b
+decl is b: pointer to signed int 
+newExpr is Variable Expression: b: pointer to signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: pointer to signed int 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Variable Expression: b: pointer to signed int 
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?!=?
+decl is ?!=?: function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: ?!=?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?!=?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is a
+decl is a: instance of struct __anonymous0 
+newExpr is Variable Expression: a: instance of struct __anonymous0 
+
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: instance of struct __anonymous0 
+(types:
+    lvalue instance of struct __anonymous0 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: a: instance of struct __anonymous0 
+(types:
+    lvalue instance of struct __anonymous0 
+)
+Environment: 
+
+nameExpr is 0
+decl is 0: signed int 
+newExpr is Variable Expression: 0: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: 0: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: 0: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?!=?: function
+            with parameters
+              signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+formal type is signed int 
+actual type is lvalue instance of struct __anonymous0 
+actual expression:
+        Variable Expression: a: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: 0: signed int 
+--- results are
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+actuals are:
+                  Variable Expression: a: signed int 
+
+                  Variable Expression: 0: signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?!=?: function
+      with parameters
+        signed int 
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Variable Expression: a: signed int 
+
+      Variable Expression: 0: signed int 
+
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Application of
+    Variable Expression: ?!=?: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: a: signed int 
+
+          Variable Expression: 0: signed int 
+
+
+to:
+  signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is b
+decl is b: pointer to signed int 
+newExpr is Variable Expression: b: pointer to signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: pointer to signed int 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Variable Expression: b: pointer to signed int 
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+int ___operator_assign__Fi_Pii_(int *, int );
+int ___operator_notequal__Fi_ii_(int , int );
+int ___constant_zero__i;
+void __f__F__(){
+    int __a__i;
+    struct __anonymous0
+    {
+        int __b__i;
+    };
+    inline struct __anonymous0 ___operator_assign__F13s__anonymous0_P13s__anonymous013s__anonymous0_(struct __anonymous0 *___dst__P13s__anonymous0, struct __anonymous0 ___src__13s__anonymous0){
+        ___operator_assign__Fi_Pii_((&(*___dst__P13s__anonymous0).__b__i), ___src__13s__anonymous0.__b__i);
+        return ___src__13s__anonymous0;
+    }
+    struct __anonymous0 __a__13s__anonymous0;
+    if (((int )___operator_notequal__Fi_ii_(__a__i, ___constant_zero__i))) {
+        while (((int )___operator_notequal__Fi_ii_(__a__i, ___constant_zero__i))) {
+            int *__b__Pi;
+            for (__b__Pi;((int )___operator_notequal__Fi_ii_(__a__i, ___constant_zero__i));__b__Pi) {
+            }
+
+        }        
+
+    }
+
+}
Index: src/Tests/Expect-r/StructMember.txt
===================================================================
--- src/Tests/Expect-r/StructMember.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/StructMember.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,23906 @@
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m1: signed int with bitfield width constant expression 3 signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m1: signed int with bitfield width constant expression 3 signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m1: signed int with bitfield width constant expression 3 signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m1: signed int with bitfield width constant expression 3 signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m1: signed int with bitfield width constant expression 3 signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m2: signed int with bitfield width constant expression 4 signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m2: signed int with bitfield width constant expression 4 signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m2: signed int with bitfield width constant expression 4 signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m2: signed int with bitfield width constant expression 4 signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m2: signed int with bitfield width constant expression 4 signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m3: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m3: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m3: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m3: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m3: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m4: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m4: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m4: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m4: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m4: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m5: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m5: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m5: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m5: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m5: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m6: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m6: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m6: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m6: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m6: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m7: pointer to signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m7: pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m7: pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m7: pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m7: pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m8: pointer to signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m8: pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m8: pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m8: pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m8: pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m9: pointer to signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m9: pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m9: pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m9: pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m9: pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m10: pointer to function
+      accepting unspecified arguments
+    returning 
+      signed int 
+
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue pointer to function
+          accepting unspecified arguments
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m10: pointer to function
+        accepting unspecified arguments
+      returning 
+        signed int 
+
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to function
+          accepting unspecified arguments
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m10: pointer to function
+        accepting unspecified arguments
+      returning 
+        signed int 
+
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to function
+          accepting unspecified arguments
+        returning 
+          signed int 
+
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m10: pointer to function
+      accepting unspecified arguments
+    returning 
+      signed int 
+
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to function
+          accepting unspecified arguments
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m10: pointer to function
+      accepting unspecified arguments
+    returning 
+      signed int 
+
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to function
+          accepting unspecified arguments
+        returning 
+          signed int 
+
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to pointer to function
+    accepting unspecified arguments
+  returning 
+    signed int 
+
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m11: pointer to function
+    with parameters
+      signed int 
+    returning 
+      pointer to signed int 
+
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue pointer to function
+        with parameters
+          signed int 
+        returning 
+          pointer to signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m11: pointer to function
+      with parameters
+        signed int 
+      returning 
+        pointer to signed int 
+
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to function
+        with parameters
+          signed int 
+        returning 
+          pointer to signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m11: pointer to function
+      with parameters
+        signed int 
+      returning 
+        pointer to signed int 
+
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to function
+        with parameters
+          signed int 
+        returning 
+          pointer to signed int 
+
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m11: pointer to function
+    with parameters
+      signed int 
+    returning 
+      pointer to signed int 
+
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to function
+        with parameters
+          signed int 
+        returning 
+          pointer to signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m11: pointer to function
+    with parameters
+      signed int 
+    returning 
+      pointer to signed int 
+
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to function
+        with parameters
+          signed int 
+        returning 
+          pointer to signed int 
+
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to pointer to function
+  with parameters
+    signed int 
+  returning 
+    pointer to signed int 
+
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  T: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    T: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    T: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  T: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  T: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  T: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    T: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    T: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  T: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  T: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m12: pointer to signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m12: pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m12: pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m12: pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m12: pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m13: pointer to signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m13: pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m13: pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m13: pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m13: pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m14: pointer to function
+    with parameters
+      signed int 
+    returning 
+      pointer to signed int 
+
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue pointer to function
+        with parameters
+          signed int 
+        returning 
+          pointer to signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m14: pointer to function
+      with parameters
+        signed int 
+      returning 
+        pointer to signed int 
+
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to function
+        with parameters
+          signed int 
+        returning 
+          pointer to signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    m14: pointer to function
+      with parameters
+        signed int 
+      returning 
+        pointer to signed int 
+
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to function
+        with parameters
+          signed int 
+        returning 
+          pointer to signed int 
+
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m14: pointer to function
+    with parameters
+      signed int 
+    returning 
+      pointer to signed int 
+
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to function
+        with parameters
+          signed int 
+        returning 
+          pointer to signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  m14: pointer to function
+    with parameters
+      signed int 
+    returning 
+      pointer to signed int 
+
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to function
+        with parameters
+          signed int 
+        returning 
+          pointer to signed int 
+
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to pointer to function
+  with parameters
+    signed int 
+  returning 
+    pointer to signed int 
+
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    pointer to signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to function
+      accepting unspecified arguments
+    returning 
+      signed int 
+
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue pointer to function
+          accepting unspecified arguments
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    pointer to function
+        accepting unspecified arguments
+      returning 
+        signed int 
+
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to function
+          accepting unspecified arguments
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    pointer to function
+        accepting unspecified arguments
+      returning 
+        signed int 
+
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to function
+          accepting unspecified arguments
+        returning 
+          signed int 
+
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to function
+      accepting unspecified arguments
+    returning 
+      signed int 
+
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to function
+          accepting unspecified arguments
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to function
+      accepting unspecified arguments
+    returning 
+      signed int 
+
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to function
+          accepting unspecified arguments
+        returning 
+          signed int 
+
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to pointer to function
+    accepting unspecified arguments
+  returning 
+    signed int 
+
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to pointer to function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue pointer to pointer to function
+        with parameters
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    pointer to pointer to function
+      with parameters
+        signed int 
+      returning 
+        signed int 
+
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to pointer to function
+        with parameters
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    pointer to pointer to function
+      with parameters
+        signed int 
+      returning 
+        signed int 
+
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to pointer to pointer to function
+        with parameters
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to pointer to function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to pointer to function
+        with parameters
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  pointer to pointer to function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue pointer to pointer to function
+        with parameters
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to pointer to pointer to function
+  with parameters
+    signed int 
+  returning 
+    signed int 
+
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S 
+    _src: instance of struct S 
+  returning 
+    instance of struct S 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m1: signed int with bitfield width constant expression 3 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m2: signed int with bitfield width constant expression 4 signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m4: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m5: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m6: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m7: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m8: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m9: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m10: pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m11: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m12: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m13: pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                m14: pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    pointer to signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                pointer to pointer to function
+                  with parameters
+                    signed int 
+                  returning 
+                    signed int 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S 
+              Member Expression, with field: 
+                signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S 
+          _src: instance of struct S 
+        returning 
+          instance of struct S 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct S 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S 
+              _src: instance of struct S 
+            returning 
+              instance of struct S 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S 
+                  _src: instance of struct S 
+                returning 
+                  instance of struct S 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct S 
+(types:
+    lvalue instance of struct S 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct S 
+
+to:
+  instance of struct S 
+(types:
+    instance of struct S 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 5 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 5 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 5 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 5 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is __builtin_memcpy
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of union U 
+(types:
+    lvalue instance of union U 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of union U 
+
+to:
+  instance of union U 
+(types:
+    instance of union U 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m1: signed int with bitfield width constant expression 3 signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m1: signed int with bitfield width constant expression 3 signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m2: signed int with bitfield width constant expression 4 signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m2: signed int with bitfield width constant expression 4 signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m3: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m3: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m4: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m4: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m5: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m5: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m6: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m6: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m7: pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m7: pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m8: pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m8: pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m9: pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m9: pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m10: pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m10: pointer to function
+          accepting unspecified arguments
+        returning 
+          signed int 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m11: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to signed int 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m11: pointer to function
+        with parameters
+          signed int 
+        returning 
+          pointer to signed int 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        T: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      T: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        T: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      T: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m12: pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m12: pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m13: pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m13: pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        m14: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to signed int 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      m14: pointer to function
+        with parameters
+          signed int 
+        returning 
+          pointer to signed int 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to function
+          accepting unspecified arguments
+        returning 
+          signed int 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        pointer to pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      pointer to pointer to function
+        with parameters
+          signed int 
+        returning 
+          signed int 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S 
+    Member Expression, with field: 
+      signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S 
+
+Error: No reasonable alternatives for expression Name: __builtin_memcpy
+
Index: src/Tests/Expect-r/Subrange.txt
===================================================================
--- src/Tests/Expect-r/Subrange.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Subrange.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,846 @@
+nameExpr is ?=?
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type subrange (not function type) 
+    _src: instance of type subrange (not function type) 
+  returning 
+    instance of type subrange (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type subrange (not function type) 
+
+    to:
+      pointer to instance of type base_t (not function type) 
+    Cast of:
+      Variable Expression: _src: instance of type subrange (not function type) 
+
+    to:
+      instance of type base_t (not function type) 
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type subrange (not function type) 
+      _src: instance of type subrange (not function type) 
+    returning 
+      instance of type subrange (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type subrange (not function type) 
+      _src: instance of type subrange (not function type) 
+    returning 
+      instance of type subrange (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type subrange (not function type) 
+          _src: instance of type subrange (not function type) 
+        returning 
+          instance of type subrange (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _dst: pointer to instance of type subrange (not function type) 
+(types:
+    lvalue pointer to instance of type subrange (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is low
+nameExpr is high
+nameExpr is lbound
+decl is lbound: forall
+    T: type
+      with assertions
+        ?=?: pointer to function
+            with parameters
+              pointer to instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+
+  function
+  with parameters
+    v: instance of type subrange (not function type) 
+      with parameters
+        instance of type T (not function type) 
+                  Name: low
+
+                  Name: high
+
+
+  returning 
+    instance of type T (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Name: low
+
+
+
+newExpr is Variable Expression: lbound: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      v: instance of type subrange (not function type) 
+        with parameters
+          instance of type T (not function type) 
+                      Name: low
+
+                      Name: high
+
+
+    returning 
+      instance of type T (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: lbound: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      v: instance of type subrange (not function type) 
+        with parameters
+          instance of type T (not function type) 
+                      Name: low
+
+                      Name: high
+
+
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    pointer to forall
+          _0_T: type
+            with assertions
+              ?=?: pointer to function
+                  with parameters
+                    pointer to instance of type _0_T (not function type) 
+                    instance of type _0_T (not function type) 
+                  returning 
+                    instance of type _0_T (not function type) 
+
+
+        function
+        with parameters
+          v: instance of type subrange (not function type) 
+            with parameters
+              instance of type _0_T (not function type) 
+                              Name: low
+
+                              Name: high
+
+
+        returning 
+          instance of type _0_T (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is day_of_month
+decl is day_of_month: instance of type subrange (not function type) 
+with parameters
+  unsigned int 
+      Name: 1
+
+  constant expression 31 signed int 
+
+newExpr is Variable Expression: day_of_month: instance of type subrange (not function type) 
+  with parameters
+    unsigned int 
+          Name: 1
+
+    constant expression 31 signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: day_of_month: instance of type subrange (not function type) 
+  with parameters
+    unsigned int 
+          Name: 1
+
+    constant expression 31 signed int 
+
+(types:
+    lvalue instance of type subrange (not function type) 
+      with parameters
+        unsigned int 
+                  Name: 1
+
+        constant expression 31 signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: day_of_month: instance of type subrange (not function type) 
+  with parameters
+    unsigned int 
+          Name: 1
+
+    constant expression 31 signed int 
+
+(types:
+    lvalue instance of type subrange (not function type) 
+      with parameters
+        unsigned int 
+                  Name: 1
+
+        constant expression 31 signed int 
+
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: lbound: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              v: instance of type subrange (not function type) 
+                with parameters
+                  instance of type T (not function type) 
+                                      Name: low
+
+                                      Name: high
+
+
+            returning 
+              instance of type T (not function type) 
+
+(types:
+            pointer to forall
+                  _0_T: type
+                    with assertions
+                      ?=?: pointer to function
+                          with parameters
+                            pointer to instance of type _0_T (not function type) 
+                            instance of type _0_T (not function type) 
+                          returning 
+                            instance of type _0_T (not function type) 
+
+
+                function
+                with parameters
+                  v: instance of type subrange (not function type) 
+                    with parameters
+                      instance of type _0_T (not function type) 
+                                              Name: low
+
+                                              Name: high
+
+
+                returning 
+                  instance of type _0_T (not function type) 
+
+)
+        Environment: 
+formal type is instance of type subrange (not function type) 
+with parameters
+  instance of type _0_T (not function type) 
+      Name: low
+
+      Name: high
+
+
+actual type is lvalue instance of type subrange (not function type) 
+with parameters
+  unsigned int 
+      Name: 1
+
+  constant expression 31 signed int 
+
+need assertions:
+?=?: pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+(used)============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+inferRecursive: assertion is ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+
+inferRecursive: candidate is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type subrange (not function type) 
+    _src: instance of type subrange (not function type) 
+  returning 
+    instance of type subrange (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type subrange (not function type) 
+
+    to:
+      pointer to instance of type base_t (not function type) 
+    Cast of:
+      Variable Expression: _src: instance of type subrange (not function type) 
+
+    to:
+      instance of type base_t (not function type) 
+
+
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    _dst: pointer to instance of type subrange (not function type) 
+    _src: instance of type subrange (not function type) 
+  returning 
+    instance of type subrange (not function type) 
+
+success!
+satisfying assertion 28 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with declaration 21 ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type subrange (not function type) 
+    _src: instance of type subrange (not function type) 
+  returning 
+    instance of type subrange (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type subrange (not function type) 
+
+    to:
+      pointer to instance of type base_t (not function type) 
+    Cast of:
+      Variable Expression: _src: instance of type subrange (not function type) 
+
+    to:
+      instance of type base_t (not function type) 
+
+
+
+inferRecursive: candidate is ?=?: pointer to function
+  with parameters
+    pointer to instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+unifying pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with pointer to function
+  with parameters
+    pointer to instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+success!
+satisfying assertion 28 ?=?: pointer to function
+  with parameters
+    pointer to instance of type _0_T (not function type) 
+    instance of type _0_T (not function type) 
+  returning 
+    instance of type _0_T (not function type) 
+ with declaration 35 ?=?: pointer to function
+  with parameters
+    pointer to instance of type T (not function type) 
+    instance of type T (not function type) 
+  returning 
+    instance of type T (not function type) 
+
+actual expression:
+        Variable Expression: day_of_month: instance of type subrange (not function type) 
+          with parameters
+            unsigned int 
+                          Name: 1
+
+            constant expression 31 signed int 
+
+--- results are
+        lvalue instance of type subrange (not function type) 
+          with parameters
+            unsigned int 
+                          Name: 1
+
+            constant expression 31 signed int 
+
+
+converting lvalue instance of type subrange (not function type) 
+        with parameters
+          unsigned int 
+                      Name: 1
+
+          constant expression 31 signed int 
+
+ to instance of type subrange (not function type) 
+        with parameters
+          instance of type _0_T (not function type) 
+                      Name: low
+
+                      Name: high
+
+
+cost is( -1, -1, 0 )
+
+converting pointer to function
+          with parameters
+            _dst: pointer to instance of type subrange (not function type) 
+            _src: instance of type subrange (not function type) 
+          returning 
+            instance of type subrange (not function type) 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        v: instance of type subrange (not function type) 
+          with parameters
+            instance of type _0_T (not function type) 
+                          Name: low
+
+                          Name: high
+
+
+actuals are:
+                  Cast of:
+            Variable Expression: day_of_month: instance of type subrange (not function type) 
+              with parameters
+                unsigned int 
+                                  Name: 1
+
+                constant expression 31 signed int 
+
+
+          to:
+            instance of type subrange (not function type) 
+              with parameters
+                instance of type _0_T (not function type) 
+                                  Name: low
+
+                                  Name: high
+
+
+
+bindings are:
+        ( _0_T ) -> instance of type subrange (not function type)  (no widening)
+cost of conversion is:( -1, 2, 0 )
+actual expression:
+        Variable Expression: day_of_month: instance of type subrange (not function type) 
+          with parameters
+            unsigned int 
+                          Name: 1
+
+            constant expression 31 signed int 
+
+--- results are
+        lvalue instance of type subrange (not function type) 
+          with parameters
+            unsigned int 
+                          Name: 1
+
+            constant expression 31 signed int 
+
+
+converting lvalue instance of type subrange (not function type) 
+        with parameters
+          unsigned int 
+                      Name: 1
+
+          constant expression 31 signed int 
+
+ to instance of type subrange (not function type) 
+        with parameters
+          instance of type _0_T (not function type) 
+                      Name: low
+
+                      Name: high
+
+
+cost is( -1, -1, 0 )
+
+converting pointer to function
+          with parameters
+            pointer to instance of type T (not function type) 
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+ to pointer to function
+          with parameters
+            pointer to instance of type _0_T (not function type) 
+            instance of type _0_T (not function type) 
+          returning 
+            instance of type _0_T (not function type) 
+
+cost of conversion is ( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        v: instance of type subrange (not function type) 
+          with parameters
+            instance of type _0_T (not function type) 
+                          Name: low
+
+                          Name: high
+
+
+actuals are:
+                  Cast of:
+            Variable Expression: day_of_month: instance of type subrange (not function type) 
+              with parameters
+                unsigned int 
+                                  Name: 1
+
+                constant expression 31 signed int 
+
+
+          to:
+            instance of type subrange (not function type) 
+              with parameters
+                instance of type _0_T (not function type) 
+                                  Name: low
+
+                                  Name: high
+
+
+
+bindings are:
+        ( _0_T ) -> instance of type T (not function type)  (no widening)
+cost of conversion is:( -1, 2, 0 )
+alternatives before prune:
+Cost ( -1, 2, 0 ): Application of
+  Variable Expression: lbound: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        v: instance of type subrange (not function type) 
+          with parameters
+            instance of type T (not function type) 
+                          Name: low
+
+                          Name: high
+
+
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Cast of:
+      Variable Expression: day_of_month: instance of type subrange (not function type) 
+        with parameters
+          unsigned int 
+                      Name: 1
+
+          constant expression 31 signed int 
+
+
+    to:
+      instance of type subrange (not function type) 
+        with parameters
+          instance of type _0_T (not function type) 
+                      Name: low
+
+                      Name: high
+
+
+
+with inferred parameters:
+  ?=?: function
+    with parameters
+      _dst: pointer to instance of type subrange (not function type) 
+      _src: instance of type subrange (not function type) 
+    returning 
+      instance of type subrange (not function type) 
+
+(types:
+    instance of type _0_T (not function type) 
+)
+Environment:   ( _0_T ) -> instance of type subrange (not function type)  (no widening)
+
+
+Cost ( -1, 2, 0 ): Application of
+  Variable Expression: lbound: forall
+        T: type
+          with assertions
+            ?=?: pointer to function
+                with parameters
+                  pointer to instance of type T (not function type) 
+                  instance of type T (not function type) 
+                returning 
+                  instance of type T (not function type) 
+
+
+      function
+      with parameters
+        v: instance of type subrange (not function type) 
+          with parameters
+            instance of type T (not function type) 
+                          Name: low
+
+                          Name: high
+
+
+      returning 
+        instance of type T (not function type) 
+
+to arguments
+      Cast of:
+      Variable Expression: day_of_month: instance of type subrange (not function type) 
+        with parameters
+          unsigned int 
+                      Name: 1
+
+          constant expression 31 signed int 
+
+
+    to:
+      instance of type subrange (not function type) 
+        with parameters
+          instance of type _0_T (not function type) 
+                      Name: low
+
+                      Name: high
+
+
+
+with inferred parameters:
+  ?=?: pointer to function
+    with parameters
+      pointer to instance of type T (not function type) 
+      instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+(types:
+    instance of type _0_T (not function type) 
+)
+Environment:   ( _0_T ) -> instance of type T (not function type)  (no widening)
+
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is ?!=?
+nameExpr is target
+decl is target: pointer to instance of type subrange (not function type) 
+with parameters
+  instance of type T (not function type) 
+      Name: low
+
+      Name: high
+
+
+newExpr is Variable Expression: target: pointer to instance of type subrange (not function type) 
+  with parameters
+    instance of type T (not function type) 
+          Name: low
+
+          Name: high
+
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: target: pointer to instance of type subrange (not function type) 
+  with parameters
+    instance of type T (not function type) 
+          Name: low
+
+          Name: high
+
+
+(types:
+    lvalue pointer to instance of type subrange (not function type) 
+      with parameters
+        instance of type T (not function type) 
+                  Name: low
+
+                  Name: high
+
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?!=?
+nameExpr is target
+decl is target: pointer to instance of type subrange (not function type) 
+with parameters
+  instance of type T (not function type) 
+      Name: t_low
+
+      Name: t_high
+
+
+newExpr is Variable Expression: target: pointer to instance of type subrange (not function type) 
+  with parameters
+    instance of type T (not function type) 
+          Name: t_low
+
+          Name: t_high
+
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: target: pointer to instance of type subrange (not function type) 
+  with parameters
+    instance of type T (not function type) 
+          Name: t_low
+
+          Name: t_high
+
+
+(types:
+    lvalue pointer to instance of type subrange (not function type) 
+      with parameters
+        instance of type T (not function type) 
+                  Name: t_low
+
+                  Name: t_high
+
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+Error: No reasonable alternatives for expression Cast of:
+  Variable Expression: _dst: pointer to instance of type subrange (not function type) 
+
+to:
+  pointer to instance of type base_t (not function type) 
+
+Error: No reasonable alternatives for expression Name: low
+
+Error: No reasonable alternatives for expression Name: high
+
+Error: No reasonable alternatives for expression Cast of:
+  Applying untyped: 
+      Name: lbound
+  ...to: 
+      Name: day_of_month
+
+to:
+  unsigned int 
+
+Error: No reasonable alternatives for expression Name: ?!=?
+
+Error: No reasonable alternatives for expression Cast of:
+  Name: target
+
+to:
+  instance of type subrange (not function type) 
+    with parameters
+      instance of type T (not function type) 
+              Name: low
+
+              Name: high
+
+
+
+Error: No reasonable alternatives for expression Name: ?!=?
+
+Error: No reasonable alternatives for expression Cast of:
+  Name: target
+
+to:
+  instance of type subrange (not function type) 
+    with parameters
+      instance of type T (not function type) 
+              Name: t_low
+
+              Name: t_high
+
+
+
Index: src/Tests/Expect-r/Switch.txt
===================================================================
--- src/Tests/Expect-r/Switch.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Switch.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,142 @@
+nameExpr is i
+decl is i: signed int 
+newExpr is Variable Expression: i: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: i: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+nameExpr is i
+decl is i: signed int 
+newExpr is Variable Expression: i: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: i: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 3 signed int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is i
+decl is i: signed int 
+newExpr is Variable Expression: i: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: i: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is i
+decl is i: signed int 
+newExpr is Variable Expression: i: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: i: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+nameExpr is ?=?
+nameExpr is i
+decl is i: signed int 
+newExpr is Variable Expression: i: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: i: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+nameExpr is i
+decl is i: signed int 
+newExpr is Variable Expression: i: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: i: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+nameExpr is i
+decl is i: signed int 
+newExpr is Variable Expression: i: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: i: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+nameExpr is ?=?
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
Index: src/Tests/Expect-r/Tuple.txt
===================================================================
--- src/Tests/Expect-r/Tuple.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Tuple.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,12836 @@
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct inner 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  f2: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct inner 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    f2: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct inner 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    f2: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct inner 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  f2: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct inner 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  f2: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct inner 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct inner 
+              _src: instance of struct inner 
+            returning 
+              instance of struct inner 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+)
+        Environment: 
+formal type is pointer to instance of struct inner 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct inner 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  f3: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct inner 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    f3: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct inner 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    f3: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct inner 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  f3: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct inner 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  f3: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct inner 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct inner 
+              _src: instance of struct inner 
+            returning 
+              instance of struct inner 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+)
+        Environment: 
+formal type is pointer to instance of struct inner 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct inner 
+(types:
+    lvalue instance of struct inner 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+(types:
+    instance of struct inner 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct outer 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  f1: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct outer 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    f1: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct outer 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    f1: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct outer 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  f1: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct outer 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  f1: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct outer 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct outer 
+              _src: instance of struct outer 
+            returning 
+              instance of struct outer 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct outer 
+                  _src: instance of struct outer 
+                returning 
+                  instance of struct outer 
+
+)
+        Environment: 
+formal type is pointer to instance of struct outer 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct inner 
+              _src: instance of struct inner 
+            returning 
+              instance of struct inner 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+)
+        Environment: 
+formal type is pointer to instance of struct inner 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct outer 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: instance of struct inner 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct outer 
+(types:
+    lvalue instance of struct inner 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: instance of struct inner 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct outer 
+(types:
+    pointer to instance of struct inner 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: instance of struct inner 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct outer 
+(types:
+    pointer to instance of struct inner 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: instance of struct inner 
+from aggregate: 
+  Variable Expression: _src: instance of struct outer 
+(types:
+    lvalue instance of struct inner 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: instance of struct inner 
+from aggregate: 
+  Variable Expression: _src: instance of struct outer 
+(types:
+    lvalue instance of struct inner 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct outer 
+              _src: instance of struct outer 
+            returning 
+              instance of struct outer 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct outer 
+                  _src: instance of struct outer 
+                returning 
+                  instance of struct outer 
+
+)
+        Environment: 
+formal type is pointer to instance of struct outer 
+actual type is pointer to instance of struct inner 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct inner 
+              _src: instance of struct inner 
+            returning 
+              instance of struct inner 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+)
+        Environment: 
+formal type is pointer to instance of struct inner 
+actual type is pointer to instance of struct inner 
+formal type is instance of struct inner 
+actual type is lvalue instance of struct inner 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Address of:
+          Member Expression, with field: 
+            i: instance of struct inner 
+          from aggregate: 
+            Applying untyped: 
+                Name: *?
+            ...to: 
+                Variable Expression: _dst: pointer to instance of struct outer 
+--- results are
+        pointer to instance of struct inner 
+
+converting pointer to instance of struct inner 
+ to pointer to instance of struct inner 
+cost is( 0, 0, 0 )
+actual expression:
+        Member Expression, with field: 
+          i: instance of struct inner 
+        from aggregate: 
+          Variable Expression: _src: instance of struct outer 
+--- results are
+        lvalue instance of struct inner 
+
+converting lvalue instance of struct inner 
+ to instance of struct inner 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        _dst: pointer to instance of struct inner 
+        _src: instance of struct inner 
+actuals are:
+                  Address of:
+            Member Expression, with field: 
+              i: instance of struct inner 
+            from aggregate: 
+              Applying untyped: 
+                  Name: *?
+              ...to: 
+                  Variable Expression: _dst: pointer to instance of struct outer 
+
+                  Member Expression, with field: 
+            i: instance of struct inner 
+          from aggregate: 
+            Variable Expression: _src: instance of struct outer 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: ?=?: inline static function
+      with parameters
+        _dst: pointer to instance of struct inner 
+        _src: instance of struct inner 
+      returning 
+        instance of struct inner 
+
+to arguments
+      Address of:
+      Member Expression, with field: 
+        i: instance of struct inner 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct outer 
+
+      Member Expression, with field: 
+      i: instance of struct inner 
+    from aggregate: 
+      Variable Expression: _src: instance of struct outer 
+
+(types:
+    instance of struct inner 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: ?=?: inline static function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+  to arguments
+          Address of:
+        Member Expression, with field: 
+          i: instance of struct inner 
+        from aggregate: 
+          Applying untyped: 
+              Name: *?
+          ...to: 
+              Variable Expression: _dst: pointer to instance of struct outer 
+
+          Member Expression, with field: 
+        i: instance of struct inner 
+      from aggregate: 
+        Variable Expression: _src: instance of struct outer 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct outer 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  f4: double 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct outer 
+(types:
+    lvalue double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    f4: double 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct outer 
+(types:
+    pointer to double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    f4: double 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct outer 
+(types:
+    pointer to double 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  f4: double 
+from aggregate: 
+  Variable Expression: _src: instance of struct outer 
+(types:
+    lvalue double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  f4: double 
+from aggregate: 
+  Variable Expression: _src: instance of struct outer 
+(types:
+    lvalue double 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct outer 
+              _src: instance of struct outer 
+            returning 
+              instance of struct outer 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct outer 
+                  _src: instance of struct outer 
+                returning 
+                  instance of struct outer 
+
+)
+        Environment: 
+formal type is pointer to instance of struct outer 
+actual type is pointer to double 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct inner 
+              _src: instance of struct inner 
+            returning 
+              instance of struct inner 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+)
+        Environment: 
+formal type is pointer to instance of struct inner 
+actual type is pointer to double 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct outer 
+(types:
+    lvalue instance of struct outer 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+(types:
+    instance of struct outer 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is y
+decl is y: unsigned int 
+newExpr is Variable Expression: y: unsigned int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: y: unsigned int 
+(types:
+    lvalue unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: y: unsigned int 
+(types:
+    lvalue unsigned int 
+)
+Environment: 
+
+nameExpr is x
+decl is x: short signed int 
+newExpr is Variable Expression: x: short signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: x: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: x: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: y: unsigned int 
+
+      Variable Expression: x: short signed int 
+
+(types:
+    lvalue unsigned int 
+    lvalue short signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: y: unsigned int 
+
+          Variable Expression: x: short signed int 
+
+(types:
+    pointer to unsigned int 
+    pointer to short signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: y: unsigned int 
+
+          Variable Expression: x: short signed int 
+
+(types:
+    pointer to unsigned int 
+    pointer to short signed int 
+)
+Environment: 
+
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is x
+decl is x: short signed int 
+newExpr is Variable Expression: x: short signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: x: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: x: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+nameExpr is y
+decl is y: unsigned int 
+newExpr is Variable Expression: y: unsigned int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: y: unsigned int 
+(types:
+    lvalue unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: y: unsigned int 
+(types:
+    lvalue unsigned int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: x: short signed int 
+
+      Variable Expression: y: unsigned int 
+
+(types:
+    lvalue short signed int 
+    lvalue unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: x: short signed int 
+
+          Variable Expression: y: unsigned int 
+
+(types:
+    pointer to short signed int 
+    pointer to unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: x: short signed int 
+
+          Variable Expression: y: unsigned int 
+
+(types:
+    pointer to short signed int 
+    pointer to unsigned int 
+)
+Environment: 
+
+nameExpr is w
+decl is w: signed int 
+newExpr is Variable Expression: w: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: w: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: w: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 23 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 23 signed int (types:
+    signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: w: signed int 
+
+  constant expression 23 signed int 
+(types:
+    lvalue signed int 
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: w: signed int 
+
+  constant expression 23 signed int 
+(types:
+    lvalue signed int 
+    signed int 
+)
+Environment: 
+
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: x: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: x: short signed int 
+(types:
+    pointer to short signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: x: short signed int 
+(types:
+    pointer to short signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: w: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: w: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct outer 
+              _src: instance of struct outer 
+            returning 
+              instance of struct outer 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct outer 
+                  _src: instance of struct outer 
+                returning 
+                  instance of struct outer 
+
+)
+        Environment: 
+formal type is pointer to instance of struct outer 
+actual type is pointer to short signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct inner 
+              _src: instance of struct inner 
+            returning 
+              instance of struct inner 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+)
+        Environment: 
+formal type is pointer to instance of struct inner 
+actual type is pointer to short signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is x
+decl is x: short signed int 
+newExpr is Variable Expression: x: short signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: x: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: x: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+nameExpr is y
+decl is y: unsigned int 
+newExpr is Variable Expression: y: unsigned int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: y: unsigned int 
+(types:
+    lvalue unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: y: unsigned int 
+(types:
+    lvalue unsigned int 
+)
+Environment: 
+
+nameExpr is z
+decl is z: tuple of types
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: z: tuple of types
+    signed int 
+    signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: z: tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: z: tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: x: short signed int 
+
+      Variable Expression: y: unsigned int 
+
+      Variable Expression: z: tuple of types
+        signed int 
+        signed int 
+
+
+(types:
+    lvalue short signed int 
+    lvalue unsigned int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: x: short signed int 
+
+          Variable Expression: y: unsigned int 
+
+          Variable Expression: z: tuple of types
+          signed int 
+          signed int 
+
+
+(types:
+    pointer to short signed int 
+    pointer to unsigned int 
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: x: short signed int 
+
+          Variable Expression: y: unsigned int 
+
+          Variable Expression: z: tuple of types
+          signed int 
+          signed int 
+
+
+(types:
+    pointer to short signed int 
+    pointer to unsigned int 
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+nameExpr is p
+decl is p: short signed int 
+newExpr is Variable Expression: p: short signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: p: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: p: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+nameExpr is f
+decl is f: function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: f: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 17 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 17 signed int (types:
+    signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: function
+            with parameters
+              signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is x
+decl is x: short signed int 
+newExpr is Variable Expression: x: short signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: x: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: x: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+nameExpr is y
+decl is y: unsigned int 
+newExpr is Variable Expression: y: unsigned int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: y: unsigned int 
+(types:
+    lvalue unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: y: unsigned int 
+(types:
+    lvalue unsigned int 
+)
+Environment: 
+
+nameExpr is z
+decl is z: tuple of types
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: z: tuple of types
+    signed int 
+    signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: z: tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: z: tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: x: short signed int 
+
+      Variable Expression: y: unsigned int 
+
+      Variable Expression: z: tuple of types
+        signed int 
+        signed int 
+
+
+(types:
+    lvalue short signed int 
+    lvalue unsigned int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: x: short signed int 
+
+          Variable Expression: y: unsigned int 
+
+          Variable Expression: z: tuple of types
+          signed int 
+          signed int 
+
+
+(types:
+    pointer to short signed int 
+    pointer to unsigned int 
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: x: short signed int 
+
+          Variable Expression: y: unsigned int 
+
+          Variable Expression: z: tuple of types
+          signed int 
+          signed int 
+
+
+(types:
+    pointer to short signed int 
+    pointer to unsigned int 
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+nameExpr is p
+decl is p: short signed int 
+newExpr is Variable Expression: p: short signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: p: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: p: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+nameExpr is f
+decl is f: function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: f: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 17 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 17 signed int (types:
+    signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: function
+            with parameters
+              signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is r
+decl is r: tuple of types
+  signed int 
+  char 
+  long signed int 
+  signed int 
+
+newExpr is Variable Expression: r: tuple of types
+    signed int 
+    char 
+    long signed int 
+    signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: r: tuple of types
+    signed int 
+    char 
+    long signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue char 
+    lvalue long signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: r: tuple of types
+      signed int 
+      char 
+      long signed int 
+      signed int 
+
+(types:
+    pointer to signed int 
+    pointer to char 
+    pointer to long signed int 
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: r: tuple of types
+      signed int 
+      char 
+      long signed int 
+      signed int 
+
+(types:
+    pointer to signed int 
+    pointer to char 
+    pointer to long signed int 
+    pointer to signed int 
+)
+Environment: 
+
+nameExpr is x
+decl is x: short signed int 
+newExpr is Variable Expression: x: short signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: x: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: x: short signed int 
+(types:
+    lvalue short signed int 
+)
+Environment: 
+
+nameExpr is y
+decl is y: unsigned int 
+newExpr is Variable Expression: y: unsigned int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: y: unsigned int 
+(types:
+    lvalue unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: y: unsigned int 
+(types:
+    lvalue unsigned int 
+)
+Environment: 
+
+nameExpr is z
+decl is z: tuple of types
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: z: tuple of types
+    signed int 
+    signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: z: tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: z: tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: x: short signed int 
+
+      Variable Expression: y: unsigned int 
+
+      Variable Expression: z: tuple of types
+        signed int 
+        signed int 
+
+
+(types:
+    lvalue short signed int 
+    lvalue unsigned int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: x: short signed int 
+
+      Variable Expression: y: unsigned int 
+
+      Variable Expression: z: tuple of types
+        signed int 
+        signed int 
+
+
+(types:
+    lvalue short signed int 
+    lvalue unsigned int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct outer 
+              _src: instance of struct outer 
+            returning 
+              instance of struct outer 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct outer 
+                  _src: instance of struct outer 
+                returning 
+                  instance of struct outer 
+
+)
+        Environment: 
+formal type is pointer to instance of struct outer 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct inner 
+              _src: instance of struct inner 
+            returning 
+              instance of struct inner 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+)
+        Environment: 
+formal type is pointer to instance of struct inner 
+actual type is pointer to signed int 
+nameExpr is 1
+nameExpr is f
+decl is f: function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: f: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 5 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 5 signed int (types:
+    signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+  constant expression 3 signed int 
+  constant expression 5 signed int 
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Tuple:
+  constant expression 3 signed int 
+  constant expression 5 signed int 
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: function
+            with parameters
+              signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is signed int 
+formal type is signed int 
+actual type is signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Tuple:
+          constant expression 3 signed int 
+          constant expression 5 signed int 
+--- results are
+        signed int 
+        signed int 
+
+converting signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+actuals are:
+                  Tuple:
+            constant expression 3 signed int 
+            constant expression 5 signed int 
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: f: function
+      with parameters
+        signed int 
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Tuple:
+      constant expression 3 signed int 
+      constant expression 5 signed int 
+
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: f: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Tuple:
+        constant expression 3 signed int 
+        constant expression 5 signed int 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is g
+decl is g: function
+  with parameters
+    signed int 
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: g: function
+    with parameters
+      signed int 
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: g: function
+    with parameters
+      signed int 
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 5 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 5 signed int (types:
+    signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+  constant expression 3 signed int 
+  constant expression 5 signed int 
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Tuple:
+  constant expression 3 signed int 
+  constant expression 5 signed int 
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: g: function
+            with parameters
+              signed int 
+              signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is signed int 
+formal type is signed int 
+actual type is signed int 
+formal type is signed int 
+actual type is signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Tuple:
+          constant expression 3 signed int 
+          constant expression 5 signed int 
+--- results are
+        signed int 
+        signed int 
+
+converting signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+actual expression:
+constant expression 3 signed int --- results are
+        signed int 
+
+converting signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+        signed int 
+actuals are:
+                  Tuple:
+            constant expression 3 signed int 
+            constant expression 5 signed int 
+
+        constant expression 3 signed int 
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: g: function
+      with parameters
+        signed int 
+        signed int 
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Tuple:
+      constant expression 3 signed int 
+      constant expression 5 signed int 
+
+  constant expression 3 signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: g: function
+        with parameters
+          signed int 
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Tuple:
+        constant expression 3 signed int 
+        constant expression 5 signed int 
+
+    constant expression 3 signed int 
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is f
+decl is f: function
+  with parameters
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: f: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: f: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is t1
+decl is t1: const volatile tuple of types
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: t1: const volatile tuple of types
+    signed int 
+    signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: t1: const volatile tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: t1: const volatile tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: f: function
+            with parameters
+              signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Variable Expression: t1: const volatile tuple of types
+            signed int 
+            signed int 
+
+--- results are
+        lvalue signed int 
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+actuals are:
+                  Variable Expression: t1: const volatile tuple of types
+              signed int 
+              signed int 
+
+
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: f: function
+      with parameters
+        signed int 
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Variable Expression: t1: const volatile tuple of types
+        signed int 
+        signed int 
+
+
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: f: function
+        with parameters
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: t1: const volatile tuple of types
+          signed int 
+          signed int 
+
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is g
+decl is g: function
+  with parameters
+    signed int 
+    signed int 
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: g: function
+    with parameters
+      signed int 
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: g: function
+    with parameters
+      signed int 
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is t1
+decl is t1: const volatile tuple of types
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: t1: const volatile tuple of types
+    signed int 
+    signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: t1: const volatile tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: t1: const volatile tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: g: function
+            with parameters
+              signed int 
+              signed int 
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                  signed int 
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is lvalue signed int 
+formal type is signed int 
+actual type is signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+        Variable Expression: t1: const volatile tuple of types
+            signed int 
+            signed int 
+
+--- results are
+        lvalue signed int 
+        lvalue signed int 
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+
+converting lvalue signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+actual expression:
+constant expression 3 signed int --- results are
+        signed int 
+
+converting signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+        signed int 
+        signed int 
+actuals are:
+                  Variable Expression: t1: const volatile tuple of types
+              signed int 
+              signed int 
+
+
+        constant expression 3 signed int 
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: g: function
+      with parameters
+        signed int 
+        signed int 
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+      Variable Expression: t1: const volatile tuple of types
+        signed int 
+        signed int 
+
+
+  constant expression 3 signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: g: function
+        with parameters
+          signed int 
+          signed int 
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+          Variable Expression: t1: const volatile tuple of types
+          signed int 
+          signed int 
+
+
+    constant expression 3 signed int 
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Tuple:
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 5 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 5 signed int (types:
+    signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+  constant expression 3 signed int 
+  constant expression 5 signed int 
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+  Tuple:
+    constant expression 3 signed int 
+    constant expression 5 signed int 
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is a
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is b
+decl is b: signed int 
+newExpr is Variable Expression: b: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: a: signed int 
+
+      Variable Expression: b: signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: a: signed int 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: a: signed int 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct outer 
+              _src: instance of struct outer 
+            returning 
+              instance of struct outer 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct outer 
+                  _src: instance of struct outer 
+                returning 
+                  instance of struct outer 
+
+)
+        Environment: 
+formal type is pointer to instance of struct outer 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct inner 
+              _src: instance of struct inner 
+            returning 
+              instance of struct inner 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+)
+        Environment: 
+formal type is pointer to instance of struct inner 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is a
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is b
+decl is b: signed int 
+newExpr is Variable Expression: b: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: a: signed int 
+
+      Variable Expression: b: signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 4.6 double (types:
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 4.6 double (types:
+    double 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+  constant expression 4.6 double 
+(types:
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Tuple:
+  constant expression 4.6 double 
+(types:
+    double 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct outer 
+              _src: instance of struct outer 
+            returning 
+              instance of struct outer 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct outer 
+                  _src: instance of struct outer 
+                returning 
+                  instance of struct outer 
+
+)
+        Environment: 
+formal type is pointer to instance of struct outer 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct inner 
+              _src: instance of struct inner 
+            returning 
+              instance of struct inner 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+)
+        Environment: 
+formal type is pointer to instance of struct inner 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is a
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is b
+decl is b: signed int 
+newExpr is Variable Expression: b: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: a: signed int 
+
+      Variable Expression: b: signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is c
+decl is c: signed int 
+newExpr is Variable Expression: c: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: c: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: c: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is d
+decl is d: signed int 
+newExpr is Variable Expression: d: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: d: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: d: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: c: signed int 
+
+      Variable Expression: d: signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: c: signed int 
+
+          Variable Expression: d: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: c: signed int 
+
+          Variable Expression: d: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 5 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 5 signed int (types:
+    signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+  constant expression 3 signed int 
+  constant expression 5 signed int 
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Tuple:
+  constant expression 3 signed int 
+  constant expression 5 signed int 
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: c: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: c: signed int 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: c: signed int 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct outer 
+              _src: instance of struct outer 
+            returning 
+              instance of struct outer 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct outer 
+                  _src: instance of struct outer 
+                returning 
+                  instance of struct outer 
+
+)
+        Environment: 
+formal type is pointer to instance of struct outer 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct inner 
+              _src: instance of struct inner 
+            returning 
+              instance of struct inner 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+)
+        Environment: 
+formal type is pointer to instance of struct inner 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is a
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is b
+decl is b: signed int 
+newExpr is Variable Expression: b: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is c
+decl is c: signed int 
+newExpr is Variable Expression: c: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: c: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: c: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: c: signed int 
+
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: c: signed int 
+
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: a: signed int 
+
+      Variable Expression: b: signed int 
+
+      Tuple:
+              Variable Expression: c: signed int 
+
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+
+          Tuple:
+                  Variable Expression: c: signed int 
+
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+
+          Tuple:
+                  Variable Expression: c: signed int 
+
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 2 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 2 signed int (types:
+    signed int 
+)
+Environment: 
+
+nameExpr is a
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is b
+decl is b: signed int 
+newExpr is Variable Expression: b: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: a: signed int 
+
+      Variable Expression: b: signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: a: signed int 
+
+      Variable Expression: b: signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+  constant expression 2 signed int 
+      Tuple:
+              Variable Expression: a: signed int 
+
+              Variable Expression: b: signed int 
+
+
+(types:
+    signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Tuple:
+  constant expression 2 signed int 
+      Tuple:
+              Variable Expression: a: signed int 
+
+              Variable Expression: b: signed int 
+
+
+(types:
+    signed int 
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct outer 
+              _src: instance of struct outer 
+            returning 
+              instance of struct outer 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct outer 
+                  _src: instance of struct outer 
+                returning 
+                  instance of struct outer 
+
+)
+        Environment: 
+formal type is pointer to instance of struct outer 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct inner 
+              _src: instance of struct inner 
+            returning 
+              instance of struct inner 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+)
+        Environment: 
+formal type is pointer to instance of struct inner 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is a
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is b
+decl is b: signed int 
+newExpr is Variable Expression: b: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: a: signed int 
+
+      Variable Expression: b: signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+nameExpr is ?!=?
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is t1
+decl is t1: const volatile tuple of types
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: t1: const volatile tuple of types
+    signed int 
+    signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: t1: const volatile tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: t1: const volatile tuple of types
+      signed int 
+      signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: t1: const volatile tuple of types
+      signed int 
+      signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+nameExpr is a
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is b
+decl is b: signed int 
+newExpr is Variable Expression: b: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: a: signed int 
+
+      Variable Expression: b: signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: a: signed int 
+
+      Variable Expression: b: signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct outer 
+              _src: instance of struct outer 
+            returning 
+              instance of struct outer 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct outer 
+                  _src: instance of struct outer 
+                returning 
+                  instance of struct outer 
+
+)
+        Environment: 
+formal type is pointer to instance of struct outer 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct inner 
+              _src: instance of struct inner 
+            returning 
+              instance of struct inner 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+)
+        Environment: 
+formal type is pointer to instance of struct inner 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is t1
+decl is t1: const volatile tuple of types
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: t1: const volatile tuple of types
+    signed int 
+    signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: t1: const volatile tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: t1: const volatile tuple of types
+      signed int 
+      signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: t1: const volatile tuple of types
+      signed int 
+      signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is t2
+decl is t2: static const tuple of types
+  signed int 
+  const signed int 
+
+newExpr is Variable Expression: t2: static const tuple of types
+    signed int 
+    const signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: t2: static const tuple of types
+    signed int 
+    const signed int 
+
+(types:
+    lvalue signed int 
+    const lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: t2: static const tuple of types
+      signed int 
+      const signed int 
+
+(types:
+    pointer to signed int 
+    pointer to const signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: t2: static const tuple of types
+      signed int 
+      const signed int 
+
+(types:
+    pointer to signed int 
+    pointer to const signed int 
+)
+Environment: 
+
+nameExpr is a
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is b
+decl is b: signed int 
+newExpr is Variable Expression: b: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: a: signed int 
+
+      Variable Expression: b: signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: a: signed int 
+
+      Variable Expression: b: signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct outer 
+              _src: instance of struct outer 
+            returning 
+              instance of struct outer 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct outer 
+                  _src: instance of struct outer 
+                returning 
+                  instance of struct outer 
+
+)
+        Environment: 
+formal type is pointer to instance of struct outer 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct inner 
+              _src: instance of struct inner 
+            returning 
+              instance of struct inner 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+)
+        Environment: 
+formal type is pointer to instance of struct inner 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is a
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is b
+decl is b: signed int 
+newExpr is Variable Expression: b: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: a: signed int 
+
+      Variable Expression: b: signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is c
+decl is c: signed int 
+newExpr is Variable Expression: c: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: c: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: c: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is d
+decl is d: signed int 
+newExpr is Variable Expression: d: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: d: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: d: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: c: signed int 
+
+      Variable Expression: d: signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: c: signed int 
+
+          Variable Expression: d: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: c: signed int 
+
+          Variable Expression: d: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+nameExpr is ?+=?
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is a
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is b
+decl is b: signed int 
+newExpr is Variable Expression: b: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: a: signed int 
+
+      Variable Expression: b: signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is c
+decl is c: signed int 
+newExpr is Variable Expression: c: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: c: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: c: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is d
+decl is d: signed int 
+newExpr is Variable Expression: d: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: d: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: d: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: c: signed int 
+
+      Variable Expression: d: signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: c: signed int 
+
+          Variable Expression: d: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: c: signed int 
+
+          Variable Expression: d: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+nameExpr is t1
+decl is t1: const volatile tuple of types
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: t1: const volatile tuple of types
+    signed int 
+    signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: t1: const volatile tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: t1: const volatile tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct outer 
+              _src: instance of struct outer 
+            returning 
+              instance of struct outer 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct outer 
+                  _src: instance of struct outer 
+                returning 
+                  instance of struct outer 
+
+)
+        Environment: 
+formal type is pointer to instance of struct outer 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct inner 
+              _src: instance of struct inner 
+            returning 
+              instance of struct inner 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+)
+        Environment: 
+formal type is pointer to instance of struct inner 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is a
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is b
+decl is b: signed int 
+newExpr is Variable Expression: b: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: a: signed int 
+
+      Variable Expression: b: signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is t1
+decl is t1: const volatile tuple of types
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: t1: const volatile tuple of types
+    signed int 
+    signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: t1: const volatile tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: t1: const volatile tuple of types
+      signed int 
+      signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: t1: const volatile tuple of types
+      signed int 
+      signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+nameExpr is c
+decl is c: signed int 
+newExpr is Variable Expression: c: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: c: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: c: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is d
+decl is d: signed int 
+newExpr is Variable Expression: d: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: d: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: d: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: c: signed int 
+
+      Variable Expression: d: signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: c: signed int 
+
+      Variable Expression: d: signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct outer 
+              _src: instance of struct outer 
+            returning 
+              instance of struct outer 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct outer 
+                  _src: instance of struct outer 
+                returning 
+                  instance of struct outer 
+
+)
+        Environment: 
+formal type is pointer to instance of struct outer 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct inner 
+              _src: instance of struct inner 
+            returning 
+              instance of struct inner 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+)
+        Environment: 
+formal type is pointer to instance of struct inner 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is a
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is b
+decl is b: signed int 
+newExpr is Variable Expression: b: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: a: signed int 
+
+      Variable Expression: b: signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is t1
+decl is t1: const volatile tuple of types
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: t1: const volatile tuple of types
+    signed int 
+    signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: t1: const volatile tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: t1: const volatile tuple of types
+      signed int 
+      signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: t1: const volatile tuple of types
+      signed int 
+      signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is t2
+decl is t2: static const tuple of types
+  signed int 
+  const signed int 
+
+newExpr is Variable Expression: t2: static const tuple of types
+    signed int 
+    const signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: t2: static const tuple of types
+    signed int 
+    const signed int 
+
+(types:
+    lvalue signed int 
+    const lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: t2: static const tuple of types
+      signed int 
+      const signed int 
+
+(types:
+    pointer to signed int 
+    pointer to const signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: t2: static const tuple of types
+      signed int 
+      const signed int 
+
+(types:
+    pointer to signed int 
+    pointer to const signed int 
+)
+Environment: 
+
+nameExpr is c
+decl is c: signed int 
+newExpr is Variable Expression: c: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: c: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: c: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is d
+decl is d: signed int 
+newExpr is Variable Expression: d: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: d: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: d: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: c: signed int 
+
+      Variable Expression: d: signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: c: signed int 
+
+      Variable Expression: d: signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct outer 
+              _src: instance of struct outer 
+            returning 
+              instance of struct outer 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct outer 
+                  _src: instance of struct outer 
+                returning 
+                  instance of struct outer 
+
+)
+        Environment: 
+formal type is pointer to instance of struct outer 
+actual type is pointer to signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct inner 
+              _src: instance of struct inner 
+            returning 
+              instance of struct inner 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+)
+        Environment: 
+formal type is pointer to instance of struct inner 
+actual type is pointer to signed int 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is t1
+decl is t1: const volatile tuple of types
+  signed int 
+  signed int 
+
+newExpr is Variable Expression: t1: const volatile tuple of types
+    signed int 
+    signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: t1: const volatile tuple of types
+    signed int 
+    signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: t1: const volatile tuple of types
+      signed int 
+      signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: t1: const volatile tuple of types
+      signed int 
+      signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 4 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 4 signed int (types:
+    signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+  constant expression 3 signed int 
+  constant expression 4 signed int 
+(types:
+    signed int 
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is s
+decl is s: instance of struct outer 
+newExpr is Variable Expression: s: instance of struct outer 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: s: instance of struct outer 
+(types:
+    lvalue instance of struct outer 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: s: instance of struct outer 
+(types:
+    pointer to instance of struct outer 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: s: instance of struct outer 
+(types:
+    pointer to instance of struct outer 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 11 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 11 signed int (types:
+    signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 12 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 12 signed int (types:
+    signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 13 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 13 signed int (types:
+    signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3.14159 double (types:
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 3.14159 double (types:
+    double 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+  constant expression 11 signed int 
+  constant expression 12 signed int 
+  constant expression 13 signed int 
+  constant expression 3.14159 double 
+(types:
+    signed int 
+    signed int 
+    signed int 
+    double 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Tuple:
+  constant expression 11 signed int 
+  constant expression 12 signed int 
+  constant expression 13 signed int 
+  constant expression 3.14159 double 
+(types:
+    signed int 
+    signed int 
+    signed int 
+    double 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct outer 
+              _src: instance of struct outer 
+            returning 
+              instance of struct outer 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct outer 
+                  _src: instance of struct outer 
+                returning 
+                  instance of struct outer 
+
+)
+        Environment: 
+formal type is pointer to instance of struct outer 
+actual type is pointer to instance of struct outer 
+formal type is instance of struct outer 
+actual type is signed int 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct inner 
+              _src: instance of struct inner 
+            returning 
+              instance of struct inner 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+)
+        Environment: 
+formal type is pointer to instance of struct inner 
+actual type is pointer to instance of struct outer 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is s
+decl is s: instance of struct outer 
+newExpr is Variable Expression: s: instance of struct outer 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: s: instance of struct outer 
+(types:
+    lvalue instance of struct outer 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: s: instance of struct outer 
+(types:
+    pointer to instance of struct outer 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: s: instance of struct outer 
+(types:
+    pointer to instance of struct outer 
+)
+Environment: 
+
+nameExpr is h
+decl is h: static function
+  with parameters
+    a: signed int 
+    b: signed int 
+    c: pointer to signed int 
+    d: pointer to char 
+  returning 
+    signed int 
+    pointer to signed int 
+    pointer to signed int 
+    signed int 
+
+newExpr is Variable Expression: h: static function
+    with parameters
+      a: signed int 
+      b: signed int 
+      c: pointer to signed int 
+      d: pointer to char 
+    returning 
+      signed int 
+      pointer to signed int 
+      pointer to signed int 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: h: static function
+    with parameters
+      a: signed int 
+      b: signed int 
+      c: pointer to signed int 
+      d: pointer to char 
+    returning 
+      signed int 
+      pointer to signed int 
+      pointer to signed int 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          a: signed int 
+          b: signed int 
+          c: pointer to signed int 
+          d: pointer to char 
+        returning 
+          signed int 
+          pointer to signed int 
+          pointer to signed int 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+nameExpr is 0
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is a
+decl is a: signed int 
+newExpr is Variable Expression: a: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: a: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+nameExpr is b
+decl is b: signed int 
+newExpr is Variable Expression: b: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: b: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Tuple:
+      Variable Expression: a: signed int 
+
+      Variable Expression: b: signed int 
+
+(types:
+    lvalue signed int 
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Tuple:
+          Variable Expression: a: signed int 
+
+          Variable Expression: b: signed int 
+
+(types:
+    pointer to signed int 
+    pointer to signed int 
+)
+Environment: 
+
+nameExpr is h
+decl is h: static function
+  with parameters
+    a: signed int 
+    b: signed int 
+    c: pointer to signed int 
+    d: pointer to char 
+  returning 
+    signed int 
+    pointer to signed int 
+    pointer to signed int 
+    signed int 
+
+newExpr is Variable Expression: h: static function
+    with parameters
+      a: signed int 
+      b: signed int 
+      c: pointer to signed int 
+      d: pointer to char 
+    returning 
+      signed int 
+      pointer to signed int 
+      pointer to signed int 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: h: static function
+    with parameters
+      a: signed int 
+      b: signed int 
+      c: pointer to signed int 
+      d: pointer to char 
+    returning 
+      signed int 
+      pointer to signed int 
+      pointer to signed int 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          a: signed int 
+          b: signed int 
+          c: pointer to signed int 
+          d: pointer to char 
+        returning 
+          signed int 
+          pointer to signed int 
+          pointer to signed int 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+nameExpr is 0
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is sp
+decl is sp: pointer to instance of struct outer 
+newExpr is Variable Expression: sp: pointer to instance of struct outer 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: sp: pointer to instance of struct outer 
+(types:
+    lvalue pointer to instance of struct outer 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: sp: pointer to instance of struct outer 
+(types:
+    pointer to pointer to instance of struct outer 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: sp: pointer to instance of struct outer 
+(types:
+    pointer to pointer to instance of struct outer 
+)
+Environment: 
+
+nameExpr is sp
+decl is sp: pointer to instance of struct outer 
+newExpr is Variable Expression: sp: pointer to instance of struct outer 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: sp: pointer to instance of struct outer 
+(types:
+    lvalue pointer to instance of struct outer 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: sp: pointer to instance of struct outer 
+(types:
+    lvalue pointer to instance of struct outer 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct outer 
+              _src: instance of struct outer 
+            returning 
+              instance of struct outer 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct outer 
+                  _src: instance of struct outer 
+                returning 
+                  instance of struct outer 
+
+)
+        Environment: 
+formal type is pointer to instance of struct outer 
+actual type is pointer to pointer to instance of struct outer 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct inner 
+              _src: instance of struct inner 
+            returning 
+              instance of struct inner 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+)
+        Environment: 
+formal type is pointer to instance of struct inner 
+actual type is pointer to pointer to instance of struct outer 
+nameExpr is printf
+decl is printf: function
+  with parameters
+    fmt: pointer to char 
+    and a variable number of other arguments
+  returning 
+    rc: signed int 
+
+newExpr is Variable Expression: printf: function
+    with parameters
+      fmt: pointer to char 
+      and a variable number of other arguments
+    returning 
+      rc: signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: printf: function
+    with parameters
+      fmt: pointer to char 
+      and a variable number of other arguments
+    returning 
+      rc: signed int 
+
+(types:
+    pointer to function
+        with parameters
+          fmt: pointer to char 
+          and a variable number of other arguments
+        returning 
+          rc: signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression "expecting 3, 17, 23, 4; got %d, %d, %d, %d\n" array of char with dimension of constant expression 47 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression "expecting 3, 17, 23, 4; got %d, %d, %d, %d\n" array of char with dimension of constant expression 47 unsigned int (types:
+    pointer to char 
+)
+Environment: 
+
+nameExpr is s
+decl is s: instance of struct outer 
+newExpr is Variable Expression: s: instance of struct outer 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: s: instance of struct outer 
+(types:
+    lvalue instance of struct outer 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Variable Expression: s: instance of struct outer 
+(types:
+    lvalue instance of struct outer 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: printf: function
+            with parameters
+              fmt: pointer to char 
+              and a variable number of other arguments
+            returning 
+              rc: signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  fmt: pointer to char 
+                  and a variable number of other arguments
+                returning 
+                  rc: signed int 
+
+)
+        Environment: 
+formal type is pointer to char 
+actual type is pointer to char 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+constant expression "expecting 3, 17, 23, 4; got %d, %d, %d, %d\n" array of char with dimension of constant expression 47 unsigned int --- results are
+        pointer to char 
+
+converting pointer to char 
+ to pointer to char 
+cost is( 0, 0, 0 )
+actual expression:
+        Variable Expression: s: instance of struct outer 
+--- results are
+        lvalue instance of struct outer 
+Case +++++++++++++
+formals are:
+        fmt: pointer to char 
+actuals are:
+        constant expression "expecting 3, 17, 23, 4; got %d, %d, %d, %d\n" array of char with dimension of constant expression 47 unsigned int 
+                  Variable Expression: s: instance of struct outer 
+
+bindings are:
+cost of conversion is:( 1, 0, 0 )
+alternatives before prune:
+Cost ( 1, 0, 0 ): Application of
+  Variable Expression: printf: function
+      with parameters
+        fmt: pointer to char 
+        and a variable number of other arguments
+      returning 
+        rc: signed int 
+
+to arguments
+  constant expression "expecting 3, 17, 23, 4; got %d, %d, %d, %d\n" array of char with dimension of constant expression 47 unsigned int 
+      Variable Expression: s: instance of struct outer 
+
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: printf: function
+        with parameters
+          fmt: pointer to char 
+          and a variable number of other arguments
+        returning 
+          rc: signed int 
+
+  to arguments
+    constant expression "expecting 3, 17, 23, 4; got %d, %d, %d, %d\n" array of char with dimension of constant expression 47 unsigned int 
+          Variable Expression: s: instance of struct outer 
+
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct inner 
+    _src: instance of struct inner 
+  returning 
+    instance of struct inner 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f2: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct inner 
+              Member Expression, with field: 
+                f3: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct inner 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct inner 
+
+to:
+  instance of struct inner 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct outer 
+    _src: instance of struct outer 
+  returning 
+    instance of struct outer 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f1: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Expression Statement:
+          Application of
+            Variable Expression: ?=?: inline static function
+                with parameters
+                  _dst: pointer to instance of struct inner 
+                  _src: instance of struct inner 
+                returning 
+                  instance of struct inner 
+
+          to arguments
+                          Address of:
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+
+                          Member Expression, with field: 
+                i: instance of struct inner 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+          with environment:
+            Types:
+            Non-types:
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct outer 
+              Member Expression, with field: 
+                f4: double 
+              from aggregate: 
+                Variable Expression: _src: instance of struct outer 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct outer 
+
+to:
+  instance of struct outer 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct inner 
+          _src: instance of struct inner 
+        returning 
+          instance of struct inner 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct outer 
+          _src: instance of struct outer 
+        returning 
+          instance of struct outer 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+nameExpr is rc
+decl is rc: signed int 
+newExpr is Variable Expression: rc: signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: rc: signed int 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: rc: signed int 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Variable Expression: rc: signed int 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+nameExpr is 0
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        f2: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct inner 
+    Member Expression, with field: 
+      f2: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct inner 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        f3: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct inner 
+    Member Expression, with field: 
+      f3: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct inner 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        f1: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct outer 
+    Member Expression, with field: 
+      f1: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct outer 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        f4: double 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct outer 
+    Member Expression, with field: 
+      f4: double 
+    from aggregate: 
+      Variable Expression: _src: instance of struct outer 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Variable Expression: x: short signed int 
+    Variable Expression: w: signed int 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: f
+...to: 
+constant expression 17 signed int 
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: f
+...to: 
+constant expression 17 signed int 
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: r
+    Tuple:
+              Name: x
+
+              Name: y
+
+              Name: z
+
+
+Error: No reasonable alternatives for expression Name: 1
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Variable Expression: a: signed int 
+constant expression 3 signed int 
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Tuple:
+                  Name: a
+
+                  Name: b
+
+    Tuple:
+      constant expression 4.6 double 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Variable Expression: c: signed int 
+constant expression 3 signed int 
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Tuple:
+                  Name: a
+
+                  Name: b
+
+                  Tuple:
+                          Name: c
+
+
+    Tuple:
+      constant expression 2 signed int 
+              Tuple:
+                      Name: a
+
+                      Name: b
+
+
+
+Error: No reasonable alternatives for expression Name: ?!=?
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: t1
+    Tuple:
+              Name: a
+
+              Name: b
+
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: t2
+    Tuple:
+              Name: a
+
+              Name: b
+
+
+Error: No reasonable alternatives for expression Name: ?+=?
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Tuple:
+                  Name: c
+
+                  Name: d
+
+    Name: t1
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: t1
+    Tuple:
+              Name: c
+
+              Name: d
+
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: t2
+    Tuple:
+              Name: c
+
+              Name: d
+
+
+Error: No reasonable alternatives for expression Address of:
+  Tuple:
+    constant expression 3 signed int 
+    constant expression 4 signed int 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: s
+    Tuple:
+      constant expression 11 signed int 
+      constant expression 12 signed int 
+      constant expression 13 signed int 
+      constant expression 3.14159 double 
+
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: sp
+    Name: sp
+
+Error: No reasonable alternatives for expression Name: 0
+
Index: src/Tests/Expect-r/TypeGenerator.txt
===================================================================
--- src/Tests/Expect-r/TypeGenerator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/TypeGenerator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,3714 @@
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  data: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                data: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  next: pointer to instance of type List1 (not function type) 
+                  with parameters
+                    instance of type T (not function type) 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                next: pointer to instance of type List1 (not function type) 
+                with parameters
+                  instance of type T (not function type) 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  data: instance of type T (not function type) 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    data: instance of type T (not function type) 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    data: instance of type T (not function type) 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to instance of type T (not function type) 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  data: instance of type T (not function type) 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  data: instance of type T (not function type) 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to instance of type T (not function type) 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  data: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                data: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  next: pointer to instance of type List1 (not function type) 
+                  with parameters
+                    instance of type T (not function type) 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                next: pointer to instance of type List1 (not function type) 
+                with parameters
+                  instance of type T (not function type) 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  next: pointer to instance of type List1 (not function type) 
+  with parameters
+    instance of type T (not function type) 
+
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    lvalue pointer to instance of type List1 (not function type) 
+      with parameters
+        instance of type T (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    next: pointer to instance of type List1 (not function type) 
+    with parameters
+      instance of type T (not function type) 
+
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to pointer to instance of type List1 (not function type) 
+      with parameters
+        instance of type T (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    next: pointer to instance of type List1 (not function type) 
+    with parameters
+      instance of type T (not function type) 
+
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to pointer to instance of type List1 (not function type) 
+      with parameters
+        instance of type T (not function type) 
+
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  next: pointer to instance of type List1 (not function type) 
+  with parameters
+    instance of type T (not function type) 
+
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue pointer to instance of type List1 (not function type) 
+      with parameters
+        instance of type T (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  next: pointer to instance of type List1 (not function type) 
+  with parameters
+    instance of type T (not function type) 
+
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue pointer to instance of type List1 (not function type) 
+      with parameters
+        instance of type T (not function type) 
+
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to pointer to instance of type List1 (not function type) 
+with parameters
+  instance of type T (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue instance of struct __anonymous0 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+(types:
+    instance of struct __anonymous0 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  data: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                data: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  next: pointer to instance of type List1 (not function type) 
+                  with parameters
+                    instance of type T (not function type) 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                next: pointer to instance of type List1 (not function type) 
+                with parameters
+                  instance of type T (not function type) 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type List1 (not function type) 
+    _src: instance of type List1 (not function type) 
+  returning 
+    instance of type List1 (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type List1 (not function type) 
+
+    to:
+      pointer to pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type List1 (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type List1 (not function type) 
+      _src: instance of type List1 (not function type) 
+    returning 
+      instance of type List1 (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type List1 (not function type) 
+      _src: instance of type List1 (not function type) 
+    returning 
+      instance of type List1 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type List1 (not function type) 
+          _src: instance of type List1 (not function type) 
+        returning 
+          instance of type List1 (not function type) 
+
+)
+Environment: 
+
+there are 2 alternatives before elimination
+there are 2 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _dst: pointer to instance of type List1 (not function type) 
+(types:
+    lvalue pointer to instance of type List1 (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  data: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                data: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  next: pointer to instance of type List1 (not function type) 
+                  with parameters
+                    instance of type T (not function type) 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                next: pointer to instance of type List1 (not function type) 
+                with parameters
+                  instance of type T (not function type) 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S2 
+    _src: instance of struct S2 
+  returning 
+    instance of struct S2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S2 
+              Member Expression, with field: 
+                i: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S2 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S2 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S2 
+      _src: instance of struct S2 
+    returning 
+      instance of struct S2 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type List1 (not function type) 
+    _src: instance of type List1 (not function type) 
+  returning 
+    instance of type List1 (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type List1 (not function type) 
+
+    to:
+      pointer to pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type List1 (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type List1 (not function type) 
+      _src: instance of type List1 (not function type) 
+    returning 
+      instance of type List1 (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S2 
+      _src: instance of struct S2 
+    returning 
+      instance of struct S2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S2 
+          _src: instance of struct S2 
+        returning 
+          instance of struct S2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type List1 (not function type) 
+      _src: instance of type List1 (not function type) 
+    returning 
+      instance of type List1 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type List1 (not function type) 
+          _src: instance of type List1 (not function type) 
+        returning 
+          instance of type List1 (not function type) 
+
+)
+Environment: 
+
+there are 3 alternatives before elimination
+there are 3 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: instance of type T (not function type) 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S2 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: instance of type T (not function type) 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S2 
+(types:
+    pointer to instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: instance of type T (not function type) 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S2 
+(types:
+    pointer to instance of type T (not function type) 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: instance of type T (not function type) 
+from aggregate: 
+  Variable Expression: _src: instance of struct S2 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: instance of type T (not function type) 
+from aggregate: 
+  Variable Expression: _src: instance of struct S2 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type List1 (not function type) 
+              _src: instance of type List1 (not function type) 
+            returning 
+              instance of type List1 (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type List1 (not function type) 
+                  _src: instance of type List1 (not function type) 
+                returning 
+                  instance of type List1 (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type List1 (not function type) 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S2 
+              _src: instance of struct S2 
+            returning 
+              instance of struct S2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S2 
+                  _src: instance of struct S2 
+                returning 
+                  instance of struct S2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S2 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to instance of type T (not function type) 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct S2 
+(types:
+    lvalue instance of struct S2 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct S2 
+
+to:
+  instance of struct S2 
+(types:
+    instance of struct S2 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  data: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                data: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  next: pointer to instance of type List1 (not function type) 
+                  with parameters
+                    instance of type T (not function type) 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                next: pointer to instance of type List1 (not function type) 
+                with parameters
+                  instance of type T (not function type) 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S2 
+    _src: instance of struct S2 
+  returning 
+    instance of struct S2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S2 
+              Member Expression, with field: 
+                i: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct S2 
+
+to:
+  instance of struct S2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S2 
+      _src: instance of struct S2 
+    returning 
+      instance of struct S2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S24 
+    _src: instance of struct S24 
+  returning 
+    instance of struct S24 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S24 
+              Member Expression, with field: 
+                i: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S24 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S24 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S24 
+      _src: instance of struct S24 
+    returning 
+      instance of struct S24 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type List1 (not function type) 
+    _src: instance of type List1 (not function type) 
+  returning 
+    instance of type List1 (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type List1 (not function type) 
+
+    to:
+      pointer to pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type List1 (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type List1 (not function type) 
+      _src: instance of type List1 (not function type) 
+    returning 
+      instance of type List1 (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S2 
+      _src: instance of struct S2 
+    returning 
+      instance of struct S2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S2 
+          _src: instance of struct S2 
+        returning 
+          instance of struct S2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S24 
+      _src: instance of struct S24 
+    returning 
+      instance of struct S24 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S24 
+          _src: instance of struct S24 
+        returning 
+          instance of struct S24 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type List1 (not function type) 
+      _src: instance of type List1 (not function type) 
+    returning 
+      instance of type List1 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type List1 (not function type) 
+          _src: instance of type List1 (not function type) 
+        returning 
+          instance of type List1 (not function type) 
+
+)
+Environment: 
+
+there are 4 alternatives before elimination
+there are 4 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: instance of type T (not function type) 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct S24 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: instance of type T (not function type) 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S24 
+(types:
+    pointer to instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: instance of type T (not function type) 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct S24 
+(types:
+    pointer to instance of type T (not function type) 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: instance of type T (not function type) 
+from aggregate: 
+  Variable Expression: _src: instance of struct S24 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: instance of type T (not function type) 
+from aggregate: 
+  Variable Expression: _src: instance of struct S24 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type List1 (not function type) 
+              _src: instance of type List1 (not function type) 
+            returning 
+              instance of type List1 (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type List1 (not function type) 
+                  _src: instance of type List1 (not function type) 
+                returning 
+                  instance of type List1 (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type List1 (not function type) 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S24 
+              _src: instance of struct S24 
+            returning 
+              instance of struct S24 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S24 
+                  _src: instance of struct S24 
+                returning 
+                  instance of struct S24 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S24 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S2 
+              _src: instance of struct S2 
+            returning 
+              instance of struct S2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S2 
+                  _src: instance of struct S2 
+                returning 
+                  instance of struct S2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S2 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to instance of type T (not function type) 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct S24 
+(types:
+    lvalue instance of struct S24 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct S24 
+
+to:
+  instance of struct S24 
+(types:
+    instance of struct S24 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  data: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                data: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  next: pointer to instance of type List1 (not function type) 
+                  with parameters
+                    instance of type T (not function type) 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                next: pointer to instance of type List1 (not function type) 
+                with parameters
+                  instance of type T (not function type) 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                i: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous1 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S2 
+    _src: instance of struct S2 
+  returning 
+    instance of struct S2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S2 
+              Member Expression, with field: 
+                i: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct S2 
+
+to:
+  instance of struct S2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S2 
+      _src: instance of struct S2 
+    returning 
+      instance of struct S2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S24 
+    _src: instance of struct S24 
+  returning 
+    instance of struct S24 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S24 
+              Member Expression, with field: 
+                i: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S24 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct S24 
+
+to:
+  instance of struct S24 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S24 
+      _src: instance of struct S24 
+    returning 
+      instance of struct S24 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type List1 (not function type) 
+    _src: instance of type List1 (not function type) 
+  returning 
+    instance of type List1 (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type List1 (not function type) 
+
+    to:
+      pointer to pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type List1 (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type List1 (not function type) 
+      _src: instance of type List1 (not function type) 
+    returning 
+      instance of type List1 (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S2 
+      _src: instance of struct S2 
+    returning 
+      instance of struct S2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S2 
+          _src: instance of struct S2 
+        returning 
+          instance of struct S2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S24 
+      _src: instance of struct S24 
+    returning 
+      instance of struct S24 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S24 
+          _src: instance of struct S24 
+        returning 
+          instance of struct S24 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type List1 (not function type) 
+      _src: instance of type List1 (not function type) 
+    returning 
+      instance of type List1 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type List1 (not function type) 
+          _src: instance of type List1 (not function type) 
+        returning 
+          instance of type List1 (not function type) 
+
+)
+Environment: 
+
+there are 5 alternatives before elimination
+there are 5 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: instance of type T (not function type) 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: instance of type T (not function type) 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous1 
+(types:
+    pointer to instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    i: instance of type T (not function type) 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous1 
+(types:
+    pointer to instance of type T (not function type) 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: instance of type T (not function type) 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous1 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  i: instance of type T (not function type) 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous1 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type List1 (not function type) 
+              _src: instance of type List1 (not function type) 
+            returning 
+              instance of type List1 (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type List1 (not function type) 
+                  _src: instance of type List1 (not function type) 
+                returning 
+                  instance of type List1 (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type List1 (not function type) 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S24 
+              _src: instance of struct S24 
+            returning 
+              instance of struct S24 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S24 
+                  _src: instance of struct S24 
+                returning 
+                  instance of struct S24 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S24 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S2 
+              _src: instance of struct S2 
+            returning 
+              instance of struct S2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S2 
+                  _src: instance of struct S2 
+                returning 
+                  instance of struct S2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S2 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to instance of type T (not function type) 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous1 
+(types:
+    lvalue instance of struct __anonymous1 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+(types:
+    instance of struct __anonymous1 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  data: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                data: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  next: pointer to instance of type List1 (not function type) 
+                  with parameters
+                    instance of type T (not function type) 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                next: pointer to instance of type List1 (not function type) 
+                with parameters
+                  instance of type T (not function type) 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                i: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S2 
+    _src: instance of struct S2 
+  returning 
+    instance of struct S2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S2 
+              Member Expression, with field: 
+                i: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct S2 
+
+to:
+  instance of struct S2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S2 
+      _src: instance of struct S2 
+    returning 
+      instance of struct S2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S24 
+    _src: instance of struct S24 
+  returning 
+    instance of struct S24 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S24 
+              Member Expression, with field: 
+                i: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S24 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct S24 
+
+to:
+  instance of struct S24 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S24 
+      _src: instance of struct S24 
+    returning 
+      instance of struct S24 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct node 
+    _src: instance of struct node 
+  returning 
+    instance of struct node 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  data: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct node 
+              Member Expression, with field: 
+                data: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct node 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  next: pointer to instance of struct node 
+                  with parameters
+                    instance of type T (not function type) 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct node 
+              Member Expression, with field: 
+                next: pointer to instance of struct node 
+                with parameters
+                  instance of type T (not function type) 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct node 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct node 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct node 
+      _src: instance of struct node 
+    returning 
+      instance of struct node 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type List1 (not function type) 
+    _src: instance of type List1 (not function type) 
+  returning 
+    instance of type List1 (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type List1 (not function type) 
+
+    to:
+      pointer to pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type List1 (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type List1 (not function type) 
+      _src: instance of type List1 (not function type) 
+    returning 
+      instance of type List1 (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S2 
+      _src: instance of struct S2 
+    returning 
+      instance of struct S2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S2 
+          _src: instance of struct S2 
+        returning 
+          instance of struct S2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S24 
+      _src: instance of struct S24 
+    returning 
+      instance of struct S24 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S24 
+          _src: instance of struct S24 
+        returning 
+          instance of struct S24 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct node 
+      _src: instance of struct node 
+    returning 
+      instance of struct node 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct node 
+          _src: instance of struct node 
+        returning 
+          instance of struct node 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type List1 (not function type) 
+      _src: instance of type List1 (not function type) 
+    returning 
+      instance of type List1 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type List1 (not function type) 
+          _src: instance of type List1 (not function type) 
+        returning 
+          instance of type List1 (not function type) 
+
+)
+Environment: 
+
+there are 6 alternatives before elimination
+there are 6 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  data: instance of type T (not function type) 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct node 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    data: instance of type T (not function type) 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct node 
+(types:
+    pointer to instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    data: instance of type T (not function type) 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct node 
+(types:
+    pointer to instance of type T (not function type) 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  data: instance of type T (not function type) 
+from aggregate: 
+  Variable Expression: _src: instance of struct node 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  data: instance of type T (not function type) 
+from aggregate: 
+  Variable Expression: _src: instance of struct node 
+(types:
+    lvalue instance of type T (not function type) 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type List1 (not function type) 
+              _src: instance of type List1 (not function type) 
+            returning 
+              instance of type List1 (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type List1 (not function type) 
+                  _src: instance of type List1 (not function type) 
+                returning 
+                  instance of type List1 (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type List1 (not function type) 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct node 
+              _src: instance of struct node 
+            returning 
+              instance of struct node 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct node 
+                  _src: instance of struct node 
+                returning 
+                  instance of struct node 
+
+)
+        Environment: 
+formal type is pointer to instance of struct node 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S24 
+              _src: instance of struct S24 
+            returning 
+              instance of struct S24 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S24 
+                  _src: instance of struct S24 
+                returning 
+                  instance of struct S24 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S24 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S2 
+              _src: instance of struct S2 
+            returning 
+              instance of struct S2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S2 
+                  _src: instance of struct S2 
+                returning 
+                  instance of struct S2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S2 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to instance of type T (not function type) 
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  data: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                data: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  next: pointer to instance of type List1 (not function type) 
+                  with parameters
+                    instance of type T (not function type) 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                next: pointer to instance of type List1 (not function type) 
+                with parameters
+                  instance of type T (not function type) 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                i: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S2 
+    _src: instance of struct S2 
+  returning 
+    instance of struct S2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S2 
+              Member Expression, with field: 
+                i: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct S2 
+
+to:
+  instance of struct S2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S2 
+      _src: instance of struct S2 
+    returning 
+      instance of struct S2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S24 
+    _src: instance of struct S24 
+  returning 
+    instance of struct S24 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S24 
+              Member Expression, with field: 
+                i: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S24 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct S24 
+
+to:
+  instance of struct S24 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S24 
+      _src: instance of struct S24 
+    returning 
+      instance of struct S24 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct node 
+    _src: instance of struct node 
+  returning 
+    instance of struct node 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  data: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct node 
+              Member Expression, with field: 
+                data: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct node 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  next: pointer to instance of struct node 
+                  with parameters
+                    instance of type T (not function type) 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct node 
+              Member Expression, with field: 
+                next: pointer to instance of struct node 
+                with parameters
+                  instance of type T (not function type) 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct node 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct node 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct node 
+      _src: instance of struct node 
+    returning 
+      instance of struct node 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type List1 (not function type) 
+    _src: instance of type List1 (not function type) 
+  returning 
+    instance of type List1 (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type List1 (not function type) 
+
+    to:
+      pointer to pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type List1 (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type List1 (not function type) 
+      _src: instance of type List1 (not function type) 
+    returning 
+      instance of type List1 (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S2 
+      _src: instance of struct S2 
+    returning 
+      instance of struct S2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S2 
+          _src: instance of struct S2 
+        returning 
+          instance of struct S2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S24 
+      _src: instance of struct S24 
+    returning 
+      instance of struct S24 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S24 
+          _src: instance of struct S24 
+        returning 
+          instance of struct S24 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct node 
+      _src: instance of struct node 
+    returning 
+      instance of struct node 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct node 
+          _src: instance of struct node 
+        returning 
+          instance of struct node 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type List1 (not function type) 
+      _src: instance of type List1 (not function type) 
+    returning 
+      instance of type List1 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type List1 (not function type) 
+          _src: instance of type List1 (not function type) 
+        returning 
+          instance of type List1 (not function type) 
+
+)
+Environment: 
+
+there are 6 alternatives before elimination
+there are 6 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  next: pointer to instance of struct node 
+  with parameters
+    instance of type T (not function type) 
+
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct node 
+(types:
+    lvalue pointer to instance of struct node 
+      with parameters
+        instance of type T (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    next: pointer to instance of struct node 
+    with parameters
+      instance of type T (not function type) 
+
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct node 
+(types:
+    pointer to pointer to instance of struct node 
+      with parameters
+        instance of type T (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    next: pointer to instance of struct node 
+    with parameters
+      instance of type T (not function type) 
+
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct node 
+(types:
+    pointer to pointer to instance of struct node 
+      with parameters
+        instance of type T (not function type) 
+
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  next: pointer to instance of struct node 
+  with parameters
+    instance of type T (not function type) 
+
+from aggregate: 
+  Variable Expression: _src: instance of struct node 
+(types:
+    lvalue pointer to instance of struct node 
+      with parameters
+        instance of type T (not function type) 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  next: pointer to instance of struct node 
+  with parameters
+    instance of type T (not function type) 
+
+from aggregate: 
+  Variable Expression: _src: instance of struct node 
+(types:
+    lvalue pointer to instance of struct node 
+      with parameters
+        instance of type T (not function type) 
+
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
+            with parameters
+              _dst: pointer to instance of type List1 (not function type) 
+              _src: instance of type List1 (not function type) 
+            returning 
+              instance of type List1 (not function type) 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of type List1 (not function type) 
+                  _src: instance of type List1 (not function type) 
+                returning 
+                  instance of type List1 (not function type) 
+
+)
+        Environment: 
+formal type is pointer to instance of type List1 (not function type) 
+actual type is pointer to pointer to instance of struct node 
+with parameters
+  instance of type T (not function type) 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct node 
+              _src: instance of struct node 
+            returning 
+              instance of struct node 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct node 
+                  _src: instance of struct node 
+                returning 
+                  instance of struct node 
+
+)
+        Environment: 
+formal type is pointer to instance of struct node 
+actual type is pointer to pointer to instance of struct node 
+with parameters
+  instance of type T (not function type) 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S24 
+              _src: instance of struct S24 
+            returning 
+              instance of struct S24 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S24 
+                  _src: instance of struct S24 
+                returning 
+                  instance of struct S24 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S24 
+actual type is pointer to pointer to instance of struct node 
+with parameters
+  instance of type T (not function type) 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S2 
+              _src: instance of struct S2 
+            returning 
+              instance of struct S2 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S2 
+                  _src: instance of struct S2 
+                returning 
+                  instance of struct S2 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S2 
+actual type is pointer to pointer to instance of struct node 
+with parameters
+  instance of type T (not function type) 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous1 
+              _src: instance of struct __anonymous1 
+            returning 
+              instance of struct __anonymous1 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous1 
+                  _src: instance of struct __anonymous1 
+                returning 
+                  instance of struct __anonymous1 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous1 
+actual type is pointer to pointer to instance of struct node 
+with parameters
+  instance of type T (not function type) 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to pointer to instance of struct node 
+with parameters
+  instance of type T (not function type) 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct node 
+(types:
+    lvalue instance of struct node 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct node 
+
+to:
+  instance of struct node 
+(types:
+    instance of struct node 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  data: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                data: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  next: pointer to instance of type List1 (not function type) 
+                  with parameters
+                    instance of type T (not function type) 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                next: pointer to instance of type List1 (not function type) 
+                with parameters
+                  instance of type T (not function type) 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous1 
+    _src: instance of struct __anonymous1 
+  returning 
+    instance of struct __anonymous1 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous1 
+              Member Expression, with field: 
+                i: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous1 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct __anonymous1 
+
+to:
+  instance of struct __anonymous1 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S2 
+    _src: instance of struct S2 
+  returning 
+    instance of struct S2 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S2 
+              Member Expression, with field: 
+                i: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S2 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct S2 
+
+to:
+  instance of struct S2 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S2 
+      _src: instance of struct S2 
+    returning 
+      instance of struct S2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S24 
+    _src: instance of struct S24 
+  returning 
+    instance of struct S24 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S24 
+              Member Expression, with field: 
+                i: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S24 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct S24 
+
+to:
+  instance of struct S24 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S24 
+      _src: instance of struct S24 
+    returning 
+      instance of struct S24 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct node 
+    _src: instance of struct node 
+  returning 
+    instance of struct node 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  data: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct node 
+              Member Expression, with field: 
+                data: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct node 
+
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  next: pointer to instance of struct node 
+                  with parameters
+                    instance of type T (not function type) 
+
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct node 
+              Member Expression, with field: 
+                next: pointer to instance of struct node 
+                with parameters
+                  instance of type T (not function type) 
+
+              from aggregate: 
+                Variable Expression: _src: instance of struct node 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct node 
+
+to:
+  instance of struct node 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct node 
+      _src: instance of struct node 
+    returning 
+      instance of struct node 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type List (not function type) 
+    _src: instance of type List (not function type) 
+  returning 
+    instance of type List (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type List (not function type) 
+
+    to:
+      pointer to pointer to instance of struct node 
+        with parameters
+          instance of type T (not function type) 
+
+    Cast of:
+      Variable Expression: _src: instance of type List (not function type) 
+
+    to:
+      pointer to instance of struct node 
+        with parameters
+          instance of type T (not function type) 
+
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type List (not function type) 
+      _src: instance of type List (not function type) 
+    returning 
+      instance of type List (not function type) 
+
+
+decl is ?=?: automatically generated function
+  with parameters
+    _dst: pointer to instance of type List1 (not function type) 
+    _src: instance of type List1 (not function type) 
+  returning 
+    instance of type List1 (not function type) 
+  with body 
+    CompoundStmt
+              Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type List1 (not function type) 
+
+    to:
+      pointer to pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type List1 (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type List1 (not function type) 
+      _src: instance of type List1 (not function type) 
+    returning 
+      instance of type List1 (not function type) 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous1 
+          _src: instance of struct __anonymous1 
+        returning 
+          instance of struct __anonymous1 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S2 
+      _src: instance of struct S2 
+    returning 
+      instance of struct S2 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S2 
+          _src: instance of struct S2 
+        returning 
+          instance of struct S2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S24 
+      _src: instance of struct S24 
+    returning 
+      instance of struct S24 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S24 
+          _src: instance of struct S24 
+        returning 
+          instance of struct S24 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct node 
+      _src: instance of struct node 
+    returning 
+      instance of struct node 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct node 
+          _src: instance of struct node 
+        returning 
+          instance of struct node 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type List (not function type) 
+      _src: instance of type List (not function type) 
+    returning 
+      instance of type List (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type List (not function type) 
+          _src: instance of type List (not function type) 
+        returning 
+          instance of type List (not function type) 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
+    with parameters
+      _dst: pointer to instance of type List1 (not function type) 
+      _src: instance of type List1 (not function type) 
+    returning 
+      instance of type List1 (not function type) 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of type List1 (not function type) 
+          _src: instance of type List1 (not function type) 
+        returning 
+          instance of type List1 (not function type) 
+
+)
+Environment: 
+
+there are 7 alternatives before elimination
+there are 7 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _dst: pointer to instance of type List (not function type) 
+(types:
+    lvalue pointer to instance of type List (not function type) 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is my_list
+decl is my_list: instance of type List (not function type) 
+with parameters
+  signed int 
+
+newExpr is Variable Expression: my_list: instance of type List (not function type) 
+  with parameters
+    signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: my_list: instance of type List (not function type) 
+  with parameters
+    signed int 
+
+(types:
+    lvalue instance of type List (not function type) 
+      with parameters
+        signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        data: instance of type T (not function type) 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      data: instance of type T (not function type) 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        next: pointer to instance of type List1 (not function type) 
+        with parameters
+          instance of type T (not function type) 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      next: pointer to instance of type List1 (not function type) 
+      with parameters
+        instance of type T (not function type) 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Cast of:
+  Variable Expression: _dst: pointer to instance of type List1 (not function type) 
+
+to:
+  pointer to pointer to instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: instance of type T (not function type) 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S2 
+    Member Expression, with field: 
+      i: instance of type T (not function type) 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S2 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: instance of type T (not function type) 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct S24 
+    Member Expression, with field: 
+      i: instance of type T (not function type) 
+    from aggregate: 
+      Variable Expression: _src: instance of struct S24 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        i: instance of type T (not function type) 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous1 
+    Member Expression, with field: 
+      i: instance of type T (not function type) 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous1 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        data: instance of type T (not function type) 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct node 
+    Member Expression, with field: 
+      data: instance of type T (not function type) 
+    from aggregate: 
+      Variable Expression: _src: instance of struct node 
+
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        next: pointer to instance of struct node 
+        with parameters
+          instance of type T (not function type) 
+
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct node 
+    Member Expression, with field: 
+      next: pointer to instance of struct node 
+      with parameters
+        instance of type T (not function type) 
+
+    from aggregate: 
+      Variable Expression: _src: instance of struct node 
+
+Error: No reasonable alternatives for expression Cast of:
+  Variable Expression: _dst: pointer to instance of type List (not function type) 
+
+to:
+  pointer to pointer to instance of struct node 
+    with parameters
+      instance of type T (not function type) 
+
+
+Error: No reasonable alternatives for expression Cast of:
+  Name: my_list
+
+to:
+  instance of struct node 
+    with parameters
+      signed int 
+
+
Index: src/Tests/Expect-r/Typedef.txt
===================================================================
--- src/Tests/Expect-r/Typedef.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Typedef.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,424 @@
+nameExpr is T
+decl is T: function
+  with parameters
+    signed int 
+  returning 
+    signed int 
+
+newExpr is Variable Expression: T: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: T: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+(types:
+    pointer to function
+        with parameters
+          signed int 
+        returning 
+          signed int 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: T: function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+(types:
+            pointer to function
+                with parameters
+                  signed int 
+                returning 
+                  signed int 
+
+)
+        Environment: 
+formal type is signed int 
+actual type is signed int 
+need assertions:
+============= original indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+============= new indexer
+===idTable===
+===typeTable===
+===structTable===
+===enumTable===
+===unionTable===
+===contextTable===
+actual expression:
+constant expression 3 signed int --- results are
+        signed int 
+
+converting signed int 
+ to signed int 
+cost is( 0, 0, 0 )
+Case +++++++++++++
+formals are:
+        signed int 
+actuals are:
+        constant expression 3 signed int 
+bindings are:
+cost of conversion is:( 0, 0, 0 )
+alternatives before prune:
+Cost ( 0, 0, 0 ): Application of
+  Variable Expression: T: function
+      with parameters
+        signed int 
+      returning 
+        signed int 
+
+to arguments
+  constant expression 3 signed int 
+(types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Application of
+    Variable Expression: T: function
+        with parameters
+          signed int 
+        returning 
+          signed int 
+
+  to arguments
+    constant expression 3 signed int 
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is ?=?
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct __anonymous0 
+    _src: instance of struct __anonymous0 
+  returning 
+    instance of struct __anonymous0 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+              Member Expression, with field: 
+                T: signed int 
+              from aggregate: 
+                Variable Expression: _src: instance of struct __anonymous0 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct __anonymous0 
+          _src: instance of struct __anonymous0 
+        returning 
+          instance of struct __anonymous0 
+
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  T: signed int 
+from aggregate: 
+  Applying untyped: 
+      Name: *?
+  ...to: 
+      Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    T: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Address of:
+  Member Expression, with field: 
+    T: signed int 
+  from aggregate: 
+    Applying untyped: 
+        Name: *?
+    ...to: 
+        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+(types:
+    pointer to signed int 
+)
+Environment: 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  T: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+findSubExprs
+Cost ( 0, 0, 0 ): Member Expression, with field: 
+  T: signed int 
+from aggregate: 
+  Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue signed int 
+)
+Environment: 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct __anonymous0 
+                  _src: instance of struct __anonymous0 
+                returning 
+                  instance of struct __anonymous0 
+
+)
+        Environment: 
+formal type is pointer to instance of struct __anonymous0 
+actual type is pointer to signed int 
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous0 
+(types:
+    lvalue instance of struct __anonymous0 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): Cast of:
+  Variable Expression: _src: instance of struct __anonymous0 
+
+to:
+  instance of struct __anonymous0 
+(types:
+    instance of struct __anonymous0 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 3 signed int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 3 signed int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 3 signed int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+constant expression 3 signed int 
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+Error: No reasonable alternatives for expression Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Member Expression, with field: 
+        T: signed int 
+      from aggregate: 
+        Applying untyped: 
+            Name: *?
+        ...to: 
+            Variable Expression: _dst: pointer to instance of struct __anonymous0 
+    Member Expression, with field: 
+      T: signed int 
+    from aggregate: 
+      Variable Expression: _src: instance of struct __anonymous0 
+
+Error: No reasonable alternatives for expression Cast of:
+constant expression 3 signed int 
+to:
+  instance of struct __anonymous0 
+
Index: src/Tests/Expect-r/TypedefDeclarator.txt
===================================================================
--- src/Tests/Expect-r/TypedefDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/TypedefDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,583 @@
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+int main(){
+    int __f1__i;
+    int __f2__i;
+    int *__f3__Pi;
+    int **__f4__PPi;
+    int *const *__f5__PCPi;
+    int *const *const __f6__CPCPi;
+    int *__f7__Pi;
+    int **__f8__PPi;
+    int *const *__f9__PCPi;
+    int *const *const __f10__CPCPi;
+    int *__f11__Pi;
+    int **__f12__PPi;
+    int *const *__f13__PCPi;
+    int *const *const __f14__CPCPi;
+    int __f15__A0i[];
+    int __f16__A0i[((long unsigned int )10)];
+    int __f17__A0i[];
+    int __f18__A0i[((long unsigned int )10)];
+    int *__f19__A0Pi[];
+    int *__f20__A0Pi[((long unsigned int )10)];
+    int **__f21__A0PPi[];
+    int **__f22__A0PPi[((long unsigned int )10)];
+    int *const *__f23__A0PCPi[];
+    int *const *__f24__A0PCPi[((long unsigned int )10)];
+    int *const *const __f25__A0CPCPi[];
+    int *const *const __f26__A0CPCPi[((long unsigned int )10)];
+    int *__f27__A0Pi[];
+    int *__f28__A0Pi[((long unsigned int )10)];
+    int **__f29__A0PPi[];
+    int **__f30__A0PPi[((long unsigned int )10)];
+    int *const *__f31__A0PCPi[];
+    int *const *__f32__A0PCPi[((long unsigned int )10)];
+    int *const *const __f33__A0CPCPi[];
+    int *const *const __f34__A0CPCPi[((long unsigned int )10)];
+    int *__f35__A0Pi[];
+    int *__f36__A0Pi[((long unsigned int )10)];
+    int **__f37__A0PPi[];
+    int **__f38__A0PPi[((long unsigned int )10)];
+    int *const *__f39__A0PCPi[];
+    int *const *__f40__A0PCPi[((long unsigned int )10)];
+    int *const *const __f41__A0CPCPi[];
+    int *const *const __f42__A0CPCPi[((long unsigned int )10)];
+    int __f43__A0A0i[][3];
+    int __f44__A0A0i[((long unsigned int )3)][3];
+    int __f45__A0A0i[][3];
+    int __f46__A0A0i[((long unsigned int )3)][3];
+    int __f47__A0A0i[][3];
+    int __f48__A0A0i[((long unsigned int )3)][3];
+    int *__f49__A0A0Pi[][3];
+    int *__f50__A0A0Pi[((long unsigned int )3)][3];
+    int **__f51__A0A0PPi[][3];
+    int **__f52__A0A0PPi[((long unsigned int )3)][3];
+    int *const *__f53__A0A0PCPi[][3];
+    int *const *__f54__A0A0PCPi[((long unsigned int )3)][3];
+    int *const *const __f55__A0A0CPCPi[][3];
+    int *const *const __f56__A0A0CPCPi[((long unsigned int )3)][3];
+    int *__f57__A0A0Pi[][3];
+    int *__f58__A0A0Pi[((long unsigned int )3)][3];
+    int **__f59__A0A0PPi[][3];
+    int **__f60__A0A0PPi[((long unsigned int )3)][3];
+    int *const *__f61__A0A0PCPi[][3];
+    int *const *__f62__A0A0PCPi[((long unsigned int )3)][3];
+    int *const *const __f63__A0A0CPCPi[][3];
+    int *const *const __f64__A0A0CPCPi[((long unsigned int )3)][3];
+    int __f65__Fi_i_(int );
+    int __f66__Fi_i_(int );
+    int *__f67__FPi_i_(int );
+    int **__f68__FPPi_i_(int );
+    int *const *__f69__FPCPi_i_(int );
+    int *const *const __f70__FCPCPi_i_(int );
+    int *__f71__FPi_i_(int );
+    int **__f72__FPPi_i_(int );
+    int *const *__f73__FPCPi_i_(int );
+    int *const *const __f74__FCPCPi_i_(int );
+    int (*__f75__PFi_i_)(int );
+    int (**__f76__PPFi_i_)(int );
+    int (*const *__f77__PCPFi_i_)(int );
+    int (*const *const __f78__CPCPFi_i_)(int );
+    int (*(*__f79__PFPFi___i_)(int ))();
+    int (*(*const __f80__CPFPFi___i_)(int ))();
+    int (*const (*const __f81__CPFCPFi___i_)(int ))();
+}
Index: src/Tests/Expect-r/TypedefParamDeclarator.txt
===================================================================
--- src/Tests/Expect-r/TypedefParamDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/TypedefParamDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,2 @@
+int __fred__Fi_iPiPPiPCPiCPCPiPiPPiPCPiCPCPiPiPiPPiPPiPPPiPPPiPPCPiPPCPiPCPCPiPCPCPiPPiPPiPPPiPPPiPPCPiPPCPiPCPCPiPCPCPiPA0iPA0iPA0PiPA0PiPA0PPiPA0PPiPA0PCPiPA0PCPiPA0CPCPiPA0CPCPiPA0PiPA0PiPA0PPiPA0PPiPA0PCPiPA0PCPiPA0CPCPiPA0CPCPiPFi_i_PFPi_i_PFPPi_i_PFPCPi_i_PFCPCPi_i_PFi_i_PPFi_i_PCPFi_i_CPCPFi_i_PFPFi___i_CPFPFi___i_CPFCPFi___i_CPiCPiPiCPiPFi_CPi_PFi_CPi_PFi_Pi_PFi_CPi_CPPiCPPiPPPiCPPCPiCPCPCPiPFPi_CPi_PFPi_CPi_PFPPi_Pi_PFPCPi_CPi_PFCPCPi_CPi_CPA0iCPA0iPA0iCPA0iPFi_CPA0i_PFi_CPA0i_PFi_PA0i_PFi_CPA0i_CPA0PiCPA0PiPA0PPiCPA0PCPiCPA0CPCPiPFPi_CPA0i_PFPi_CPA0i_PFPPi_PA0i_PFPCPi_CPA0i_PFCPCPi_CPA0i__(int __f1__i, int *__f3__Pi, int **__f4__PPi, int *const *__f5__PCPi, int *const *const __f6__CPCPi, int *__f11__Pi, int **__f12__PPi, int *const *__f13__PCPi, int *const *const __f14__CPCPi, int *__f15__Pi, int __f16__Pi[10], int **__f19__PPi, int *__f20__PPi[10], int ***__f21__PPPi, int **__f22__PPPi[10], int *const **__f23__PPCPi, int *const *__f24__PPCPi[10], int *const *const *__f25__PCPCPi, int *const *const __f26__PCPCPi[10], int **__f35__PPi, int *__f36__PPi[10], int ***__f37__PPPi, int **__f38__PPPi[10], int *const **__f39__PPCPi, int *const *__f40__PPCPi[10], int *const *const *__f41__PCPCPi, int *const *const __f42__PCPCPi[10], int (*__f43__PA0i)[3], int __f44__PA0i[3][3], int *(*__f49__PA0Pi)[3], int *__f50__PA0Pi[3][3], int **(*__f51__PA0PPi)[3], int **__f52__PA0PPi[3][3], int *const *(*__f53__PA0PCPi)[3], int *const *__f54__PA0PCPi[3][3], int *const *const (*__f55__PA0CPCPi)[3], int *const *const __f56__PA0CPCPi[3][3], int *(*__f57__PA0Pi)[3], int *__f58__PA0Pi[3][3], int **(*__f59__PA0PPi)[3], int **__f60__PA0PPi[3][3], int *const *(*__f61__PA0PCPi)[3], int *const *__f62__PA0PCPi[3][3], int *const *const (*__f63__PA0CPCPi)[3], int *const *const __f64__PA0CPCPi[3][3], int (*__f65__PFi_i_)(int ), int *(*__f67__PFPi_i_)(int ), int **(*__f68__PFPPi_i_)(int ), int *const *(*__f69__PFPCPi_i_)(int ), int *const *const (*__f70__PFCPCPi_i_)(int ), int (*__f75__PFi_i_)(int ), int (**__f76__PPFi_i_)(int ), int (*const *__f77__PCPFi_i_)(int ), int (*const *const __f78__CPCPFi_i_)(int ), int (*(*__f79__PFPFi___i_)(int ))(), int (*(*const __f80__CPFPFi___i_)(int ))(), int (*const (*const __f81__CPFCPFi___i_)(int ))(), int __f82__CPi[const *], int __f83__CPi[const 3], int __f84__Pi[static 3], int __f85__CPi[static const 3], int (*)(int [const *]), int (*)(int [const 3]), int (*)(int [static 3]), int (*)(int [static const 3]), int *__f90__CPPi[const *], int *__f91__CPPi[const 3], int **__f92__PPPi[static 3], int *const *__f93__CPPCPi[static const 3], int *const *const __f94__CPCPCPi[static const 3], int *(*)(int [const *]), int *(*)(int [const 3]), int **(*)(int [static 3]), int *const *(*)(int [static const 3]), int *const *const (*)(int [static const 3]), int __f100__CPA0i[const *][3], int __f101__CPA0i[const 3][3], int __f102__PA0i[static 3][3], int __f103__CPA0i[static const 3][3], int (*)(int [const *][3]), int (*)(int [const 3][3]), int (*)(int [static 3][3]), int (*)(int [static const 3][3]), int *__f108__CPA0Pi[const *][3], int *__f109__CPA0Pi[const 3][3], int **__f110__PA0PPi[static 3][3], int *const *__f111__CPA0PCPi[static const 3][3], int *const *const __f112__CPA0CPCPi[static const 3][3], int *(*)(int [const *][3]), int *(*)(int [const 3][3]), int **(*)(int [static 3][3]), int *const *(*)(int [static const 3][3]), int *const *const (*)(int [static const 3][3])){
+}
Index: src/Tests/Expect-r/Typeof.txt
===================================================================
--- src/Tests/Expect-r/Typeof.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/Typeof.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,68 @@
+nameExpr is v1
+decl is v1: pointer to signed int 
+newExpr is Variable Expression: v1: pointer to signed int 
+
+alternatives before prune:
+Cost ( 0, 0, 0 ): Variable Expression: v1: pointer to signed int 
+(types:
+    lvalue pointer to signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 1 ): Cast of:
+  Variable Expression: v1: pointer to signed int 
+
+to:
+  nothing
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+nameExpr is *?
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 4 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 4 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 4 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 4 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+Error: No reasonable alternatives for expression Name: *?
+
Index: src/Tests/Expect-r/VariableDeclarator.txt
===================================================================
--- src/Tests/Expect-r/VariableDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/VariableDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,740 @@
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 10 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 3 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 3 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+int __f1__i;
+int __f2__i;
+int *__f3__Pi;
+int **__f4__PPi;
+int *const *__f5__PCPi;
+int *const *const __f6__CPCPi;
+int *__f7__Pi;
+int **__f8__PPi;
+int *const *__f9__PCPi;
+int *const *const __f10__CPCPi;
+int *__f11__Pi;
+int **__f12__PPi;
+int *const *__f13__PCPi;
+int *const *const __f14__CPCPi;
+int __f15__A0i[];
+int __f16__A0i[((long unsigned int )10)];
+int __f17__A0i[];
+int __f18__A0i[((long unsigned int )10)];
+int *__f19__A0Pi[];
+int *__f20__A0Pi[((long unsigned int )10)];
+int **__f21__A0PPi[];
+int **__f22__A0PPi[((long unsigned int )10)];
+int *const *__f23__A0PCPi[];
+int *const *__f24__A0PCPi[((long unsigned int )10)];
+int *const *const __f25__A0CPCPi[];
+int *const *const __f26__A0CPCPi[((long unsigned int )10)];
+int *__f27__A0Pi[];
+int *__f28__A0Pi[((long unsigned int )10)];
+int **__f29__A0PPi[];
+int **__f30__A0PPi[((long unsigned int )10)];
+int *const *__f31__A0PCPi[];
+int *const *__f32__A0PCPi[((long unsigned int )10)];
+int *const *const __f33__A0CPCPi[];
+int *const *const __f34__A0CPCPi[((long unsigned int )10)];
+int (*__f35__PA0i)[];
+int (*__f36__PA0i)[10];
+int (**__f37__PPA0i)[];
+int (**__f38__PPA0i)[10];
+int (*const *__f39__PCPA0i)[];
+int (*const *__f40__PCPA0i)[10];
+int (*const *const __f41__CPCPA0i)[];
+int (*const *const __f42__CPCPA0i)[10];
+int __f43__A0A0i[][3];
+int __f44__A0A0i[((long unsigned int )3)][3];
+int __f45__A0A0i[][3];
+int __f46__A0A0i[((long unsigned int )3)][3];
+int __f47__A0A0i[][3];
+int __f48__A0A0i[((long unsigned int )3)][3];
+int *__f49__A0A0Pi[][3];
+int *__f50__A0A0Pi[((long unsigned int )3)][3];
+int **__f51__A0A0PPi[][3];
+int **__f52__A0A0PPi[((long unsigned int )3)][3];
+int *const *__f53__A0A0PCPi[][3];
+int *const *__f54__A0A0PCPi[((long unsigned int )3)][3];
+int *const *const __f55__A0A0CPCPi[][3];
+int *const *const __f56__A0A0CPCPi[((long unsigned int )3)][3];
+int *__f57__A0A0Pi[][3];
+int *__f58__A0A0Pi[((long unsigned int )3)][3];
+int **__f59__A0A0PPi[][3];
+int **__f60__A0A0PPi[((long unsigned int )3)][3];
+int *const *__f61__A0A0PCPi[][3];
+int *const *__f62__A0A0PCPi[((long unsigned int )3)][3];
+int *const *const __f63__A0A0CPCPi[][3];
+int *const *const __f64__A0A0CPCPi[((long unsigned int )3)][3];
+int __f65__Fi_i_(int );
+int __f66__Fi_i_(int );
+int *__f67__FPi_i_(int );
+int **__f68__FPPi_i_(int );
+int *const *__f69__FPCPi_i_(int );
+int *const *const __f70__FCPCPi_i_(int );
+int *__f71__FPi_i_(int );
+int **__f72__FPPi_i_(int );
+int *const *__f73__FPCPi_i_(int );
+int *const *const __f74__FCPCPi_i_(int );
+int (*__f75__PFi_i_)(int );
+int (**__f76__PPFi_i_)(int );
+int (*const *__f77__PCPFi_i_)(int );
+int (*const *const __f78__CPCPFi_i_)(int );
+int (*(*__f79__PFPFi___i_)(int ))();
+int (*(*const __f80__CPFPFi___i_)(int ))();
+int (*const (*const __f81__CPFCPFi___i_)(int ))();
+int *__cf3__Pi;
+int **__cf4__PPi;
+int *const *__cf5__PCPi;
+int *const *const __cf6__CPCPi;
+int __cf15__A0i[];
+int __cf16__A0i[((long unsigned int )10)];
+int *__cf19__A0Pi[];
+int *__cf20__A0Pi[((long unsigned int )10)];
+int **__cf21__A0PPi[];
+int **__cf22__A0PPi[((long unsigned int )10)];
+int *const *__cf23__A0PCPi[];
+int *const *__cf24__A0PCPi[((long unsigned int )10)];
+int *const *const __cf25__A0CPCPi[];
+int *const *const __cf26__A0CPCPi[((long unsigned int )10)];
+int (*__cf35__PA0i)[];
+int (*__cf36__PA0i)[10];
+int (**__cf37__PPA0i)[];
+int (**__cf38__PPA0i)[10];
+int (*const *__cf39__PCPA0i)[];
+int (*const *__cf40__PCPA0i)[10];
+int (*const *const __cf41__CPCPA0i)[];
+int (*const *const __cf42__CPCPA0i)[10];
+int __cf43__A0A0i[][3];
+int __cf44__A0A0i[((long unsigned int )3)][3];
+int *__cf49__A0A0Pi[][3];
+int *__cf50__A0A0Pi[((long unsigned int )3)][3];
+int **__cf51__A0A0PPi[][3];
+int **__cf52__A0A0PPi[((long unsigned int )3)][3];
+int *const __cf53__A0A0CPi[][3];
+int *const *__cf54__A0A0PCPi[((long unsigned int )3)][3];
+int *const *const __cf55__A0A0CPCPi[][3];
+int *const *const __cf56__A0A0CPCPi[((long unsigned int )3)][3];
+int __cf65__Fi_i_(int );
+int __cf66__Fi_i_(int );
+int *__cf67__FPi_i_(int );
+int **__cf68__FPPi_i_(int );
+int **const __cf69__FCPPi_i_(int );
+int *const *const __cf70__FCPCPi_i_(int );
+int (*(*(*(*(*__v3__PA0PA0PFPA0PA0i_PA0PA0iPA0PA0i_)[])[])(int (*(*)[])[], int (*(*)[])[]))[])[];
Index: src/Tests/Expect-r/gcc900407-1.txt
===================================================================
--- src/Tests/Expect-r/gcc900407-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/gcc900407-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,12 @@
+nameExpr is ?=?
+nameExpr is ?=?
+nameExpr is ?!=?
+nameExpr is ?=?
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?!=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
Index: src/Tests/Expect-r/gcc900516-1.txt
===================================================================
--- src/Tests/Expect-r/gcc900516-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/gcc900516-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,3 @@
+nameExpr is !?
+Error: No reasonable alternatives for expression Name: !?
+
Index: src/Tests/Expect-r/gcc920301-1.txt
===================================================================
--- src/Tests/Expect-r/gcc920301-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/gcc920301-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,28 @@
+alternatives before prune:
+Cost ( 0, 0, 0 ): constant expression 5 signed int (types:
+    signed int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+alternatives before prune:
+Cost ( 0, 0, 2 ): Cast of:
+constant expression 5 signed int 
+to:
+  long unsigned int 
+(types:
+    long unsigned int 
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+int __f__Fi__(){
+    static void *__t__A0Pv[];
+    __L1__: /* null statement */ ;
+
+}
+int __g__Fi__(){
+    static unsigned int __p__A0Ui[((long unsigned int )5)];
+}
Index: src/Tests/Expect-r/gcc920409-1.txt
===================================================================
--- src/Tests/Expect-r/gcc920409-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/gcc920409-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,3 @@
+nameExpr is ?!=?
+Error: No reasonable alternatives for expression Name: ?!=?
+
Index: src/Tests/Expect-r/gcc920409-2.txt
===================================================================
--- src/Tests/Expect-r/gcc920409-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/gcc920409-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,9 @@
+nameExpr is ?!=?
+nameExpr is ?=?
+nameExpr is ?=?
+Error: No reasonable alternatives for expression Name: ?!=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
+Error: No reasonable alternatives for expression Name: ?=?
+
Index: src/Tests/Expect-r/gcc920410-2.txt
===================================================================
--- src/Tests/Expect-r/gcc920410-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/gcc920410-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,3 @@
+nameExpr is ?!=?
+Error: No reasonable alternatives for expression Name: ?!=?
+
Index: src/Tests/Expect-r/gcc920501-1.txt
===================================================================
--- src/Tests/Expect-r/gcc920501-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/gcc920501-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,12 @@
+alternatives before prune:
+Cost ( 0, 0, 0 ): Applying untyped: 
+    Name: LabAddress
+...to: 
+    Name: c
+(types:
+)
+Environment: 
+
+there are 1 alternatives before elimination
+there are 1 alternatives after elimination
+Segmentation fault (core dumped)
Index: src/Tests/Expect-r/gcc920501-11.txt
===================================================================
--- src/Tests/Expect-r/gcc920501-11.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/gcc920501-11.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,2 @@
+cfa-cpp: Parser/ExpressionNode.cc:456: virtual Expression* CompositeExprNode::build() const: Assertion `args.size() == 1' failed.
+Aborted (core dumped)
Index: src/Tests/Expect-r/gcc920501-19.txt
===================================================================
--- src/Tests/Expect-r/gcc920501-19.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-r/gcc920501-19.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,6 @@
+nameExpr is 0
+nameExpr is ?=?
+Error: No reasonable alternatives for expression Name: 0
+
+Error: No reasonable alternatives for expression Name: ?=?
+
Index: src/Tests/Expect-s/Abstype.txt
===================================================================
--- src/Tests/Expect-s/Abstype.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Abstype.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,52 @@
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function x
+--- Entering scope
+--- Leaving scope containing
+Adding function y
+--- Entering scope
+Adding object t
+--- Entering scope
+Adding object t_instance
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function *?
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+Adding function ?++
+--- Entering scope
+--- Leaving scope containing
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?=?
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type DT
+--- Leaving scope containing
+DT
+--- Entering scope
+--- Leaving scope containing
+Adding type U
+Adding function x
+--- Entering scope
+Adding object u
+--- Entering scope
+Adding object u_instance
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function break_abstraction
+--- Entering scope
+Adding object u
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/Array.txt
===================================================================
--- src/Tests/Expect-s/Array.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Array.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,38 @@
+Adding object a1
+Adding object a2
+Adding object a4
+Adding object m1
+Adding object m2
+Adding object m4
+Adding function fred
+--- Entering scope
+--- Entering scope
+Adding object a1
+Adding object a2
+Adding object a4
+Adding object T
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function mary
+--- Entering scope
+Adding object T
+Adding object p1
+Adding object p2
+Adding object p3
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function tom
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function jane
+--- Entering scope
+Adding object T
+Adding object p1
+Adding object p2
+Adding object p3
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/AsmName.txt
===================================================================
--- src/Tests/Expect-s/AsmName.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/AsmName.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,9 @@
+Adding object x
+Adding function fred
+--- Entering scope
+Adding object x
+--- Entering scope
+Adding object y
+Adding object z
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/Attributes.txt
===================================================================
--- src/Tests/Expect-s/Attributes.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Attributes.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,1 @@
+Error at line 58 reading token "*"
Index: src/Tests/Expect-s/Cast.txt
===================================================================
--- src/Tests/Expect-s/Cast.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Cast.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,9 @@
+Adding object f
+Adding function f
+--- Entering scope
+--- Entering scope
+Adding object f
+Adding object f
+Adding object f
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/CastError.txt
===================================================================
--- src/Tests/Expect-s/CastError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/CastError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,8 @@
+Adding object f
+Adding function f
+--- Entering scope
+--- Entering scope
+Adding object f
+Adding object f
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/CharStringConstants.txt
===================================================================
--- src/Tests/Expect-s/CharStringConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/CharStringConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,5 @@
+Adding function main
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/CommentMisc.txt
===================================================================
--- src/Tests/Expect-s/CommentMisc.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/CommentMisc.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,10 @@
+Adding object i
+Adding object i
+Adding object i
+Adding object i
+Adding function main
+--- Entering scope
+--- Entering scope
+Adding object x
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/Constant0-1.txt
===================================================================
--- src/Tests/Expect-s/Constant0-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Constant0-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,107 @@
+Adding object 0
+Adding object 0
+Adding object 0
+Adding object 1
+Adding object 1
+Adding object 1
+Adding object 0
+Adding object 1
+Adding object 0
+Adding object 1
+Adding object 0
+Adding object 1
+Adding object 0
+Adding object 1
+Adding object 0
+Adding object 1
+Adding fwd decl for struct __anonymous0
+--- Entering scope
+Adding object i
+--- Leaving scope containing
+Adding struct __anonymous0
+--- Entering scope
+--- Leaving scope containing
+Adding object 0
+Adding fwd decl for struct __anonymous1
+--- Entering scope
+Adding object i
+--- Leaving scope containing
+Adding struct __anonymous1
+--- Entering scope
+--- Leaving scope containing
+Adding object 1
+Adding fwd decl for struct __anonymous2
+--- Entering scope
+Adding object i
+--- Leaving scope containing
+Adding struct __anonymous2
+--- Entering scope
+--- Leaving scope containing
+Adding object 1
+Adding object 0
+Adding object 1
+Adding object 0
+Adding object 1
+Adding object 0
+Adding object 1
+Adding object 0
+Adding object 1
+Adding object 0
+Adding object 1
+Adding object 0
+Adding object 1
+Adding object 0
+Adding object 1
+Adding fwd decl for struct __anonymous3
+--- Entering scope
+Adding object i
+--- Leaving scope containing
+Adding struct __anonymous3
+--- Entering scope
+--- Leaving scope containing
+Adding object 0
+Adding object x
+Adding object 0
+Adding object x
+Adding object 0
+Adding object x
+Adding object 0
+Adding fwd decl for struct __anonymous4
+--- Entering scope
+Adding object i
+--- Leaving scope containing
+Adding struct __anonymous4
+--- Entering scope
+--- Leaving scope containing
+Adding object 0
+Adding fwd decl for struct __anonymous5
+--- Entering scope
+Adding object i
+--- Leaving scope containing
+Adding struct __anonymous5
+--- Entering scope
+--- Leaving scope containing
+Adding object 0
+Adding fwd decl for struct __anonymous6
+--- Entering scope
+Adding object i
+--- Leaving scope containing
+Adding struct __anonymous6
+--- Entering scope
+--- Leaving scope containing
+Adding object 0
+Adding object x
+Adding object 0
+Adding object x
+Adding object 0
+Adding object x
+Adding object 0
+Adding function main
+--- Entering scope
+--- Entering scope
+Adding object 1
+Adding object 0
+Adding object x
+Adding object 0
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/Context.txt
===================================================================
--- src/Tests/Expect-s/Context.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Context.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,45 @@
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function q
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+Adding context has_q
+Adding function f
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type z
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+--- Entering scope
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+--- Entering scope
+--- Leaving scope containing
+Adding type U
+Adding function r
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+U
+Adding context has_r
+--- Entering scope
+--- Leaving scope containing
+Adding type x
+--- Entering scope
+--- Leaving scope containing
+Adding type y
+--- Leaving scope containing
+x
+y
+has_r
+--- Leaving scope containing
+z
Index: src/Tests/Expect-s/DeclarationErrors.txt
===================================================================
--- src/Tests/Expect-s/DeclarationErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/DeclarationErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,14 @@
+Error: invalid combination of storage classes in declaration of x9: static static volatile const short int 
+
+Error: invalid combination of storage classes in declaration of x18: static static const volatile instance of struct __anonymous0
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x19: static static const volatile volatile instance of struct __anonymous1
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x28: static static volatile const instance of type Int
+
Index: src/Tests/Expect-s/DeclarationSpecifier.txt
===================================================================
--- src/Tests/Expect-s/DeclarationSpecifier.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/DeclarationSpecifier.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,14 @@
+Error: invalid combination of storage classes in declaration of x9: static static volatile const short int 
+
+Error: invalid combination of storage classes in declaration of x18: static static const volatile instance of struct __anonymous8
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x19: static static const volatile volatile instance of struct __anonymous9
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x28: static static volatile const instance of type Int
+
Index: src/Tests/Expect-s/Enum.txt
===================================================================
--- src/Tests/Expect-s/Enum.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Enum.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,20 @@
+Adding enum Colors
+Adding object Red
+Adding object Yellow
+Adding object Pink
+Adding object Blue
+Adding object Purple
+Adding object Orange
+Adding object Green
+Adding function f
+--- Entering scope
+--- Entering scope
+Adding enum Fruits
+Adding object Apple
+Adding object Banana
+Adding object Pear
+Adding object Mango
+Adding object fruit
+--- Leaving scope containing
+Fruits
+--- Leaving scope containing
Index: src/Tests/Expect-s/Exception.txt
===================================================================
--- src/Tests/Expect-s/Exception.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Exception.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,55 @@
+Adding function fred
+--- Entering scope
+--- Entering scope
+Adding object x
+--- Entering scope
+--- Leaving scope containing
+Adding object i
+--- Entering scope
+--- Leaving scope containing
+--- Entering scope
+--- Leaving scope containing
+--- Entering scope
+--- Leaving scope containing
+Adding object x
+--- Entering scope
+--- Leaving scope containing
+Adding fwd decl for struct __anonymous0
+--- Entering scope
+Adding object i
+--- Leaving scope containing
+Adding struct __anonymous0
+--- Entering scope
+--- Leaving scope containing
+Adding struct __anonymous1 from implicit forward declaration
+--- Entering scope
+--- Leaving scope containing
+Adding object x
+--- Entering scope
+--- Leaving scope containing
+Adding struct __anonymous2 from implicit forward declaration
+--- Entering scope
+--- Leaving scope containing
+Adding object x
+--- Entering scope
+--- Leaving scope containing
+Adding struct __anonymous3 from implicit forward declaration
+--- Entering scope
+--- Leaving scope containing
+--- Entering scope
+--- Leaving scope containing
+Adding struct __anonymous4 from implicit forward declaration
+--- Entering scope
+--- Leaving scope containing
+Adding object x
+--- Entering scope
+--- Leaving scope containing
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+__anonymous0
+__anonymous1
+__anonymous2
+__anonymous3
+__anonymous4
+--- Leaving scope containing
Index: src/Tests/Expect-s/Expression.txt
===================================================================
--- src/Tests/Expect-s/Expression.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Expression.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,15 @@
+Adding function fred
+--- Entering scope
+--- Entering scope
+Adding fwd decl for struct s
+--- Entering scope
+Adding object i
+--- Leaving scope containing
+Adding struct s
+--- Entering scope
+--- Leaving scope containing
+Adding object p
+Adding object i
+--- Leaving scope containing
+s
+--- Leaving scope containing
Index: src/Tests/Expect-s/Forall.txt
===================================================================
--- src/Tests/Expect-s/Forall.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Forall.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,235 @@
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding function g1
+--- Entering scope
+--- Entering scope
+Adding function f
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+Adding function f
+--- Entering scope
+--- Leaving scope containing
+Adding function h
+--- Entering scope
+Adding object p
+--- Leaving scope containing
+Adding object x
+Adding object y
+Adding object z
+Adding object w
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function g2
+--- Entering scope
+--- Entering scope
+Adding function f
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+Adding function f
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+--- Entering scope
+--- Leaving scope containing
+Adding type U
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+U
+Adding object x
+Adding object y
+Adding object z
+Adding object w
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function swap
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding object left
+Adding object right
+--- Entering scope
+Adding object temp
+--- Leaving scope containing
+--- Leaving scope containing
+T
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding object 0
+Adding function ?+?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?++
+--- Entering scope
+--- Leaving scope containing
+Adding function ?+=?
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+Adding context sumable
+--- Entering scope
+--- Leaving scope containing
+Adding type T1
+Adding object 0
+Adding function ?+?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?++
+--- Entering scope
+--- Leaving scope containing
+Adding function ?+=?
+--- Entering scope
+--- Leaving scope containing
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type P1
+--- Entering scope
+--- Leaving scope containing
+Adding type P2
+--- Leaving scope containing
+P1
+P2
+Adding type T2
+--- Entering scope
+--- Leaving scope containing
+Adding type T3
+Adding fwd decl for struct __anonymous0
+--- Entering scope
+Adding object i
+Adding object j
+--- Leaving scope containing
+Adding struct __anonymous0
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type P1
+--- Entering scope
+--- Leaving scope containing
+Adding type P2
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+P1
+P2
+Adding type T2
+Adding object w1
+Adding object g2
+--- Entering scope
+--- Leaving scope containing
+Adding type w3
+Adding object g3
+Adding function sum
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding object n
+Adding object a
+--- Entering scope
+Adding object total
+Adding object i
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+--- Leaving scope containing
+T
+Adding function twice
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding object 0
+Adding function ?+?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?++
+--- Entering scope
+--- Leaving scope containing
+Adding function ?+=?
+--- Entering scope
+--- Leaving scope containing
+Adding object t
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+Adding function min
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding object 0
+Adding function ?!=?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?<?
+--- Entering scope
+--- Leaving scope containing
+Adding object t1
+Adding object t2
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+Adding function main
+--- Entering scope
+--- Entering scope
+Adding object x
+Adding object y
+Adding object a
+Adding object f
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/Function.txt
===================================================================
--- src/Tests/Expect-s/Function.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Function.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,29 @@
+Adding object a
+Adding object a
+Adding function f
+--- Entering scope
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+--- Leaving scope containing
+Adding function g
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding object p
+Adding object p
+Adding object p
+Adding object p
+Adding object q
+Adding object q
+Adding object q
+Adding object q
+Adding function r
+--- Entering scope
+--- Leaving scope containing
+Adding function s
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/Functions.txt
===================================================================
--- src/Tests/Expect-s/Functions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Functions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,374 @@
+Adding function h
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object g
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f1
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f2
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f3
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f4
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f5
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f6
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f7
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f8
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f9
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f10
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f11
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f12
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function fII1
+--- Entering scope
+Adding object i
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function fII2
+--- Entering scope
+Adding object i
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function fII3
+--- Entering scope
+Adding object i
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function fII4
+--- Entering scope
+Adding object i
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function fII5
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function fII6
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function fII7
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function fII8
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function fII9
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function fO1
+--- Entering scope
+Adding object i
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function fO2
+--- Entering scope
+Adding object i
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function fO3
+--- Entering scope
+Adding object i
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function fO4
+--- Entering scope
+Adding object i
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function fO5
+--- Entering scope
+Adding object i
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+Adding object x
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+Adding object x
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+Adding object x
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+Adding object x
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+Adding object x
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+Adding object x
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+Adding object y
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+Adding object y
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+Adding object y
+Adding object x
+Adding object y
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+Adding object y
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+Adding object y
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object x
+Adding object y
+Adding object x
+Adding object y
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f11
+--- Entering scope
+--- Leaving scope containing
+Adding function f12
+--- Entering scope
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object p
+--- Entering scope
+Adding object p
+Adding object p
+Adding object p
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f1
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f2
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f3
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f4
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f5
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object f
+Adding object t
+--- Entering scope
+Adding object T
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/GccExtensions.txt
===================================================================
--- src/Tests/Expect-s/GccExtensions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/GccExtensions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,70 @@
+Adding function fred
+--- Entering scope
+--- Entering scope
+Adding object c1
+Adding object c2
+Adding object i1
+Adding object i2
+Adding object i3
+Adding object ex
+Adding function f1
+--- Entering scope
+--- Leaving scope containing
+Adding function f2
+--- Entering scope
+--- Leaving scope containing
+Adding object s1
+Adding object s2
+Adding object t1
+Adding object t2
+Adding object v1
+Adding object v2
+Adding object a1
+Adding object a2
+Adding object a3
+Adding object a4
+Adding object a5
+Adding object a6
+Adding object a7
+Adding object p1
+Adding object p2
+Adding fwd decl for struct s1
+--- Entering scope
+--- Leaving scope containing
+Adding struct s1
+Adding fwd decl for struct s2
+--- Entering scope
+Adding object i
+--- Leaving scope containing
+Adding struct s2
+Adding fwd decl for struct s3
+--- Entering scope
+Adding object i
+--- Leaving scope containing
+Adding struct s3
+--- Entering scope
+--- Leaving scope containing
+Adding object x1
+--- Entering scope
+--- Leaving scope containing
+Adding object y1
+Adding fwd decl for struct s4
+--- Entering scope
+Adding object i
+--- Leaving scope containing
+Adding struct s4
+--- Entering scope
+--- Leaving scope containing
+Adding object x2
+--- Entering scope
+--- Leaving scope containing
+Adding object y2
+Adding object m1
+Adding object m2
+Adding object m3
+--- Leaving scope containing
+s1
+s2
+s3
+s4
+--- Leaving scope containing
Index: src/Tests/Expect-s/IdentFuncDeclarator.txt
===================================================================
--- src/Tests/Expect-s/IdentFuncDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/IdentFuncDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,106 @@
+Adding function main
+--- Entering scope
+--- Entering scope
+Adding object f1
+Adding object f2
+Adding object f3
+Adding object f4
+Adding object f5
+Adding object f6
+Adding object f7
+Adding object f8
+Adding object f9
+Adding object f10
+Adding object f11
+Adding object f12
+Adding object f13
+Adding object f14
+Adding object f15
+Adding object f16
+Adding object f17
+Adding object f18
+Adding object f19
+Adding object f20
+Adding object f21
+Adding object f22
+Adding object f23
+Adding object f24
+Adding object f25
+Adding object f26
+Adding object f27
+Adding object f28
+Adding object f29
+Adding object f30
+Adding object f31
+Adding object f32
+Adding object f33
+Adding object f34
+Adding object f35
+Adding object f36
+Adding object f37
+Adding object f38
+Adding object f39
+Adding object f40
+Adding object f41
+Adding object f42
+Adding object f43
+Adding object f44
+Adding object f45
+Adding object f46
+Adding object f47
+Adding object f48
+Adding object f49
+Adding object f50
+Adding object f51
+Adding object f52
+Adding object f53
+Adding object f54
+Adding object f55
+Adding object f56
+Adding object f57
+Adding object f58
+Adding object f59
+Adding object f60
+Adding object f61
+Adding object f62
+Adding object f63
+Adding object f64
+Adding function f65
+--- Entering scope
+--- Leaving scope containing
+Adding function f66
+--- Entering scope
+--- Leaving scope containing
+Adding function f67
+--- Entering scope
+--- Leaving scope containing
+Adding function f68
+--- Entering scope
+--- Leaving scope containing
+Adding function f69
+--- Entering scope
+--- Leaving scope containing
+Adding function f70
+--- Entering scope
+--- Leaving scope containing
+Adding function f71
+--- Entering scope
+--- Leaving scope containing
+Adding function f72
+--- Entering scope
+--- Leaving scope containing
+Adding function f73
+--- Entering scope
+--- Leaving scope containing
+Adding function f74
+--- Entering scope
+--- Leaving scope containing
+Adding object f75
+Adding object f76
+Adding object f77
+Adding object f78
+Adding object f79
+Adding object f80
+Adding object f81
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/IdentFuncParamDeclarator.txt
===================================================================
--- src/Tests/Expect-s/IdentFuncParamDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/IdentFuncParamDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,122 @@
+Adding function fred
+--- Entering scope
+Adding object f1
+Adding object f2
+Adding object f3
+Adding object f4
+Adding object f5
+Adding object f6
+Adding object f7
+Adding object f8
+Adding object f9
+Adding object f10
+Adding object f11
+Adding object f12
+Adding object f13
+Adding object f14
+Adding object f15
+Adding object f16
+Adding object f17
+Adding object f18
+Adding object f19
+Adding object f20
+Adding object f21
+Adding object f22
+Adding object f23
+Adding object f24
+Adding object f25
+Adding object f26
+Adding object f27
+Adding object f28
+Adding object f29
+Adding object f30
+Adding object f31
+Adding object f32
+Adding object f33
+Adding object f34
+Adding object f35
+Adding object f36
+Adding object f37
+Adding object f38
+Adding object f39
+Adding object f40
+Adding object f41
+Adding object f42
+Adding object f43
+Adding object f44
+Adding object f45
+Adding object f46
+Adding object f47
+Adding object f48
+Adding object f49
+Adding object f50
+Adding object f51
+Adding object f52
+Adding object f53
+Adding object f54
+Adding object f55
+Adding object f56
+Adding object f57
+Adding object f58
+Adding object f59
+Adding object f60
+Adding object f61
+Adding object f62
+Adding object f63
+Adding object f64
+Adding object f65
+Adding object f66
+Adding object f67
+Adding object f68
+Adding object f69
+Adding object f70
+Adding object f71
+Adding object f72
+Adding object f73
+Adding object f74
+Adding object f75
+Adding object f76
+Adding object f77
+Adding object f78
+Adding object f79
+Adding object f80
+Adding object f81
+Adding object f82
+Adding object f83
+Adding object f84
+Adding object f85
+Adding object f86
+Adding object f87
+Adding object f88
+Adding object f89
+Adding object f90
+Adding object f91
+Adding object f92
+Adding object f93
+Adding object f94
+Adding object f95
+Adding object f96
+Adding object f97
+Adding object f98
+Adding object f99
+Adding object f100
+Adding object f101
+Adding object f102
+Adding object f103
+Adding object f104
+Adding object f105
+Adding object f106
+Adding object f107
+Adding object f108
+Adding object f109
+Adding object f110
+Adding object f111
+Adding object f112
+Adding object f113
+Adding object f114
+Adding object f115
+Adding object f116
+Adding object f117
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/InferParam.txt
===================================================================
--- src/Tests/Expect-s/InferParam.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/InferParam.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,87 @@
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding function g
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+--- Entering scope
+--- Leaving scope containing
+Adding type U
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+U
+Adding function f
+--- Entering scope
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+--- Leaving scope containing
+Adding function i
+--- Entering scope
+--- Leaving scope containing
+Adding function h
+--- Entering scope
+--- Entering scope
+Adding object a
+--- Leaving scope containing
+--- Leaving scope containing
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+--- Entering scope
+--- Leaving scope containing
+Adding type U
+Adding function f
+--- Entering scope
+--- Leaving scope containing
+Adding function j
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+U
+Adding context has_f_and_j
+Adding function j
+--- Entering scope
+--- Leaving scope containing
+Adding function k
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+--- Entering scope
+--- Leaving scope containing
+Adding type U
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+U
+Adding function l
+--- Entering scope
+--- Entering scope
+Adding object b
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/Initialization.txt
===================================================================
--- src/Tests/Expect-s/Initialization.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Initialization.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,86 @@
+Adding object x11
+Adding object x12
+Adding object x21
+Adding object x22
+Adding object y1
+Adding object y2
+Adding fwd decl for struct __anonymous0
+--- Entering scope
+Adding object w
+--- Leaving scope containing
+Adding struct __anonymous0
+--- Entering scope
+--- Leaving scope containing
+Adding object a
+Adding fwd decl for struct __anonymous1
+--- Entering scope
+Adding object a
+Adding object b
+--- Leaving scope containing
+Adding struct __anonymous1
+--- Entering scope
+--- Leaving scope containing
+Adding object w
+Adding fwd decl for struct __anonymous2
+--- Entering scope
+Adding object g1
+Adding object g2
+Adding object g3
+--- Leaving scope containing
+Adding struct __anonymous2
+Adding fwd decl for struct __anonymous3
+--- Entering scope
+Adding object f1
+Adding object f2
+Adding object f3
+--- Entering scope
+--- Leaving scope containing
+Adding object f4
+--- Leaving scope containing
+Adding struct __anonymous3
+--- Entering scope
+--- Leaving scope containing
+Adding object v7
+Adding fwd decl for struct __anonymous4
+--- Entering scope
+Adding object y1
+Adding object y2
+Adding object y3
+--- Leaving scope containing
+Adding struct __anonymous4
+Adding fwd decl for struct point
+--- Entering scope
+Adding object x
+Adding object z
+--- Entering scope
+--- Leaving scope containing
+Adding object y
+Adding object w
+--- Leaving scope containing
+Adding struct point
+Adding fwd decl for struct quintet
+--- Entering scope
+Adding object v
+Adding object w
+Adding object x
+Adding object y
+Adding object z
+--- Leaving scope containing
+Adding struct quintet
+Adding function main
+--- Entering scope
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding object p1
+--- Entering scope
+--- Leaving scope containing
+Adding object p2
+--- Entering scope
+--- Leaving scope containing
+Adding object p3
+--- Entering scope
+--- Leaving scope containing
+Adding object p4
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/Initialization2.txt
===================================================================
--- src/Tests/Expect-s/Initialization2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Initialization2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,114 @@
+Adding object a
+Adding fwd decl for struct __anonymous0
+--- Entering scope
+Adding object x
+Adding object y
+--- Leaving scope containing
+Adding struct __anonymous0
+--- Entering scope
+--- Leaving scope containing
+Adding object z
+Adding fwd decl for struct __anonymous1
+--- Entering scope
+Adding object x
+Adding object y
+--- Leaving scope containing
+Adding struct __anonymous1
+--- Entering scope
+--- Leaving scope containing
+Adding object z1
+Adding fwd decl for struct __anonymous2
+--- Entering scope
+Adding object x
+Adding object y
+--- Leaving scope containing
+Adding struct __anonymous2
+--- Entering scope
+--- Leaving scope containing
+Adding object z2
+Adding fwd decl for struct __anonymous3
+--- Entering scope
+Adding object y1
+Adding object y2
+--- Leaving scope containing
+Adding struct __anonymous3
+Adding fwd decl for struct __anonymous4
+--- Entering scope
+Adding object x
+--- Entering scope
+--- Leaving scope containing
+Adding object y
+--- Leaving scope containing
+Adding struct __anonymous4
+--- Entering scope
+--- Leaving scope containing
+Adding object z3
+Adding fwd decl for struct __anonymous5
+--- Entering scope
+Adding object y1
+Adding object y2
+--- Leaving scope containing
+Adding struct __anonymous5
+Adding fwd decl for struct __anonymous6
+--- Entering scope
+Adding object x
+--- Entering scope
+--- Leaving scope containing
+Adding object y
+--- Leaving scope containing
+Adding struct __anonymous6
+--- Entering scope
+--- Leaving scope containing
+Adding object z3
+Adding fwd decl for struct __anonymous7
+--- Entering scope
+Adding object y1
+Adding object y2
+--- Leaving scope containing
+Adding struct __anonymous7
+Adding fwd decl for struct __anonymous8
+--- Entering scope
+Adding object x
+--- Entering scope
+--- Leaving scope containing
+Adding object y
+--- Leaving scope containing
+Adding struct __anonymous8
+--- Entering scope
+--- Leaving scope containing
+Adding object z3
+Adding fwd decl for struct __anonymous9
+--- Entering scope
+Adding object y1
+Adding object y2
+--- Leaving scope containing
+Adding struct __anonymous9
+Adding fwd decl for struct __anonymous10
+--- Entering scope
+Adding object x
+--- Entering scope
+--- Leaving scope containing
+Adding object y
+--- Leaving scope containing
+Adding struct __anonymous10
+--- Entering scope
+--- Leaving scope containing
+Adding object z3
+Adding fwd decl for struct t
+--- Entering scope
+Adding object a
+Adding object b
+--- Leaving scope containing
+Adding struct t
+--- Entering scope
+--- Leaving scope containing
+Adding object x
+Adding fwd decl for struct __anonymous11
+--- Entering scope
+Adding object x
+Adding object y
+--- Leaving scope containing
+Adding struct __anonymous11
+--- Entering scope
+--- Leaving scope containing
+Adding object z6
Index: src/Tests/Expect-s/LabelledExit.txt
===================================================================
--- src/Tests/Expect-s/LabelledExit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/LabelledExit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,70 @@
+Adding function main
+--- Entering scope
+--- Entering scope
+Adding object i
+Adding object x
+Adding object y
+--- Entering scope
+--- Entering scope
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+--- Leaving scope containing
+--- Leaving scope containing
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+--- Entering scope
+--- Entering scope
+--- Entering scope
+--- Entering scope
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+--- Leaving scope containing
+--- Leaving scope containing
+--- Leaving scope containing
+--- Leaving scope containing
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+--- Entering scope
+--- Entering scope
+--- Entering scope
+--- Entering scope
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+--- Leaving scope containing
+--- Leaving scope containing
+--- Leaving scope containing
+--- Leaving scope containing
+--- Entering scope
+--- Leaving scope containing
+--- Entering scope
+Adding object i
+--- Leaving scope containing
+--- Entering scope
+--- Leaving scope containing
+--- Entering scope
+--- Leaving scope containing
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+--- Entering scope
+Adding object array
+--- Leaving scope containing
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/Members.txt
===================================================================
--- src/Tests/Expect-s/Members.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Members.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,103 @@
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?=?
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type DT
+--- Leaving scope containing
+DT
+Adding function *?
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+Adding function __builtin_memcpy
+--- Entering scope
+--- Leaving scope containing
+Adding function a
+--- Entering scope
+--- Leaving scope containing
+Adding function b
+--- Entering scope
+--- Leaving scope containing
+Adding function c
+--- Entering scope
+--- Leaving scope containing
+Adding function d
+--- Entering scope
+--- Leaving scope containing
+Adding fwd decl for struct a_struct
+--- Entering scope
+Adding object a
+Adding object a
+Adding object a
+--- Leaving scope containing
+Adding struct a_struct
+Adding fwd decl for union b_struct
+--- Entering scope
+Adding object a
+Adding object a
+Adding object a
+--- Leaving scope containing
+Adding union b_struct
+Adding function f
+--- Entering scope
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding object the_struct
+--- Entering scope
+--- Leaving scope containing
+Adding object the_struct
+--- Leaving scope containing
+--- Leaving scope containing
+Adding fwd decl for struct c_struct
+--- Entering scope
+--- Leaving scope containing
+Adding struct c_struct
+Adding fwd decl for union d_struct
+--- Entering scope
+--- Leaving scope containing
+Adding union d_struct
+Adding function g
+--- Entering scope
+--- Entering scope
+Adding object x
+--- Entering scope
+--- Leaving scope containing
+Adding object x
+--- Entering scope
+--- Leaving scope containing
+Adding object x
+--- Leaving scope containing
+--- Leaving scope containing
+Adding fwd decl for struct forward
+--- Entering scope
+--- Leaving scope containing
+Adding struct forward
+--- Entering scope
+--- Leaving scope containing
+Adding object q
+Adding fwd decl for struct forward
+--- Entering scope
+Adding object y
+--- Leaving scope containing
+Adding struct forward
+Adding function h
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/Misc.txt
===================================================================
--- src/Tests/Expect-s/Misc.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Misc.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,14 @@
+Adding object a
+Adding object b
+Adding object b
+Adding function g
+--- Entering scope
+--- Leaving scope containing
+Adding function g
+--- Entering scope
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/MiscError.txt
===================================================================
--- src/Tests/Expect-s/MiscError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/MiscError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,11 @@
+Adding object a
+Adding object b
+Adding object b
+Adding function g
+--- Entering scope
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/NamedParmArg.txt
===================================================================
--- src/Tests/Expect-s/NamedParmArg.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/NamedParmArg.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,19 @@
+Adding function f1
+--- Entering scope
+Adding object i
+Adding object j
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function f2
+--- Entering scope
+Adding object i
+Adding object j
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function main
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/NumericConstants.txt
===================================================================
--- src/Tests/Expect-s/NumericConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/NumericConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,5 @@
+Adding function main
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/OccursError.txt
===================================================================
--- src/Tests/Expect-s/OccursError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/OccursError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,25 @@
+Adding function f
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+Adding function g
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type U
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+U
+Adding function test
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/Operators.txt
===================================================================
--- src/Tests/Expect-s/Operators.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Operators.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,39 @@
+Adding function ?*?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?()
+--- Entering scope
+Adding object number1
+Adding object number2
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function ?+?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding fwd decl for struct accumulator
+--- Entering scope
+Adding object total
+--- Leaving scope containing
+Adding struct accumulator
+Adding function ?()
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding object a
+Adding object number1
+Adding object number2
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+--- Entering scope
+Adding object a
+Adding object b
+--- Entering scope
+--- Leaving scope containing
+Adding object ?+?
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/Quad.txt
===================================================================
--- src/Tests/Expect-s/Quad.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Quad.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,43 @@
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?*?
+--- Entering scope
+--- Leaving scope containing
+Adding function square
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?*?
+--- Entering scope
+--- Leaving scope containing
+Adding object t
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+Adding function quad
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type U
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding function square
+--- Entering scope
+--- Leaving scope containing
+Adding object u
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+U
+Adding function f
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/Rank2.txt
===================================================================
--- src/Tests/Expect-s/Rank2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Rank2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,61 @@
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?=?
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type DT
+--- Leaving scope containing
+DT
+Adding function a
+--- Entering scope
+--- Entering scope
+Adding function f
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+Adding function g
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type U
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding object p
+--- Leaving scope containing
+U
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function g
+--- Entering scope
+--- Entering scope
+Adding function h
+--- Entering scope
+Adding object null
+--- Leaving scope containing
+Adding function id
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding object 0
+Adding object 0
+--- Leaving scope containing
+T
+--- Leaving scope containing
Index: src/Tests/Expect-s/Scope.txt
===================================================================
--- src/Tests/Expect-s/Scope.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Scope.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,93 @@
+Adding object x
+Adding object z
+Adding fwd decl for struct __anonymous0
+--- Entering scope
+Adding object a
+Adding object b
+--- Leaving scope containing
+Adding struct __anonymous0
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding type u
+Adding function f
+--- Entering scope
+Adding object y
+--- Leaving scope containing
+Adding object q
+Adding function w
+--- Entering scope
+Adding object y
+Adding object v
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type x
+Adding function t
+--- Entering scope
+--- Leaving scope containing
+Adding object u
+Adding object z
+--- Leaving scope containing
+x
+--- Leaving scope containing
+Adding object p
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type z
+Adding function u
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+z
+Adding context has_u
+Adding function q
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type t
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding object the_t
+--- Entering scope
+Adding object y
+--- Leaving scope containing
+--- Leaving scope containing
+t
+Adding function f
+--- Entering scope
+Adding object p
+--- Entering scope
+Adding object y
+--- Entering scope
+Adding object y
+--- Entering scope
+Adding object x
+Adding object z
+--- Leaving scope containing
+Adding object x
+--- Leaving scope containing
+Adding object q
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function g
+--- Entering scope
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding object x
+--- Entering scope
+Adding object y
+--- Leaving scope containing
+Adding object z
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function q
+--- Entering scope
+Adding object i
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/ScopeErrors.txt
===================================================================
--- src/Tests/Expect-s/ScopeErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/ScopeErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,36 @@
+Adding object thisIsAnError
+Adding object thisIsAnError
+Adding object thisIsNotAnError
+Adding object thisIsNotAnError
+Adding function thisIsAlsoNotAnError
+--- Entering scope
+--- Entering scope
+Adding object thisIsNotAnError
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function thisIsAlsoNotAnError
+--- Entering scope
+Adding object x
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function thisIsStillNotAnError
+--- Entering scope
+--- Leaving scope containing
+Adding function thisIsStillNotAnError
+--- Entering scope
+--- Leaving scope containing
+Adding function butThisIsAnError
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function butThisIsAnError
+Error: duplicate function definition for butThisIsAnError: function
+  with parameters
+    double 
+  returning 
+    double 
+  with body 
+    CompoundStmt
+
Index: src/Tests/Expect-s/ShortCircuit.txt
===================================================================
--- src/Tests/Expect-s/ShortCircuit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/ShortCircuit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,21 @@
+Adding function ?!=?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?!=?
+--- Entering scope
+--- Leaving scope containing
+Adding object 0
+Adding function g
+--- Entering scope
+--- Leaving scope containing
+Adding function g
+--- Entering scope
+--- Leaving scope containing
+Adding function f
+--- Entering scope
+Adding object a
+--- Entering scope
+Adding object b
+Adding object c
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/Statement.txt
===================================================================
--- src/Tests/Expect-s/Statement.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Statement.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,31 @@
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?!=?
+--- Entering scope
+--- Leaving scope containing
+Adding object 0
+Adding function f
+--- Entering scope
+--- Entering scope
+Adding object a
+Adding fwd decl for struct __anonymous0
+--- Entering scope
+Adding object b
+--- Leaving scope containing
+Adding struct __anonymous0
+--- Entering scope
+--- Leaving scope containing
+Adding object a
+--- Entering scope
+--- Entering scope
+Adding object b
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+--- Leaving scope containing
+--- Leaving scope containing
+--- Leaving scope containing
+__anonymous0
+--- Leaving scope containing
Index: src/Tests/Expect-s/StructMember.txt
===================================================================
--- src/Tests/Expect-s/StructMember.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/StructMember.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,34 @@
+Adding fwd decl for struct S
+--- Entering scope
+Adding object m1
+Adding object m2
+Adding object m3
+Adding object m4
+Adding object m5
+Adding object m6
+Adding object m7
+Adding object m8
+Adding object m9
+Adding object m10
+Adding object m11
+Adding object T
+Adding object T
+Adding object m12
+Adding object m13
+Adding object m14
+--- Leaving scope containing
+Adding struct S
+--- Entering scope
+--- Leaving scope containing
+Adding object s
+Adding fwd decl for union U
+--- Entering scope
+Adding object m1
+Adding object m2
+Adding object m3
+Adding object m4
+--- Leaving scope containing
+Adding union U
+--- Entering scope
+--- Leaving scope containing
+Adding object u
Index: src/Tests/Expect-s/Subrange.txt
===================================================================
--- src/Tests/Expect-s/Subrange.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Subrange.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,78 @@
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function ?<?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?<=?
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+Adding context ordered
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type base_t
+--- Leaving scope containing
+base_t
+Adding type subrange
+Adding object day_of_month
+Adding object lcase
+Adding object foo
+Adding function lbound
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding object v
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+Adding function hbound
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding object v
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+Adding object lday
+Adding function ?=?
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding object target
+Adding object source
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+Adding function ?=?
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+Adding object target
+Adding object source
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
Index: src/Tests/Expect-s/Switch.txt
===================================================================
--- src/Tests/Expect-s/Switch.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Switch.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,6 @@
+Adding function fred
+--- Entering scope
+--- Entering scope
+Adding object i
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/Tuple.txt
===================================================================
--- src/Tests/Expect-s/Tuple.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Tuple.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,79 @@
+Adding function f
+--- Entering scope
+--- Leaving scope containing
+Adding function g
+--- Entering scope
+--- Leaving scope containing
+Adding function h
+--- Entering scope
+Adding object a
+Adding object b
+Adding object c
+Adding object d
+--- Leaving scope containing
+Adding fwd decl for struct inner
+--- Entering scope
+Adding object f2
+Adding object f3
+--- Leaving scope containing
+Adding struct inner
+Adding fwd decl for struct outer
+--- Entering scope
+Adding object f1
+--- Entering scope
+--- Leaving scope containing
+Adding object i
+Adding object f4
+--- Leaving scope containing
+Adding struct outer
+--- Entering scope
+--- Leaving scope containing
+Adding object s
+--- Entering scope
+--- Leaving scope containing
+Adding object sp
+Adding object t1
+Adding object t2
+Adding object t3
+Adding function printf
+--- Entering scope
+Adding object rc
+Adding object fmt
+--- Leaving scope containing
+Adding function printf
+--- Entering scope
+Adding object fmt
+--- Leaving scope containing
+Adding function f1
+--- Entering scope
+Adding object x
+Adding object y
+Adding object w
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function g1
+--- Entering scope
+Adding object r
+--- Entering scope
+Adding object x
+Adding object p
+Adding object y
+Adding object z
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function main
+--- Entering scope
+Adding object rc
+Adding object argc
+Adding object argv
+--- Entering scope
+Adding object a
+Adding object b
+Adding object c
+Adding object d
+--- Entering scope
+--- Leaving scope containing
+Adding object t
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/TypeGenerator.txt
===================================================================
--- src/Tests/Expect-s/TypeGenerator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/TypeGenerator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,109 @@
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding function ?+?
+--- Entering scope
+--- Leaving scope containing
+Adding function ?=?
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+Adding context addable
+Adding fwd decl for struct __anonymous0
+--- Entering scope
+Adding object data
+Adding object next
+--- Leaving scope containing
+Adding struct __anonymous0
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+Adding type List1
+Adding object li
+Adding function f
+--- Entering scope
+Adding object g
+--- Leaving scope containing
+Adding function h
+--- Entering scope
+Adding object p
+--- Leaving scope containing
+Adding fwd decl for struct S2
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding object i
+--- Leaving scope containing
+T
+Adding struct S2
+Adding struct S3 from implicit forward declaration
+--- Entering scope
+--- Leaving scope containing
+Adding object v1
+--- Entering scope
+--- Leaving scope containing
+Adding object p
+Adding fwd decl for struct S24
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding object i
+--- Leaving scope containing
+T
+Adding struct S24
+--- Entering scope
+--- Leaving scope containing
+Adding object v2
+Adding fwd decl for struct __anonymous1
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding object i
+--- Leaving scope containing
+T
+Adding struct __anonymous1
+--- Entering scope
+--- Leaving scope containing
+Adding object v2
+Adding fwd decl for struct node
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+Adding object data
+--- Entering scope
+--- Leaving scope containing
+Adding object next
+--- Leaving scope containing
+T
+Adding struct node
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type T
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+T
+Adding type List
+Adding object my_list
+--- Entering scope
+--- Leaving scope containing
+Adding type Complex
+Adding function main
+--- Entering scope
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/Typedef.txt
===================================================================
--- src/Tests/Expect-s/Typedef.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Typedef.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,34 @@
+Adding function f
+--- Entering scope
+--- Entering scope
+Adding function T
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+--- Leaving scope containing
+Adding fwd decl for struct __anonymous0
+--- Entering scope
+Adding object T
+--- Leaving scope containing
+Adding struct __anonymous0
+--- Entering scope
+--- Leaving scope containing
+Adding object fred
+Adding object b
+Adding function g
+--- Entering scope
+--- Entering scope
+Adding object a
+--- Leaving scope containing
+--- Leaving scope containing
+Adding object c
+Adding object p
+Adding object q
+Adding function main
+--- Entering scope
+--- Entering scope
+Adding object w
+Adding object x
+--- Leaving scope containing
+--- Leaving scope containing
+Adding object array
Index: src/Tests/Expect-s/TypedefDeclarator.txt
===================================================================
--- src/Tests/Expect-s/TypedefDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/TypedefDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,106 @@
+Adding function main
+--- Entering scope
+--- Entering scope
+Adding object f1
+Adding object f2
+Adding object f3
+Adding object f4
+Adding object f5
+Adding object f6
+Adding object f7
+Adding object f8
+Adding object f9
+Adding object f10
+Adding object f11
+Adding object f12
+Adding object f13
+Adding object f14
+Adding object f15
+Adding object f16
+Adding object f17
+Adding object f18
+Adding object f19
+Adding object f20
+Adding object f21
+Adding object f22
+Adding object f23
+Adding object f24
+Adding object f25
+Adding object f26
+Adding object f27
+Adding object f28
+Adding object f29
+Adding object f30
+Adding object f31
+Adding object f32
+Adding object f33
+Adding object f34
+Adding object f35
+Adding object f36
+Adding object f37
+Adding object f38
+Adding object f39
+Adding object f40
+Adding object f41
+Adding object f42
+Adding object f43
+Adding object f44
+Adding object f45
+Adding object f46
+Adding object f47
+Adding object f48
+Adding object f49
+Adding object f50
+Adding object f51
+Adding object f52
+Adding object f53
+Adding object f54
+Adding object f55
+Adding object f56
+Adding object f57
+Adding object f58
+Adding object f59
+Adding object f60
+Adding object f61
+Adding object f62
+Adding object f63
+Adding object f64
+Adding function f65
+--- Entering scope
+--- Leaving scope containing
+Adding function f66
+--- Entering scope
+--- Leaving scope containing
+Adding function f67
+--- Entering scope
+--- Leaving scope containing
+Adding function f68
+--- Entering scope
+--- Leaving scope containing
+Adding function f69
+--- Entering scope
+--- Leaving scope containing
+Adding function f70
+--- Entering scope
+--- Leaving scope containing
+Adding function f71
+--- Entering scope
+--- Leaving scope containing
+Adding function f72
+--- Entering scope
+--- Leaving scope containing
+Adding function f73
+--- Entering scope
+--- Leaving scope containing
+Adding function f74
+--- Entering scope
+--- Leaving scope containing
+Adding object f75
+Adding object f76
+Adding object f77
+Adding object f78
+Adding object f79
+Adding object f80
+Adding object f81
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/TypedefParamDeclarator.txt
===================================================================
--- src/Tests/Expect-s/TypedefParamDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/TypedefParamDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,80 @@
+Adding function fred
+--- Entering scope
+Adding object f1
+Adding object f3
+Adding object f4
+Adding object f5
+Adding object f6
+Adding object f11
+Adding object f12
+Adding object f13
+Adding object f14
+Adding object f15
+Adding object f16
+Adding object f19
+Adding object f20
+Adding object f21
+Adding object f22
+Adding object f23
+Adding object f24
+Adding object f25
+Adding object f26
+Adding object f35
+Adding object f36
+Adding object f37
+Adding object f38
+Adding object f39
+Adding object f40
+Adding object f41
+Adding object f42
+Adding object f43
+Adding object f44
+Adding object f49
+Adding object f50
+Adding object f51
+Adding object f52
+Adding object f53
+Adding object f54
+Adding object f55
+Adding object f56
+Adding object f57
+Adding object f58
+Adding object f59
+Adding object f60
+Adding object f61
+Adding object f62
+Adding object f63
+Adding object f64
+Adding object f65
+Adding object f67
+Adding object f68
+Adding object f69
+Adding object f70
+Adding object f75
+Adding object f76
+Adding object f77
+Adding object f78
+Adding object f79
+Adding object f80
+Adding object f81
+Adding object f82
+Adding object f83
+Adding object f84
+Adding object f85
+Adding object f90
+Adding object f91
+Adding object f92
+Adding object f93
+Adding object f94
+Adding object f100
+Adding object f101
+Adding object f102
+Adding object f103
+Adding object f108
+Adding object f109
+Adding object f110
+Adding object f111
+Adding object f112
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/Typeof.txt
===================================================================
--- src/Tests/Expect-s/Typeof.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/Typeof.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,15 @@
+Adding function main
+--- Entering scope
+--- Entering scope
+Adding object v1
+Adding object v2
+Adding object v3
+Adding object v4
+Adding object v5
+Adding object v6
+Adding object p
+Adding object v7
+Adding object p
+Adding object v8
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/VariableDeclarator.txt
===================================================================
--- src/Tests/Expect-s/VariableDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/VariableDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,152 @@
+Adding object f1
+Adding object f2
+Adding object f3
+Adding object f4
+Adding object f5
+Adding object f6
+Adding object f7
+Adding object f8
+Adding object f9
+Adding object f10
+Adding object f11
+Adding object f12
+Adding object f13
+Adding object f14
+Adding object f15
+Adding object f16
+Adding object f17
+Adding object f18
+Adding object f19
+Adding object f20
+Adding object f21
+Adding object f22
+Adding object f23
+Adding object f24
+Adding object f25
+Adding object f26
+Adding object f27
+Adding object f28
+Adding object f29
+Adding object f30
+Adding object f31
+Adding object f32
+Adding object f33
+Adding object f34
+Adding object f35
+Adding object f36
+Adding object f37
+Adding object f38
+Adding object f39
+Adding object f40
+Adding object f41
+Adding object f42
+Adding object f43
+Adding object f44
+Adding object f45
+Adding object f46
+Adding object f47
+Adding object f48
+Adding object f49
+Adding object f50
+Adding object f51
+Adding object f52
+Adding object f53
+Adding object f54
+Adding object f55
+Adding object f56
+Adding object f57
+Adding object f58
+Adding object f59
+Adding object f60
+Adding object f61
+Adding object f62
+Adding object f63
+Adding object f64
+Adding function f65
+--- Entering scope
+--- Leaving scope containing
+Adding function f66
+--- Entering scope
+--- Leaving scope containing
+Adding function f67
+--- Entering scope
+--- Leaving scope containing
+Adding function f68
+--- Entering scope
+--- Leaving scope containing
+Adding function f69
+--- Entering scope
+--- Leaving scope containing
+Adding function f70
+--- Entering scope
+--- Leaving scope containing
+Adding function f71
+--- Entering scope
+--- Leaving scope containing
+Adding function f72
+--- Entering scope
+--- Leaving scope containing
+Adding function f73
+--- Entering scope
+--- Leaving scope containing
+Adding function f74
+--- Entering scope
+--- Leaving scope containing
+Adding object f75
+Adding object f76
+Adding object f77
+Adding object f78
+Adding object f79
+Adding object f80
+Adding object f81
+Adding object cf3
+Adding object cf4
+Adding object cf5
+Adding object cf6
+Adding object cf15
+Adding object cf16
+Adding object cf19
+Adding object cf20
+Adding object cf21
+Adding object cf22
+Adding object cf23
+Adding object cf24
+Adding object cf25
+Adding object cf26
+Adding object cf35
+Adding object cf36
+Adding object cf37
+Adding object cf38
+Adding object cf39
+Adding object cf40
+Adding object cf41
+Adding object cf42
+Adding object cf43
+Adding object cf44
+Adding object cf49
+Adding object cf50
+Adding object cf51
+Adding object cf52
+Adding object cf53
+Adding object cf54
+Adding object cf55
+Adding object cf56
+Adding function cf65
+--- Entering scope
+--- Leaving scope containing
+Adding function cf66
+--- Entering scope
+--- Leaving scope containing
+Adding function cf67
+--- Entering scope
+--- Leaving scope containing
+Adding function cf68
+--- Entering scope
+--- Leaving scope containing
+Adding function cf69
+--- Entering scope
+--- Leaving scope containing
+Adding function cf70
+--- Entering scope
+--- Leaving scope containing
+Adding object v3
Index: src/Tests/Expect-s/gcc900407-1.txt
===================================================================
--- src/Tests/Expect-s/gcc900407-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/gcc900407-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,9 @@
+Adding function foo
+--- Entering scope
+Adding object a
+Adding object b
+Adding object p
+--- Entering scope
+Adding object c
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/gcc900516-1.txt
===================================================================
--- src/Tests/Expect-s/gcc900516-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/gcc900516-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,6 @@
+Adding function f
+--- Entering scope
+Adding object c
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/gcc920301-1.txt
===================================================================
--- src/Tests/Expect-s/gcc920301-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/gcc920301-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,12 @@
+Adding function f
+--- Entering scope
+--- Entering scope
+Adding object t
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function g
+--- Entering scope
+--- Entering scope
+Adding object p
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/gcc920409-1.txt
===================================================================
--- src/Tests/Expect-s/gcc920409-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/gcc920409-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,6 @@
+Adding function x
+--- Entering scope
+--- Entering scope
+Adding object y
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/gcc920409-2.txt
===================================================================
--- src/Tests/Expect-s/gcc920409-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/gcc920409-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,8 @@
+Adding function x
+--- Entering scope
+--- Entering scope
+Adding object x1
+Adding object x2
+Adding object v
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/gcc920410-2.txt
===================================================================
--- src/Tests/Expect-s/gcc920410-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/gcc920410-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,12 @@
+Adding function joe
+--- Entering scope
+--- Entering scope
+Adding object j
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/gcc920501-1.txt
===================================================================
--- src/Tests/Expect-s/gcc920501-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/gcc920501-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,6 @@
+Adding function a
+--- Entering scope
+--- Entering scope
+Adding object b
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-s/gcc920501-11.txt
===================================================================
--- src/Tests/Expect-s/gcc920501-11.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/gcc920501-11.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,2 @@
+cfa-cpp: Parser/ExpressionNode.cc:456: virtual Expression* CompositeExprNode::build() const: Assertion `args.size() == 1' failed.
+Aborted (core dumped)
Index: src/Tests/Expect-s/gcc920501-19.txt
===================================================================
--- src/Tests/Expect-s/gcc920501-19.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-s/gcc920501-19.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,6 @@
+Adding object x
+Adding function y
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+--- Leaving scope containing
Index: src/Tests/Expect-v/Abstype.txt
===================================================================
--- src/Tests/Expect-v/Abstype.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Abstype.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,138 @@
+T: type
+  with assertions
+    x: function
+        with parameters
+          instance of type T (not function type) 
+        returning 
+          instance of type T (not function type) 
+
+
+?=?: automatically generated function
+    with parameters
+      _dst: pointer to instance of type T (not function type) 
+      _src: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+
+y: function
+    with parameters
+      t: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+    with body 
+      CompoundStmt
+        Declaration of t_instance: instance of type T (not function type) 
+                  Return Statement, returning: Applying untyped: 
+    Name: x
+...to: 
+    Name: t
+
+
+
+*?: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      pointer to instance of type T (not function type) 
+    returning 
+      lvalue instance of type T (not function type) 
+
+?++: function
+    with parameters
+      pointer to signed int 
+    returning 
+      signed int 
+
+?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+U: type for pointer to signed int 
+?=?: automatically generated function
+    with parameters
+      _dst: pointer to instance of type U (not function type) 
+      _src: instance of type U (not function type) 
+    returning 
+      instance of type U (not function type) 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type U (not function type) 
+
+    to:
+      pointer to pointer to signed int 
+    Cast of:
+      Variable Expression: _src: instance of type U (not function type) 
+
+    to:
+      pointer to signed int 
+
+
+
+x: function
+    with parameters
+      u: instance of type U (not function type) 
+    returning 
+      instance of type U (not function type) 
+    with body 
+      CompoundStmt
+        Declaration of u_instance: instance of type U (not function type) with initializer 
+          Simple Initializer:             Name: u
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: u_instance
+                Name: u
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?++
+            ...to: 
+                Address of:
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Name: u
+
+                  Return Statement, returning: Name: u
+
+
+
+break_abstraction: function
+    with parameters
+      u: instance of type U (not function type) 
+    returning 
+      pointer to signed int 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Name: u
+
+
+
Index: src/Tests/Expect-v/Array.txt
===================================================================
--- src/Tests/Expect-v/Array.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Array.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,50 @@
+a1: open array of signed int 
+a2: variable length array of signed int 
+a4: array of double with dimension of constant expression 3.0 double 
+m1: open array of array of signed int with dimension of constant expression 3 signed int 
+m2: variable length array of variable length array of signed int 
+m4: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+fred: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of a1: open array of signed int 
+        Declaration of a2: variable length array of signed int 
+        Declaration of a4: array of signed int with dimension of constant expression 3 signed int 
+        Declaration of T: array of signed int with dimension of constant expression 3 signed int 
+
+mary: function
+    with parameters
+      T: pointer to array of constant expression 3 signed int signed int 
+      p1: const pointer to array of constant expression 3 signed int signed int 
+      p2: pointer to static array of constant expression 3 signed int signed int 
+      p3: const pointer to static array of constant expression 3 signed int signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+tom: function
+      accepting unspecified arguments
+    returning 
+      pointer to array of signed int with dimension of constant expression 3 signed int 
+    with body 
+      CompoundStmt
+
+jane: function
+      accepting unspecified arguments
+    returning 
+      pointer to function
+          with parameters
+            T: pointer to array of constant expression 3 signed int signed int 
+            p1: const pointer to array of constant expression 3 signed int signed int 
+            p2: pointer to static array of constant expression 3 signed int signed int 
+            p3: const pointer to static array of constant expression 3 signed int signed int 
+          returning 
+            signed int 
+
+    with body 
+      CompoundStmt
+
Index: src/Tests/Expect-v/AsmName.txt
===================================================================
--- src/Tests/Expect-v/AsmName.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/AsmName.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,11 @@
+x: extern signed int 
+fred: function
+    with parameters
+      x: signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of y: static signed int 
+        Declaration of z: static pointer to signed int 
+
Index: src/Tests/Expect-v/Attributes.txt
===================================================================
--- src/Tests/Expect-v/Attributes.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Attributes.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,1 @@
+Error at line 58 reading token "*"
Index: src/Tests/Expect-v/Cast.txt
===================================================================
--- src/Tests/Expect-v/Cast.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Cast.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,55 @@
+f: char 
+f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of f: char 
+        Declaration of f: double 
+                  Expression Statement:
+            Cast of:
+              Name: f
+
+            to:
+              signed int 
+
+        Declaration of f: short signed int 
+                  Expression Statement:
+            Cast of:
+              Name: f
+
+            to:
+              signed int 
+
+                  Expression Statement:
+            Cast of:
+              Name: f
+
+            to:
+              pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    nothing 
+
+
+                  Expression Statement:
+            Cast of:
+              Tuple:
+                                  Name: f
+
+                                  Name: f
+
+                                  Name: f
+
+
+            to:
+              long signed int 
+              long double 
+              pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    nothing 
+
+
+
Index: src/Tests/Expect-v/CastError.txt
===================================================================
--- src/Tests/Expect-v/CastError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/CastError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,28 @@
+f: signed int 
+f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of f: signed int 
+        Declaration of f: double 
+                  Expression Statement:
+            Cast of:
+              Name: f
+
+            to:
+              char 
+
+                  Expression Statement:
+            Cast of:
+              Name: f
+
+            to:
+              pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+
+
Index: src/Tests/Expect-v/CharStringConstants.txt
===================================================================
--- src/Tests/Expect-v/CharStringConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/CharStringConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,131 @@
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+constant expression ' ' char 
+                  Expression Statement:
+constant expression 'a' char 
+                  Expression Statement:
+constant expression '"' char 
+                  Expression Statement:
+constant expression '_' char 
+                  Expression Statement:
+constant expression '\a' char 
+                  Expression Statement:
+constant expression '\b' char 
+                  Expression Statement:
+constant expression '\e' char 
+                  Expression Statement:
+constant expression '\f' char 
+                  Expression Statement:
+constant expression '\n' char 
+                  Expression Statement:
+constant expression '\r' char 
+                  Expression Statement:
+constant expression '\t' char 
+                  Expression Statement:
+constant expression '\v' char 
+                  Expression Statement:
+constant expression '\'' char 
+                  Expression Statement:
+constant expression '\"' char 
+                  Expression Statement:
+constant expression '\?' char 
+                  Expression Statement:
+constant expression '\\' char 
+                  Expression Statement:
+constant expression '\0' char 
+                  Expression Statement:
+constant expression '\377' char 
+                  Expression Statement:
+constant expression '\xf' char 
+                  Expression Statement:
+constant expression '\xff' char 
+                  Expression Statement:
+constant expression '' char 
+                  Expression Statement:
+constant expression 'aa' char 
+                  Expression Statement:
+constant expression 'a\na' char 
+                  Expression Statement:
+constant expression 'a\0a' char 
+                  Expression Statement:
+constant expression '\xfff' char 
+                  Expression Statement:
+constant expression '_\377_' char 
+                  Expression Statement:
+constant expression '_\xff_' char 
+                  Expression Statement:
+constant expression '\xffff' char 
+                  Expression Statement:
+constant expression 'a\xff34w' char 
+                  Expression Statement:
+constant expression '\xff' char 
+                  Expression Statement:
+constant expression '\xffff' char 
+                  Expression Statement:
+constant expression " " array of char with dimension of constant expression 4 unsigned int 
+                  Expression Statement:
+constant expression "a" array of char with dimension of constant expression 4 unsigned int 
+                  Expression Statement:
+constant expression "'" array of char with dimension of constant expression 4 unsigned int 
+                  Expression Statement:
+constant expression '_' char 
+                  Expression Statement:
+constant expression "\a" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\b" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\e" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\f" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\n" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\r" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\t" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\v" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\'" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\"" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\?" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\\" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\0" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "\377" array of char with dimension of constant expression 7 unsigned int 
+                  Expression Statement:
+constant expression "\xf" array of char with dimension of constant expression 6 unsigned int 
+                  Expression Statement:
+constant expression "\xff" array of char with dimension of constant expression 7 unsigned int 
+                  Expression Statement:
+constant expression "" array of char with dimension of constant expression 3 unsigned int 
+                  Expression Statement:
+constant expression "aa" array of char with dimension of constant expression 5 unsigned int 
+                  Expression Statement:
+constant expression "a\na" array of char with dimension of constant expression 7 unsigned int 
+                  Expression Statement:
+constant expression "a\0a" array of char with dimension of constant expression 7 unsigned int 
+                  Expression Statement:
+constant expression "_\377_" array of char with dimension of constant expression 9 unsigned int 
+                  Expression Statement:
+constant expression "_\xff_" array of char with dimension of constant expression 9 unsigned int 
+                  Expression Statement:
+constant expression "\xff" array of char with dimension of constant expression 7 unsigned int 
+                  Expression Statement:
+constant expression "\xffff" array of char with dimension of constant expression 9 unsigned int 
+                  Expression Statement:
+constant expression "\xfff" array of char with dimension of constant expression 8 unsigned int 
+                  Expression Statement:
+constant expression "a\xff34w" array of char with dimension of constant expression 11 unsigned int 
+                  Expression Statement:
+constant expression "\xffff" array of char with dimension of constant expression 9 unsigned int 
+
Index: src/Tests/Expect-v/CommentMisc.txt
===================================================================
--- src/Tests/Expect-v/CommentMisc.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/CommentMisc.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,12 @@
+i: signed int 
+i: signed int 
+i: signed int 
+i: signed int 
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of x: array of signed int with dimension of constant expression 10 signed int 
+
Index: src/Tests/Expect-v/Constant0-1.txt
===================================================================
--- src/Tests/Expect-v/Constant0-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Constant0-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,291 @@
+0: signed int 
+0: const signed int 
+0: static const signed int 
+1: signed int 
+1: const signed int 
+1: static const signed int 
+0: signed int 
+1: signed int 
+0: const signed int 
+1: const signed int 
+0: signed int 
+1: signed int 
+0: signed int 
+1: signed int 
+0: static const signed int 
+1: static const signed int 
+struct __anonymous0
+    with members
+      i: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    i: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous0 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 
+
+
+
+0: instance of struct __anonymous0 
+struct __anonymous1
+    with members
+      i: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    i: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous1 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous1 
+
+
+
+1: const instance of struct __anonymous1 
+struct __anonymous2
+    with members
+      i: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    i: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous2 
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous2 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous2 
+
+
+
+1: static const instance of struct __anonymous2 
+0: pointer to signed int 
+1: pointer to signed int 
+0: pointer to signed int 
+1: pointer to signed int 
+0: pointer to signed int 
+1: pointer to signed int 
+0: pointer to signed int 
+1: pointer to signed int 
+0: const pointer to signed int 
+1: const pointer to signed int 
+0: const pointer to signed int 
+1: const pointer to signed int 
+0: const pointer to signed int 
+1: const pointer to signed int 
+struct __anonymous3
+    with members
+      i: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    i: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous3 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous3 
+
+
+
+0: pointer to instance of struct __anonymous3 
+x: pointer to signed int 
+0: pointer to signed int 
+x: const pointer to signed int 
+0: const pointer to signed int 
+x: static const pointer to signed int 
+0: static const pointer to signed int 
+struct __anonymous4
+    with members
+      i: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    i: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous4 
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous4 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous4 
+
+
+
+0: pointer to instance of struct __anonymous4 
+struct __anonymous5
+    with members
+      i: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    i: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous5 
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous5 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous5 
+
+
+
+0: const pointer to instance of struct __anonymous5 
+struct __anonymous6
+    with members
+      i: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    i: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous6 
+                Member Expression, with field: 
+                  i: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous6 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous6 
+
+
+
+0: static const pointer to instance of struct __anonymous6 
+x: static pointer to signed int 
+0: static pointer to signed int 
+x: static const pointer to signed int 
+0: static const pointer to signed int 
+x: const pointer to pointer to signed int 
+0: const pointer to pointer to signed int 
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of 1: signed int 
+        Declaration of 0: pointer to signed int 
+        Declaration of x: pointer to signed int 
+        Declaration of 0: pointer to signed int 
+
Index: src/Tests/Expect-v/Context.txt
===================================================================
--- src/Tests/Expect-v/Context.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Context.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,79 @@
+context has_q
+    with parameters
+      T: type
+
+    with members
+      q: function
+          with parameters
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+
+f: forall
+      z: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type z (not function type) 
+                instance of type z (not function type) 
+              returning 
+                instance of type z (not function type) 
+
+          q: pointer to function
+              with parameters
+                instance of type z (not function type) 
+              returning 
+                instance of type z (not function type) 
+
+
+    function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of context has_r
+            with parameters
+              T: type
+              U: type
+
+            with members
+              r: function
+                  with parameters
+                    instance of type T (not function type) 
+                    pointer to function
+                        with parameters
+                          instance of type T (not function type) 
+                          instance of type U (not function type) 
+                        returning 
+                          instance of type T (not function type) 
+
+                  returning 
+                    instance of type T (not function type) 
+
+
+        Declaration of x: extern type
+        Declaration of ?=?: automatically generated function
+            with parameters
+              _dst: pointer to instance of type x (not function type) 
+              _src: instance of type x (not function type) 
+            returning 
+              instance of type x (not function type) 
+
+        Declaration of y: extern type
+          with assertions
+            instance of context has_r 
+              with parameters
+                instance of type x (not function type) 
+                instance of type y (not function type) 
+
+
+        Declaration of ?=?: automatically generated function
+            with parameters
+              _dst: pointer to instance of type y (not function type) 
+              _src: instance of type y (not function type) 
+            returning 
+              instance of type y (not function type) 
+
+
Index: src/Tests/Expect-v/DeclarationErrors.txt
===================================================================
--- src/Tests/Expect-v/DeclarationErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/DeclarationErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,14 @@
+Error: invalid combination of storage classes in declaration of x9: static static volatile const short int 
+
+Error: invalid combination of storage classes in declaration of x18: static static const volatile instance of struct __anonymous0
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x19: static static const volatile volatile instance of struct __anonymous1
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x28: static static volatile const instance of type Int
+
Index: src/Tests/Expect-v/DeclarationSpecifier.txt
===================================================================
--- src/Tests/Expect-v/DeclarationSpecifier.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/DeclarationSpecifier.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,14 @@
+Error: invalid combination of storage classes in declaration of x9: static static volatile const short int 
+
+Error: invalid combination of storage classes in declaration of x18: static static const volatile instance of struct __anonymous8
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x19: static static const volatile volatile instance of struct __anonymous9
+  with members 
+    i: int 
+
+
+Error: invalid combination of storage classes in declaration of x28: static static volatile const instance of type Int
+
Index: src/Tests/Expect-v/Enum.txt
===================================================================
--- src/Tests/Expect-v/Enum.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Enum.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,26 @@
+enum Colors
+    with members
+      Red: const instance of enum Colors 
+      Yellow: const instance of enum Colors 
+      Pink: const instance of enum Colors 
+      Blue: const instance of enum Colors 
+      Purple: const instance of enum Colors 
+      Orange: const instance of enum Colors 
+      Green: const instance of enum Colors 
+
+f: function
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of enum Fruits
+            with members
+              Apple: const instance of enum Fruits 
+              Banana: const instance of enum Fruits 
+              Pear: const instance of enum Fruits 
+              Mango: const instance of enum Fruits 
+
+        Declaration of fruit: instance of enum Fruits with initializer 
+          Simple Initializer:             Name: Mango
+
+
Index: src/Tests/Expect-v/Exception.txt
===================================================================
--- src/Tests/Expect-v/Exception.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Exception.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,60 @@
+fred: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of x: signed int 
+                  Throw Statement, returning: constant expression 3 signed int 
+
+                  Throw Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Address of:
+      Name: x
+constant expression 5 signed int 
+
+                  Try Statement
+            with block: 
+              CompoundStmt
+            and handlers: 
+              Catch Statement
+              ... catching
+i: signed int 
+
+                  Try Statement
+            with block: 
+              CompoundStmt
+                                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?/?
+                    ...to: 
+                        Name: x
+constant expression 4 signed int 
+            and handlers: 
+              Catch Statement
+              ... catching
+signed int 
+              Catch Statement
+              ... catching
+x: signed int 
+              Catch Statement
+              ... catching
+struct __anonymous0
+              Catch Statement
+              ... catching
+x: instance of struct __anonymous1 
+              Catch Statement
+              ... catching
+x: pointer to instance of struct __anonymous2 
+              Catch Statement
+              ... catching
+pointer to instance of struct __anonymous3 
+              Catch Statement
+              ... catching
+x: pointer to instance of struct __anonymous4 
+              Catch Statement
+              ... catching
+                  the rest
+
+
Index: src/Tests/Expect-v/Expression.txt
===================================================================
--- src/Tests/Expect-v/Expression.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Expression.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,365 @@
+fred: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of struct s
+            with members
+              i: signed int 
+
+        Declaration of ?=?: automatically generated inline function
+            with parameters
+              _dst: pointer to instance of struct s 
+              _src: instance of struct s 
+            returning 
+              instance of struct s 
+            with body 
+              CompoundStmt
+                                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Member Expression, with field: 
+                            i: signed int 
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct s 
+                        Member Expression, with field: 
+                          i: signed int 
+                        from aggregate: 
+                          Variable Expression: _src: instance of struct s 
+
+                                  Return Statement, returning: Variable Expression: _src: instance of struct s 
+
+
+
+        Declaration of p: pointer to instance of struct s 
+        Declaration of i: signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: !?
+            ...to: 
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ~?
+            ...to: 
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: +?
+            ...to: 
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: -?
+            ...to: 
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: *?
+            ...to: 
+                Name: p
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ++?
+            ...to: 
+                Address of:
+                  Name: p
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: --?
+            ...to: 
+                Address of:
+                  Name: p
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?++
+            ...to: 
+                Address of:
+                  Name: p
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?--
+            ...to: 
+                Address of:
+                  Name: p
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?+?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?-?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?*?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?/?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?%?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?^?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?&?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?|?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?<?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?>?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?==?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?!=?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?<<?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?>>?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?<=?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?>=?
+            ...to: 
+                Name: i
+                Name: i
+
+                  Expression Statement:
+            Short-circuited operation (and) on: Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Name: i
+      Name: 0
+
+to:
+  signed int 
+ and Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Name: i
+      Name: 0
+
+to:
+  signed int 
+
+
+                  Expression Statement:
+            Short-circuited operation (or) on: Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Name: i
+      Name: 0
+
+to:
+  signed int 
+ and Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Name: i
+      Name: 0
+
+to:
+  signed int 
+
+
+                  Expression Statement:
+            Member Expression, with field: i            from aggregate:               Applying untyped: 
+                  Name: *?
+              ...to: 
+                  Name: p
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?+=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?-=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?*=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?/=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?%=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?&=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?|=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?^=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?<<=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?>>=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: i
+
+                  Expression Statement:
+            Conditional expression on: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Name: i
+                    Name: 0
+
+              to:
+                signed int 
+            First alternative:
+              Name: i
+            Second alternative:
+              Name: i
+
+
+
Index: src/Tests/Expect-v/Forall.txt
===================================================================
--- src/Tests/Expect-v/Forall.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Forall.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,731 @@
+?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+?=?: function
+    with parameters
+      pointer to pointer to signed int 
+      pointer to signed int 
+    returning 
+      pointer to signed int 
+
+?=?: function
+    with parameters
+      pointer to pointer to float 
+      pointer to float 
+    returning 
+      pointer to float 
+
+?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+?=?: function
+    with parameters
+      pointer to pointer to function
+          returning 
+            nothing 
+
+      pointer to function
+          returning 
+            nothing 
+
+    returning 
+      pointer to function
+          returning 
+            nothing 
+
+
+g1: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of f: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+        Declaration of f: function
+            with parameters
+              signed int 
+            returning 
+              nothing 
+
+        Declaration of h: function
+            with parameters
+              p: pointer to function
+                  returning 
+                    nothing 
+
+            returning 
+              nothing 
+
+        Declaration of x: signed int 
+        Declaration of y: pointer to function
+            returning 
+              nothing 
+
+        Declaration of z: char 
+        Declaration of w: float 
+                  Expression Statement:
+            Applying untyped: 
+                Name: f
+            ...to: 
+                Name: x
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: f
+            ...to: 
+                Name: y
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: f
+            ...to: 
+                Name: z
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: f
+            ...to: 
+                Name: w
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: h
+            ...to: 
+                Applying untyped: 
+                    Name: f
+                ...to: 
+                    Name: y
+
+
+g2: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of f: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+              instance of type T (not function type) 
+            returning 
+              nothing 
+
+        Declaration of f: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+              U: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type U (not function type) 
+                        instance of type U (not function type) 
+                      returning 
+                        instance of type U (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+              instance of type U (not function type) 
+            returning 
+              nothing 
+
+        Declaration of x: signed int 
+        Declaration of y: float 
+        Declaration of z: pointer to signed int 
+        Declaration of w: pointer to float 
+                  Expression Statement:
+            Applying untyped: 
+                Name: f
+            ...to: 
+                Name: x
+                Name: y
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: f
+            ...to: 
+                Name: z
+                Name: w
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: f
+            ...to: 
+                Name: x
+                Name: z
+
+
+swap: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      left: instance of type T (not function type) 
+      right: instance of type T (not function type) 
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of temp: instance of type T (not function type) with initializer 
+          Simple Initializer:             Name: left
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: temp
+                Name: left
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: left
+                Name: right
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: right
+                Name: temp
+
+
+context sumable
+    with parameters
+      T: type
+
+    with members
+      0: const instance of type T (not function type) 
+      ?+?: function
+          with parameters
+            instance of type T (not function type) 
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+      ?++: function
+          with parameters
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+      ?+=?: function
+          with parameters
+            instance of type T (not function type) 
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+
+T1: type
+  with assertions
+    0: const instance of type T1 (not function type) 
+    ?+?: function
+        with parameters
+          instance of type T1 (not function type) 
+          instance of type T1 (not function type) 
+        returning 
+          instance of type T1 (not function type) 
+
+    ?++: function
+        with parameters
+          instance of type T1 (not function type) 
+        returning 
+          instance of type T1 (not function type) 
+
+    ?+=?: function
+        with parameters
+          instance of type T1 (not function type) 
+          instance of type T1 (not function type) 
+        returning 
+          instance of type T1 (not function type) 
+
+
+?=?: automatically generated function
+    with parameters
+      _dst: pointer to instance of type T1 (not function type) 
+      _src: instance of type T1 (not function type) 
+    returning 
+      instance of type T1 (not function type) 
+
+T2: type
+  with parameters
+    P1: type
+    P2: type
+
+?=?: automatically generated function
+    with parameters
+      _dst: pointer to instance of type T2 (not function type) 
+      _src: instance of type T2 (not function type) 
+    returning 
+      instance of type T2 (not function type) 
+
+T3: type
+  with assertions
+    instance of context sumable 
+      with parameters
+        instance of type T3 (not function type) 
+
+
+?=?: automatically generated function
+    with parameters
+      _dst: pointer to instance of type T3 (not function type) 
+      _src: instance of type T3 (not function type) 
+    returning 
+      instance of type T3 (not function type) 
+
+struct __anonymous0
+    with members
+      i: instance of type P1 (not function type) 
+      j: instance of type P2 (not function type) 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    i: instance of type P1 (not function type) 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+                Member Expression, with field: 
+                  i: instance of type P1 (not function type) 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous0 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    j: instance of type P2 (not function type) 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+                Member Expression, with field: 
+                  j: instance of type P2 (not function type) 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous0 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 
+
+
+
+T2: type for instance of struct __anonymous0 
+  with parameters
+    P1: type
+    P2: type
+
+  with assertions
+    instance of context sumable 
+      with parameters
+        instance of type T2 (not function type) 
+          with parameters
+            instance of type P1 (not function type) 
+            instance of type P2 (not function type) 
+
+
+
+?=?: automatically generated function
+    with parameters
+      _dst: pointer to instance of type T2 (not function type) 
+      _src: instance of type T2 (not function type) 
+    returning 
+      instance of type T2 (not function type) 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type T2 (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type T2 (not function type) 
+
+    to:
+      instance of struct __anonymous0 
+
+
+
+w1: instance of type T2 (not function type) 
+  with parameters
+    signed int 
+    signed int 
+
+g2: instance of type T2 (not function type) 
+  with parameters
+    signed int 
+    signed int 
+
+w3: type for instance of type T2 (not function type) 
+  with parameters
+    signed int 
+    signed int 
+
+?=?: automatically generated function
+    with parameters
+      _dst: pointer to instance of type w3 (not function type) 
+      _src: instance of type w3 (not function type) 
+    returning 
+      instance of type w3 (not function type) 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type w3 (not function type) 
+
+    to:
+      pointer to instance of type T2 (not function type) 
+        with parameters
+          signed int 
+          signed int 
+
+    Cast of:
+      Variable Expression: _src: instance of type w3 (not function type) 
+
+    to:
+      instance of type T2 (not function type) 
+        with parameters
+          signed int 
+          signed int 
+
+
+
+
+g3: instance of type w3 (not function type) 
+sum: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          0: const instance of type T (not function type) 
+          ?+?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?++: pointer to function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?+=?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      n: signed int 
+      a: pointer to instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+    with body 
+      CompoundStmt
+        Declaration of total: instance of type T (not function type) with initializer 
+          Simple Initializer:             Name: 0
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: total
+                Name: 0
+
+        Declaration of i: signed int 
+                  Labels: {}
+          For Statement
+            initialization: 
+              Expression Statement:
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Name: i
+                    Name: 0
+
+            condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Applying untyped: 
+                        Name: ?<?
+                    ...to: 
+                        Name: i
+                        Name: n
+                    Name: 0
+
+              to:
+                signed int 
+
+            increment: 
+              Applying untyped: 
+                  Name: ?+=?
+              ...to: 
+                  Address of:
+                    Name: i
+                  Name: 1
+
+            statement block: 
+              Expression Statement:
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Name: total
+                    Applying untyped: 
+                        Name: ?+?
+                    ...to: 
+                        Name: total
+                        Applying untyped: 
+                            Name: ?[?]
+                        ...to: 
+                            Name: a
+                            Name: i
+
+
+                  Return Statement, returning: Name: total
+
+
+
+twice: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          0: const instance of type T (not function type) 
+          ?+?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?++: pointer to function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?+=?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      t: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Applying untyped: 
+    Name: ?+?
+...to: 
+    Name: t
+    Name: t
+
+
+
+min: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          0: const instance of type T (not function type) 
+          ?!=?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                signed int 
+
+          ?<?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                signed int 
+
+
+    function
+    with parameters
+      t1: instance of type T (not function type) 
+      t2: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Conditional expression on: 
+  Cast of:
+    Applying untyped: 
+        Name: ?!=?
+    ...to: 
+        Applying untyped: 
+            Name: ?<?
+        ...to: 
+            Name: t1
+            Name: t2
+        Name: 0
+
+  to:
+    signed int 
+First alternative:
+  Name: t1
+Second alternative:
+  Name: t2
+
+
+
+
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of x: signed int with initializer 
+          Simple Initializer:             Name: 1
+
+        Declaration of y: signed int with initializer 
+          Simple Initializer: constant expression 2 signed int 
+        Declaration of a: array of signed int with dimension of constant expression 10 signed int 
+        Declaration of f: float 
+                  Expression Statement:
+            Applying untyped: 
+                Name: swap
+            ...to: 
+                Name: x
+                Name: y
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: twice
+            ...to: 
+                Name: x
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: f
+                Applying untyped: 
+                    Name: min
+                ...to: 
+constant expression 4.0 double constant expression 3.0 double 
+                  Expression Statement:
+            Applying untyped: 
+                Name: sum
+            ...to: 
+constant expression 10 signed int                 Name: a
+
+
Index: src/Tests/Expect-v/Function.txt
===================================================================
--- src/Tests/Expect-v/Function.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Function.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,126 @@
+a: signed int 
+a: float 
+f: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f: function
+    with parameters
+      float 
+    returning 
+      float 
+
+g: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: f
+            ...to: 
+                Cast of:
+                  Name: a
+
+                to:
+                  signed int 
+
+                  Expression Statement:
+            Cast of:
+              Applying untyped: 
+                  Name: f
+              ...to: 
+                  Name: a
+
+            to:
+              signed int 
+
+
+p: tuple of types
+    signed int 
+
+p: tuple of types
+    signed int 
+    double 
+
+p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+
+p: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+q: tuple of types
+    char 
+
+q: tuple of types
+    signed int 
+    signed int 
+
+q: tuple of types
+    signed int 
+    signed int 
+    float 
+
+q: tuple of types
+    signed int 
+    signed int 
+    signed int 
+    signed int 
+
+r: function
+    with parameters
+      signed int 
+      signed int 
+      signed int 
+      signed int 
+    returning 
+      signed int 
+      signed int 
+
+s: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: r
+            ...to: 
+                Name: p
+                Name: q
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: r
+            ...to: 
+                Tuple:
+                                      Name: q
+
+                                      Name: p
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: r
+            ...to: 
+                Applying untyped: 
+                    Name: r
+                ...to: 
+                    Name: p
+                    Name: q
+                Applying untyped: 
+                    Name: r
+                ...to: 
+                    Name: q
+                    Name: q
+
+
Index: src/Tests/Expect-v/Functions.txt
===================================================================
--- src/Tests/Expect-v/Functions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Functions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,681 @@
+h: function
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      pointer to function
+          returning 
+            signed int 
+
+      pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      pointer to function
+          returning 
+            signed int 
+
+      pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      g: pointer to function
+          returning 
+            nothing 
+
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Applying untyped: 
+                    Name: *?
+                ...to: 
+                    Name: g
+            ...to: 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: g
+                Name: h
+
+
+f1: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+f2: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+f3: function
+      accepting unspecified arguments
+    returning 
+      pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+    with body 
+      CompoundStmt
+
+f4: function
+      accepting unspecified arguments
+    returning 
+      pointer to signed int 
+    with body 
+      CompoundStmt
+
+f5: function
+      accepting unspecified arguments
+    returning 
+      pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+    with body 
+      CompoundStmt
+
+f6: function
+      accepting unspecified arguments
+    returning 
+      pointer to signed int 
+    with body 
+      CompoundStmt
+
+f7: function
+      accepting unspecified arguments
+    returning 
+      pointer to signed int 
+    with body 
+      CompoundStmt
+
+f8: function
+      accepting unspecified arguments
+    returning 
+      pointer to pointer to signed int 
+    with body 
+      CompoundStmt
+
+f9: function
+      accepting unspecified arguments
+    returning 
+      pointer to const pointer to signed int 
+    with body 
+      CompoundStmt
+
+f10: function
+      accepting unspecified arguments
+    returning 
+      pointer to open array of signed int 
+    with body 
+      CompoundStmt
+
+f11: function
+      accepting unspecified arguments
+    returning 
+      pointer to open array of array of signed int with dimension of constant expression 3 signed int 
+    with body 
+      CompoundStmt
+
+f12: function
+      accepting unspecified arguments
+    returning 
+      pointer to open array of array of signed int with dimension of constant expression 3 signed int 
+    with body 
+      CompoundStmt
+
+fII1: function
+    with parameters
+      i: signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+fII2: function
+    with parameters
+      i: signed int 
+    returning 
+      const signed int 
+    with body 
+      CompoundStmt
+
+fII3: extern function
+    with parameters
+      i: signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+fII4: extern function
+    with parameters
+      i: signed int 
+    returning 
+      const signed int 
+    with body 
+      CompoundStmt
+
+fII5: function
+      accepting unspecified arguments
+    returning 
+      pointer to signed int 
+    with body 
+      CompoundStmt
+
+fII6: function
+      accepting unspecified arguments
+    returning 
+      const pointer to signed int 
+    with body 
+      CompoundStmt
+
+fII7: function
+      accepting unspecified arguments
+    returning 
+      pointer to const long signed int 
+    with body 
+      CompoundStmt
+
+fII8: static function
+      accepting unspecified arguments
+    returning 
+      pointer to const long signed int 
+    with body 
+      CompoundStmt
+
+fII9: static function
+      accepting unspecified arguments
+    returning 
+      pointer to const long signed int 
+    with body 
+      CompoundStmt
+
+fO1: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with parameter names
+      i
+    with parameter declarations
+      i: signed int 
+    with body 
+      CompoundStmt
+
+fO2: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with parameter names
+      i
+    with parameter declarations
+      i: signed int 
+    with body 
+      CompoundStmt
+
+fO3: function
+      accepting unspecified arguments
+    returning 
+      const signed int 
+    with parameter names
+      i
+    with parameter declarations
+      i: signed int 
+    with body 
+      CompoundStmt
+
+fO4: extern function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with parameter names
+      i
+    with parameter declarations
+      i: signed int 
+    with body 
+      CompoundStmt
+
+fO5: extern function
+      accepting unspecified arguments
+    returning 
+      const signed int 
+    with parameter names
+      i
+    with parameter declarations
+      i: signed int 
+    with body 
+      CompoundStmt
+
+f: function
+    returning 
+      nothing 
+
+f: function
+    returning 
+      signed int 
+
+f: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+f: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f: function
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+
+f: function
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+f: function
+    returning 
+      x: signed int 
+
+f: function
+    with parameters
+      x: signed int 
+    returning 
+      nothing 
+
+f: function
+    with parameters
+      x: signed int 
+    returning 
+      x: signed int 
+
+f: function
+    returning 
+      x: signed int 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      x: signed int 
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      x: signed int 
+    returning 
+      x: signed int 
+    with body 
+      CompoundStmt
+
+f: function
+    returning 
+      signed int 
+      x: signed int 
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+    returning 
+      nothing 
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+    returning 
+      signed int 
+      x: signed int 
+
+f: function
+    returning 
+      signed int 
+      x: signed int 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+    returning 
+      signed int 
+      x: signed int 
+    with body 
+      CompoundStmt
+
+f: function
+    returning 
+      signed int 
+      x: signed int 
+      signed int 
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+      signed int 
+    returning 
+      nothing 
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+      signed int 
+    returning 
+      signed int 
+      x: signed int 
+      signed int 
+
+f: function
+    returning 
+      signed int 
+      x: signed int 
+      signed int 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+      signed int 
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+      signed int 
+    returning 
+      signed int 
+      x: signed int 
+      signed int 
+    with body 
+      CompoundStmt
+
+f: function
+    returning 
+      signed int 
+      x: signed int 
+      y: pointer to signed int 
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+      y: pointer to signed int 
+    returning 
+      nothing 
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+      y: pointer to signed int 
+    returning 
+      signed int 
+      x: signed int 
+      y: pointer to signed int 
+
+f: function
+    returning 
+      signed int 
+      x: signed int 
+      y: pointer to signed int 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+      y: pointer to signed int 
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      signed int 
+      x: signed int 
+      y: pointer to signed int 
+    returning 
+      signed int 
+      x: signed int 
+      y: pointer to signed int 
+    with body 
+      CompoundStmt
+
+f11: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f12: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f: function
+    with parameters
+      pointer to function
+          with parameters
+            signed int 
+            p: signed int 
+          returning 
+            signed int 
+
+      pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of p: pointer to open array of array of pointer to open array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 10 signed int 
+        Declaration of p: pointer to open array of array of pointer to open array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 10 signed int 
+        Declaration of p: pointer to open array of pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+
+f1: static function
+      accepting unspecified arguments
+    returning 
+      pointer to const signed int 
+    with body 
+      CompoundStmt
+
+f2: static function
+    returning 
+      const signed int 
+    with body 
+      CompoundStmt
+
+f3: inline static function
+    returning 
+      const pointer to signed int 
+    with body 
+      CompoundStmt
+
+f4: inline static function
+    returning 
+      const tuple of types
+          pointer to signed int 
+          signed int 
+
+    with body 
+      CompoundStmt
+
+f5: static function
+    returning 
+      const tuple of types
+          pointer to signed int 
+          const signed int 
+
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+      pointer to function
+            accepting unspecified arguments
+          returning 
+            pointer to signed int 
+
+      pointer to function
+            accepting unspecified arguments
+          returning 
+            pointer to pointer to signed int 
+
+      pointer to function
+            accepting unspecified arguments
+          returning 
+            pointer to const pointer to signed int 
+
+      pointer to function
+            accepting unspecified arguments
+          returning 
+            const pointer to const pointer to signed int 
+
+      pointer to signed int 
+      pointer to array of constant expression 10 signed int signed int 
+      pointer to pointer to signed int 
+      pointer to array of constant expression 10 signed int pointer to signed int 
+      pointer to pointer to pointer to signed int 
+      pointer to array of constant expression 10 signed int pointer to pointer to signed int 
+      pointer to pointer to const pointer to signed int 
+      pointer to array of constant expression 10 signed int pointer to const pointer to signed int 
+      pointer to const pointer to const pointer to signed int 
+      pointer to array of constant expression 10 signed int const pointer to const pointer to signed int 
+    returning 
+      signed int 
+
+f: function
+    with parameters
+      pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+      pointer to function
+            accepting unspecified arguments
+          returning 
+            pointer to signed int 
+
+      pointer to function
+            accepting unspecified arguments
+          returning 
+            pointer to pointer to signed int 
+
+      pointer to function
+            accepting unspecified arguments
+          returning 
+            pointer to const pointer to signed int 
+
+      pointer to function
+            accepting unspecified arguments
+          returning 
+            const pointer to const pointer to signed int 
+
+      pointer to signed int 
+      pointer to array of constant expression 10 signed int signed int 
+      pointer to pointer to signed int 
+      pointer to array of constant expression 10 signed int pointer to signed int 
+      pointer to pointer to pointer to signed int 
+      pointer to array of constant expression 10 signed int pointer to pointer to signed int 
+      pointer to pointer to const pointer to signed int 
+      pointer to array of constant expression 10 signed int pointer to const pointer to signed int 
+      pointer to const pointer to const pointer to signed int 
+      pointer to array of constant expression 10 signed int const pointer to const pointer to signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+f: function
+    with parameters
+      f: pointer to signed int 
+      t: signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of T: signed int 
+
Index: src/Tests/Expect-v/GccExtensions.txt
===================================================================
--- src/Tests/Expect-v/GccExtensions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/GccExtensions.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,147 @@
+fred: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of c1: double _Complex 
+        Declaration of c2: double _Complex 
+        Declaration of i1: const signed int 
+        Declaration of i2: const signed int 
+        Declaration of i3: const signed int 
+        Declaration of ex: const signed int 
+        Declaration of f1: inline function
+              accepting unspecified arguments
+            returning 
+              signed int 
+
+        Declaration of f2: inline function
+              accepting unspecified arguments
+            returning 
+              signed int 
+
+        Declaration of s1: signed int 
+        Declaration of s2: signed int 
+        Declaration of t1: type-of expression           Name: s1
+
+        Declaration of t2: type-of expression           Name: s1
+
+        Declaration of v1: volatile signed int 
+        Declaration of v2: volatile signed int 
+        Declaration of a1: signed int 
+        Declaration of a2: const signed int 
+        Declaration of a3: static const signed int 
+        Declaration of a4: static const signed int 
+        Declaration of a5: static const signed int 
+        Declaration of a6: static const signed int 
+        Declaration of a7: static const signed int 
+        Declaration of p1: pointer to signed int 
+        Declaration of p2: pointer to signed int 
+        Declaration of struct s1
+        Declaration of struct s2
+            with members
+              i: signed int 
+
+        Declaration of ?=?: automatically generated inline function
+            with parameters
+              _dst: pointer to instance of struct s2 
+              _src: instance of struct s2 
+            returning 
+              instance of struct s2 
+            with body 
+              CompoundStmt
+                                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Member Expression, with field: 
+                            i: signed int 
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct s2 
+                        Member Expression, with field: 
+                          i: signed int 
+                        from aggregate: 
+                          Variable Expression: _src: instance of struct s2 
+
+                                  Return Statement, returning: Variable Expression: _src: instance of struct s2 
+
+
+
+        Declaration of struct s3
+            with members
+              i: signed int 
+
+        Declaration of ?=?: automatically generated inline function
+            with parameters
+              _dst: pointer to instance of struct s3 
+              _src: instance of struct s3 
+            returning 
+              instance of struct s3 
+            with body 
+              CompoundStmt
+                                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Member Expression, with field: 
+                            i: signed int 
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct s3 
+                        Member Expression, with field: 
+                          i: signed int 
+                        from aggregate: 
+                          Variable Expression: _src: instance of struct s3 
+
+                                  Return Statement, returning: Variable Expression: _src: instance of struct s3 
+
+
+
+        Declaration of x1: instance of struct s3 
+        Declaration of y1: instance of struct s3 
+        Declaration of struct s4
+            with members
+              i: signed int 
+
+        Declaration of ?=?: automatically generated inline function
+            with parameters
+              _dst: pointer to instance of struct s4 
+              _src: instance of struct s4 
+            returning 
+              instance of struct s4 
+            with body 
+              CompoundStmt
+                                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Member Expression, with field: 
+                            i: signed int 
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct s4 
+                        Member Expression, with field: 
+                          i: signed int 
+                        from aggregate: 
+                          Variable Expression: _src: instance of struct s4 
+
+                                  Return Statement, returning: Variable Expression: _src: instance of struct s4 
+
+
+
+        Declaration of x2: instance of struct s4 
+        Declaration of y2: instance of struct s4 
+        Declaration of m1: array of signed int with dimension of constant expression 10 signed int 
+        Declaration of m2: array of array of signed int with dimension of constant expression 10 signed int with dimension of constant expression 10 signed int 
+        Declaration of m3: array of array of signed int with dimension of constant expression 10 signed int with dimension of constant expression 10 signed int 
+
Index: src/Tests/Expect-v/IdentFuncDeclarator.txt
===================================================================
--- src/Tests/Expect-v/IdentFuncDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/IdentFuncDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,185 @@
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of f1: signed int 
+        Declaration of f2: signed int 
+        Declaration of f3: pointer to signed int 
+        Declaration of f4: pointer to pointer to signed int 
+        Declaration of f5: pointer to const pointer to signed int 
+        Declaration of f6: const pointer to const pointer to signed int 
+        Declaration of f7: pointer to signed int 
+        Declaration of f8: pointer to pointer to signed int 
+        Declaration of f9: pointer to const pointer to signed int 
+        Declaration of f10: const pointer to const pointer to signed int 
+        Declaration of f11: pointer to signed int 
+        Declaration of f12: pointer to pointer to signed int 
+        Declaration of f13: pointer to const pointer to signed int 
+        Declaration of f14: const pointer to const pointer to signed int 
+        Declaration of f15: open array of signed int 
+        Declaration of f16: array of signed int with dimension of constant expression 10 signed int 
+        Declaration of f17: open array of signed int 
+        Declaration of f18: array of signed int with dimension of constant expression 10 signed int 
+        Declaration of f19: open array of pointer to signed int 
+        Declaration of f20: array of pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f21: open array of pointer to pointer to signed int 
+        Declaration of f22: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f23: open array of pointer to const pointer to signed int 
+        Declaration of f24: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f25: open array of const pointer to const pointer to signed int 
+        Declaration of f26: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f27: open array of pointer to signed int 
+        Declaration of f28: array of pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f29: open array of pointer to pointer to signed int 
+        Declaration of f30: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f31: open array of pointer to const pointer to signed int 
+        Declaration of f32: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f33: open array of const pointer to const pointer to signed int 
+        Declaration of f34: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f35: open array of pointer to signed int 
+        Declaration of f36: array of pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f37: open array of pointer to pointer to signed int 
+        Declaration of f38: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f39: open array of pointer to const pointer to signed int 
+        Declaration of f40: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f41: open array of const pointer to const pointer to signed int 
+        Declaration of f42: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f43: open array of array of signed int with dimension of constant expression 3 signed int 
+        Declaration of f44: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f45: open array of array of signed int with dimension of constant expression 3 signed int 
+        Declaration of f46: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f47: open array of array of signed int with dimension of constant expression 3 signed int 
+        Declaration of f48: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f49: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f50: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f51: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f52: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f53: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f54: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f55: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f56: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f57: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f58: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f59: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f60: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f61: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f62: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f63: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f64: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f65: function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f66: function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f67: function
+            with parameters
+              signed int 
+            returning 
+              pointer to signed int 
+
+        Declaration of f68: function
+            with parameters
+              signed int 
+            returning 
+              pointer to pointer to signed int 
+
+        Declaration of f69: function
+            with parameters
+              signed int 
+            returning 
+              pointer to const pointer to signed int 
+
+        Declaration of f70: function
+            with parameters
+              signed int 
+            returning 
+              const pointer to const pointer to signed int 
+
+        Declaration of f71: function
+            with parameters
+              signed int 
+            returning 
+              pointer to signed int 
+
+        Declaration of f72: function
+            with parameters
+              signed int 
+            returning 
+              pointer to pointer to signed int 
+
+        Declaration of f73: function
+            with parameters
+              signed int 
+            returning 
+              pointer to const pointer to signed int 
+
+        Declaration of f74: function
+            with parameters
+              signed int 
+            returning 
+              const pointer to const pointer to signed int 
+
+        Declaration of f75: pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f76: pointer to pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f77: pointer to const pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f78: const pointer to const pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f79: pointer to function
+            with parameters
+              signed int 
+            returning 
+              pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+
+        Declaration of f80: const pointer to function
+            with parameters
+              signed int 
+            returning 
+              pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+
+        Declaration of f81: const pointer to function
+            with parameters
+              signed int 
+            returning 
+              const pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+
+
Index: src/Tests/Expect-v/IdentFuncParamDeclarator.txt
===================================================================
--- src/Tests/Expect-v/IdentFuncParamDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/IdentFuncParamDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,221 @@
+fred: function
+    with parameters
+      f1: signed int 
+      f2: signed int 
+      f3: pointer to signed int 
+      f4: pointer to pointer to signed int 
+      f5: pointer to const pointer to signed int 
+      f6: const pointer to const pointer to signed int 
+      f7: pointer to signed int 
+      f8: pointer to pointer to signed int 
+      f9: pointer to const pointer to signed int 
+      f10: const pointer to const pointer to signed int 
+      f11: pointer to signed int 
+      f12: pointer to pointer to signed int 
+      f13: pointer to const pointer to signed int 
+      f14: const pointer to const pointer to signed int 
+      f15: pointer to signed int 
+      f16: pointer to array of constant expression 10 signed int signed int 
+      f17: pointer to signed int 
+      f18: pointer to array of constant expression 10 signed int signed int 
+      f19: pointer to pointer to signed int 
+      f20: pointer to array of constant expression 10 signed int pointer to signed int 
+      f21: pointer to pointer to pointer to signed int 
+      f22: pointer to array of constant expression 10 signed int pointer to pointer to signed int 
+      f23: pointer to pointer to const pointer to signed int 
+      f24: pointer to array of constant expression 10 signed int pointer to const pointer to signed int 
+      f25: pointer to const pointer to const pointer to signed int 
+      f26: pointer to array of constant expression 10 signed int const pointer to const pointer to signed int 
+      f27: pointer to pointer to signed int 
+      f28: pointer to array of constant expression 10 signed int pointer to signed int 
+      f29: pointer to pointer to pointer to signed int 
+      f30: pointer to array of constant expression 10 signed int pointer to pointer to signed int 
+      f31: pointer to pointer to const pointer to signed int 
+      f32: pointer to array of constant expression 10 signed int pointer to const pointer to signed int 
+      f33: pointer to const pointer to const pointer to signed int 
+      f34: pointer to array of constant expression 10 signed int const pointer to const pointer to signed int 
+      f35: pointer to pointer to signed int 
+      f36: pointer to array of constant expression 10 signed int pointer to signed int 
+      f37: pointer to pointer to pointer to signed int 
+      f38: pointer to array of constant expression 10 signed int pointer to pointer to signed int 
+      f39: pointer to pointer to const pointer to signed int 
+      f40: pointer to array of constant expression 10 signed int pointer to const pointer to signed int 
+      f41: pointer to const pointer to const pointer to signed int 
+      f42: pointer to array of constant expression 10 signed int const pointer to const pointer to signed int 
+      f43: pointer to array of signed int with dimension of constant expression 3 signed int 
+      f44: pointer to array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f45: pointer to array of signed int with dimension of constant expression 3 signed int 
+      f46: pointer to array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f47: pointer to array of signed int with dimension of constant expression 3 signed int 
+      f48: pointer to array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f49: pointer to array of pointer to signed int with dimension of constant expression 3 signed int 
+      f50: pointer to array of constant expression 3 signed int array of pointer to signed int with dimension of constant expression 3 signed int 
+      f51: pointer to array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f52: pointer to array of constant expression 3 signed int array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f53: pointer to array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f54: pointer to array of constant expression 3 signed int array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f55: pointer to array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f56: pointer to array of constant expression 3 signed int array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f57: pointer to array of pointer to signed int with dimension of constant expression 3 signed int 
+      f58: pointer to array of constant expression 3 signed int array of pointer to signed int with dimension of constant expression 3 signed int 
+      f59: pointer to array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f60: pointer to array of constant expression 3 signed int array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f61: pointer to array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f62: pointer to array of constant expression 3 signed int array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f63: pointer to array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f64: pointer to array of constant expression 3 signed int array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f65: pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f66: pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f67: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to signed int 
+
+      f68: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to pointer to signed int 
+
+      f69: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to const pointer to signed int 
+
+      f70: pointer to function
+          with parameters
+            signed int 
+          returning 
+            const pointer to const pointer to signed int 
+
+      f71: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to signed int 
+
+      f72: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to pointer to signed int 
+
+      f73: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to const pointer to signed int 
+
+      f74: pointer to function
+          with parameters
+            signed int 
+          returning 
+            const pointer to const pointer to signed int 
+
+      f75: pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f76: pointer to pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f77: pointer to const pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f78: const pointer to const pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f79: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  signed int 
+
+
+      f80: const pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  signed int 
+
+
+      f81: const pointer to function
+          with parameters
+            signed int 
+          returning 
+            const pointer to function
+                  accepting unspecified arguments
+                returning 
+                  signed int 
+
+
+      f82: const pointer to variable length array of signed int 
+      f83: const pointer to array of constant expression 3 signed int signed int 
+      f84: pointer to static array of constant expression 3 signed int signed int 
+      f85: const pointer to static array of constant expression 3 signed int signed int 
+      f86: const pointer to variable length array of signed int 
+      f87: const pointer to array of constant expression 3 signed int signed int 
+      f88: pointer to static array of constant expression 3 signed int signed int 
+      f89: const pointer to static array of constant expression 3 signed int signed int 
+      f90: const pointer to variable length array of pointer to signed int 
+      f91: const pointer to array of constant expression 3 signed int pointer to signed int 
+      f92: pointer to static array of constant expression 3 signed int pointer to pointer to signed int 
+      f93: const pointer to static array of constant expression 3 signed int pointer to const pointer to signed int 
+      f94: const pointer to static array of constant expression 3 signed int const pointer to const pointer to signed int 
+      f95: const pointer to variable length array of pointer to signed int 
+      f96: const pointer to array of constant expression 3 signed int pointer to signed int 
+      f97: pointer to static array of constant expression 3 signed int pointer to pointer to signed int 
+      f98: const pointer to static array of constant expression 3 signed int pointer to const pointer to signed int 
+      f99: const pointer to static array of constant expression 3 signed int const pointer to const pointer to signed int 
+      f100: const pointer to variable length array of array of signed int with dimension of constant expression 3 signed int 
+      f101: const pointer to array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f102: pointer to static array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f103: const pointer to static array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f104: const pointer to variable length array of array of signed int with dimension of constant expression 3 signed int 
+      f105: const pointer to array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f106: pointer to static array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f107: const pointer to static array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f108: const pointer to variable length array of array of pointer to signed int with dimension of constant expression 3 signed int 
+      f109: const pointer to array of constant expression 3 signed int array of pointer to signed int with dimension of constant expression 3 signed int 
+      f110: pointer to static array of constant expression 3 signed int array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f111: const pointer to static array of constant expression 3 signed int array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f112: const pointer to static array of constant expression 3 signed int array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f113: const pointer to variable length array of array of pointer to signed int with dimension of constant expression 3 signed int 
+      f114: const pointer to array of constant expression 3 signed int array of pointer to signed int with dimension of constant expression 3 signed int 
+      f115: pointer to static array of constant expression 3 signed int array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f116: const pointer to static array of constant expression 3 signed int array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f117: const pointer to static array of constant expression 3 signed int array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
Index: src/Tests/Expect-v/InferParam.txt
===================================================================
--- src/Tests/Expect-v/InferParam.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/InferParam.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,173 @@
+?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+?=?: function
+    with parameters
+      pointer to double 
+      double 
+    returning 
+      double 
+
+g: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+      U: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+          f: pointer to function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type U (not function type) 
+
+f: function
+    with parameters
+      signed int 
+    returning 
+      float 
+
+f: function
+    with parameters
+      signed int 
+    returning 
+      double 
+
+i: function
+    with parameters
+      float 
+    returning 
+      nothing 
+
+h: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of a: signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: i
+            ...to: 
+                Applying untyped: 
+                    Name: g
+                ...to: 
+                    Name: a
+
+
+context has_f_and_j
+    with parameters
+      T: type
+      U: type
+
+    with members
+      f: function
+          with parameters
+            instance of type T (not function type) 
+          returning 
+            instance of type U (not function type) 
+
+      j: function
+          with parameters
+            instance of type T (not function type) 
+            instance of type U (not function type) 
+          returning 
+            instance of type U (not function type) 
+
+
+j: function
+    with parameters
+      signed int 
+      float 
+    returning 
+      float 
+
+k: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+      U: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+          f: pointer to function
+              with parameters
+                instance of type T (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+          j: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      instance of type T (not function type) 
+    returning 
+      instance of type U (not function type) 
+
+l: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of b: signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: i
+            ...to: 
+                Applying untyped: 
+                    Name: k
+                ...to: 
+                    Name: b
+
+
Index: src/Tests/Expect-v/Initialization.txt
===================================================================
--- src/Tests/Expect-v/Initialization.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Initialization.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,669 @@
+x11: pointer to signed int with initializer 
+  Simple Initializer:     Name: 0
+
+x12: signed int with initializer 
+  Simple Initializer:     Name: 0
+
+x21: pointer to signed int with initializer 
+  Simple Initializer:     Name: 0
+
+x22: signed int with initializer 
+  Simple Initializer:     Name: 0
+
+y1: array of signed int with dimension of constant expression 20 signed int 
+y2: array of signed int with dimension of constant expression 20 signed int 
+struct __anonymous0
+    with members
+      w: tuple of types
+          signed int 
+
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    w: tuple of types
+                      signed int 
+
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+                Member Expression, with field: 
+                  w: tuple of types
+                    signed int 
+
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous0 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 
+
+
+
+a: instance of struct __anonymous0 with initializer 
+  Compound initializer:  
+    Simple Initializer:       Tuple:
+        constant expression 2 signed int 
+
+      designated by:         Name: w
+
+struct __anonymous1
+    with members
+      a: array of signed int with dimension of constant expression 3 signed int 
+      b: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+    with body 
+      CompoundStmt
+        Declaration of _index0: C signed int 
+                  Labels: {}
+          For Statement
+            initialization: 
+              Expression Statement:
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Variable Expression: _index0: signed int 
+                    Name: 0
+
+            condition: 
+              Applying untyped: 
+                  Name: ?<?
+              ...to: 
+                  Variable Expression: _index0: signed int 
+constant expression 3 signed int 
+            increment: 
+              Applying untyped: 
+                  Name: ++?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index0: signed int 
+
+            statement block: 
+              Expression Statement:
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Applying untyped: 
+                        Name: ?+?
+                    ...to: 
+                        Member Expression, with field: 
+                          a: array of signed int with dimension of constant expression 3 signed int 
+                        from aggregate: 
+                          Applying untyped: 
+                              Name: *?
+                          ...to: 
+                              Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                        Variable Expression: _index0: signed int 
+                    Applying untyped: 
+                        Name: ?[?]
+                    ...to: 
+                        Member Expression, with field: 
+                          a: array of signed int with dimension of constant expression 3 signed int 
+                        from aggregate: 
+                          Variable Expression: _src: instance of struct __anonymous1 
+                        Variable Expression: _index0: signed int 
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    b: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous1 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous1 
+
+
+
+w: open array of instance of struct __anonymous1 with initializer 
+  Compound initializer:  
+    Compound initializer:        designated by: [        Name: 0
+        Name: a
+      ]
+      Simple Initializer:         Name: 1
+
+    Simple Initializer:       Name: 1
+
+      designated by:         Name: 0
+        Name: b
+
+    Simple Initializer: constant expression 2 signed int 
+      designated by:         Name: 1
+        Name: a
+        Name: 0
+
+struct __anonymous2
+    with members
+      g1: signed int 
+      g2: signed int 
+      g3: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    g1: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous2 
+                Member Expression, with field: 
+                  g1: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous2 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    g2: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous2 
+                Member Expression, with field: 
+                  g2: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous2 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    g3: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous2 
+                Member Expression, with field: 
+                  g3: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous2 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous2 
+
+
+
+struct __anonymous3
+    with members
+      f1: signed int 
+      f2: signed int 
+      f3: signed int 
+      f4: array of instance of struct __anonymous2 with dimension of constant expression 4 signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    f1: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous3 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    f2: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous3 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    f3: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous3 
+
+        Declaration of _index1: C signed int 
+                  Labels: {}
+          For Statement
+            initialization: 
+              Expression Statement:
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Variable Expression: _index1: signed int 
+                    Name: 0
+
+            condition: 
+              Applying untyped: 
+                  Name: ?<?
+              ...to: 
+                  Variable Expression: _index1: signed int 
+constant expression 4 signed int 
+            increment: 
+              Applying untyped: 
+                  Name: ++?
+              ...to: 
+                  Address of:
+                    Variable Expression: _index1: signed int 
+
+            statement block: 
+              Expression Statement:
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Applying untyped: 
+                        Name: ?+?
+                    ...to: 
+                        Member Expression, with field: 
+                          f4: array of instance of struct __anonymous2 with dimension of constant expression 4 signed int 
+                        from aggregate: 
+                          Applying untyped: 
+                              Name: *?
+                          ...to: 
+                              Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                        Variable Expression: _index1: signed int 
+                    Applying untyped: 
+                        Name: ?[?]
+                    ...to: 
+                        Member Expression, with field: 
+                          f4: array of instance of struct __anonymous2 with dimension of constant expression 4 signed int 
+                        from aggregate: 
+                          Variable Expression: _src: instance of struct __anonymous3 
+                        Variable Expression: _index1: signed int 
+
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous3 
+
+
+
+v7: instance of struct __anonymous3 with initializer 
+  Compound initializer:  
+    Simple Initializer: constant expression 4 signed int 
+      designated by:         Name: f1
+
+    Simple Initializer: constant expression 3 signed int 
+      designated by:         Name: f2
+
+    Compound initializer:        designated by: [        Name: f4
+constant expression 2 signed int       ]
+      Simple Initializer: constant expression 3 signed int 
+        designated by:           Name: g1
+
+      Simple Initializer:         Name: 0
+
+        designated by:           Name: g3
+
+    Simple Initializer: constant expression 7 signed int 
+      designated by:         Name: f4
+constant expression 3 signed int         Name: g3
+
+struct __anonymous4
+    with members
+      y1: signed int 
+      y2: signed int 
+      y3: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    y1: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous4 
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous4 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    y2: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous4 
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous4 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    y3: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous4 
+                Member Expression, with field: 
+                  y3: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous4 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous4 
+
+
+
+struct point
+    with members
+      x: signed int 
+      z: signed int 
+      y: instance of struct __anonymous4 
+      w: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct point 
+      _src: instance of struct point 
+    returning 
+      instance of struct point 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    x: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct point 
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct point 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    z: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct point 
+                Member Expression, with field: 
+                  z: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct point 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    y: instance of struct __anonymous4 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct point 
+                Member Expression, with field: 
+                  y: instance of struct __anonymous4 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct point 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    w: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct point 
+                Member Expression, with field: 
+                  w: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct point 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct point 
+
+
+
+struct quintet
+    with members
+      v: signed int 
+      w: signed int 
+      x: signed int 
+      y: signed int 
+      z: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct quintet 
+      _src: instance of struct quintet 
+    returning 
+      instance of struct quintet 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    v: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct quintet 
+                Member Expression, with field: 
+                  v: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct quintet 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    w: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct quintet 
+                Member Expression, with field: 
+                  w: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct quintet 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    x: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct quintet 
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct quintet 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    y: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct quintet 
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct quintet 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    z: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct quintet 
+                Member Expression, with field: 
+                  z: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct quintet 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct quintet 
+
+
+
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of p1: instance of struct point with initializer 
+          Compound initializer:  
+            Simple Initializer: constant expression 3 signed int 
+              designated by:                 Name: x
+
+        Declaration of p2: instance of struct point with initializer 
+          Compound initializer:  
+            Simple Initializer: constant expression 3 signed int 
+            Simple Initializer: constant expression 4 signed int 
+        Declaration of p3: instance of struct point with initializer 
+          Compound initializer:  
+            Simple Initializer: constant expression 5 signed int 
+              designated by:                 Name: x
+                Name: z
+
+            Compound initializer:                designated by: [                Name: y
+              ]
+              Simple Initializer: constant expression 6 signed int 
+                designated by:                   Name: y3
+                  Name: y1
+
+              Simple Initializer: constant expression 17 signed int 
+        Declaration of p4: instance of struct point with initializer 
+          Compound initializer:  
+            Simple Initializer: constant expression 5 signed int 
+              designated by:                 Name: w
+
+            Simple Initializer: constant expression 4 signed int 
+
Index: src/Tests/Expect-v/Initialization2.txt
===================================================================
--- src/Tests/Expect-v/Initialization2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Initialization2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,740 @@
+a: signed int with initializer 
+  Simple Initializer: constant expression 3 signed int 
+struct __anonymous0
+    with members
+      x: signed int 
+      y: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    x: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous0 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    y: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous0 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 
+
+
+
+z: instance of struct __anonymous0 with initializer 
+  Compound initializer:  
+    Simple Initializer: constant expression 3 signed int 
+    Simple Initializer: constant expression 7 signed int 
+struct __anonymous1
+    with members
+      x: signed int 
+      y: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    x: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous1 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    y: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous1 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous1 
+
+
+
+z1: instance of struct __anonymous1 with initializer 
+  Compound initializer:  
+    Simple Initializer: constant expression 3 signed int 
+      designated by:         Name: x
+        Name: y
+
+struct __anonymous2
+    with members
+      x: signed int 
+      y: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous2 
+      _src: instance of struct __anonymous2 
+    returning 
+      instance of struct __anonymous2 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    x: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous2 
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous2 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    y: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous2 
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous2 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous2 
+
+
+
+z2: instance of struct __anonymous2 with initializer 
+  Compound initializer:  
+    Simple Initializer: constant expression 3 signed int 
+      designated by:         Name: y
+
+    Simple Initializer: constant expression 4 signed int 
+      designated by:         Name: x
+
+struct __anonymous3
+    with members
+      y1: signed int 
+      y2: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous3 
+      _src: instance of struct __anonymous3 
+    returning 
+      instance of struct __anonymous3 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    y1: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous3 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    y2: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous3 
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous3 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous3 
+
+
+
+struct __anonymous4
+    with members
+      x: signed int 
+      y: instance of struct __anonymous3 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous4 
+      _src: instance of struct __anonymous4 
+    returning 
+      instance of struct __anonymous4 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    x: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous4 
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous4 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    y: instance of struct __anonymous3 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous4 
+                Member Expression, with field: 
+                  y: instance of struct __anonymous3 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous4 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous4 
+
+
+
+z3: instance of struct __anonymous4 with initializer 
+  Compound initializer:  
+    Simple Initializer: constant expression 3 signed int 
+      designated by:         Name: x
+
+    Compound initializer:        designated by: [        Name: y
+      ]
+      Simple Initializer: constant expression 4 signed int 
+        designated by:           Name: y1
+
+      Simple Initializer: constant expression 5 signed int 
+        designated by:           Name: y2
+
+struct __anonymous5
+    with members
+      y1: signed int 
+      y2: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous5 
+      _src: instance of struct __anonymous5 
+    returning 
+      instance of struct __anonymous5 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    y1: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous5 
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous5 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    y2: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous5 
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous5 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous5 
+
+
+
+struct __anonymous6
+    with members
+      x: signed int 
+      y: instance of struct __anonymous5 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous6 
+      _src: instance of struct __anonymous6 
+    returning 
+      instance of struct __anonymous6 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    x: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous6 
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous6 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    y: instance of struct __anonymous5 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous6 
+                Member Expression, with field: 
+                  y: instance of struct __anonymous5 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous6 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous6 
+
+
+
+z3: instance of struct __anonymous6 with initializer 
+  Compound initializer:  
+    Compound initializer:        designated by: [        Name: y
+      ]
+      Simple Initializer: constant expression 9 signed int 
+        designated by:           Name: y2
+
+      Simple Initializer: constant expression 8 signed int 
+        designated by:           Name: y1
+
+    Simple Initializer: constant expression 7 signed int 
+      designated by:         Name: x
+
+struct __anonymous7
+    with members
+      y1: signed int 
+      y2: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous7 
+      _src: instance of struct __anonymous7 
+    returning 
+      instance of struct __anonymous7 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    y1: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous7 
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous7 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    y2: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous7 
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous7 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous7 
+
+
+
+struct __anonymous8
+    with members
+      x: signed int 
+      y: instance of struct __anonymous7 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous8 
+      _src: instance of struct __anonymous8 
+    returning 
+      instance of struct __anonymous8 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    x: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous8 
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous8 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    y: instance of struct __anonymous7 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous8 
+                Member Expression, with field: 
+                  y: instance of struct __anonymous7 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous8 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous8 
+
+
+
+z3: instance of struct __anonymous8 with initializer 
+  Compound initializer:  
+    Simple Initializer: constant expression 7 signed int 
+      designated by:         Name: x
+
+    Compound initializer:  
+      Simple Initializer: constant expression 9 signed int 
+        designated by:           Name: y2
+
+      Simple Initializer: constant expression 8 signed int 
+        designated by:           Name: y1
+
+struct __anonymous9
+    with members
+      y1: signed int 
+      y2: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous9 
+      _src: instance of struct __anonymous9 
+    returning 
+      instance of struct __anonymous9 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    y1: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous9 
+                Member Expression, with field: 
+                  y1: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous9 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    y2: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous9 
+                Member Expression, with field: 
+                  y2: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous9 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous9 
+
+
+
+struct __anonymous10
+    with members
+      x: signed int 
+      y: instance of struct __anonymous9 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous10 
+      _src: instance of struct __anonymous10 
+    returning 
+      instance of struct __anonymous10 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    x: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous10 
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous10 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    y: instance of struct __anonymous9 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous10 
+                Member Expression, with field: 
+                  y: instance of struct __anonymous9 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous10 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous10 
+
+
+
+z3: instance of struct __anonymous10 with initializer 
+  Compound initializer:  
+    Simple Initializer: constant expression 3 signed int 
+    Compound initializer:  
+      Simple Initializer: constant expression 4 signed int 
+      Simple Initializer: constant expression 5 signed int 
+struct t
+    with members
+      a: signed int 
+      b: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct t 
+      _src: instance of struct t 
+    returning 
+      instance of struct t 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    a: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct t 
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct t 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    b: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct t 
+                Member Expression, with field: 
+                  b: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct t 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct t 
+
+
+
+x: instance of struct t with initializer 
+  Compound initializer:  
+    Simple Initializer: constant expression 4 signed int 
+      designated by:         Name: b
+
+    Simple Initializer: constant expression 3 signed int 
+      designated by:         Name: a
+
+struct __anonymous11
+    with members
+      x: signed int 
+      y: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous11 
+      _src: instance of struct __anonymous11 
+    returning 
+      instance of struct __anonymous11 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    x: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous11 
+                Member Expression, with field: 
+                  x: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous11 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    y: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous11 
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous11 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous11 
+
+
+
+z6: instance of struct __anonymous11 with initializer 
+  Compound initializer:  
+    Simple Initializer: constant expression 5 signed int 
+    Simple Initializer: constant expression 6 signed int 
+    Simple Initializer: constant expression 4 signed int 
Index: src/Tests/Expect-v/LabelledExit.txt
===================================================================
--- src/Tests/Expect-v/LabelledExit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/LabelledExit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,743 @@
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of i: signed int 
+        Declaration of x: signed int 
+        Declaration of y: signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: x
+                Name: 0
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: y
+                Name: 0
+
+                  CompoundStmt
+                          If on condition: 
+                  Cast of:
+                    Applying untyped: 
+                        Name: ?!=?
+                    ...to: 
+                        Applying untyped: 
+                            Name: ?==?
+                        ...to: 
+                            Name: x
+                            Name: y
+                        Name: 0
+
+                  to:
+                    signed int 
+              .... and branches: 
+                  CompoundStmt
+                                          Labels: {}
+                      For Statement
+                        initialization: 
+
+                        condition: 
+                          Cast of:
+                            Applying untyped: 
+                                Name: ?!=?
+                            ...to: 
+                                Applying untyped: 
+                                    Name: ?<?
+                                ...to: 
+                                    Name: i
+                                    Name: y
+                                Name: 0
+
+                          to:
+                            signed int 
+
+                        increment: 
+
+                        statement block: 
+                          CompoundStmt
+                                                          Expression Statement:
+                                Applying untyped: 
+                                    Name: ?+=?
+                                ...to: 
+                                    Address of:
+                                      Name: y
+                                    Name: 1
+
+                                                          If on condition: 
+                                  Cast of:
+                                    Applying untyped: 
+                                        Name: ?!=?
+                                    ...to: 
+                                        Applying untyped: 
+                                            Name: ?<?
+                                        ...to: 
+                                            Name: y
+constant expression 10 signed int                                         Name: 0
+
+                                  to:
+                                    signed int 
+                              .... and branches: 
+                                  Branch (Break)
+
+
+
+
+
+                  While on condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Applying untyped: 
+                        Name: ?==?
+                    ...to: 
+                        Name: y
+constant expression 10 signed int                     Name: 0
+
+              to:
+                signed int 
+          .... with body: 
+              Null Statement
+
+                  While on condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Applying untyped: 
+                        Name: ?<?
+                    ...to: 
+                        Name: x
+constant expression 10 signed int                     Name: 0
+
+              to:
+                signed int 
+          .... with body: 
+              CompoundStmt
+                                  While on condition: 
+                      Cast of:
+                        Applying untyped: 
+                            Name: ?!=?
+                        ...to: 
+                            Applying untyped: 
+                                Name: ?<?
+                            ...to: 
+                                Name: y
+constant expression 5 signed int                             Name: 0
+
+                      to:
+                        signed int 
+                  .... with body: 
+                      CompoundStmt
+                                                  If on condition: 
+                              Cast of:
+                                Applying untyped: 
+                                    Name: ?!=?
+                                ...to: 
+                                    Applying untyped: 
+                                        Name: ?==?
+                                    ...to: 
+                                        Name: y
+constant expression 3 signed int                                     Name: 0
+
+                              to:
+                                signed int 
+                          .... and branches: 
+                              Branch (Break)
+
+
+                                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?+=?
+                    ...to: 
+                        Address of:
+                          Name: x
+                        Name: 1
+
+
+                  Labels: {A,}
+          For Statement
+            initialization: 
+              Expression Statement:
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Name: i
+                    Name: 0
+
+            condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Applying untyped: 
+                        Name: ?<?
+                    ...to: 
+                        Name: i
+constant expression 10 signed int                     Name: 0
+
+              to:
+                signed int 
+
+            increment: 
+              Applying untyped: 
+                  Name: ?+=?
+              ...to: 
+                  Address of:
+                    Name: i
+                  Name: 1
+
+            statement block: 
+              CompoundStmt
+                                  Labels: {B,}
+                  For Statement
+                    initialization: 
+                      Expression Statement:
+                        Applying untyped: 
+                            Name: ?=?
+                        ...to: 
+                            Address of:
+                              Name: i
+                            Name: 0
+
+                    condition: 
+                      Cast of:
+                        Applying untyped: 
+                            Name: ?!=?
+                        ...to: 
+                            Applying untyped: 
+                                Name: ?<?
+                            ...to: 
+                                Name: i
+constant expression 10 signed int                             Name: 0
+
+                      to:
+                        signed int 
+
+                    increment: 
+                      Applying untyped: 
+                          Name: ?+=?
+                      ...to: 
+                          Address of:
+                            Name: i
+                          Name: 1
+
+                    statement block: 
+                      CompoundStmt
+                                                  Labels: {C,}
+                          For Statement
+                            initialization: 
+                              Expression Statement:
+                                Applying untyped: 
+                                    Name: ?=?
+                                ...to: 
+                                    Address of:
+                                      Name: i
+                                    Name: 0
+
+                            condition: 
+                              Cast of:
+                                Applying untyped: 
+                                    Name: ?!=?
+                                ...to: 
+                                    Applying untyped: 
+                                        Name: ?<?
+                                    ...to: 
+                                        Name: i
+constant expression 10 signed int                                     Name: 0
+
+                              to:
+                                signed int 
+
+                            increment: 
+                              Applying untyped: 
+                                  Name: ?+=?
+                              ...to: 
+                                  Address of:
+                                    Name: i
+                                  Name: 1
+
+                            statement block: 
+                              CompoundStmt
+                                                                  Branch (Goto)
+
+                                                                  Branch (Goto)
+
+                                                                  Branch (Goto)
+
+                                                                  Branch (Continue)
+
+                                                                  Branch (Continue)
+
+                                                                  Branch (Continue)
+
+                                                                  Branch (Continue)
+
+                                                                  Branch (Break)
+
+                                                                  Branch (Break)
+
+                                                                  Branch (Break)
+
+                                                                  Branch (Break)
+
+
+
+
+
+
+
+                  Labels: {D,}
+          For Statement
+            initialization: 
+
+            condition: 
+
+            increment: 
+
+            statement block: 
+              CompoundStmt
+                                  Branch (Break)
+
+                                  Branch (Continue)
+
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?+=?
+            ...to: 
+                Address of:
+                  Name: i
+                Name: 1
+
+                  Branch (Goto)
+
+                  Labels: {X,Y,}
+          For Statement
+            initialization: 
+
+            condition: 
+
+            increment: 
+
+            statement block: 
+              CompoundStmt
+                                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?+=?
+                    ...to: 
+                        Address of:
+                          Name: i
+                        Name: 1
+
+                                  If on condition: 
+                      Cast of:
+                        Applying untyped: 
+                            Name: ?!=?
+                        ...to: 
+                            Applying untyped: 
+                                Name: ?>?
+                            ...to: 
+                                Name: i
+constant expression 5 signed int                             Name: 0
+
+                      to:
+                        signed int 
+                  .... and branches: 
+                      Branch (Continue)
+
+                                  If on condition: 
+                      Cast of:
+                        Applying untyped: 
+                            Name: ?!=?
+                        ...to: 
+                            Applying untyped: 
+                                Name: ?<?
+                            ...to: 
+                                Name: i
+constant expression 5 signed int                             Name: 0
+
+                      to:
+                        signed int 
+                  .... and branches: 
+                      Branch (Break)
+
+                                  If on condition: 
+                      Cast of:
+                        Applying untyped: 
+                            Name: ?!=?
+                        ...to: 
+                            Applying untyped: 
+                                Name: ?<?
+                            ...to: 
+                                Name: i
+constant expression 5 signed int                             Name: 0
+
+                      to:
+                        signed int 
+                  .... and branches: 
+                      Branch (Break)
+
+                                  Branch (Break)
+
+
+
+                  Labels: {XX,}
+          For Statement
+            initialization: 
+
+            condition: 
+
+            increment: 
+
+            statement block: 
+              CompoundStmt
+                                  Labels: {YY,}
+                  For Statement
+                    initialization: 
+
+                    condition: 
+
+                    increment: 
+
+                    statement block: 
+                      CompoundStmt
+                                                  Labels: {ZZ,}
+                          For Statement
+                            initialization: 
+
+                            condition: 
+
+                            increment: 
+
+                            statement block: 
+                              CompoundStmt
+                                                                  Expression Statement:
+                                    Applying untyped: 
+                                        Name: ?+=?
+                                    ...to: 
+                                        Address of:
+                                          Name: i
+                                        Name: 1
+
+                                                                  If on condition: 
+                                      Cast of:
+                                        Applying untyped: 
+                                            Name: ?!=?
+                                        ...to: 
+                                            Applying untyped: 
+                                                Name: ?>?
+                                            ...to: 
+                                                Name: i
+constant expression 5 signed int                                             Name: 0
+
+                                      to:
+                                        signed int 
+                                  .... and branches: 
+                                      Branch (Continue)
+
+                                                                  If on condition: 
+                                      Cast of:
+                                        Applying untyped: 
+                                            Name: ?!=?
+                                        ...to: 
+                                            Applying untyped: 
+                                                Name: ?<?
+                                            ...to: 
+                                                Name: i
+constant expression 5 signed int                                             Name: 0
+
+                                      to:
+                                        signed int 
+                                  .... and branches: 
+                                      Branch (Continue)
+
+                                                                  If on condition: 
+                                      Cast of:
+                                        Applying untyped: 
+                                            Name: ?!=?
+                                        ...to: 
+                                            Applying untyped: 
+                                                Name: ?<?
+                                            ...to: 
+                                                Name: i
+constant expression 5 signed int                                             Name: 0
+
+                                      to:
+                                        signed int 
+                                  .... and branches: 
+                                      Branch (Continue)
+
+                                                                  If on condition: 
+                                      Cast of:
+                                        Applying untyped: 
+                                            Name: ?!=?
+                                        ...to: 
+                                            Applying untyped: 
+                                                Name: ?>?
+                                            ...to: 
+                                                Name: i
+constant expression 5 signed int                                             Name: 0
+
+                                      to:
+                                        signed int 
+                                  .... and branches: 
+                                      Branch (Break)
+
+                                                                  If on condition: 
+                                      Cast of:
+                                        Applying untyped: 
+                                            Name: ?!=?
+                                        ...to: 
+                                            Applying untyped: 
+                                                Name: ?<?
+                                            ...to: 
+                                                Name: i
+constant expression 5 signed int                                             Name: 0
+
+                                      to:
+                                        signed int 
+                                  .... and branches: 
+                                      Branch (Break)
+
+                                                                  If on condition: 
+                                      Cast of:
+                                        Applying untyped: 
+                                            Name: ?!=?
+                                        ...to: 
+                                            Applying untyped: 
+                                                Name: ?<?
+                                            ...to: 
+                                                Name: i
+constant expression 5 signed int                                             Name: 0
+
+                                      to:
+                                        signed int 
+                                  .... and branches: 
+                                      Branch (Break)
+
+                                                                  Branch (Break)
+
+
+
+
+
+
+
+                  Labels: {}
+          For Statement
+            initialization: 
+
+            condition: 
+
+            increment: 
+
+            statement block: 
+              Null Statement
+
+
+                  Labels: {}
+          For Statement
+            initialization: 
+Declaration of i: signed int with initializer 
+              Simple Initializer:                 Name: 0
+
+            condition: 
+
+            increment: 
+
+            statement block: 
+              Null Statement
+
+
+                  Labels: {}
+          For Statement
+            initialization: 
+
+            condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Applying untyped: 
+                        Name: ?<?
+                    ...to: 
+                        Name: i
+                        Name: 0
+                    Name: 0
+
+              to:
+                signed int 
+
+            increment: 
+
+            statement block: 
+              Null Statement
+
+
+                  Labels: {}
+          For Statement
+            initialization: 
+
+            condition: 
+
+            increment: 
+              Applying untyped: 
+                  Name: ?+=?
+              ...to: 
+                  Address of:
+                    Name: i
+                  Name: 1
+
+            statement block: 
+              Null Statement
+
+
+                  Labels: {L0,L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,L13,L14,L15,L16,L17,L18,L19,L20,L21,L22,L23,L24,L25,L26,L27,L28,L29,L31,L32,L33,L34,}
+          For Statement
+            initialization: 
+
+            condition: 
+
+            increment: 
+
+            statement block: 
+              CompoundStmt
+                                  Branch (Break)
+
+
+
+                  Switch on condition: Name: i
+
+              Default 
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?+=?
+                    ...to: 
+                        Address of:
+                          Name: i
+                        Name: 1
+              Case Name: 0
+
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?+=?
+                    ...to: 
+                        Address of:
+                          Name: i
+                        Name: 1
+                  Branch (Break)
+              Case Name: 1
+
+                  Switch on condition: Name: i
+
+                      Case Name: 0
+
+                          Branch (Break)
+                      Default 
+                          Branch (Break)
+
+                  Choose on condition: Name: i
+
+              Default 
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?+=?
+                    ...to: 
+                        Address of:
+                          Name: i
+                        Name: 1
+              Case Name: 0
+
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?+=?
+                    ...to: 
+                        Address of:
+                          Name: i
+                        Name: 1
+                  Branch (Break)
+              Case Name: 1
+
+                  Choose on condition: Name: i
+
+                      Case Name: 0
+
+                          Branch (Break)
+                      Default 
+                          Branch (Break)
+                  Fall-through statement
+              Case constant expression 2 signed int 
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?+=?
+                    ...to: 
+                        Address of:
+                          Name: i
+                        Name: 1
+
+                  CompoundStmt
+            Declaration of array: static open array of pointer to void with initializer 
+              Compound initializer:  
+                Simple Initializer:                   Applying untyped: 
+                      Name: LabAddress
+                  ...to: 
+                      Name: foo
+
+                Simple Initializer:                   Applying untyped: 
+                      Name: LabAddress
+                  ...to: 
+                      Name: bar
+
+                Simple Initializer:                   Applying untyped: 
+                      Name: LabAddress
+                  ...to: 
+                      Name: hack
+
+                          Branch (Goto)
+
+
+                  If on condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Applying untyped: 
+                        Name: ?>?
+                    ...to: 
+                        Name: i
+constant expression 5 signed int                     Name: 0
+
+              to:
+                signed int 
+          .... and branches: 
+              CompoundStmt
+                                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?+=?
+                    ...to: 
+                        Address of:
+                          Name: i
+                        Name: 1
+
+                                  Branch (Break)
+
+              Expression Statement:
+                Applying untyped: 
+                    Name: ?+=?
+                ...to: 
+                    Address of:
+                      Name: i
+                    Name: 1
+
+
Index: src/Tests/Expect-v/Members.txt
===================================================================
--- src/Tests/Expect-v/Members.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Members.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,383 @@
+?=?: function
+    with parameters
+      pointer to char 
+      char 
+    returning 
+      char 
+
+?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+?=?: function
+    with parameters
+      pointer to float 
+      float 
+    returning 
+      float 
+
+?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+*?: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      pointer to instance of type T (not function type) 
+    returning 
+      lvalue instance of type T (not function type) 
+
+__builtin_memcpy: function
+      accepting unspecified arguments
+    returning 
+      pointer to char 
+
+a: function
+    with parameters
+      char 
+    returning 
+      nothing 
+
+b: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+c: function
+    with parameters
+      pointer to signed int 
+    returning 
+      nothing 
+
+d: function
+    with parameters
+      pointer to float 
+    returning 
+      nothing 
+
+struct a_struct
+    with members
+      a: signed int 
+      a: char 
+      a: float 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct a_struct 
+      _src: instance of struct a_struct 
+    returning 
+      instance of struct a_struct 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    a: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct a_struct 
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct a_struct 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    a: char 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct a_struct 
+                Member Expression, with field: 
+                  a: char 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct a_struct 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    a: float 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct a_struct 
+                Member Expression, with field: 
+                  a: float 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct a_struct 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct a_struct 
+
+
+
+union b_struct
+    with members
+      a: pointer to signed int 
+      a: pointer to char 
+      a: pointer to float 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of union b_struct 
+      _src: instance of union b_struct 
+    returning 
+      instance of union b_struct 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: __builtin_memcpy
+            ...to: 
+                Variable Expression: _dst: pointer to instance of union b_struct 
+                Address of:
+                  Variable Expression: _src: instance of union b_struct 
+                Sizeof Expression on: instance of union b_struct 
+
+                  Return Statement, returning: Variable Expression: _src: instance of union b_struct 
+
+
+
+f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of the_struct: instance of struct a_struct 
+        Declaration of the_struct: instance of union b_struct 
+                  Expression Statement:
+            Applying untyped: 
+                Name: a
+            ...to: 
+                Member Expression, with field: a                from aggregate:                   Name: the_struct
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: b
+            ...to: 
+                Member Expression, with field: a                from aggregate:                   Name: the_struct
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: c
+            ...to: 
+                Member Expression, with field: a                from aggregate:                   Name: the_struct
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: d
+            ...to: 
+                Member Expression, with field: a                from aggregate:                   Name: the_struct
+
+
+struct c_struct
+    with members
+      signed int 
+      char 
+      float 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct c_struct 
+      _src: instance of struct c_struct 
+    returning 
+      instance of struct c_struct 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct c_struct 
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct c_struct 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    char 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct c_struct 
+                Member Expression, with field: 
+                  char 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct c_struct 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    float 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct c_struct 
+                Member Expression, with field: 
+                  float 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct c_struct 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct c_struct 
+
+
+
+union d_struct
+    with members
+      pointer to signed int 
+      pointer to char 
+      pointer to float 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of union d_struct 
+      _src: instance of union d_struct 
+    returning 
+      instance of union d_struct 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: __builtin_memcpy
+            ...to: 
+                Variable Expression: _dst: pointer to instance of union d_struct 
+                Address of:
+                  Variable Expression: _src: instance of union d_struct 
+                Sizeof Expression on: instance of union d_struct 
+
+                  Return Statement, returning: Variable Expression: _src: instance of union d_struct 
+
+
+
+g: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of x: short unsigned int 
+        Declaration of x: instance of struct c_struct 
+        Declaration of x: instance of union d_struct 
+                  Expression Statement:
+            Applying untyped: 
+                Name: a
+            ...to: 
+                Name: x
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: b
+            ...to: 
+                Name: x
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: c
+            ...to: 
+                Name: x
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: d
+            ...to: 
+                Name: x
+
+
+struct forward
+q: pointer to instance of struct forward 
+struct forward
+    with members
+      y: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct forward 
+      _src: instance of struct forward 
+    returning 
+      instance of struct forward 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    y: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct forward 
+                Member Expression, with field: 
+                  y: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct forward 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct forward 
+
+
+
+h: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Member Expression, with field: y            from aggregate:               Applying untyped: 
+                  Name: *?
+              ...to: 
+                  Name: q
+
+
Index: src/Tests/Expect-v/Misc.txt
===================================================================
--- src/Tests/Expect-v/Misc.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Misc.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,55 @@
+a: signed int 
+b: signed int 
+b: float 
+g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+g: function
+    with parameters
+      unsigned int 
+    returning 
+      nothing 
+
+f: function
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Comma Expression:
+                  Name: a
+
+                  Name: b
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Comma Expression:
+                  Comma Expression:
+                    Name: a
+
+                    Name: a
+
+                  Name: b
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Sizeof Expression on:                   Name: a
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Sizeof Expression on: signed int 
+
+
Index: src/Tests/Expect-v/MiscError.txt
===================================================================
--- src/Tests/Expect-v/MiscError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/MiscError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,52 @@
+a: signed int 
+b: signed int 
+b: float 
+g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+f: function
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Comma Expression:
+                  Name: b
+
+                  Name: a
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Comma Expression:
+                  Comma Expression:
+                    Name: b
+
+                    Name: a
+
+                  Name: b
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Comma Expression:
+                  Comma Expression:
+                    Name: a
+
+                    Name: b
+
+                  Name: b
+
+                  Expression Statement:
+            Sizeof Expression on:               Name: b
+
+
+
Index: src/Tests/Expect-v/NamedParmArg.txt
===================================================================
--- src/Tests/Expect-v/NamedParmArg.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/NamedParmArg.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,94 @@
+f1: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer: constant expression 3 signed int 
+      j: pointer to signed int with initializer 
+        Simple Initializer:           Name: 0
+
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+f2: function
+    with parameters
+      i: signed int with initializer 
+        Simple Initializer: constant expression 3 signed int 
+      j: pointer to signed int 
+    returning 
+      signed int 
+      signed int 
+    with body 
+      CompoundStmt
+
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: f1
+            ...to: 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: f1
+            ...to: 
+constant expression 3 signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: f1
+            ...to: 
+constant expression 3 signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: f1
+            ...to: 
+constant expression 3 signed int                 Name: 0
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: f1
+            ...to: 
+constant expression 3 signed int                 Name: 0
+                with designator:                  Name: j
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: f1
+            ...to: 
+                Name: 0
+                with designator:                  Name: j
+constant expression 3 signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: f1
+            ...to: 
+constant expression 3 signed int                 with designator:                  Name: i
+                Name: 0
+                with designator:                  Name: j
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: f1
+            ...to: 
+                Name: 0
+                with designator:                  Name: j
+constant expression 3 signed int                 with designator:                  Name: i
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: f1
+            ...to: 
+                Applying untyped: 
+                    Name: f2
+                ...to: 
+                with designator:                  Tuple:
+                                          Name: j
+
+                                          Name: i
+
+
+
Index: src/Tests/Expect-v/NumericConstants.txt
===================================================================
--- src/Tests/Expect-v/NumericConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/NumericConstants.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,88 @@
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Name: 1
+
+                  Expression Statement:
+constant expression 21 signed int 
+                  Expression Statement:
+constant expression 2147483647 signed int 
+                  Expression Statement:
+constant expression 37LL long long signed int 
+                  Expression Statement:
+constant expression 45ull long long unsigned int 
+                  Expression Statement:
+constant expression 89llu long long unsigned int 
+                  Expression Statement:
+constant expression 99LLu long long unsigned int 
+                  Expression Statement:
+constant expression 56lu long unsigned int 
+                  Expression Statement:
+constant expression 88LLu long long unsigned int 
+                  Expression Statement:
+constant expression 0u unsigned int 
+                  Expression Statement:
+constant expression 0377 signed int 
+                  Expression Statement:
+constant expression 0377ul long unsigned int 
+                  Expression Statement:
+constant expression 0x1 signed int 
+                  Expression Statement:
+constant expression 0x1u unsigned int 
+                  Expression Statement:
+constant expression 0xabL long signed int 
+                  Expression Statement:
+constant expression 0x80000000 unsigned int 
+                  Expression Statement:
+constant expression 0xfff signed int 
+                  Expression Statement:
+constant expression 0xef3daa5c unsigned int 
+                  Expression Statement:
+constant expression 0x3LL long long signed int 
+                  Expression Statement:
+constant expression 3. double 
+                  Expression Statement:
+constant expression 3100. double 
+                  Expression Statement:
+constant expression 1000000. double 
+                  Expression Statement:
+constant expression 3.1 double 
+                  Expression Statement:
+constant expression 3.141592654L long double 
+                  Expression Statement:
+constant expression 123456.123456 double 
+                  Expression Statement:
+constant expression 3E1 double 
+                  Expression Statement:
+constant expression 3e1f float 
+                  Expression Statement:
+constant expression 3E11F float 
+                  Expression Statement:
+constant expression 3E11 double 
+                  Expression Statement:
+constant expression 3e+11 double 
+                  Expression Statement:
+constant expression 3E-11 double 
+                  Expression Statement:
+constant expression 3.0E1 double 
+                  Expression Statement:
+constant expression 3.0E1L long double 
+                  Expression Statement:
+constant expression 3.0e11 double 
+                  Expression Statement:
+constant expression 3.0E11l long double 
+                  Expression Statement:
+constant expression 3.0e+11l long double 
+                  Expression Statement:
+constant expression 3.0E-11 double 
+                  Expression Statement:
+constant expression 123456.123456E-16 double 
+                  Expression Statement:
+constant expression 0xff.ffp0 double 
+                  Expression Statement:
+constant expression 0x1.ffffffffp128l long double 
+
Index: src/Tests/Expect-v/OccursError.txt
===================================================================
--- src/Tests/Expect-v/OccursError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/OccursError.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,54 @@
+f: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      pointer to function
+          with parameters
+            instance of type T (not function type) 
+            pointer to instance of type T (not function type) 
+          returning 
+            nothing 
+
+    returning 
+      nothing 
+
+g: forall
+      U: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      pointer to instance of type U (not function type) 
+      instance of type U (not function type) 
+    returning 
+      nothing 
+
+test: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: f
+            ...to: 
+                Name: g
+
+
Index: src/Tests/Expect-v/Operators.txt
===================================================================
--- src/Tests/Expect-v/Operators.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Operators.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,114 @@
+?*?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+?(): function
+    with parameters
+      number1: signed int 
+      number2: signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Applying untyped: 
+    Name: ?*?
+...to: 
+    Name: number1
+    Name: number2
+
+
+
+?+?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+struct accumulator
+    with members
+      total: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct accumulator 
+      _src: instance of struct accumulator 
+    returning 
+      instance of struct accumulator 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    total: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct accumulator 
+                Member Expression, with field: 
+                  total: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct accumulator 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct accumulator 
+
+
+
+?(): function
+    with parameters
+      a: instance of struct accumulator 
+      number1: char 
+      number2: char 
+    returning 
+      char 
+
+f: function
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of a: char 
+        Declaration of b: char 
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?()
+            ...to: 
+                Name: a
+                Name: b
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: a
+            ...to: 
+                Name: b
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?+?
+            ...to: 
+                Name: a
+                Name: b
+
+        Declaration of ?+?: instance of struct accumulator 
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?+?
+            ...to: 
+                Name: a
+                Name: b
+
+
Index: src/Tests/Expect-v/Quad.txt
===================================================================
--- src/Tests/Expect-v/Quad.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Quad.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,93 @@
+?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+?*?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+square: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?*?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      t: instance of type T (not function type) 
+    returning 
+      instance of type T (not function type) 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Applying untyped: 
+    Name: ?*?
+...to: 
+    Name: t
+    Name: t
+
+
+
+quad: forall
+      U: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type U (not function type) 
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+          square: pointer to function
+              with parameters
+                instance of type U (not function type) 
+              returning 
+                instance of type U (not function type) 
+
+
+    function
+    with parameters
+      u: instance of type U (not function type) 
+    returning 
+      instance of type U (not function type) 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Applying untyped: 
+    Name: square
+...to: 
+    Applying untyped: 
+        Name: square
+    ...to: 
+        Name: u
+
+
+
+f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: quad
+            ...to: 
+constant expression 7 signed int 
+
Index: src/Tests/Expect-v/Rank2.txt
===================================================================
--- src/Tests/Expect-v/Rank2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Rank2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,117 @@
+?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+?=?: forall
+      DT: incomplete type
+    function
+    with parameters
+      pointer to pointer to instance of type DT (not function type) 
+      pointer to instance of type DT (not function type) 
+    returning 
+      pointer to instance of type DT (not function type) 
+
+a: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of f: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              nothing 
+
+        Declaration of g: function
+            with parameters
+              p: pointer to forall
+                    U: type
+                      with assertions
+                        ?=?: pointer to function
+                            with parameters
+                              pointer to instance of type U (not function type) 
+                              instance of type U (not function type) 
+                            returning 
+                              instance of type U (not function type) 
+
+
+                  function
+                  with parameters
+                    instance of type U (not function type) 
+                  returning 
+                    nothing 
+
+            returning 
+              nothing 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Name: f
+
+
+g: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of h: function
+            with parameters
+              null: pointer to signed int 
+            returning 
+              nothing 
+
+        Declaration of id: forall
+              T: type
+                with assertions
+                  ?=?: pointer to function
+                      with parameters
+                        pointer to instance of type T (not function type) 
+                        instance of type T (not function type) 
+                      returning 
+                        instance of type T (not function type) 
+
+
+            function
+            with parameters
+              instance of type T (not function type) 
+            returning 
+              instance of type T (not function type) 
+
+        Declaration of 0: forall
+              T: incomplete type
+            pointer to instance of type T (not function type) 
+        Declaration of 0: signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: h
+            ...to: 
+                Applying untyped: 
+                    Name: id
+                ...to: 
+                    Applying untyped: 
+                        Name: id
+                    ...to: 
+                        Applying untyped: 
+                            Name: id
+                        ...to: 
+                            Name: 0
+
+
Index: src/Tests/Expect-v/Scope.txt
===================================================================
--- src/Tests/Expect-v/Scope.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Scope.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,282 @@
+x: signed int 
+z: double 
+struct __anonymous0
+    with members
+      a: signed int 
+      b: double 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    a: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+                Member Expression, with field: 
+                  a: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous0 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    b: double 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+                Member Expression, with field: 
+                  b: double 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous0 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 
+
+
+
+u: type for instance of struct __anonymous0 
+?=?: automatically generated function
+    with parameters
+      _dst: pointer to instance of type u (not function type) 
+      _src: instance of type u (not function type) 
+    returning 
+      instance of type u (not function type) 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type u (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type u (not function type) 
+
+    to:
+      instance of struct __anonymous0 
+
+
+
+f: function
+    with parameters
+      y: signed int 
+    returning 
+      signed int 
+
+q: double 
+w: function
+    with parameters
+      y: double 
+      v: instance of type u (not function type) 
+    returning 
+      double 
+    with body 
+      CompoundStmt
+        Declaration of x: type
+          with assertions
+            t: function
+                with parameters
+                  instance of type u (not function type) 
+                returning 
+                  instance of type x (not function type) 
+
+
+        Declaration of ?=?: automatically generated function
+            with parameters
+              _dst: pointer to instance of type x (not function type) 
+              _src: instance of type x (not function type) 
+            returning 
+              instance of type x (not function type) 
+
+        Declaration of u: instance of type u (not function type) with initializer 
+          Simple Initializer:             Name: y
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: u
+                Name: y
+
+        Declaration of z: instance of type x (not function type) with initializer 
+          Simple Initializer:             Applying untyped: 
+                Name: t
+            ...to: 
+                Name: u
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: z
+                Applying untyped: 
+                    Name: t
+                ...to: 
+                    Name: u
+
+
+p: double 
+context has_u
+    with parameters
+      z: type
+
+    with members
+      u: function
+          with parameters
+            instance of type z (not function type) 
+          returning 
+            instance of type z (not function type) 
+
+
+q: forall
+      t: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type t (not function type) 
+                instance of type t (not function type) 
+              returning 
+                instance of type t (not function type) 
+
+          u: pointer to function
+              with parameters
+                instance of type t (not function type) 
+              returning 
+                instance of type t (not function type) 
+
+
+    function
+    with parameters
+      the_t: instance of type t (not function type) 
+    returning 
+      double 
+    with body 
+      CompoundStmt
+        Declaration of y: instance of type t (not function type) with initializer 
+          Simple Initializer:             Applying untyped: 
+                Name: u
+            ...to: 
+                Name: the_t
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: y
+                Applying untyped: 
+                    Name: u
+                ...to: 
+                    Name: the_t
+
+
+f: function
+    with parameters
+      p: double 
+    returning 
+      float 
+    with body 
+      CompoundStmt
+        Declaration of y: signed int 
+                  CompoundStmt
+            Declaration of y: char 
+                          CompoundStmt
+                Declaration of x: char 
+                Declaration of z: char with initializer 
+                  Simple Initializer:                     Name: x
+
+                                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Name: z
+                        Name: x
+
+
+            Declaration of x: char with initializer 
+              Simple Initializer:                 Name: y
+
+                          Expression Statement:
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Name: x
+                    Name: y
+
+
+        Declaration of q: char with initializer 
+          Simple Initializer:             Name: y
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: q
+                Name: y
+
+
+g: function
+    returning 
+      float 
+    with body 
+      CompoundStmt
+                  Try Statement
+            with block: 
+              CompoundStmt
+                                  Expression Statement:
+                    Applying untyped: 
+                        Name: some_func
+                    ...to: 
+
+            and handlers: 
+              Catch Statement
+              ... catching
+x: char 
+
+        Declaration of z: char 
+
+q: function
+      accepting unspecified arguments
+    returning 
+      double 
+    with parameter names
+      i
+    with parameter declarations
+      i: signed int 
+    with body 
+      CompoundStmt
+                  Switch on condition: Name: i
+
+              Case Name: 0
+
+                  Return Statement, returning: Name: q
+
+              Default 
+                  Return Statement, returning: Name: i
+
+
+
Index: src/Tests/Expect-v/ScopeErrors.txt
===================================================================
--- src/Tests/Expect-v/ScopeErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/ScopeErrors.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,8 @@
+Error: duplicate function definition for butThisIsAnError: function
+  with parameters
+    double 
+  returning 
+    double 
+  with body 
+    CompoundStmt
+
Index: src/Tests/Expect-v/ShortCircuit.txt
===================================================================
--- src/Tests/Expect-v/ShortCircuit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/ShortCircuit.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,105 @@
+?!=?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+?!=?: function
+    with parameters
+      float 
+      float 
+    returning 
+      signed int 
+
+0: signed int 
+g: function
+    with parameters
+      float 
+    returning 
+      nothing 
+
+g: function
+    with parameters
+      signed int 
+    returning 
+      nothing 
+
+f: function
+    with parameters
+      a: signed int 
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of b: signed int 
+        Declaration of c: float 
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Conditional expression on: 
+                  Cast of:
+                    Applying untyped: 
+                        Name: ?!=?
+                    ...to: 
+                        Name: a
+                        Name: 0
+
+                  to:
+                    signed int 
+                First alternative:
+                  Name: b
+                Second alternative:
+                  Name: c
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Short-circuited operation (and) on: Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Name: a
+      Name: 0
+
+to:
+  signed int 
+ and Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Name: c
+      Name: 0
+
+to:
+  signed int 
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Short-circuited operation (or) on: Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Name: a
+      Name: 0
+
+to:
+  signed int 
+ and Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Name: b
+      Name: 0
+
+to:
+  signed int 
+
+
+
Index: src/Tests/Expect-v/Statement.txt
===================================================================
--- src/Tests/Expect-v/Statement.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Statement.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,108 @@
+?=?: function
+    with parameters
+      pointer to signed int 
+      signed int 
+    returning 
+      signed int 
+
+?!=?: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+0: signed int 
+f: function
+      accepting unspecified arguments
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of a: signed int 
+        Declaration of struct __anonymous0
+            with members
+              b: signed int 
+
+        Declaration of ?=?: automatically generated inline function
+            with parameters
+              _dst: pointer to instance of struct __anonymous0 
+              _src: instance of struct __anonymous0 
+            returning 
+              instance of struct __anonymous0 
+            with body 
+              CompoundStmt
+                                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Member Expression, with field: 
+                            b: signed int 
+                          from aggregate: 
+                            Applying untyped: 
+                                Name: *?
+                            ...to: 
+                                Variable Expression: _dst: pointer to instance of struct __anonymous0 
+                        Member Expression, with field: 
+                          b: signed int 
+                        from aggregate: 
+                          Variable Expression: _src: instance of struct __anonymous0 
+
+                                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 
+
+
+
+        Declaration of a: instance of struct __anonymous0 
+                  If on condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Name: a
+                    Name: 0
+
+              to:
+                signed int 
+          .... and branches: 
+              CompoundStmt
+                                  While on condition: 
+                      Cast of:
+                        Applying untyped: 
+                            Name: ?!=?
+                        ...to: 
+                            Name: a
+                            Name: 0
+
+                      to:
+                        signed int 
+                  .... with body: 
+                      CompoundStmt
+                        Declaration of b: pointer to signed int 
+                                                  Labels: {}
+                          For Statement
+                            initialization: 
+                              Expression Statement:
+                                Name: b
+
+                            condition: 
+                              Cast of:
+                                Applying untyped: 
+                                    Name: ?!=?
+                                ...to: 
+                                    Name: a
+                                    Name: 0
+
+                              to:
+                                signed int 
+
+                            increment: 
+                              Name: b
+
+                            statement block: 
+                              CompoundStmt
+
+
+
+
+
Index: src/Tests/Expect-v/StructMember.txt
===================================================================
--- src/Tests/Expect-v/StructMember.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/StructMember.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,693 @@
+struct S
+    with members
+      m1: signed int with bitfield width constant expression 3 signed int 
+      m2: signed int with bitfield width constant expression 4 signed int 
+      signed int with bitfield width constant expression 2 signed int 
+      signed int with bitfield width constant expression 3 signed int 
+      signed int with bitfield width constant expression 4 signed int 
+      m3: signed int 
+      m4: signed int 
+      m5: signed int 
+      m6: signed int 
+      m7: pointer to signed int 
+      m8: pointer to signed int 
+      m9: pointer to signed int 
+      m10: pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+      m11: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to signed int 
+
+      T: signed int 
+      T: signed int 
+      m12: pointer to signed int 
+      m13: pointer to signed int 
+      m14: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to signed int 
+
+      signed int 
+      signed int 
+      signed int 
+      signed int 
+      pointer to signed int 
+      signed int 
+      signed int 
+      pointer to signed int 
+      pointer to signed int 
+      pointer to signed int 
+      pointer to signed int 
+      pointer to signed int 
+      pointer to signed int 
+      pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+      pointer to pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct S 
+      _src: instance of struct S 
+    returning 
+      instance of struct S 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    m1: signed int with bitfield width constant expression 3 signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  m1: signed int with bitfield width constant expression 3 signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    m2: signed int with bitfield width constant expression 4 signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  m2: signed int with bitfield width constant expression 4 signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    m3: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  m3: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    m4: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  m4: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    m5: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  m5: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    m6: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  m6: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    m7: pointer to signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  m7: pointer to signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    m8: pointer to signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  m8: pointer to signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    m9: pointer to signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  m9: pointer to signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    m10: pointer to function
+                        accepting unspecified arguments
+                      returning 
+                        signed int 
+
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  m10: pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    m11: pointer to function
+                      with parameters
+                        signed int 
+                      returning 
+                        pointer to signed int 
+
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  m11: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    T: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    T: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    m12: pointer to signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  m12: pointer to signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    m13: pointer to signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  m13: pointer to signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    m14: pointer to function
+                      with parameters
+                        signed int 
+                      returning 
+                        pointer to signed int 
+
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  m14: pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      pointer to signed int 
+
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    pointer to signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    pointer to signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    pointer to signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    pointer to signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    pointer to signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    pointer to signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    pointer to signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  pointer to signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    pointer to function
+                        accepting unspecified arguments
+                      returning 
+                        signed int 
+
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  pointer to function
+                      accepting unspecified arguments
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    pointer to pointer to function
+                      with parameters
+                        signed int 
+                      returning 
+                        signed int 
+
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  pointer to pointer to function
+                    with parameters
+                      signed int 
+                    returning 
+                      signed int 
+
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S 
+                Member Expression, with field: 
+                  signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct S 
+
+
+
+s: instance of struct S 
+union U
+    with members
+      m1: array of signed int with dimension of constant expression 5 signed int 
+      m2: array of signed int with dimension of constant expression 5 signed int 
+      m3: pointer to signed int 
+      m4: pointer to signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of union U 
+      _src: instance of union U 
+    returning 
+      instance of union U 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: __builtin_memcpy
+            ...to: 
+                Variable Expression: _dst: pointer to instance of union U 
+                Address of:
+                  Variable Expression: _src: instance of union U 
+                Sizeof Expression on: instance of union U 
+
+                  Return Statement, returning: Variable Expression: _src: instance of union U 
+
+
+
+u: instance of union U 
Index: src/Tests/Expect-v/Subrange.txt
===================================================================
--- src/Tests/Expect-v/Subrange.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Subrange.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,409 @@
+context ordered
+    with parameters
+      T: type
+
+    with members
+      ?<?: function
+          with parameters
+            instance of type T (not function type) 
+            instance of type T (not function type) 
+          returning 
+            signed int 
+
+      ?<=?: function
+          with parameters
+            instance of type T (not function type) 
+            instance of type T (not function type) 
+          returning 
+            signed int 
+
+
+subrange: type for instance of type base_t (not function type) 
+  with parameters
+    base_t: type
+      with assertions
+        instance of context ordered 
+          with parameters
+            instance of type base_t (not function type) 
+
+
+
+?=?: automatically generated function
+    with parameters
+      _dst: pointer to instance of type subrange (not function type) 
+      _src: instance of type subrange (not function type) 
+    returning 
+      instance of type subrange (not function type) 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type subrange (not function type) 
+
+    to:
+      pointer to instance of type base_t (not function type) 
+    Cast of:
+      Variable Expression: _src: instance of type subrange (not function type) 
+
+    to:
+      instance of type base_t (not function type) 
+
+
+
+day_of_month: instance of type subrange (not function type) 
+  with parameters
+    unsigned int 
+          Name: 1
+
+    constant expression 31 signed int 
+
+lcase: instance of type subrange (not function type) 
+  with parameters
+    char 
+    constant expression 'a' char 
+    constant expression 'z' char 
+
+foo: instance of type subrange (not function type) 
+  with parameters
+    signed int 
+          Name: 0
+
+          Applying untyped: 
+          Name: ?&?
+      ...to: 
+          Applying untyped: 
+              Name: rand
+          ...to: 
+constant expression 0xF signed int 
+
+lbound: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      v: instance of type subrange (not function type) 
+        with parameters
+          instance of type T (not function type) 
+                      Name: low
+
+                      Name: high
+
+
+    returning 
+      instance of type T (not function type) 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Name: low
+
+
+
+hbound: forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+
+    function
+    with parameters
+      v: instance of type subrange (not function type) 
+        with parameters
+          instance of type T (not function type) 
+                      Name: low
+
+                      Name: high
+
+
+    returning 
+      instance of type T (not function type) 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Name: high
+
+
+
+lday: unsigned int with initializer 
+  Simple Initializer:     Applying untyped: 
+        Name: lbound
+    ...to: 
+        Name: day_of_month
+
+?=?: inline forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?<?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                signed int 
+
+          ?<=?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                signed int 
+
+
+    function
+    with parameters
+      target: pointer to instance of type subrange (not function type) 
+        with parameters
+          instance of type T (not function type) 
+                      Name: low
+
+                      Name: high
+
+
+      source: instance of type T (not function type) 
+    returning 
+      instance of type subrange (not function type) 
+        with parameters
+          instance of type T (not function type) 
+                      Name: low
+
+                      Name: high
+
+
+    with body 
+      CompoundStmt
+                  If on condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Short-circuited operation (and) on: Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Applying untyped: 
+          Name: ?<=?
+      ...to: 
+          Name: low
+          Name: source
+      Name: 0
+
+to:
+  signed int 
+ and Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Applying untyped: 
+          Name: ?<=?
+      ...to: 
+          Name: source
+          Name: high
+      Name: 0
+
+to:
+  signed int 
+
+                    Name: 0
+
+              to:
+                signed int 
+          .... and branches: 
+              Expression Statement:
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Applying untyped: 
+                          Name: *?
+                      ...to: 
+                          Cast of:
+                            Name: target
+
+                          to:
+                            pointer to instance of type T (not function type) 
+                    Name: source
+              Expression Statement:
+                Applying untyped: 
+                    Name: abort
+                ...to: 
+
+                  Return Statement, returning: Name: target
+
+
+
+?=?: inline forall
+      T: type
+        with assertions
+          ?=?: pointer to function
+              with parameters
+                pointer to instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                instance of type T (not function type) 
+
+          ?<?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                signed int 
+
+          ?<=?: pointer to function
+              with parameters
+                instance of type T (not function type) 
+                instance of type T (not function type) 
+              returning 
+                signed int 
+
+
+    function
+    with parameters
+      target: pointer to instance of type subrange (not function type) 
+        with parameters
+          instance of type T (not function type) 
+                      Name: t_low
+
+                      Name: t_high
+
+
+      source: instance of type subrange (not function type) 
+        with parameters
+          instance of type T (not function type) 
+                      Name: s_low
+
+                      Name: s_high
+
+
+    returning 
+      instance of type subrange (not function type) 
+        with parameters
+          instance of type T (not function type) 
+                      Name: t_low
+
+                      Name: t_high
+
+
+    with body 
+      CompoundStmt
+                  If on condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Short-circuited operation (and) on: Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Short-circuited operation (or) on: Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Applying untyped: 
+          Name: ?<=?
+      ...to: 
+          Name: t_low
+          Name: s_low
+      Name: 0
+
+to:
+  signed int 
+ and Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Applying untyped: 
+          Name: ?<=?
+      ...to: 
+          Name: t_low
+          Name: source
+      Name: 0
+
+to:
+  signed int 
+
+      Name: 0
+
+to:
+  signed int 
+ and Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Short-circuited operation (or) on: Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Applying untyped: 
+          Name: ?<=?
+      ...to: 
+          Name: s_high
+          Name: t_high
+      Name: 0
+
+to:
+  signed int 
+ and Cast of:
+  Applying untyped: 
+      Name: ?!=?
+  ...to: 
+      Applying untyped: 
+          Name: ?<=?
+      ...to: 
+          Name: source
+          Name: t_high
+      Name: 0
+
+to:
+  signed int 
+
+      Name: 0
+
+to:
+  signed int 
+
+                    Name: 0
+
+              to:
+                signed int 
+          .... and branches: 
+              Expression Statement:
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Applying untyped: 
+                          Name: *?
+                      ...to: 
+                          Cast of:
+                            Name: target
+
+                          to:
+                            pointer to instance of type T (not function type) 
+                    Name: source
+              Expression Statement:
+                Applying untyped: 
+                    Name: abort
+                ...to: 
+
+                  Return Statement, returning: Name: target
+
+
+
Index: src/Tests/Expect-v/Switch.txt
===================================================================
--- src/Tests/Expect-v/Switch.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Switch.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,131 @@
+fred: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of i: signed int 
+                  Switch on condition: Name: i
+
+              Case constant expression 3 signed int 
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Name: i
+                        Name: 1
+
+                  Switch on condition: Name: i
+
+              Default 
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Name: i
+                        Name: 1
+
+                  Switch on condition: constant expression 3 signed int 
+              Default 
+              Case constant expression 2 signed int 
+              Case constant expression 3 signed int 
+                  Expression Statement:
+constant expression 3 signed int 
+                  Switch on condition: Name: i
+
+
+                  Switch on condition: Name: i
+
+              Case Applying untyped: 
+    Name: Range
+...to: 
+constant expression 8 signed int constant expression 10 signed int 
+              Default 
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Name: i
+constant expression 3 signed int               Case constant expression 3 signed int 
+              Case Applying untyped: 
+    Name: Range
+...to: 
+constant expression 'A' char constant expression 'Z' char 
+              Case Applying untyped: 
+    Name: Range
+...to: 
+constant expression 5 signed int constant expression 6 signed int 
+              Case Tuple:
+  constant expression 2 signed int 
+  constant expression 4 signed int 
+
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Name: i
+constant expression 3 signed int                   Branch (Break)
+
+                  Choose on condition: Name: i
+
+              Case constant expression 3 signed int 
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Name: i
+                        Name: 1
+
+                  Choose on condition: Name: i
+
+              Default 
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Name: i
+                        Name: 1
+
+                  Choose on condition: Name: i
+
+              Case constant expression 3 signed int 
+              Case Applying untyped: 
+    Name: Range
+...to: 
+constant expression 'A' char constant expression 'Z' char 
+              Case Applying untyped: 
+    Name: Range
+...to: 
+constant expression 5 signed int constant expression 6 signed int 
+              Case Tuple:
+  constant expression 2 signed int 
+  constant expression 4 signed int 
+  constant expression 7 signed int 
+
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Name: i
+constant expression 3 signed int                   Fall-through statement
+              Default 
+                  Expression Statement:
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Name: i
+constant expression 3 signed int               Case Applying untyped: 
+    Name: Range
+...to: 
+constant expression 8 signed int constant expression 10 signed int 
+                  Fall-through statement
+
+
Index: src/Tests/Expect-v/Tuple.txt
===================================================================
--- src/Tests/Expect-v/Tuple.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Tuple.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,670 @@
+f: function
+    with parameters
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+g: function
+    with parameters
+      signed int 
+      signed int 
+      signed int 
+    returning 
+      signed int 
+
+h: static function
+    with parameters
+      a: signed int 
+      b: signed int 
+      c: pointer to signed int 
+      d: pointer to char 
+    returning 
+      signed int 
+      pointer to signed int 
+      pointer to signed int 
+      signed int 
+
+struct inner
+    with members
+      f2: signed int 
+      f3: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct inner 
+      _src: instance of struct inner 
+    returning 
+      instance of struct inner 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    f2: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct inner 
+                Member Expression, with field: 
+                  f2: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct inner 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    f3: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct inner 
+                Member Expression, with field: 
+                  f3: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct inner 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct inner 
+
+
+
+struct outer
+    with members
+      f1: signed int 
+      i: instance of struct inner 
+      f4: double 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct outer 
+      _src: instance of struct outer 
+    returning 
+      instance of struct outer 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    f1: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct outer 
+                Member Expression, with field: 
+                  f1: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct outer 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    i: instance of struct inner 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct outer 
+                Member Expression, with field: 
+                  i: instance of struct inner 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct outer 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    f4: double 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct outer 
+                Member Expression, with field: 
+                  f4: double 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct outer 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct outer 
+
+
+
+s: instance of struct outer 
+sp: pointer to instance of struct outer 
+t1: const volatile tuple of types
+    signed int 
+    signed int 
+
+t2: static const tuple of types
+    signed int 
+    const signed int 
+
+t3: static const tuple of types
+    signed int 
+    const signed int 
+
+printf: function
+    with parameters
+      fmt: pointer to char 
+      and a variable number of other arguments
+    returning 
+      rc: signed int 
+
+printf: function
+    with parameters
+      fmt: pointer to char 
+      and a variable number of other arguments
+    returning 
+      signed int 
+
+f1: function
+    with parameters
+      w: signed int 
+    returning 
+      x: short signed int 
+      y: unsigned int 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: y
+
+                                          Name: x
+
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Tuple:
+                                                  Name: x
+
+                                                  Name: y
+
+                    Tuple:
+                                              Name: w
+
+                      constant expression 23 signed int 
+
+
+g1: function
+    returning 
+      r: tuple of types
+          signed int 
+          char 
+          long signed int 
+          signed int 
+
+    with body 
+      CompoundStmt
+        Declaration of x: short signed int 
+        Declaration of p: short signed int 
+        Declaration of y: unsigned int 
+        Declaration of z: tuple of types
+            signed int 
+            signed int 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: x
+
+                                          Name: y
+
+                                          Name: z
+
+                Tuple:
+                                      Name: p
+
+                                      Applying untyped: 
+                        Name: f
+                    ...to: 
+constant expression 17 signed int 
+                  constant expression 3 signed int 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: x
+
+                                          Name: y
+
+                                          Name: z
+
+                Cast of:
+                  Tuple:
+                                          Name: p
+
+                                          Applying untyped: 
+                          Name: f
+                      ...to: 
+constant expression 17 signed int 
+                    constant expression 3 signed int 
+
+                to:
+                  short signed int 
+                  unsigned int 
+                  tuple of types
+                      signed int 
+                      signed int 
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: r
+                Tuple:
+                                      Name: x
+
+                                      Name: y
+
+                                      Name: z
+
+
+
+main: C function
+    with parameters
+      argc: signed int 
+      argv: pointer to pointer to char 
+    returning 
+      rc: signed int 
+    with body 
+      CompoundStmt
+        Declaration of a: signed int 
+        Declaration of b: signed int 
+        Declaration of c: signed int 
+        Declaration of d: signed int 
+        Declaration of t: instance of struct outer with initializer 
+          Compound initializer:  
+            Simple Initializer:               Tuple:
+                                  Name: 1
+
+                constant expression 7.0 double 
+
+              designated by:                 Name: f1
+                Name: f4
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: f
+            ...to: 
+                Tuple:
+                  constant expression 3 signed int 
+                  constant expression 5 signed int 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Tuple:
+                  constant expression 3 signed int 
+                  constant expression 5 signed int 
+constant expression 3 signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: f
+            ...to: 
+                Name: t1
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: g
+            ...to: 
+                Name: t1
+constant expression 3 signed int 
+                  Expression Statement:
+            Tuple:
+
+                  Expression Statement:
+            Tuple:
+              constant expression 3 signed int 
+              constant expression 5 signed int 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: a
+
+                                          Name: b
+
+constant expression 3 signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: a
+
+                                          Name: b
+
+                Tuple:
+                  constant expression 4.6 double 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: a
+
+                                          Name: b
+
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Tuple:
+                                                  Name: c
+
+                                                  Name: d
+
+                    Tuple:
+                      constant expression 3 signed int 
+                      constant expression 5 signed int 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: a
+
+                                          Name: b
+
+                                          Tuple:
+                                                  Name: c
+
+
+                Tuple:
+                  constant expression 2 signed int 
+                                      Tuple:
+                                              Name: a
+
+                                              Name: b
+
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: a
+
+                                          Name: b
+
+                Conditional expression on: 
+                  Cast of:
+                    Applying untyped: 
+                        Name: ?!=?
+                    ...to: 
+                        Applying untyped: 
+                            Name: ?>?
+                        ...to: 
+constant expression 3 signed int constant expression 4 signed int                         Name: 0
+
+                  to:
+                    signed int 
+                First alternative:
+                  Tuple:
+                                          Name: b
+
+                    constant expression 6 signed int 
+                Second alternative:
+                  Tuple:
+                    constant expression 7 signed int 
+                    constant expression 8 signed int 
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: t1
+                Tuple:
+                                      Name: a
+
+                                      Name: b
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: t1
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Name: t2
+                    Tuple:
+                                              Name: a
+
+                                              Name: b
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: a
+
+                                          Name: b
+
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Tuple:
+                                                  Name: c
+
+                                                  Name: d
+
+                    Applying untyped: 
+                        Name: ?+=?
+                    ...to: 
+                        Address of:
+                          Name: d
+                        Applying untyped: 
+                            Name: ?+=?
+                        ...to: 
+                            Address of:
+                              Name: c
+                            Name: 1
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: a
+
+                                          Name: b
+
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Tuple:
+                                                  Name: c
+
+                                                  Name: d
+
+                    Name: t1
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: a
+
+                                          Name: b
+
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Name: t1
+                    Tuple:
+                                              Name: c
+
+                                              Name: d
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: a
+
+                                          Name: b
+
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Name: t1
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Name: t2
+                        Tuple:
+                                                      Name: c
+
+                                                      Name: d
+
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: t1
+                Applying untyped: 
+                    Name: ?=?
+                ...to: 
+                    Address of:
+                      Tuple:
+                        constant expression 3 signed int 
+                        constant expression 4 signed int 
+                    Applying untyped: 
+                        Name: ?=?
+                    ...to: 
+                        Address of:
+                          Tuple:
+                            constant expression 3 signed int 
+                            constant expression 4 signed int 
+                        Applying untyped: 
+                            Name: ?=?
+                        ...to: 
+                            Address of:
+                              Name: t1
+                            Tuple:
+                              constant expression 3 signed int 
+                              constant expression 4 signed int 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: s
+                Tuple:
+                  constant expression 11 signed int 
+                  constant expression 12 signed int 
+                  constant expression 13 signed int 
+                  constant expression 3.14159 double 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: s
+                Applying untyped: 
+                    Name: h
+                ...to: 
+constant expression 3 signed int constant expression 3 signed int                     Name: 0
+constant expression "abc" array of char with dimension of constant expression 6 unsigned int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Tuple:
+                                          Name: a
+
+                                          Name: b
+
+                Applying untyped: 
+                    Name: h
+                ...to: 
+constant expression 3 signed int constant expression 3 signed int                     Name: 0
+constant expression "abc" array of char with dimension of constant expression 6 unsigned int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: sp
+                Name: sp
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: printf
+            ...to: 
+constant expression "expecting 3, 17, 23, 4; got %d, %d, %d, %d\n" array of char with dimension of constant expression 47 unsigned int                 Name: s
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: rc
+                Name: 0
+
+
Index: src/Tests/Expect-v/TypeGenerator.txt
===================================================================
--- src/Tests/Expect-v/TypeGenerator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/TypeGenerator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,406 @@
+context addable
+    with parameters
+      T: type
+
+    with members
+      ?+?: function
+          with parameters
+            instance of type T (not function type) 
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+      ?=?: function
+          with parameters
+            pointer to instance of type T (not function type) 
+            instance of type T (not function type) 
+          returning 
+            instance of type T (not function type) 
+
+
+struct __anonymous0
+    with members
+      data: instance of type T (not function type) 
+      next: pointer to instance of type List1 (not function type) 
+        with parameters
+          instance of type T (not function type) 
+
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    data: instance of type T (not function type) 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+                Member Expression, with field: 
+                  data: instance of type T (not function type) 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous0 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    next: pointer to instance of type List1 (not function type) 
+                    with parameters
+                      instance of type T (not function type) 
+
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+                Member Expression, with field: 
+                  next: pointer to instance of type List1 (not function type) 
+                  with parameters
+                    instance of type T (not function type) 
+
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous0 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 
+
+
+
+List1: type for pointer to instance of struct __anonymous0 
+  with parameters
+    T: type
+      with assertions
+        instance of context addable 
+          with parameters
+            instance of type T (not function type) 
+
+
+
+?=?: automatically generated function
+    with parameters
+      _dst: pointer to instance of type List1 (not function type) 
+      _src: instance of type List1 (not function type) 
+    returning 
+      instance of type List1 (not function type) 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type List1 (not function type) 
+
+    to:
+      pointer to pointer to instance of struct __anonymous0 
+    Cast of:
+      Variable Expression: _src: instance of type List1 (not function type) 
+
+    to:
+      pointer to instance of struct __anonymous0 
+
+
+
+li: instance of type List1 (not function type) 
+  with parameters
+    signed int 
+
+f: function
+    with parameters
+      g: pointer to function
+          with parameters
+            signed int 
+          returning 
+            instance of type List1 (not function type) 
+              with parameters
+                signed int 
+
+
+    returning 
+      signed int 
+
+h: function
+    with parameters
+      p: pointer to instance of type List1 (not function type) 
+        with parameters
+          signed int 
+
+    returning 
+      signed int 
+
+struct S2
+    with parameters
+      T: type
+
+    with members
+      i: instance of type T (not function type) 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct S2 
+      _src: instance of struct S2 
+    returning 
+      instance of struct S2 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    i: instance of type T (not function type) 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S2 
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S2 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct S2 
+
+
+
+v1: instance of struct S3 
+  with parameters
+    signed int 
+
+p: pointer to instance of struct S3 
+  with parameters
+    signed int 
+
+struct S24
+    with parameters
+      T: type
+
+    with members
+      i: instance of type T (not function type) 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct S24 
+      _src: instance of struct S24 
+    returning 
+      instance of struct S24 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    i: instance of type T (not function type) 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct S24 
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct S24 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct S24 
+
+
+
+v2: instance of struct S24 
+  with parameters
+    signed int 
+
+struct __anonymous1
+    with parameters
+      T: type
+
+    with members
+      i: instance of type T (not function type) 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous1 
+      _src: instance of struct __anonymous1 
+    returning 
+      instance of struct __anonymous1 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    i: instance of type T (not function type) 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous1 
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous1 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous1 
+
+
+
+v2: instance of struct __anonymous1 
+  with parameters
+    signed int 
+
+struct node
+    with parameters
+      T: type
+        with assertions
+          instance of context addable 
+            with parameters
+              instance of type T (not function type) 
+
+
+
+    with members
+      data: instance of type T (not function type) 
+      next: pointer to instance of struct node 
+        with parameters
+          instance of type T (not function type) 
+
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct node 
+      _src: instance of struct node 
+    returning 
+      instance of struct node 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    data: instance of type T (not function type) 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct node 
+                Member Expression, with field: 
+                  data: instance of type T (not function type) 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct node 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    next: pointer to instance of struct node 
+                    with parameters
+                      instance of type T (not function type) 
+
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct node 
+                Member Expression, with field: 
+                  next: pointer to instance of struct node 
+                  with parameters
+                    instance of type T (not function type) 
+
+                from aggregate: 
+                  Variable Expression: _src: instance of struct node 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct node 
+
+
+
+List: type for pointer to instance of struct node 
+  with parameters
+    instance of type T (not function type) 
+
+  with parameters
+    T: type
+
+?=?: automatically generated function
+    with parameters
+      _dst: pointer to instance of type List (not function type) 
+      _src: instance of type List (not function type) 
+    returning 
+      instance of type List (not function type) 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Applying untyped: 
+    Name: ?=?
+...to: 
+    Cast of:
+      Variable Expression: _dst: pointer to instance of type List (not function type) 
+
+    to:
+      pointer to pointer to instance of struct node 
+        with parameters
+          instance of type T (not function type) 
+
+    Cast of:
+      Variable Expression: _src: instance of type List (not function type) 
+
+    to:
+      pointer to instance of struct node 
+        with parameters
+          instance of type T (not function type) 
+
+
+
+
+my_list: instance of type List (not function type) 
+  with parameters
+    signed int 
+
+Complex: type
+  with assertions
+    instance of context addable 
+      with parameters
+        instance of type Complex (not function type) 
+
+
+?=?: automatically generated function
+    with parameters
+      _dst: pointer to instance of type Complex (not function type) 
+      _src: instance of type Complex (not function type) 
+    returning 
+      instance of type Complex (not function type) 
+
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Cast of:
+              Name: my_list
+
+            to:
+              instance of struct node 
+                with parameters
+                  signed int 
+
+
+
Index: src/Tests/Expect-v/Typedef.txt
===================================================================
--- src/Tests/Expect-v/Typedef.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Typedef.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,86 @@
+f: function
+    returning 
+      nothing 
+    with body 
+      CompoundStmt
+        Declaration of T: function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: T
+            ...to: 
+constant expression 3 signed int 
+
+struct __anonymous0
+    with members
+      T: signed int 
+
+?=?: automatically generated inline static function
+    with parameters
+      _dst: pointer to instance of struct __anonymous0 
+      _src: instance of struct __anonymous0 
+    returning 
+      instance of struct __anonymous0 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Member Expression, with field: 
+                    T: signed int 
+                  from aggregate: 
+                    Applying untyped: 
+                        Name: *?
+                    ...to: 
+                        Variable Expression: _dst: pointer to instance of struct __anonymous0 
+                Member Expression, with field: 
+                  T: signed int 
+                from aggregate: 
+                  Variable Expression: _src: instance of struct __anonymous0 
+
+                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 
+
+
+
+fred: instance of struct __anonymous0 with initializer 
+  Compound initializer:  
+    Simple Initializer: constant expression 3 signed int 
+b: pointer to function
+    with parameters
+      signed int 
+      char 
+    returning 
+      signed int 
+
+g: function
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of a: double 
+
+c: pointer to function
+    with parameters
+      signed int 
+      char 
+    returning 
+      signed int 
+
+p: type-of expression constant expression 3 signed int 
+q: type-of expression constant expression 3 signed int 
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of w: type-of expression constant expression 3 signed int 
+        Declaration of x: type-of expression constant expression 3 signed int 
+
+array: array of pointer to signed int with dimension of constant expression 10 signed int 
Index: src/Tests/Expect-v/TypedefDeclarator.txt
===================================================================
--- src/Tests/Expect-v/TypedefDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/TypedefDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,185 @@
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of f1: signed int 
+        Declaration of f2: signed int 
+        Declaration of f3: pointer to signed int 
+        Declaration of f4: pointer to pointer to signed int 
+        Declaration of f5: pointer to const pointer to signed int 
+        Declaration of f6: const pointer to const pointer to signed int 
+        Declaration of f7: pointer to signed int 
+        Declaration of f8: pointer to pointer to signed int 
+        Declaration of f9: pointer to const pointer to signed int 
+        Declaration of f10: const pointer to const pointer to signed int 
+        Declaration of f11: pointer to signed int 
+        Declaration of f12: pointer to pointer to signed int 
+        Declaration of f13: pointer to const pointer to signed int 
+        Declaration of f14: const pointer to const pointer to signed int 
+        Declaration of f15: open array of signed int 
+        Declaration of f16: array of signed int with dimension of constant expression 10 signed int 
+        Declaration of f17: open array of signed int 
+        Declaration of f18: array of signed int with dimension of constant expression 10 signed int 
+        Declaration of f19: open array of pointer to signed int 
+        Declaration of f20: array of pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f21: open array of pointer to pointer to signed int 
+        Declaration of f22: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f23: open array of pointer to const pointer to signed int 
+        Declaration of f24: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f25: open array of const pointer to const pointer to signed int 
+        Declaration of f26: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f27: open array of pointer to signed int 
+        Declaration of f28: array of pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f29: open array of pointer to pointer to signed int 
+        Declaration of f30: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f31: open array of pointer to const pointer to signed int 
+        Declaration of f32: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f33: open array of const pointer to const pointer to signed int 
+        Declaration of f34: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f35: open array of pointer to signed int 
+        Declaration of f36: array of pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f37: open array of pointer to pointer to signed int 
+        Declaration of f38: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f39: open array of pointer to const pointer to signed int 
+        Declaration of f40: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f41: open array of const pointer to const pointer to signed int 
+        Declaration of f42: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+        Declaration of f43: open array of array of signed int with dimension of constant expression 3 signed int 
+        Declaration of f44: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f45: open array of array of signed int with dimension of constant expression 3 signed int 
+        Declaration of f46: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f47: open array of array of signed int with dimension of constant expression 3 signed int 
+        Declaration of f48: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f49: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f50: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f51: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f52: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f53: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f54: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f55: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f56: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f57: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f58: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f59: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f60: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f61: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f62: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f63: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+        Declaration of f64: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+        Declaration of f65: function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f66: function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f67: function
+            with parameters
+              signed int 
+            returning 
+              pointer to signed int 
+
+        Declaration of f68: function
+            with parameters
+              signed int 
+            returning 
+              pointer to pointer to signed int 
+
+        Declaration of f69: function
+            with parameters
+              signed int 
+            returning 
+              pointer to const pointer to signed int 
+
+        Declaration of f70: function
+            with parameters
+              signed int 
+            returning 
+              const pointer to const pointer to signed int 
+
+        Declaration of f71: function
+            with parameters
+              signed int 
+            returning 
+              pointer to signed int 
+
+        Declaration of f72: function
+            with parameters
+              signed int 
+            returning 
+              pointer to pointer to signed int 
+
+        Declaration of f73: function
+            with parameters
+              signed int 
+            returning 
+              pointer to const pointer to signed int 
+
+        Declaration of f74: function
+            with parameters
+              signed int 
+            returning 
+              const pointer to const pointer to signed int 
+
+        Declaration of f75: pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f76: pointer to pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f77: pointer to const pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f78: const pointer to const pointer to function
+            with parameters
+              signed int 
+            returning 
+              signed int 
+
+        Declaration of f79: pointer to function
+            with parameters
+              signed int 
+            returning 
+              pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+
+        Declaration of f80: const pointer to function
+            with parameters
+              signed int 
+            returning 
+              pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+
+        Declaration of f81: const pointer to function
+            with parameters
+              signed int 
+            returning 
+              const pointer to function
+                    accepting unspecified arguments
+                  returning 
+                    signed int 
+
+
+
Index: src/Tests/Expect-v/TypedefParamDeclarator.txt
===================================================================
--- src/Tests/Expect-v/TypedefParamDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/TypedefParamDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,262 @@
+fred: function
+    with parameters
+      f1: signed int 
+      f3: pointer to signed int 
+      f4: pointer to pointer to signed int 
+      f5: pointer to const pointer to signed int 
+      f6: const pointer to const pointer to signed int 
+      f11: pointer to signed int 
+      f12: pointer to pointer to signed int 
+      f13: pointer to const pointer to signed int 
+      f14: const pointer to const pointer to signed int 
+      f15: pointer to signed int 
+      f16: pointer to array of constant expression 10 signed int signed int 
+      f19: pointer to pointer to signed int 
+      f20: pointer to array of constant expression 10 signed int pointer to signed int 
+      f21: pointer to pointer to pointer to signed int 
+      f22: pointer to array of constant expression 10 signed int pointer to pointer to signed int 
+      f23: pointer to pointer to const pointer to signed int 
+      f24: pointer to array of constant expression 10 signed int pointer to const pointer to signed int 
+      f25: pointer to const pointer to const pointer to signed int 
+      f26: pointer to array of constant expression 10 signed int const pointer to const pointer to signed int 
+      f35: pointer to pointer to signed int 
+      f36: pointer to array of constant expression 10 signed int pointer to signed int 
+      f37: pointer to pointer to pointer to signed int 
+      f38: pointer to array of constant expression 10 signed int pointer to pointer to signed int 
+      f39: pointer to pointer to const pointer to signed int 
+      f40: pointer to array of constant expression 10 signed int pointer to const pointer to signed int 
+      f41: pointer to const pointer to const pointer to signed int 
+      f42: pointer to array of constant expression 10 signed int const pointer to const pointer to signed int 
+      f43: pointer to array of signed int with dimension of constant expression 3 signed int 
+      f44: pointer to array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f49: pointer to array of pointer to signed int with dimension of constant expression 3 signed int 
+      f50: pointer to array of constant expression 3 signed int array of pointer to signed int with dimension of constant expression 3 signed int 
+      f51: pointer to array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f52: pointer to array of constant expression 3 signed int array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f53: pointer to array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f54: pointer to array of constant expression 3 signed int array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f55: pointer to array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f56: pointer to array of constant expression 3 signed int array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f57: pointer to array of pointer to signed int with dimension of constant expression 3 signed int 
+      f58: pointer to array of constant expression 3 signed int array of pointer to signed int with dimension of constant expression 3 signed int 
+      f59: pointer to array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f60: pointer to array of constant expression 3 signed int array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f61: pointer to array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f62: pointer to array of constant expression 3 signed int array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f63: pointer to array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f64: pointer to array of constant expression 3 signed int array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f65: pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f67: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to signed int 
+
+      f68: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to pointer to signed int 
+
+      f69: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to const pointer to signed int 
+
+      f70: pointer to function
+          with parameters
+            signed int 
+          returning 
+            const pointer to const pointer to signed int 
+
+      f75: pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f76: pointer to pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f77: pointer to const pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f78: const pointer to const pointer to function
+          with parameters
+            signed int 
+          returning 
+            signed int 
+
+      f79: pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  signed int 
+
+
+      f80: const pointer to function
+          with parameters
+            signed int 
+          returning 
+            pointer to function
+                  accepting unspecified arguments
+                returning 
+                  signed int 
+
+
+      f81: const pointer to function
+          with parameters
+            signed int 
+          returning 
+            const pointer to function
+                  accepting unspecified arguments
+                returning 
+                  signed int 
+
+
+      f82: const pointer to variable length array of signed int 
+      f83: const pointer to array of constant expression 3 signed int signed int 
+      f84: pointer to static array of constant expression 3 signed int signed int 
+      f85: const pointer to static array of constant expression 3 signed int signed int 
+      pointer to function
+          with parameters
+            const pointer to variable length array of signed int 
+          returning 
+            signed int 
+
+      pointer to function
+          with parameters
+            const pointer to array of constant expression 3 signed int signed int 
+          returning 
+            signed int 
+
+      pointer to function
+          with parameters
+            pointer to static array of constant expression 3 signed int signed int 
+          returning 
+            signed int 
+
+      pointer to function
+          with parameters
+            const pointer to static array of constant expression 3 signed int signed int 
+          returning 
+            signed int 
+
+      f90: const pointer to variable length array of pointer to signed int 
+      f91: const pointer to array of constant expression 3 signed int pointer to signed int 
+      f92: pointer to static array of constant expression 3 signed int pointer to pointer to signed int 
+      f93: const pointer to static array of constant expression 3 signed int pointer to const pointer to signed int 
+      f94: const pointer to static array of constant expression 3 signed int const pointer to const pointer to signed int 
+      pointer to function
+          with parameters
+            const pointer to variable length array of signed int 
+          returning 
+            pointer to signed int 
+
+      pointer to function
+          with parameters
+            const pointer to array of constant expression 3 signed int signed int 
+          returning 
+            pointer to signed int 
+
+      pointer to function
+          with parameters
+            pointer to static array of constant expression 3 signed int signed int 
+          returning 
+            pointer to pointer to signed int 
+
+      pointer to function
+          with parameters
+            const pointer to static array of constant expression 3 signed int signed int 
+          returning 
+            pointer to const pointer to signed int 
+
+      pointer to function
+          with parameters
+            const pointer to static array of constant expression 3 signed int signed int 
+          returning 
+            const pointer to const pointer to signed int 
+
+      f100: const pointer to variable length array of array of signed int with dimension of constant expression 3 signed int 
+      f101: const pointer to array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f102: pointer to static array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      f103: const pointer to static array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+      pointer to function
+          with parameters
+            const pointer to variable length array of array of signed int with dimension of constant expression 3 signed int 
+          returning 
+            signed int 
+
+      pointer to function
+          with parameters
+            const pointer to array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+          returning 
+            signed int 
+
+      pointer to function
+          with parameters
+            pointer to static array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+          returning 
+            signed int 
+
+      pointer to function
+          with parameters
+            const pointer to static array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+          returning 
+            signed int 
+
+      f108: const pointer to variable length array of array of pointer to signed int with dimension of constant expression 3 signed int 
+      f109: const pointer to array of constant expression 3 signed int array of pointer to signed int with dimension of constant expression 3 signed int 
+      f110: pointer to static array of constant expression 3 signed int array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+      f111: const pointer to static array of constant expression 3 signed int array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      f112: const pointer to static array of constant expression 3 signed int array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+      pointer to function
+          with parameters
+            const pointer to variable length array of array of signed int with dimension of constant expression 3 signed int 
+          returning 
+            pointer to signed int 
+
+      pointer to function
+          with parameters
+            const pointer to array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+          returning 
+            pointer to signed int 
+
+      pointer to function
+          with parameters
+            pointer to static array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+          returning 
+            pointer to pointer to signed int 
+
+      pointer to function
+          with parameters
+            const pointer to static array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+          returning 
+            pointer to const pointer to signed int 
+
+      pointer to function
+          with parameters
+            const pointer to static array of constant expression 3 signed int array of signed int with dimension of constant expression 3 signed int 
+          returning 
+            const pointer to const pointer to signed int 
+
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
Index: src/Tests/Expect-v/Typeof.txt
===================================================================
--- src/Tests/Expect-v/Typeof.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/Typeof.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,32 @@
+main: C function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of v1: pointer to signed int 
+        Declaration of v2: type-of expression           Name: v1
+
+        Declaration of v3: array of type-of expression           Applying untyped: 
+              Name: *?
+          ...to: 
+              Name: v1
+with dimension of constant expression 4 signed int 
+        Declaration of v4: array of pointer to char with dimension of constant expression 4 signed int 
+        Declaration of v5: array of pointer to char with dimension of constant expression 4 signed int 
+        Declaration of v6: pointer to signed int 
+        Declaration of v7: pointer to function
+            with parameters
+              signed int 
+              p: signed int 
+            returning 
+              signed int 
+
+        Declaration of v8: pointer to function
+            with parameters
+              signed int 
+              p: signed int 
+            returning 
+              signed int 
+
+
Index: src/Tests/Expect-v/VariableDeclarator.txt
===================================================================
--- src/Tests/Expect-v/VariableDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/VariableDeclarator.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,253 @@
+f1: signed int 
+f2: signed int 
+f3: pointer to signed int 
+f4: pointer to pointer to signed int 
+f5: pointer to const pointer to signed int 
+f6: const pointer to const pointer to signed int 
+f7: pointer to signed int 
+f8: pointer to pointer to signed int 
+f9: pointer to const pointer to signed int 
+f10: const pointer to const pointer to signed int 
+f11: pointer to signed int 
+f12: pointer to pointer to signed int 
+f13: pointer to const pointer to signed int 
+f14: const pointer to const pointer to signed int 
+f15: open array of signed int 
+f16: array of signed int with dimension of constant expression 10 signed int 
+f17: open array of signed int 
+f18: array of signed int with dimension of constant expression 10 signed int 
+f19: open array of pointer to signed int 
+f20: array of pointer to signed int with dimension of constant expression 10 signed int 
+f21: open array of pointer to pointer to signed int 
+f22: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+f23: open array of pointer to const pointer to signed int 
+f24: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+f25: open array of const pointer to const pointer to signed int 
+f26: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+f27: open array of pointer to signed int 
+f28: array of pointer to signed int with dimension of constant expression 10 signed int 
+f29: open array of pointer to pointer to signed int 
+f30: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+f31: open array of pointer to const pointer to signed int 
+f32: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+f33: open array of const pointer to const pointer to signed int 
+f34: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+f35: pointer to open array of signed int 
+f36: pointer to array of signed int with dimension of constant expression 10 signed int 
+f37: pointer to pointer to open array of signed int 
+f38: pointer to pointer to array of signed int with dimension of constant expression 10 signed int 
+f39: pointer to const pointer to open array of signed int 
+f40: pointer to const pointer to array of signed int with dimension of constant expression 10 signed int 
+f41: const pointer to const pointer to open array of signed int 
+f42: const pointer to const pointer to array of signed int with dimension of constant expression 10 signed int 
+f43: open array of array of signed int with dimension of constant expression 3 signed int 
+f44: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+f45: open array of array of signed int with dimension of constant expression 3 signed int 
+f46: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+f47: open array of array of signed int with dimension of constant expression 3 signed int 
+f48: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+f49: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+f50: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+f51: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+f52: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+f53: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+f54: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+f55: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+f56: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+f57: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+f58: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+f59: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+f60: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+f61: open array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+f62: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+f63: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+f64: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+f65: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f66: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f67: function
+    with parameters
+      signed int 
+    returning 
+      pointer to signed int 
+
+f68: function
+    with parameters
+      signed int 
+    returning 
+      pointer to pointer to signed int 
+
+f69: function
+    with parameters
+      signed int 
+    returning 
+      pointer to const pointer to signed int 
+
+f70: function
+    with parameters
+      signed int 
+    returning 
+      const pointer to const pointer to signed int 
+
+f71: function
+    with parameters
+      signed int 
+    returning 
+      pointer to signed int 
+
+f72: function
+    with parameters
+      signed int 
+    returning 
+      pointer to pointer to signed int 
+
+f73: function
+    with parameters
+      signed int 
+    returning 
+      pointer to const pointer to signed int 
+
+f74: function
+    with parameters
+      signed int 
+    returning 
+      const pointer to const pointer to signed int 
+
+f75: pointer to function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f76: pointer to pointer to function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f77: pointer to const pointer to function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f78: const pointer to const pointer to function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+f79: pointer to function
+    with parameters
+      signed int 
+    returning 
+      pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+
+f80: const pointer to function
+    with parameters
+      signed int 
+    returning 
+      pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+
+f81: const pointer to function
+    with parameters
+      signed int 
+    returning 
+      const pointer to function
+            accepting unspecified arguments
+          returning 
+            signed int 
+
+
+cf3: pointer to signed int 
+cf4: pointer to pointer to signed int 
+cf5: pointer to const pointer to signed int 
+cf6: const pointer to const pointer to signed int 
+cf15: open array of signed int 
+cf16: array of signed int with dimension of constant expression 10 signed int 
+cf19: open array of pointer to signed int 
+cf20: array of pointer to signed int with dimension of constant expression 10 signed int 
+cf21: open array of pointer to pointer to signed int 
+cf22: array of pointer to pointer to signed int with dimension of constant expression 10 signed int 
+cf23: open array of pointer to const pointer to signed int 
+cf24: array of pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+cf25: open array of const pointer to const pointer to signed int 
+cf26: array of const pointer to const pointer to signed int with dimension of constant expression 10 signed int 
+cf35: pointer to open array of signed int 
+cf36: pointer to array of signed int with dimension of constant expression 10 signed int 
+cf37: pointer to pointer to open array of signed int 
+cf38: pointer to pointer to array of signed int with dimension of constant expression 10 signed int 
+cf39: pointer to const pointer to open array of signed int 
+cf40: pointer to const pointer to array of signed int with dimension of constant expression 10 signed int 
+cf41: const pointer to const pointer to open array of signed int 
+cf42: const pointer to const pointer to array of signed int with dimension of constant expression 10 signed int 
+cf43: open array of array of signed int with dimension of constant expression 3 signed int 
+cf44: array of array of signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+cf49: open array of array of pointer to signed int with dimension of constant expression 3 signed int 
+cf50: array of array of pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+cf51: open array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int 
+cf52: array of array of pointer to pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+cf53: open array of array of const pointer to signed int with dimension of constant expression 3 signed int 
+cf54: array of array of pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+cf55: open array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int 
+cf56: array of array of const pointer to const pointer to signed int with dimension of constant expression 3 signed int with dimension of constant expression 3 signed int 
+cf65: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+cf66: function
+    with parameters
+      signed int 
+    returning 
+      signed int 
+
+cf67: function
+    with parameters
+      signed int 
+    returning 
+      pointer to signed int 
+
+cf68: function
+    with parameters
+      signed int 
+    returning 
+      pointer to pointer to signed int 
+
+cf69: function
+    with parameters
+      signed int 
+    returning 
+      const pointer to pointer to signed int 
+
+cf70: function
+    with parameters
+      signed int 
+    returning 
+      const pointer to const pointer to signed int 
+
+v3: pointer to open array of pointer to open array of pointer to function
+    with parameters
+      pointer to open array of pointer to open array of signed int 
+      pointer to open array of pointer to open array of signed int 
+    returning 
+      pointer to open array of pointer to open array of signed int 
+
Index: src/Tests/Expect-v/gcc900407-1.txt
===================================================================
--- src/Tests/Expect-v/gcc900407-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/gcc900407-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,71 @@
+foo: function
+    with parameters
+      a: signed int 
+      b: signed int 
+      p: pointer to signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of c: signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Applying untyped: 
+                      Name: ?[?]
+                  ...to: 
+                      Name: p
+constant expression 2 signed int                 Applying untyped: 
+                    Name: ?+?
+                ...to: 
+                    Name: a
+constant expression 0x1000 signed int 
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: c
+                Applying untyped: 
+                    Name: ?+?
+                ...to: 
+                    Name: b
+constant expression 0xffff0000 unsigned int 
+                  If on condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Applying untyped: 
+                        Name: ?==?
+                    ...to: 
+                        Applying untyped: 
+                            Name: ?+?
+                        ...to: 
+                            Name: b
+constant expression 0xffff0000 unsigned int constant expression 2 signed int                     Name: 0
+
+              to:
+                signed int 
+          .... and branches: 
+              Expression Statement:
+                Applying untyped: 
+                    Name: ?++
+                ...to: 
+                    Address of:
+                      Name: c
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Applying untyped: 
+                      Name: ?[?]
+                  ...to: 
+                      Name: p
+constant expression 2 signed int                 Name: c
+
+
Index: src/Tests/Expect-v/gcc900516-1.txt
===================================================================
--- src/Tests/Expect-v/gcc900516-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/gcc900516-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,26 @@
+f: function
+    with parameters
+      c: signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+                  Return Statement, returning: Applying untyped: 
+    Name: !?
+...to: 
+    Conditional expression on: 
+      Cast of:
+        Applying untyped: 
+            Name: ?!=?
+        ...to: 
+            Name: c
+            Name: 0
+
+      to:
+        signed int 
+    First alternative:
+constant expression 2.0 double     Second alternative:
+constant expression 1.0 double 
+
+
+
Index: src/Tests/Expect-v/gcc920301-1.txt
===================================================================
--- src/Tests/Expect-v/gcc920301-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/gcc920301-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,18 @@
+f: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of t: static open array of pointer to void 
+                  Null Statement
+
+
+g: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of p: static array of unsigned int with dimension of constant expression 5 signed int 
+
Index: src/Tests/Expect-v/gcc920409-1.txt
===================================================================
--- src/Tests/Expect-v/gcc920409-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/gcc920409-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,32 @@
+x: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of y: signed int 
+                  Expression Statement:
+            Conditional expression on: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Applying untyped: 
+                        Name: ?>?
+                    ...to: 
+                        Name: y
+constant expression 0.0 double                     Name: 0
+
+              to:
+                signed int 
+            First alternative:
+              Name: y
+            Second alternative:
+              Applying untyped: 
+                  Name: ?-?
+              ...to: 
+                  Name: y
+                  Name: 1
+
+
+
Index: src/Tests/Expect-v/gcc920409-2.txt
===================================================================
--- src/Tests/Expect-v/gcc920409-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/gcc920409-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,90 @@
+x: function
+      accepting unspecified arguments
+    returning 
+      double 
+    with body 
+      CompoundStmt
+        Declaration of x1: signed int 
+        Declaration of x2: signed int 
+        Declaration of v: double 
+                  If on condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Applying untyped: 
+                        Name: ?<?
+                    ...to: 
+                        Cast of:
+                          Applying untyped: 
+                              Name: ?-?
+                          ...to: 
+                              Name: x1
+                              Name: x2
+
+                        to:
+                          long signed int 
+                        Name: 1
+                    Name: 0
+
+              to:
+                signed int 
+          .... and branches: 
+              Return Statement, returning: Applying untyped: 
+    Name: -?
+...to: 
+constant expression 1.0 double 
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: v
+                Applying untyped: 
+                    Name: t
+                ...to: 
+                    Name: v
+
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: v
+                Applying untyped: 
+                    Name: y
+                ...to: 
+                    Name: 1
+                    Conditional expression on: 
+                      Cast of:
+                        Applying untyped: 
+                            Name: ?!=?
+                        ...to: 
+                            Applying untyped: 
+                                Name: ?>?
+                            ...to: 
+                                Name: v
+constant expression 0.0 double                             Name: 0
+
+                      to:
+                        signed int 
+                    First alternative:
+                      Cast of:
+                        Name: v
+
+                      to:
+                        signed int 
+                    Second alternative:
+                      Applying untyped: 
+                          Name: ?-?
+                      ...to: 
+                          Cast of:
+                            Name: v
+
+                          to:
+                            signed int 
+                          Name: 1
+
+
+
Index: src/Tests/Expect-v/gcc920410-2.txt
===================================================================
--- src/Tests/Expect-v/gcc920410-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/gcc920410-2.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,93 @@
+joe: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of j: signed int 
+                  While on condition: 
+              Cast of:
+                Applying untyped: 
+                    Name: ?!=?
+                ...to: 
+                    Name: 1
+                    Name: 0
+
+              to:
+                signed int 
+          .... with body: 
+              CompoundStmt
+                                  Labels: {}
+                  For Statement
+                    initialization: 
+                      Expression Statement:
+                        Applying untyped: 
+                            Name: ?=?
+                        ...to: 
+                            Address of:
+                              Name: j
+                            Name: 0
+
+                    condition: 
+                      Cast of:
+                        Applying untyped: 
+                            Name: ?!=?
+                        ...to: 
+                            Applying untyped: 
+                                Name: ?<?
+                            ...to: 
+                                Name: j
+constant expression 4 signed int                             Name: 0
+
+                      to:
+                        signed int 
+
+                    increment: 
+                      Applying untyped: 
+                          Name: ?++
+                      ...to: 
+                          Address of:
+                            Name: j
+
+                    statement block: 
+                      Null Statement
+
+
+                                  Labels: {}
+                  For Statement
+                    initialization: 
+                      Expression Statement:
+                        Applying untyped: 
+                            Name: ?=?
+                        ...to: 
+                            Address of:
+                              Name: j
+                            Name: 0
+
+                    condition: 
+                      Cast of:
+                        Applying untyped: 
+                            Name: ?!=?
+                        ...to: 
+                            Applying untyped: 
+                                Name: ?<?
+                            ...to: 
+                                Name: j
+constant expression 4 signed int                             Name: 0
+
+                      to:
+                        signed int 
+
+                    increment: 
+                      Applying untyped: 
+                          Name: ?++
+                      ...to: 
+                          Address of:
+                            Name: j
+
+                    statement block: 
+                      Null Statement
+
+
+
+
Index: src/Tests/Expect-v/gcc920501-1.txt
===================================================================
--- src/Tests/Expect-v/gcc920501-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/gcc920501-1.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,16 @@
+a: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+        Declaration of b: open array of pointer to pointer to signed int with initializer 
+          Compound initializer:  
+            Simple Initializer:               Applying untyped: 
+                  Name: LabAddress
+              ...to: 
+                  Name: c
+
+                  Null Statement
+
+
Index: src/Tests/Expect-v/gcc920501-11.txt
===================================================================
--- src/Tests/Expect-v/gcc920501-11.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/gcc920501-11.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,2 @@
+cfa-cpp: Parser/ExpressionNode.cc:456: virtual Expression* CompositeExprNode::build() const: Assertion `args.size() == 1' failed.
+Aborted (core dumped)
Index: src/Tests/Expect-v/gcc920501-19.txt
===================================================================
--- src/Tests/Expect-v/gcc920501-19.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expect-v/gcc920501-19.txt	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,18 @@
+x: long long signed int with initializer 
+  Simple Initializer:     Name: 0
+
+y: function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+                  Expression Statement:
+            Applying untyped: 
+                Name: ?=?
+            ...to: 
+                Address of:
+                  Name: x
+                Name: 0
+
+
Index: src/Tests/Expression.c
===================================================================
--- src/Tests/Expression.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Expression.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,67 @@
+int fred() {
+    struct s { int i; } *p;
+    int i;
+
+    // order of evaluation (GCC is different)
+/*
+    i = sizeof( (int) {3} );
+    i = sizeof (int) {3};
+*/
+    // operators
+
+    ! i;
+    ~i;
+    +i;
+    -i;
+    *p;
+    ++p;
+    --p;
+    p++;
+    p--;
+
+    i+i;
+    i-i;
+    i*i;
+
+    i/i;
+    i%i;
+    i^i;
+    i&i;
+    i|i;
+    i<i;
+    i>i;
+    i=i;
+
+    i==i;
+    i!=i;
+    i<<i;
+    i>>i;
+    i<=i;
+    i>=i;
+    i&&i;
+    i||i;
+    p->i;
+    i+=i;
+    i-=i;
+    i*=i;
+    i/=i;
+    i%=i;
+    i&=i;
+    i|=i;
+    i^=i;
+    i<<=i;
+    i>>=i;
+
+    i?i:i;
+
+    // cast
+/*
+    double d;
+    int *ip;
+    (int *) i;
+    (* int) i;
+    ([char, int *])[d, d];
+    [i,ip,ip] = ([int, * int, int *])[1,(void *)2,(void *)3];
+    [i,ip,ip] = ([int, * int, int *])([1,(void *)2,(void *)3]);
+*/
+}
Index: src/Tests/Forall.c
===================================================================
--- src/Tests/Forall.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Forall.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,98 @@
+int ?=?( int*, int );
+float ?=?( float*, float );
+int * ?=?( int **, int * );
+float * ?=?( float **, float * );
+char ?=?( char*, char );
+void (* ?=?( void (**)(void), void (*)(void) ))(void);
+
+void g1() {
+	forall( type T ) T f( T );
+	void f( int );
+	void h( void (*p)(void) );
+  
+	int x;
+	void (*y)(void);
+	char z;
+	float w;
+  
+	f( x );
+	f( y );
+	f( z );
+	f( w );
+	h( f( y ) );
+}
+
+void g2() {
+	forall( type T ) void f( T, T );
+	forall( type T, type U ) void f( T, U );
+  
+	int x;
+	float y;
+	int *z;
+	float *w;
+  
+	f( x, y );
+	f( z, w );
+	f( x, z );
+}
+
+typedef forall ( type T ) int (*f)( int );
+
+forall( type T )
+void swap( T left, T right ) {
+	T temp = left;
+	left = right;
+	right = temp;
+}
+
+context sumable( type T ) {
+	const T 0;
+	T ?+?(T, T);
+	T ?++(T);
+	[T] ?+=?(T,T);
+};
+
+type T1 | { const T1 0; T1 ?+?(T1, T1); T1 ?++(T1); [T1] ?+=?(T1,T1); },
+	T2(type P1, type P2 ),
+	T3 | sumable(T3);
+
+type T2(type P1, type P2) | sumable(T2(P1,P2)) = struct { P1 i; P2 j; };
+
+T2(int, int) w1;
+typedef T2(int, int) w2;
+w2 g2;
+type w3 = T2(int, int);
+w3 g3;
+
+forall( type T | sumable( T ) )
+T sum( int n, T a[] ) {
+	T total = 0;
+	int i;
+	for ( i = 0; i < n; i += 1 )
+		total = total + a[i];
+	return total;
+}
+
+forall( type T | { const T 0; T ?+?(T, T); T ?++(T); [T] ?+=?(T,T); } )
+T twice( T t ) {
+	return t + t;
+}
+
+forall( type T | { const T 0; int ?!=?(T, T); int ?<?(T, T); } )
+T min( T t1, T t2 ) {
+	return t1 < t2 ? t1 : t2;
+}
+
+int main() {
+	int x = 1, y = 2, a[10];
+	float f;
+
+	swap( x, y );
+	twice( x );
+	f = min( 4.0, 3.0 );
+	sum( 10, a );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/Function.c
===================================================================
--- src/Tests/Function.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Function.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,32 @@
+int a;
+float a;
+int f( int );
+float f( float );
+
+void g() {
+	// selects the same f each time but without a cast would be ambiguous
+	f( (int)a );
+	(int)f( a );
+}
+
+[ int ] p;
+[ int, double ] p;
+[ int, int, int ] p;
+[ int, int, int, int ] p;
+
+[ char ] q;
+[ int, int ] q;
+[ int, int, float ] q;
+[ int, int, int, int ] q;
+
+[ int, int ] r( int, int, int, int );
+
+void s() {
+	r( p, q );
+	r( [ q, p ] );
+	r( r( p, q ), r( q, q ) );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/Functions.c
===================================================================
--- src/Tests/Functions.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Functions.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,167 @@
+// ANSI function definitions
+
+void h(void) {}
+
+int f (
+	int (void),
+	int (int),
+	int ((void)),
+	int ((int)),
+	void g(void)
+	) {
+	(*g)();
+	g();
+	g = h;
+}
+
+int f1() {}
+int (f2()) {}
+int (*f3())() {}
+int *((f4())) {}
+int ((*f5()))() {}
+int *f6() {}
+int *(f7)() {}
+int **f8() {}
+int * const *(f9)() {}
+int (*f10())[] {}
+int (*f11())[][3] {}
+int ((*f12())[])[3] {}
+
+// "implicit int" type specifier (not ANSI)
+
+fII1( int i ) {}
+const fII2( int i ) {}
+extern fII3( int i ) {}
+extern const fII4( int i ) {}
+
+*fII5() {}
+const *fII6() {}
+const long *fII7() {}
+static const long *fII8() {}
+const static long *fII9() {}
+
+// K&R function definitions
+
+fO1( i ) int i; {}
+int fO2( i ) int i; {}
+const fO3( i ) int i; {}
+extern fO4( i ) int i; {}
+extern const fO5( i ) int i; {}
+
+// Cforall extensions
+
+[] f( );
+[int] f( );
+[] f(int);
+[int] f(int);
+[] f( ) {}
+[int] f( ) {}
+[] f(int) {}
+[int] f(int) {}
+
+[int x] f( );
+[] f(int x);
+[int x] f(int x);
+[int x] f( ) {}
+[] f(int x) {}
+[int x] f(int x) {}
+
+[int, int x] f( );
+[] f(int, int x);
+[int, int x] f(int, int x);
+[int, int x] f( ) {}
+[] f(int, int x) {}
+[int, int x] f(int, int x) {}
+
+[int, int x, int] f( );
+[] f(int, int x, int);
+[int, int x, int] f(int, int x, int);
+[int, int x, int] f( ) {}
+[] f(int, int x, int) {}
+[int, int x, int] f(int, int x, int) {}
+
+[int, int x, * int y] f( );
+[] f(int, int x, * int y);
+[int, int x, * int y] f(int, int x, * int y);
+[int, int x, * int y] f( ) {}
+[] f(int, int x, * int y) {}
+[int, int x, * int y] f(int, int x, * int y) {}
+
+[ int ] f11( int ), f12;  // => int f11( int ), f12( int );
+
+[int] f(
+	int ( int, int p ),
+	[int](int)
+	) {
+	int (*(*p)[][10])[][3];
+	* [][10] * [][3] int p;
+	* [] * [int](int) p;
+}
+
+static const int *f1() {}
+static [ const int ] f2() {}
+static inline [ const * int ] f3() {}
+static inline [ const [ * int, int ] ] f4() {}
+static [ const [ * int, const int ] ] f5() {}
+
+// unnamed parameter
+
+int f(
+	int (),
+
+	int *(),
+	int **(),
+	int * const *(),
+	int * const * const (),
+
+	int ([]),
+	int ([10]),
+
+	int *([]),
+	int *([10]),
+	int **([]),
+	int **([10]),
+	int * const *([]),
+	int * const *([10]),
+	int * const * const ([]),
+	int * const * const ([10])
+	);
+
+int f(
+	int (),
+
+	int *(),
+	int **(),
+	int * const *(),
+	int * const * const (),
+
+	int ([]),
+	int ([10]),
+
+	int *([]),
+	int *([10]),
+	int **([]),
+	int **([10]),
+	int * const *([]),
+	int * const *([10]),
+	int * const * const ([]),
+	int * const * const ([10])
+	) {
+}
+
+typedef int T;
+
+int f( T (*f), T t ) {
+	T (T);
+}
+
+// errors
+
+//int f()[] {}
+//int (f[])() {}
+//int f[]() {}
+//int ((*f15())())[] {}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/GccExtensions.c
===================================================================
--- src/Tests/GccExtensions.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/GccExtensions.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,48 @@
+int fred() {
+    asm( "nop" );
+    __asm( "nop" );
+    __asm__( "nop" );
+
+    __complex__ c1;
+    _Complex c2;
+
+    const int i1;
+    __const int i2;
+    __const__ int i3;
+
+    __extension__ const int ex;
+
+    __inline int f1();
+    __inline__ int f2();
+
+    __signed s1;
+    __signed s2;
+
+    __typeof(s1) t1;
+    __typeof__(s1) t2;
+
+    __volatile int v1;
+    __volatile__ int v2;
+
+    __attribute__(()) int a1;
+    const __attribute(()) int a2;
+    const static __attribute(()) int a3;
+    const static int __attribute(()) a4;
+    const static int a5 __attribute(());
+    const static int a6, __attribute(()) a7;
+
+    int * __attribute(()) p1;
+    int (* __attribute(()) p2);
+//    int (__attribute(()) (p3));
+//    int ( __attribute(()) (* __attribute(()) p4));
+
+    struct __attribute(()) s1;
+    struct __attribute(()) s2 { int i; };
+    struct __attribute(()) s3 { int i; } x1, __attribute(()) y1;
+    struct __attribute(()) s4 { int i; } x2, y2 __attribute(());
+
+    int m1 [10] __attribute(());
+    int m2 [10][10] __attribute(());
+    int __attribute(()) m3 [10][10];
+//    int ( __attribute(()) m4 [10] )[10];
+}
Index: src/Tests/IdentFuncDeclarator.c
===================================================================
--- src/Tests/IdentFuncDeclarator.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/IdentFuncDeclarator.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,109 @@
+int main() {
+	//int f0[]();
+	//int (f0[])();
+	//int f0()[];
+	//int f0()();
+	//int (*f0)()();
+	//int ((*f0())())[];
+	
+	int f1;
+	int (f2);
+
+	int *f3;
+	int **f4;
+	int * const *f5;
+	int * const * const f6;
+
+	int *(f7);
+	int **(f8);
+	int * const *(f9);
+	int * const * const (f10);
+
+	int (*f11);
+	int (**f12);
+	int (* const *f13);
+	int (* const * const f14);
+
+	int f15[];
+	int f16[10];
+	int (f17[]);
+	int (f18[10]);
+
+	int *f19[];
+	int *f20[10];
+	int **f21[];
+	int **f22[10];
+	int * const *f23[];
+	int * const *f24[10];
+	int * const * const f25[];
+	int * const * const f26[10];
+
+	int *(f27[]);
+	int *(f28[10]);
+	int **(f29[]);
+	int **(f30[10]);
+	int * const *(f31[]);
+	int * const *(f32[10]);
+	int * const * const (f33[]);
+	int * const * const (f34[10]);
+
+	int (*f35[]);
+	int (*f36[10]);
+	int (**f37[]);
+	int (**f38[10]);
+	int (* const *f39[]);
+	int (* const *f40[10]);
+	int (* const * const f41[]);
+	int (* const * const f42[10]);
+
+	int f43[][3];
+	int f44[3][3];
+	int (f45[])[3];
+	int (f46[3])[3];
+	int ((f47[]))[3];
+	int ((f48[3]))[3];
+
+	int *f49[][3];
+	int *f50[3][3];
+	int **f51[][3];
+	int **f52[3][3];
+	int * const *f53[][3];
+	int * const *f54[3][3];
+	int * const * const f55[][3];
+	int * const * const f56[3][3];
+
+	int (*f57[][3]);
+	int (*f58[3][3]);
+	int (**f59[][3]);
+	int (**f60[3][3]);
+	int (* const *f61[][3]);
+	int (* const *f62[3][3]);
+	int (* const * const f63[][3]);
+	int (* const * const f64[3][3]);
+
+	int f65(int);
+	int (f66)(int);
+
+	int *f67(int);
+	int **f68(int);
+	int * const *f69(int);
+	int * const * const f70(int);
+
+	int *(f71)(int);
+	int **(f72)(int);
+	int * const *(f73)(int);
+	int * const * const (f74)(int);
+
+	int (*f75)(int);
+	int (**f76)(int);
+	int (* const *f77)(int);
+	int (* const * const f78)(int);
+
+	int (*(*f79)(int))();
+	int (*(* const f80)(int))();
+	int (* const(* const f81)(int))();
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/IdentFuncParamDeclarator.c
===================================================================
--- src/Tests/IdentFuncParamDeclarator.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/IdentFuncParamDeclarator.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,154 @@
+int fred(
+	//int f0[](),
+	//int (f0[])(),
+	//int f0()[],
+	//int f0()(),
+	//int (*f0)()(),
+	//int ((*f0())())[],
+	
+	int f1,
+	int (f2),
+
+	int *f3,
+	int **f4,
+	int * const *f5,
+	int * const * const f6,
+
+	int *(f7),
+	int **(f8),
+	int * const *(f9),
+	int * const * const (f10),
+
+	int (*f11),
+	int (**f12),
+	int (* const *f13),
+	int (* const * const f14),
+
+	int f15[],
+	int f16[10],
+	int (f17[]),
+	int (f18[10]),
+
+	int *f19[],
+	int *f20[10],
+	int **f21[],
+	int **f22[10],
+	int * const *f23[],
+	int * const *f24[10],
+	int * const * const f25[],
+	int * const * const f26[10],
+
+	int *(f27[]),
+	int *(f28[10]),
+	int **(f29[]),
+	int **(f30[10]),
+	int * const *(f31[]),
+	int * const *(f32[10]),
+	int * const * const (f33[]),
+	int * const * const (f34[10]),
+
+	int (*f35[]),
+	int (*f36[10]),
+	int (**f37[]),
+	int (**f38[10]),
+	int (* const *f39[]),
+	int (* const *f40[10]),
+	int (* const * const f41[]),
+	int (* const * const f42[10]),
+
+	int f43[][3],
+	int f44[3][3],
+	int (f45[])[3],
+	int (f46[3])[3],
+	int ((f47[]))[3],
+	int ((f48[3]))[3],
+
+	int *f49[][3],
+	int *f50[3][3],
+	int **f51[][3],
+	int **f52[3][3],
+	int * const *f53[][3],
+	int * const *f54[3][3],
+	int * const * const f55[][3],
+	int * const * const f56[3][3],
+
+	int (*f57[][3]),
+	int (*f58[3][3]),
+	int (**f59[][3]),
+	int (**f60[3][3]),
+	int (* const *f61[][3]),
+	int (* const *f62[3][3]),
+	int (* const * const f63[][3]),
+	int (* const * const f64[3][3]),
+
+	int f65(int),
+	int (f66)(int),
+
+	int *f67(int),
+	int **f68(int),
+	int * const *f69(int),
+	int * const * const f70(int),
+
+	int *(f71)(int),
+	int **(f72)(int),
+	int * const *(f73)(int),
+	int * const * const (f74)(int),
+
+	int (*f75)(int),
+	int (**f76)(int),
+	int (* const *f77)(int),
+	int (* const * const f78)(int),
+
+	int (*(*f79)(int))(),
+	int (*(* const f80)(int))(),
+	int (* const(* const f81)(int))(),
+
+	int f82[const *],
+	int f83[const 3],
+	int f84[static 3],
+	int f85[static const 3],
+
+	int (f86[const *]),
+	int (f87[const 3]),
+	int (f88[static 3]),
+	int (f89[static const 3]),
+
+	int *f90[const *],
+	int *f91[const 3],
+	int **f92[static 3],
+	int * const *f93[static const 3],
+	int * const * const f94[static const 3],
+
+	int *(f95[const *]),
+	int *(f96[const 3]),
+	int **(f97[static 3]),
+	int * const *(f98[static const 3]),
+	int * const * const (f99[static const 3]),
+
+	int f100[const *][3],
+	int f101[const 3][3],
+	int f102[static 3][3],
+	int f103[static const 3][3],
+
+	int (f104[const *][3]),
+	int (f105[const 3][3]),
+	int (f106[static 3][3]),
+	int (f107[static const 3][3]),
+
+	int *f108[const *][3],
+	int *f109[const 3][3],
+	int **f110[static 3][3],
+	int * const *f111[static const 3][3],
+	int * const * const f112[static const 3][3],
+
+	int *(f113[const *][3]),
+	int *(f114[const 3][3]),
+	int **(f115[static 3][3]),
+	int * const *(f116[static const 3][3]),
+	int * const * const (f117[static const 3][3])
+	) {
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/InferParam.c
===================================================================
--- src/Tests/InferParam.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/InferParam.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,30 @@
+int ?=?( int*, int );
+float ?=?( float*, float );
+double ?=?( double*, double );
+
+forall( type T, type U | { U f(T); } ) U g(T);
+float f( int );
+double f( int );
+void i( float );
+
+void h() {
+	int a;
+	i( g( a ) );
+}
+
+context has_f_and_j( type T, type U ) {
+	U f( T );
+	U j( T, U );
+};
+
+float j( int, float );
+forall( type T, type U | has_f_and_j( T, U ) ) U k( T );
+
+void l() {
+	int b;
+	i( k( b ) );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/Initialization.c
===================================================================
--- src/Tests/Initialization.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Initialization.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,41 @@
+// Cforall extensions
+
+int * x11 = 0, x12 = 0;
+int * x21 = 0, x22 = 0;
+
+[20] int y1, y2 = { 1, 2, 3 };
+
+// designators
+
+struct {
+	[int] w;
+} a = { .w : [2] };
+
+struct { int a[3], b; } w [] = { [0].a : {1}, [0].b : 1, [1].a[0] : 2 };
+
+struct {
+	int f1, f2, f3;
+	struct { int g1, g2, g3; } f4[4];
+} v7 = {
+  .f1 : 4,
+  f2 : 3,
+  .f4[2] : {
+	  .g1 : 3,
+	  g3 : 0,
+	},
+  .f4[3].g3 : 7,
+};
+
+struct point { int x; int z; struct {int y1, y2, y3;} y; int w;};
+struct quintet { int v, w, x, y, z;};
+
+int main() {
+	struct point p1 = { x : 3 };
+	struct point p2 = { 3, 4 };
+	struct point p3 = { .[x,z] : 5, y : { .[y3,y1] : 6, 17 } };
+	struct point p4 = { w : 5, 4 };
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/Initialization2.c
===================================================================
--- src/Tests/Initialization2.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Initialization2.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,15 @@
+int a = 3;
+struct { int x; int y; } z = { 3, 7 };      /* OK */
+struct { int x; int y; } z1 = { .[x,y]:3 }; /* OK */
+struct { int x; int y; } z2 = { y:3, x:4 }; /* OK */
+struct { int x; struct { int y1; int y2; } y; } z3 = { x:3, y:{y1:4, y2:5} };  /* OK */
+struct { int x; struct { int y1; int y2; } y; } z3 = { y:{y2:9, y1:8}, x:7 };  /* OK */
+struct { int x; struct { int y1; int y2; } y; } z3 = { x:7, {y2:9, y1:8} };  /* OK */
+struct { int x; struct { int y1; int y2; } y; } z3 = { 3, {4, 5} };   /* OK */
+//struct { int x; struct { int y1; int y2; } } z3 = {4, {5,6}};
+//struct { int x; struct { int y1; int y2; } y; } z4 = { y:{4,5}, a:3 };
+//struct { int x; struct { int y1; int y2; } y; } z5 = { a:3, {4,5}};
+//int x[20] = { [10]: 4 };
+struct t { int a, b; };
+struct t x = { b:4, a:3 };
+struct { int x; int y; } z6= {5,6,4};  /* (should be an) error */
Index: src/Tests/LabelledExit.c
===================================================================
--- src/Tests/LabelledExit.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/LabelledExit.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,139 @@
+int main() {
+    int i;
+    int x, y;
+
+    x = 0; y = 0;
+
+// block, labelled exits
+
+  Block: {
+	if ( x == y ) {
+	    for ( ; i < y; ) {
+		y += 1;
+		if ( y < 10 ) break Block;
+	    }
+	}
+    }
+
+// loops, labelled exits
+
+  w1: while ( y == 10 );
+
+  w2: while ( x < 10 ) {
+      while (y < 5 ) {
+	  if ( y == 3 ) break w2;
+      }
+      x += 1;
+  }
+
+  A: for ( i = 0; i < 10; i += 1 ) {
+    B: for ( i = 0; i < 10; i += 1 ) {
+      C: for ( i = 0; i < 10; i += 1 ) {
+	  goto A;
+	  goto B;
+	  goto C;
+	  continue A;
+	  continue B;
+	  continue C;
+	  continue;
+	  break A;
+	  break B;
+	  break C;
+	  break;
+      }
+    }
+  }
+
+  D: for ( ;; ) {
+      break D;
+      continue D;
+  }
+
+    Z : i += 1;
+    goto Z;
+  X: Y: for ( ;; ) {
+      i += 1;
+      if ( i > 5 ) continue X;
+      if ( i < 5 ) break X;
+      if ( i < 5 ) break Y;
+      break;
+  }
+  XX: for ( ;; ) {
+    YY: for ( ;; ) {
+      ZZ: for ( ;; ) {
+	  i += 1;
+	  if ( i > 5 ) continue XX;
+	  if ( i < 5 ) continue YY;
+	  if ( i < 5 ) continue ZZ;
+	  if ( i > 5 ) break XX;
+	  if ( i < 5 ) break YY;
+	  if ( i < 5 ) break ZZ;
+	  break;
+      }
+    }
+  }
+
+    for ( ;; ) ;
+    for ( int i = 0 ;; ) ;
+    for (  ; i < 0; ) ;
+    for (  ; ; i += 1 ) ;
+  L0:  L1:  L2:  L3:  L4:  L5:  L6:  L7:  L8:  L9:
+  L10: L11: L12: L13: L14: L15: L16: L17: L18: L19:
+  L20: L21: L22: L23: L24: L25: L26: L27: L28: L29:
+  L31: L32: L33: L34:
+    for ( ;; ) {
+	break L0;
+    }
+
+// switch/choose, labelled exits
+
+  Switch: switch ( i ) {
+    default:
+      i += 1;
+    case 0:
+      i += 1;
+      break Switch;
+    case 1:
+      switch ( i ) {
+	case 0:
+	  break Switch;
+	default:
+	  break;
+      }
+  }
+
+  Choose: choose ( i ) {
+    default:
+      i += 1;
+    case 0:
+      i += 1;
+      break Choose;
+    case 1:
+      choose ( i ) {
+	case 0:
+	  break;
+	default:
+	  break Choose;
+      }
+      fallthru;
+    case 2:
+      i += 1;
+  }
+#if 0
+// computed goto
+
+    {
+	static void *array[] = { &&foo, &&bar, &&hack };
+
+      foo: bar: hack:
+	goto *array[i];
+    }
+#endif
+#if 0
+  Q: if ( i > 5 ) {
+      i += 1;
+      break Q;
+  } else
+      i += 1;
+#endif
+}
Index: src/Tests/Makefile
===================================================================
--- src/Tests/Makefile	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Makefile	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,42 @@
+CFA ?= ../cfa-cpp
+CFAOPT ?= -a
+OUTPUT ?= Output
+EXPECT ?= Expect
+OUTPUTDIR ?= ${OUTPUT}${CFAOPT}
+EXPECTDIR ?= ${EXPECT}${CFAOPT}
+EXAMPLES = ${wildcard *.c}
+OUTPUTS = ${addprefix ${OUTPUTDIR}/,${EXAMPLES:.c=.txt}}
+
+.SILENT :
+
+all :
+	+for opt in -a -e -f -r -s -v ; do \
+	    make test CFAOPT=$${opt} ; \
+	done ; \
+	rm -f core
+
+test : ${OUTPUTS} ${OUTPUTDIR}/report
+
+${OUTPUTDIR}/%.txt : %.c ${CFA} Makefile
+	-${CFA} -n ${CFAOPT} < $< > $@ 2>&1
+
+${OUTPUTDIR}/report : ${OUTPUTS} ${EXPECTDIR}
+	rm -f $@
+	echo "===== regression test using cfa-cpp flag ${CFAOPT} ====="
+	@for i in ${OUTPUTS} ; do \
+	     echo "---"`basename $$i`"---" | tee -a $@; \
+	     diff -B -w ${EXPECTDIR}/`basename $$i` $$i | tee -a $@; \
+	done
+
+${OUTPUTS} : | ${OUTPUTDIR}		# order only prerequisite
+
+${OUTPUTDIR} :
+	mkdir $@
+
+# remove the expected results directories to generate new ones from the current output
+
+${EXPECTDIR} : | ${OUTPUTS}		# new Expected results ?
+	cp -pr ${OUTPUTDIR} $@
+
+clean :
+	rm -rf ${OUTPUT}-* core
Index: src/Tests/Members.c
===================================================================
--- src/Tests/Members.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Members.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,72 @@
+char ?=?( char*, char );
+int ?=?( int*, int );
+float ?=?( float*, float );
+forall( dtype DT ) DT * ?=?( DT**, DT* );
+forall(type T) lvalue T *?( T* );
+char *__builtin_memcpy();
+
+void a( char );
+void b( int );
+void c( int* );
+void d( float* );
+
+struct a_struct {
+	int a;
+	char a;
+	float a;
+};
+
+union b_struct {
+	int *a;
+	char *a;
+	float *a;
+};
+
+void f() {
+	struct a_struct the_struct;
+	union b_struct the_struct;
+  
+	a( the_struct.a );
+	b( the_struct.a );
+	c( the_struct.a );
+	d( the_struct.a );
+}
+
+struct c_struct {
+	int;
+	char;
+	float;
+};
+
+union d_struct {
+	int*;
+	char*;
+	float*;
+};
+
+void g() {
+	unsigned short x;
+	struct c_struct x;
+	union d_struct x;
+  
+	a( x );	// the 'a' and 'b' calls resolve to the ushort
+	b( x );	// it's debatable whether this is good
+	c( x );
+	d( x );
+}
+
+// make sure that forward declarations work
+
+struct forward;
+
+struct forward *q;
+
+struct forward { int y; };
+
+void h() {
+	q->y;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/Misc.c
===================================================================
--- src/Tests/Misc.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Misc.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,17 @@
+int a;
+int b;
+float b;
+
+void g( int );
+void g( unsigned );
+
+void f( void ) {
+	g( (a, b) );
+	g( (a, a, b) );
+	g( sizeof a );
+	g( sizeof( int ) );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/MiscError.c
===================================================================
--- src/Tests/MiscError.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/MiscError.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,16 @@
+int a;
+int b;
+float b;
+
+void g( int );
+
+void f( void ) {
+	g( (b, a) );
+	g( (b, a, b) );
+	g( (a, b, b) );
+	sizeof b;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/NamedParmArg.c
===================================================================
--- src/Tests/NamedParmArg.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/NamedParmArg.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,14 @@
+int f1( int i = 3, int *j = 0 ) {}  /* ANSI */
+[int, int ] f2( int i = 3, * int j = 0 ) {}  /* CFA */
+
+int main() {
+    f1();		/* identical calls */
+    f1( 3 );
+    f1( 3, );
+    f1( 3, 0 );
+    f1( 3, j : 0 );
+    f1( j : 0, 3 );
+    f1( i : 3, j : 0 );
+    f1( j : 0, i : 3 );
+    f1( [j, i] : f2() );
+}
Index: src/Tests/NumericConstants.c
===================================================================
--- src/Tests/NumericConstants.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/NumericConstants.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,54 @@
+int main() {
+    1;							/* decimal */
+    2_1;
+    2_147_483_647;
+    37LL;
+    45ull;
+    89llu;
+    99LLu;
+    56_lu;
+    88_LLu;
+
+//    0;							/* octal */
+    0u;
+    0_3_77;
+    0_377_ul;
+
+    0x1;						/* hexadecimal */
+    0x1u;
+    0xabL;
+    0x_80000000;
+    0x_fff;
+    0x_ef3d_aa5c;
+    0x_3LL;
+
+    3.;							/* integral real */
+    3_100.;
+    1_000_000.;
+
+    3.1;						/* integral/fractional real */
+    3.141_592_654L;
+    123_456.123_456;
+
+    3E1;						/* integral/exponent real */
+    3_e1f;
+    3_E1_1_F;
+    3_E_11;
+    3_e_+11;
+    3_E_-11;
+
+    3.0E1;						/* integral/fractional/exponent real */
+    3.0_E1L;
+    3.0_e1_1;
+    3.0_E_11_l;
+    3.0_e_+11l;
+    3.0_E_-11;
+    123_456.123_456E-16;
+
+    0x_ff.ffp0;						/* hex real */
+    0x_1.ffff_ffff_p_128_l;
+}
+
+// Local Variables: //
+// compile-command: "../../../bin/cfa -std=c99 NumericConstants.c" //
+// End: //
Index: src/Tests/OccursError.c
===================================================================
--- src/Tests/OccursError.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/OccursError.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,10 @@
+forall( type T ) void f( void (*)( T, T* ) );
+forall( type U ) void g( U*, U );
+
+void test() {
+    f( g );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/Operators.c
===================================================================
--- src/Tests/Operators.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Operators.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,27 @@
+int ?*?( int, int );
+
+int ?()( int number1, int number2 ) {
+	return number1 * number2;
+}
+
+int ?+?( int, int );
+
+int ?=?( int *, int );
+struct accumulator {
+	int total;
+};
+
+char ?()( struct accumulator a, char number1, char number2 );
+
+void f( void ) {
+	char a, b;
+	?()( a, b );
+	a(b);
+	a + b;
+	struct accumulator ?+?;	// why not, eh?
+	a + b;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: c/Tests/Parser/Array.c
===================================================================
--- src/Tests/Parser/Array.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,33 +1,0 @@
-int a1[];
-int a2[*];
-int a4[3];
-
-int m1[][3];
-int m2[*][*];
-int m4[3][3];
-
-typedef int T;
-
-int fred() {
-    int a1[];
-    int a2[*];
-    int a4[3];
-    int T[3];
-}
-
-int mary( int T[3],
-	  int p1[const 3],
-	  int p2[static 3],
-	  int p3[static const 3]
-    ) {
-}
-
-int (*tom())[3] {
-}
-
-int (*(jane)())( int T[3],
-		 int p1[const 3],
-		 int p2[static 3],
-		 int p3[static const 3]
-    ) {
-}
Index: c/Tests/Parser/Constant0-1.c
===================================================================
--- src/Tests/Parser/Constant0-1.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,40 +1,0 @@
-// Cforall extension
-
-// value
-
-int 0;
-const int 0;
-//static const int 0;
-int 1;
-const int 1;
-//static const int 1;
-int 0, 1;
-const int 0, 1;
-//static const int 0, 1;
-struct { int i; } 0;
-const struct { int i; } 1;
-static const struct { int i; } 1;
-
-// pointer
-
-int 1, * 0;
-int (1), ((1)), * (0), (* 0), ((* 0));
-int * const (0), (* const 0), ((* const 0));
-struct { int i; } * 0;
-
-// Cforall style
-
-* int x, 0;
-const * int x, 0;
-//static const * int x, 0;
-* struct { int i; } 0;
-const * struct { int i; } 0;
-static const * struct { int i; } 0;
-//static * int x, 0;
-//static const * int x, 0;
-const * * int x, 0;
-
-int main() {
-//int 1, * 0;
-//* int x, 0;
-}
Index: c/Tests/Parser/DeclarationSpecifier.c
===================================================================
--- src/Tests/Parser/DeclarationSpecifier.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,90 +1,0 @@
-typedef short int Int;
-
-
-const short int volatile x1;
-static const short int volatile x2;
-const static short int volatile x3;
-const short static int volatile x4;
-const static volatile short int x4;
-const short int static volatile x5;
-const short int volatile static x6;
-const short volatile int static x7;
-short int volatile static const x8;
-static short int volatile static const x9;		// duplicate static
-
-const volatile struct { int i; } x10;
-const struct { int i; } volatile x11;
-struct { int i; } const volatile x12;
-static const volatile struct { int i; } x13;
-const static struct { int i; } volatile x14;
-struct { int i; } static const volatile x15;
-struct { int i; } const static volatile x16;
-struct { int i; } const volatile static x17;
-struct { int i; } const static volatile static x18;	// duplicate static
-struct { int i; } const static volatile static volatile x19; // duplicate static & volatile
-
-const Int volatile x20;
-static const Int volatile x21;
-const static Int volatile x22;
-const static Int volatile x23;
-const Int static volatile x24;
-const Int volatile static x25;
-const volatile Int static x26;
-Int volatile static const x27;
-static Int volatile static const x28;			// duplicate static
-
-const volatile struct { Int i; } x29;
-const struct { Int i; } volatile x30;
-struct { Int i; } const volatile x31;
-static const volatile struct { Int i; } x32;
-const static struct { Int i; } volatile x33;
-struct { Int i; } static const volatile x34;
-struct { Int i; } const static volatile x35;
-struct { Int i; } const volatile static x36;
-
-
-const static inline const volatile int f01();		// duplicate const
-volatile inline const volatile static int f02();	// duplicate volatile
-const inline const volatile int static f03();		// duplicate const
-volatile inline static const volatile int f04();	// duplicate volatile
-const static const inline volatile int f05();		// duplicate const
-volatile static const volatile inline int f06();	// duplicate volatile
-const static const volatile int inline f07();		// duplicate const
-volatile static const int inline volatile f08();	// duplicate volatile
-
-static inline const volatile int f11();
-inline const volatile static int f12();
-inline const volatile int static f13();
-inline static const volatile int f14();
-static const inline volatile int f15();
-static const volatile inline int f16();
-static const volatile int inline f17();
-static const int inline volatile f18();
-
-short static inline const volatile int f21();
-inline short const volatile static int f22();
-inline const short volatile int static f23();
-inline static const short volatile int f24();
-static const inline volatile short int f25();
-static const volatile inline int short f26();
-static const volatile int inline short f27();
-static const int inline volatile short f28();
-
-static inline const volatile struct { int i; } f31();
-inline const volatile static struct { int i; } f32();
-inline const volatile struct { int i; } static f33();
-inline static const volatile struct { int i; } f34();
-static const inline volatile struct { int i; } f35();
-static const volatile inline struct { int i; } f36();
-static const volatile struct { int i; } inline f37();
-static const struct { int i; } inline volatile f38();
-
-static inline const volatile Int f41();
-inline const volatile static Int f42();
-inline const volatile Int static f43();
-inline static const volatile Int f44();
-static const inline volatile Int f45();
-static const volatile inline Int f46();
-static const volatile Int inline f47();
-static const Int inline volatile f48();
-
Index: c/Tests/Parser/Expected/Array.tst
===================================================================
--- src/Tests/Parser/Expected/Array.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,48 +1,0 @@
-a1: a open array of int 
-a2: a variable-length array of int 
-a4: a array of 3 int 
-m1: a open array of array of 3 int 
-m2: a variable-length array of variable-length array of int 
-m4: a array of 3 array of 3 int 
-T: a typedef definition for int 
-fred: a function
-  with no parameters 
-  returning int 
-  with body 
-    a1: a open array of int 
-    a2: a variable-length array of int 
-    a4: a array of     3 int 
-    T: a array of     3 int 
-
-mary: a function
-  with parameters 
-    T: a array of     3 int 
-    p1: a const array of     3 int 
-    p2: a static array of     3 int 
-    p3: a const static array of     3 int 
-  returning int 
-  with body 
-
-  Null Statement:
-
-tom: a function
-  with no parameters 
-  returning pointer to array of     3 int 
-  with body 
-
-  Null Statement:
-
-jane: a function
-  with no parameters 
-  returning pointer to function
-      with parameters 
-        T: a array of         3 int 
-        p1: a const array of         3 int 
-        p2: a static array of         3 int 
-        p3: a const static array of         3 int 
-      returning int 
-
-  with body 
-
-  Null Statement:
-
Index: c/Tests/Parser/Expected/Constant0-1.tst
===================================================================
--- src/Tests/Parser/Expected/Constant0-1.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,62 +1,0 @@
-0: a int 
-0: a const int 
-0: a static const int 
-1: a int 
-1: a const int 
-1: a static const int 
-0: a int 
-1: a int 
-0: a const int 
-1: a const int 
-0: a static const int 
-1: a static const int 
-0: a instance of struct __anonymous0
-  with members 
-    i: a int 
-
-1: a const instance of struct __anonymous1
-  with members 
-    i: a int 
-
-1: a static const instance of struct __anonymous2
-  with members 
-    i: a int 
-
-1: a int 
-0: a pointer to int 
-1: a int 
-1: a int 
-0: a pointer to int 
-0: a pointer to int 
-0: a pointer to int 
-0: a const pointer to int 
-0: a const pointer to int 
-0: a const pointer to int 
-0: a pointer to instance of struct __anonymous3
-  with members 
-    i: a int 
-
-x: a pointer to int 
-0: a pointer to int 
-x: a const pointer to int 
-0: a const pointer to int 
-x: a static const pointer to int 
-0: a static const pointer to int 
-0: a pointer to instance of struct __anonymous4
-  with members 
-    i: a int 
-
-0: a const pointer to instance of struct __anonymous5
-  with members 
-    i: a int 
-
-0: a static const pointer to instance of struct __anonymous6
-  with members 
-    i: a int 
-
-x: a static pointer to int 
-0: a static pointer to int 
-x: a static const pointer to int 
-0: a static const pointer to int 
-x: a const pointer to pointer to int 
-0: a const pointer to pointer to int 
Index: c/Tests/Parser/Expected/DeclarationSpecifier.tst
===================================================================
--- src/Tests/Parser/Expected/DeclarationSpecifier.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,276 +1,0 @@
-Int: a typedef definition for short int 
-x1: a const volatile short int 
-x2: a static const volatile short int 
-x3: a static volatile const short int 
-x4: a static volatile const short int 
-x4: a static volatile const short int 
-x5: a static const volatile short int 
-x6: a static const volatile short int 
-x7: a static const volatile short int 
-x8: a static volatile const short int 
-x9: a static static volatile const short int 
-x10: a const volatile instance of struct __anonymous0
-  with members 
-    i: a int 
-
-x11: a const volatile instance of struct __anonymous1
-  with members 
-    i: a int 
-
-x12: a const volatile instance of struct __anonymous2
-  with members 
-    i: a int 
-
-x13: a static const volatile instance of struct __anonymous3
-  with members 
-    i: a int 
-
-x14: a static volatile const instance of struct __anonymous4
-  with members 
-    i: a int 
-
-x15: a static const volatile instance of struct __anonymous5
-  with members 
-    i: a int 
-
-x16: a static const volatile instance of struct __anonymous6
-  with members 
-    i: a int 
-
-x17: a static const volatile instance of struct __anonymous7
-  with members 
-    i: a int 
-
-x18: a static static const volatile instance of struct __anonymous8
-  with members 
-    i: a int 
-
-x19: a static static const volatile volatile instance of struct __anonymous9
-  with members 
-    i: a int 
-
-x20: a const volatile instance of type Int
-x21: a static const volatile instance of type Int
-x22: a static volatile const instance of type Int
-x23: a static volatile const instance of type Int
-x24: a static const volatile instance of type Int
-x25: a static const volatile instance of type Int
-x26: a static const volatile instance of type Int
-x27: a static volatile const instance of type Int
-x28: a static static volatile const instance of type Int
-x29: a const volatile instance of struct __anonymous10
-  with members 
-    i: a instance of type Int
-
-x30: a const volatile instance of struct __anonymous11
-  with members 
-    i: a instance of type Int
-
-x31: a const volatile instance of struct __anonymous12
-  with members 
-    i: a instance of type Int
-
-x32: a static const volatile instance of struct __anonymous13
-  with members 
-    i: a instance of type Int
-
-x33: a static volatile const instance of struct __anonymous14
-  with members 
-    i: a instance of type Int
-
-x34: a static const volatile instance of struct __anonymous15
-  with members 
-    i: a instance of type Int
-
-x35: a static const volatile instance of struct __anonymous16
-  with members 
-    i: a instance of type Int
-
-x36: a static const volatile instance of struct __anonymous17
-  with members 
-    i: a instance of type Int
-
-f01: a static inline function
-  with no parameters 
-  returning const volatile const int 
-
-f02: a inline static function
-  with no parameters 
-  returning volatile const volatile int 
-
-f03: a inline static function
-  with no parameters 
-  returning const volatile const int 
-
-f04: a inline static function
-  with no parameters 
-  returning const volatile volatile int 
-
-f05: a static inline function
-  with no parameters 
-  returning volatile const const int 
-
-f06: a static inline function
-  with no parameters 
-  returning volatile const volatile int 
-
-f07: a static inline function
-  with no parameters 
-  returning const volatile const int 
-
-f08: a static inline function
-  with no parameters 
-  returning const volatile volatile int 
-
-f11: a static inline function
-  with no parameters 
-  returning const volatile int 
-
-f12: a inline static function
-  with no parameters 
-  returning const volatile int 
-
-f13: a inline static function
-  with no parameters 
-  returning const volatile int 
-
-f14: a inline static function
-  with no parameters 
-  returning const volatile int 
-
-f15: a static inline function
-  with no parameters 
-  returning volatile const int 
-
-f16: a static inline function
-  with no parameters 
-  returning const volatile int 
-
-f17: a static inline function
-  with no parameters 
-  returning const volatile int 
-
-f18: a static inline function
-  with no parameters 
-  returning const volatile int 
-
-f21: a inline static function
-  with no parameters 
-  returning const volatile short int 
-
-f22: a static inline function
-  with no parameters 
-  returning const volatile short int 
-
-f23: a inline static function
-  with no parameters 
-  returning const volatile short int 
-
-f24: a inline static function
-  with no parameters 
-  returning const volatile short int 
-
-f25: a static inline function
-  with no parameters 
-  returning volatile const short int 
-
-f26: a static inline function
-  with no parameters 
-  returning const volatile short int 
-
-f27: a inline static function
-  with no parameters 
-  returning const volatile short int 
-
-f28: a inline static function
-  with no parameters 
-  returning volatile const short int 
-
-f31: a static inline function
-  with no parameters 
-  returning const volatile instance of struct __anonymous18
-      with members 
-        i: a int 
-
-
-f32: a inline static function
-  with no parameters 
-  returning const volatile instance of struct __anonymous19
-      with members 
-        i: a int 
-
-
-f33: a inline static function
-  with no parameters 
-  returning const volatile instance of struct __anonymous20
-      with members 
-        i: a int 
-
-
-f34: a inline static function
-  with no parameters 
-  returning const volatile instance of struct __anonymous21
-      with members 
-        i: a int 
-
-
-f35: a static inline function
-  with no parameters 
-  returning volatile const instance of struct __anonymous22
-      with members 
-        i: a int 
-
-
-f36: a static inline function
-  with no parameters 
-  returning const volatile instance of struct __anonymous23
-      with members 
-        i: a int 
-
-
-f37: a static inline function
-  with no parameters 
-  returning const volatile instance of struct __anonymous24
-      with members 
-        i: a int 
-
-
-f38: a static inline function
-  with no parameters 
-  returning const volatile instance of struct __anonymous25
-      with members 
-        i: a int 
-
-
-f41: a static inline function
-  with no parameters 
-  returning const volatile instance of type Int
-
-f42: a inline static function
-  with no parameters 
-  returning const volatile instance of type Int
-
-f43: a inline static function
-  with no parameters 
-  returning const volatile instance of type Int
-
-f44: a inline static function
-  with no parameters 
-  returning const volatile instance of type Int
-
-f45: a static inline function
-  with no parameters 
-  returning volatile const instance of type Int
-
-f46: a static inline function
-  with no parameters 
-  returning const volatile instance of type Int
-
-f47: a static inline function
-  with no parameters 
-  returning const volatile instance of type Int
-
-f48: a static inline function
-  with no parameters 
-  returning const volatile instance of type Int
-
Index: c/Tests/Parser/Expected/Forall.tst
===================================================================
--- src/Tests/Parser/Expected/Forall.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,319 +1,0 @@
-f: a typedef definition for pointer to forall 
-      T: a type variable 
-function
-    with parameters 
-      int 
-    returning int 
-
-swap: a forall 
-    T: a type variable 
-function
-  with parameters 
-    left: a instance of type T
-    right: a instance of type T
-  returning void 
-  with body 
-    temp: a instance of type T
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Referencing: Variable: left
-
-        Referencing: Variable: right
-
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Referencing: Variable: right
-
-        Referencing: Variable: temp
-
-
-context sumable
-  with type parameters 
-    T: a type variable 
-  with members 
-    0: a const instance of type T
-    ?+?: a function
-      with parameters 
-        instance of type T
-        instance of type T
-      returning instance of type T
-
-    ?++: a function
-      with parameters 
-        instance of type T
-      returning instance of type T
-
-    ?+=?: a function
-      with parameters 
-        instance of type T
-        instance of type T
-      returning tuple with members 
-          instance of type T
-
-
-
-T1: a type definition 
-  with assertions
-    0: a const instance of type T1
-    ?+?: a function
-      with parameters 
-        instance of type T1
-        instance of type T1
-      returning instance of type T1
-
-    ?++: a function
-      with parameters 
-        instance of type T1
-      returning instance of type T1
-
-    ?+=?: a function
-      with parameters 
-        instance of type T1
-        instance of type T1
-      returning tuple with members 
-          instance of type T1
-
-
-  
-T2: a type definition 
-  with parameters
-  P1: a type variable 
-  P2: a type variable 
-
-T3: a type definition 
-  with assertions
-    instance of context sumable
-      with parameters 
-      Type:        instance of type T3
-
-  
-T2: a type definition 
-  with parameters
-  P1: a type variable 
-  P2: a type variable 
-
-  with assertions
-    instance of context sumable
-      with parameters 
-      Type:        instance of type T2 with parameters
-          Type:            instance of type P1
-          Type:            instance of type P2
-
-
-  for instance of struct __anonymous0
-    with members 
-      i: a instance of type P1
-      j: a instance of type P2
-
-w1: a instance of type T2 with parameters
-  Type:    int 
-  Type:    int 
-
-w2: a typedef definition for instance of type T2 with parameters
-    Type:      int 
-    Type:      int 
-
-g2: a instance of type w2
-w3: a type definition for instance of type T2 with parameters
-    Type:      int 
-    Type:      int 
-
-g3: a instance of type w3
-sum: a forall 
-    T: a type variable 
-      with assertions
-        instance of context sumable
-          with parameters 
-          Type:            instance of type T
-
-      
-function
-  with parameters 
-    n: a int 
-    a: a open array of instance of type T
-  returning instance of type T
-  with body 
-    total: a instance of type T
-    i: a int 
-
-    For
-
-        Expression: 
-
-            Application of: 
-
-                Operator: Assign
-
-            ... on arguments: 
-
-                Referencing: Variable: i
-
-                Referencing: Variable: 0
-
-            Application of: 
-
-                Operator: LThan
-
-            ... on arguments: 
-
-                Referencing: Variable: i
-
-                Referencing: Variable: n
-
-            Application of: 
-
-                Operator: PlusAssn
-
-            ... on arguments: 
-
-                Referencing: Variable: i
-
-                Referencing: Variable: 1
-
-        Branches of execution: 
-            
-            Application of: 
-
-                Operator: Assign
-
-            ... on arguments: 
-
-                Referencing: Variable: total
-
-                Application of: 
-
-                    Operator: Plus
-
-                ... on arguments: 
-
-                    Referencing: Variable: total
-
-                    Application of: 
-
-                        Operator: Index
-
-                    ... on arguments: 
-
-                        Referencing: Variable: a
-
-                        Referencing: Variable: i
-
-
-    Return
-
-        Expression: 
-
-            Referencing: Variable: total
-
-twice: a forall 
-    T: a type variable 
-      with assertions
-        0: a const instance of type T
-        ?+?: a function
-          with parameters 
-            instance of type T
-            instance of type T
-          returning instance of type T
-
-        ?++: a function
-          with parameters 
-            instance of type T
-          returning instance of type T
-
-        ?+=?: a function
-          with parameters 
-            instance of type T
-            instance of type T
-          returning tuple with members 
-              instance of type T
-
-
-      
-function
-  with parameters 
-    t: a instance of type T
-  returning instance of type T
-  with body 
-
-    Return
-
-        Expression: 
-
-            Application of: 
-
-                Operator: Plus
-
-            ... on arguments: 
-
-                Referencing: Variable: t
-
-                Referencing: Variable: t
-
-main: a function
-  with no parameters 
-  returning int 
-  with body 
-    x: a int 
-    y: a int 
-    a: a array of     10 int 
-    f: a float 
-    
-    Application of: 
-
-        Referencing: Variable: swap
-
-    ... on arguments: 
-
-        Referencing: Variable: x
-
-        Referencing: Variable: y
-
-    
-    Application of: 
-
-        Referencing: Variable: twice
-
-    ... on arguments: 
-
-        Referencing: Variable: x
-
-        Referencing: Variable: y
-
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Referencing: Variable: f
-
-        Application of: 
-
-            Referencing: Variable: min
-
-        ... on arguments: 
-            4.0 
-            3.0 
-
-    
-    Application of: 
-
-        Referencing: Variable: sum
-
-    ... on arguments: 
-        10 
-
-        Referencing: Variable: a
-
-
Index: c/Tests/Parser/Expected/Functions.tst
===================================================================
--- src/Tests/Parser/Expected/Functions.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,741 +1,0 @@
-h: a function
-  with parameters 
-    void 
-  returning void 
-  with body 
-
-  Null Statement:
-
-f: a function
-  with parameters 
-    function
-      with parameters 
-        void 
-      returning int 
-
-    function
-      with parameters 
-        int 
-      returning int 
-
-    function
-      with parameters 
-        void 
-      returning int 
-
-    function
-      with parameters 
-        int 
-      returning int 
-
-    g: a function
-      with parameters 
-        void 
-      returning void 
-
-  returning int 
-  with body 
-    
-    Application of: 
-
-        Application of: 
-
-            Operator: PointTo
-
-        ... on arguments: 
-
-            Referencing: Variable: g
-
-    ... on no arguments: 
-
-    
-    Application of: 
-
-        Referencing: Variable: g
-
-    ... on no arguments: 
-
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Referencing: Variable: g
-
-        Referencing: Variable: h
-
-
-f1: a function
-  with no parameters 
-  returning int 
-  with body 
-
-  Null Statement:
-
-f2: a function
-  with no parameters 
-  returning int 
-  with body 
-
-  Null Statement:
-
-f3: a function
-  with no parameters 
-  returning pointer to function
-      with no parameters 
-      returning int 
-
-  with body 
-
-  Null Statement:
-
-f4: a function
-  with no parameters 
-  returning pointer to int 
-  with body 
-
-  Null Statement:
-
-f5: a function
-  with no parameters 
-  returning pointer to function
-      with no parameters 
-      returning int 
-
-  with body 
-
-  Null Statement:
-
-f6: a function
-  with no parameters 
-  returning pointer to int 
-  with body 
-
-  Null Statement:
-
-f7: a function
-  with no parameters 
-  returning pointer to int 
-  with body 
-
-  Null Statement:
-
-f8: a function
-  with no parameters 
-  returning pointer to pointer to int 
-  with body 
-
-  Null Statement:
-
-f9: a function
-  with no parameters 
-  returning pointer to const pointer to int 
-  with body 
-
-  Null Statement:
-
-f10: a function
-  with no parameters 
-  returning pointer to open array of int 
-  with body 
-
-  Null Statement:
-
-f11: a function
-  with no parameters 
-  returning pointer to open array of array of     3 int 
-  with body 
-
-  Null Statement:
-
-f12: a function
-  with no parameters 
-  returning pointer to open array of array of     3 int 
-  with body 
-
-  Null Statement:
-
-fII1: a function
-  with parameters 
-    i: a int 
-  returning nothing 
-  with body 
-
-  Null Statement:
-
-fII2: a function
-  with parameters 
-    i: a int 
-  returning const entity of unknown type 
-  with body 
-
-  Null Statement:
-
-fII3: a extern function
-  with parameters 
-    i: a int 
-  returning nothing 
-  with body 
-
-  Null Statement:
-
-fII4: a extern function
-  with parameters 
-    i: a int 
-  returning const entity of unknown type 
-  with body 
-
-  Null Statement:
-
-fII5: a function
-  with no parameters 
-  returning pointer 
-  with body 
-
-  Null Statement:
-
-fII6: a function
-  with no parameters 
-  returning const pointer 
-  with body 
-
-  Null Statement:
-
-fII7: a function
-  with no parameters 
-  returning pointer to const long 
-  with body 
-
-  Null Statement:
-
-fII8: a static function
-  with no parameters 
-  returning pointer to const long 
-  with body 
-
-  Null Statement:
-
-fII9: a static function
-  with no parameters 
-  returning pointer to const long 
-  with body 
-
-  Null Statement:
-
-fO1: a function
-  with no parameters 
-  with old-style identifier list 
-    i: a untyped entity 
-  with old-style declaration list 
-    i: a int 
-  returning nothing 
-  with body 
-
-  Null Statement:
-
-fO2: a function
-  with no parameters 
-  with old-style identifier list 
-    i: a untyped entity 
-  with old-style declaration list 
-    i: a int 
-  returning int 
-  with body 
-
-  Null Statement:
-
-fO3: a function
-  with no parameters 
-  with old-style identifier list 
-    i: a untyped entity 
-  with old-style declaration list 
-    i: a int 
-  returning const entity of unknown type 
-  with body 
-
-  Null Statement:
-
-fO4: a extern function
-  with no parameters 
-  with old-style identifier list 
-    i: a untyped entity 
-  with old-style declaration list 
-    i: a int 
-  returning nothing 
-  with body 
-
-  Null Statement:
-
-fO5: a extern function
-  with no parameters 
-  with old-style identifier list 
-    i: a untyped entity 
-  with old-style declaration list 
-    i: a int 
-  returning const entity of unknown type 
-  with body 
-
-  Null Statement:
-
-f: a function
-  with no parameters 
-  returning tuple 
-
-f: a function
-  with no parameters 
-  returning tuple with members 
-      int 
-
-
-f: a function
-  with parameters 
-    int 
-  returning tuple 
-
-f: a function
-  with parameters 
-    int 
-  returning tuple with members 
-      int 
-
-
-f: a function
-  with no parameters 
-  returning tuple 
-  with body 
-
-  Null Statement:
-
-f: a function
-  with no parameters 
-  returning tuple with members 
-      int 
-
-  with body 
-
-  Null Statement:
-
-f: a function
-  with parameters 
-    int 
-  returning tuple 
-  with body 
-
-  Null Statement:
-
-f: a function
-  with parameters 
-    int 
-  returning tuple with members 
-      int 
-
-  with body 
-
-  Null Statement:
-
-f: a function
-  with no parameters 
-  returning tuple with members 
-      x: a int 
-
-
-f: a function
-  with parameters 
-    x: a int 
-  returning tuple 
-
-f: a function
-  with parameters 
-    x: a int 
-  returning tuple with members 
-      x: a int 
-
-
-f: a function
-  with no parameters 
-  returning tuple with members 
-      x: a int 
-
-  with body 
-
-  Null Statement:
-
-f: a function
-  with parameters 
-    x: a int 
-  returning tuple 
-  with body 
-
-  Null Statement:
-
-f: a function
-  with parameters 
-    x: a int 
-  returning tuple with members 
-      x: a int 
-
-  with body 
-
-  Null Statement:
-
-f: a function
-  with no parameters 
-  returning tuple with members 
-      int 
-      x: a int 
-
-
-f: a function
-  with parameters 
-    int 
-    x: a int 
-  returning tuple 
-
-f: a function
-  with parameters 
-    int 
-    x: a int 
-  returning tuple with members 
-      int 
-      x: a int 
-
-
-f: a function
-  with no parameters 
-  returning tuple with members 
-      int 
-      x: a int 
-
-  with body 
-
-  Null Statement:
-
-f: a function
-  with parameters 
-    int 
-    x: a int 
-  returning tuple 
-  with body 
-
-  Null Statement:
-
-f: a function
-  with parameters 
-    int 
-    x: a int 
-  returning tuple with members 
-      int 
-      x: a int 
-
-  with body 
-
-  Null Statement:
-
-f: a function
-  with no parameters 
-  returning tuple with members 
-      int 
-      x: a int 
-      int 
-
-
-f: a function
-  with parameters 
-    int 
-    x: a int 
-    int 
-  returning tuple 
-
-f: a function
-  with parameters 
-    int 
-    x: a int 
-    int 
-  returning tuple with members 
-      int 
-      x: a int 
-      int 
-
-
-f: a function
-  with no parameters 
-  returning tuple with members 
-      int 
-      x: a int 
-      int 
-
-  with body 
-
-  Null Statement:
-
-f: a function
-  with parameters 
-    int 
-    x: a int 
-    int 
-  returning tuple 
-  with body 
-
-  Null Statement:
-
-f: a function
-  with parameters 
-    int 
-    x: a int 
-    int 
-  returning tuple with members 
-      int 
-      x: a int 
-      int 
-
-  with body 
-
-  Null Statement:
-
-f: a function
-  with no parameters 
-  returning tuple with members 
-      int 
-      x: a int 
-      y: a pointer to int 
-
-
-f: a function
-  with parameters 
-    int 
-    x: a int 
-    y: a pointer to int 
-  returning tuple 
-
-f: a function
-  with parameters 
-    int 
-    x: a int 
-    y: a pointer to int 
-  returning tuple with members 
-      int 
-      x: a int 
-      y: a pointer to int 
-
-
-f: a function
-  with no parameters 
-  returning tuple with members 
-      int 
-      x: a int 
-      y: a pointer to int 
-
-  with body 
-
-  Null Statement:
-
-f: a function
-  with parameters 
-    int 
-    x: a int 
-    y: a pointer to int 
-  returning tuple 
-  with body 
-
-  Null Statement:
-
-f: a function
-  with parameters 
-    int 
-    x: a int 
-    y: a pointer to int 
-  returning tuple with members 
-      int 
-      x: a int 
-      y: a pointer to int 
-
-  with body 
-
-  Null Statement:
-
-f11: a function
-  with parameters 
-    int 
-  returning tuple with members 
-      int 
-
-
-f12: a function
-  with parameters 
-    int 
-  returning tuple with members 
-      int 
-
-
-f: a function
-  with parameters 
-    function
-      with parameters 
-        int 
-        p: a int 
-      returning int 
-
-    function
-      with parameters 
-        int 
-      returning tuple with members 
-          int 
-
-
-  returning tuple with members 
-      int 
-
-  with body 
-    p: a pointer to open array of array of     10 pointer to open array of array of     3 int 
-    p: a pointer to open array of array of     10 pointer to open array of array of     3 int 
-    p: a pointer to open array of pointer to function
-      with parameters 
-        int 
-      returning tuple with members 
-          int 
-
-
-
-f1: a static function
-  with no parameters 
-  returning pointer to const int 
-  with body 
-
-  Null Statement:
-
-f2: a static function
-  with no parameters 
-  returning tuple with members 
-      const int 
-
-  with body 
-
-  Null Statement:
-
-f3: a static inline function
-  with no parameters 
-  returning tuple with members 
-      const pointer to int 
-
-  with body 
-
-  Null Statement:
-
-f4: a static inline function
-  with no parameters 
-  returning tuple with members 
-      const tuple with members 
-        pointer to int 
-        int 
-
-
-  with body 
-
-  Null Statement:
-
-f5: a static function
-  with no parameters 
-  returning tuple with members 
-      const tuple with members 
-        pointer to int 
-        const int 
-
-
-  with body 
-
-  Null Statement:
-
-f: a function
-  with parameters 
-    function
-      with no parameters 
-      returning int 
-
-    function
-      with no parameters 
-      returning pointer to int 
-
-    function
-      with no parameters 
-      returning pointer to pointer to int 
-
-    function
-      with no parameters 
-      returning pointer to const pointer to int 
-
-    function
-      with no parameters 
-      returning const pointer to const pointer to int 
-
-    open array of int 
-    array of     10 int 
-    open array of pointer to int 
-    array of     10 pointer to int 
-    open array of pointer to pointer to int 
-    array of     10 pointer to pointer to int 
-    open array of pointer to const pointer to int 
-    array of     10 pointer to const pointer to int 
-    open array of const pointer to const pointer to int 
-    array of     10 const pointer to const pointer to int 
-  returning int 
-
-f: a function
-  with parameters 
-    function
-      with no parameters 
-      returning int 
-
-    function
-      with no parameters 
-      returning pointer to int 
-
-    function
-      with no parameters 
-      returning pointer to pointer to int 
-
-    function
-      with no parameters 
-      returning pointer to const pointer to int 
-
-    function
-      with no parameters 
-      returning const pointer to const pointer to int 
-
-    open array of int 
-    array of     10 int 
-    open array of pointer to int 
-    array of     10 pointer to int 
-    open array of pointer to pointer to int 
-    array of     10 pointer to pointer to int 
-    open array of pointer to const pointer to int 
-    array of     10 pointer to const pointer to int 
-    open array of const pointer to const pointer to int 
-    array of     10 const pointer to const pointer to int 
-  returning int 
-  with body 
-
-  Null Statement:
-
-T: a typedef definition for int 
-f: a function
-  with parameters 
-    function
-      with parameters 
-        instance of type T
-      returning instance of type T
-
-    T: a instance of type T
-  returning int 
-  with body 
-    
-    Application of: 
-
-        Referencing: Variable: T
-
-    ... on arguments: 
-
-        Referencing: Variable: T
-
-
Index: c/Tests/Parser/Expected/IdentFuncDeclarator.tst
===================================================================
--- src/Tests/Parser/Expected/IdentFuncDeclarator.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,163 +1,0 @@
-main: a function
-  with no parameters 
-  returning int 
-  with body 
-    f1: a int 
-    f2: a int 
-    f3: a pointer to int 
-    f4: a pointer to pointer to int 
-    f5: a pointer to const pointer to int 
-    f6: a const pointer to const pointer to int 
-    f7: a pointer to int 
-    f8: a pointer to pointer to int 
-    f9: a pointer to const pointer to int 
-    f10: a const pointer to const pointer to int 
-    f11: a pointer to int 
-    f12: a pointer to pointer to int 
-    f13: a pointer to const pointer to int 
-    f14: a const pointer to const pointer to int 
-    f15: a open array of int 
-    f16: a array of     10 int 
-    f17: a open array of int 
-    f18: a array of     10 int 
-    f19: a open array of pointer to int 
-    f20: a array of     10 pointer to int 
-    f21: a open array of pointer to pointer to int 
-    f22: a array of     10 pointer to pointer to int 
-    f23: a open array of pointer to const pointer to int 
-    f24: a array of     10 pointer to const pointer to int 
-    f25: a open array of const pointer to const pointer to int 
-    f26: a array of     10 const pointer to const pointer to int 
-    f27: a open array of pointer to int 
-    f28: a array of     10 pointer to int 
-    f29: a open array of pointer to pointer to int 
-    f30: a array of     10 pointer to pointer to int 
-    f31: a open array of pointer to const pointer to int 
-    f32: a array of     10 pointer to const pointer to int 
-    f33: a open array of const pointer to const pointer to int 
-    f34: a array of     10 const pointer to const pointer to int 
-    f35: a open array of pointer to int 
-    f36: a array of     10 pointer to int 
-    f37: a open array of pointer to pointer to int 
-    f38: a array of     10 pointer to pointer to int 
-    f39: a open array of pointer to const pointer to int 
-    f40: a array of     10 pointer to const pointer to int 
-    f41: a open array of const pointer to const pointer to int 
-    f42: a array of     10 const pointer to const pointer to int 
-    f43: a open array of array of     3 int 
-    f44: a array of     3 array of     3 int 
-    f45: a open array of array of     3 int 
-    f46: a array of     3 array of     3 int 
-    f47: a open array of array of     3 int 
-    f48: a array of     3 array of     3 int 
-    f49: a open array of array of     3 pointer to int 
-    f50: a array of     3 array of     3 pointer to int 
-    f51: a open array of array of     3 pointer to pointer to int 
-    f52: a array of     3 array of     3 pointer to pointer to int 
-    f53: a open array of array of     3 pointer to const pointer to int 
-    f54: a array of     3 array of     3 pointer to const pointer to int 
-    f55: a open array of array of     3 const pointer to const pointer to int 
-    f56: a array of     3 array of     3 const pointer to const pointer to int 
-    f57: a open array of array of     3 pointer to int 
-    f58: a array of     3 array of     3 pointer to int 
-    f59: a open array of array of     3 pointer to pointer to int 
-    f60: a array of     3 array of     3 pointer to pointer to int 
-    f61: a open array of array of     3 pointer to const pointer to int 
-    f62: a array of     3 array of     3 pointer to const pointer to int 
-    f63: a open array of array of     3 const pointer to const pointer to int 
-    f64: a array of     3 array of     3 const pointer to const pointer to int 
-    f65: a function
-      with parameters 
-        int 
-      returning int 
-
-    f66: a function
-      with parameters 
-        int 
-      returning int 
-
-    f67: a function
-      with parameters 
-        int 
-      returning pointer to int 
-
-    f68: a function
-      with parameters 
-        int 
-      returning pointer to pointer to int 
-
-    f69: a function
-      with parameters 
-        int 
-      returning pointer to const pointer to int 
-
-    f70: a function
-      with parameters 
-        int 
-      returning const pointer to const pointer to int 
-
-    f71: a function
-      with parameters 
-        int 
-      returning pointer to int 
-
-    f72: a function
-      with parameters 
-        int 
-      returning pointer to pointer to int 
-
-    f73: a function
-      with parameters 
-        int 
-      returning pointer to const pointer to int 
-
-    f74: a function
-      with parameters 
-        int 
-      returning const pointer to const pointer to int 
-
-    f75: a pointer to function
-      with parameters 
-        int 
-      returning int 
-
-    f76: a pointer to pointer to function
-      with parameters 
-        int 
-      returning int 
-
-    f77: a pointer to const pointer to function
-      with parameters 
-        int 
-      returning int 
-
-    f78: a const pointer to const pointer to function
-      with parameters 
-        int 
-      returning int 
-
-    f79: a pointer to function
-      with parameters 
-        int 
-      returning pointer to function
-          with no parameters 
-          returning int 
-
-
-    f80: a const pointer to function
-      with parameters 
-        int 
-      returning pointer to function
-          with no parameters 
-          returning int 
-
-
-    f81: a const pointer to function
-      with parameters 
-        int 
-      returning const pointer to function
-          with no parameters 
-          returning int 
-
-
-
Index: c/Tests/Parser/Expected/IdentFuncParamDeclarator.tst
===================================================================
--- src/Tests/Parser/Expected/IdentFuncParamDeclarator.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,199 +1,0 @@
-fred: a function
-  with parameters 
-    f1: a int 
-    f2: a int 
-    f3: a pointer to int 
-    f4: a pointer to pointer to int 
-    f5: a pointer to const pointer to int 
-    f6: a const pointer to const pointer to int 
-    f7: a pointer to int 
-    f8: a pointer to pointer to int 
-    f9: a pointer to const pointer to int 
-    f10: a const pointer to const pointer to int 
-    f11: a pointer to int 
-    f12: a pointer to pointer to int 
-    f13: a pointer to const pointer to int 
-    f14: a const pointer to const pointer to int 
-    f15: a open array of int 
-    f16: a array of     10 int 
-    f17: a open array of int 
-    f18: a array of     10 int 
-    f19: a open array of pointer to int 
-    f20: a array of     10 pointer to int 
-    f21: a open array of pointer to pointer to int 
-    f22: a array of     10 pointer to pointer to int 
-    f23: a open array of pointer to const pointer to int 
-    f24: a array of     10 pointer to const pointer to int 
-    f25: a open array of const pointer to const pointer to int 
-    f26: a array of     10 const pointer to const pointer to int 
-    f27: a open array of pointer to int 
-    f28: a array of     10 pointer to int 
-    f29: a open array of pointer to pointer to int 
-    f30: a array of     10 pointer to pointer to int 
-    f31: a open array of pointer to const pointer to int 
-    f32: a array of     10 pointer to const pointer to int 
-    f33: a open array of const pointer to const pointer to int 
-    f34: a array of     10 const pointer to const pointer to int 
-    f35: a open array of pointer to int 
-    f36: a array of     10 pointer to int 
-    f37: a open array of pointer to pointer to int 
-    f38: a array of     10 pointer to pointer to int 
-    f39: a open array of pointer to const pointer to int 
-    f40: a array of     10 pointer to const pointer to int 
-    f41: a open array of const pointer to const pointer to int 
-    f42: a array of     10 const pointer to const pointer to int 
-    f43: a open array of array of     3 int 
-    f44: a array of     3 array of     3 int 
-    f45: a open array of array of     3 int 
-    f46: a array of     3 array of     3 int 
-    f47: a open array of array of     3 int 
-    f48: a array of     3 array of     3 int 
-    f49: a open array of array of     3 pointer to int 
-    f50: a array of     3 array of     3 pointer to int 
-    f51: a open array of array of     3 pointer to pointer to int 
-    f52: a array of     3 array of     3 pointer to pointer to int 
-    f53: a open array of array of     3 pointer to const pointer to int 
-    f54: a array of     3 array of     3 pointer to const pointer to int 
-    f55: a open array of array of     3 const pointer to const pointer to int 
-    f56: a array of     3 array of     3 const pointer to const pointer to int 
-    f57: a open array of array of     3 pointer to int 
-    f58: a array of     3 array of     3 pointer to int 
-    f59: a open array of array of     3 pointer to pointer to int 
-    f60: a array of     3 array of     3 pointer to pointer to int 
-    f61: a open array of array of     3 pointer to const pointer to int 
-    f62: a array of     3 array of     3 pointer to const pointer to int 
-    f63: a open array of array of     3 const pointer to const pointer to int 
-    f64: a array of     3 array of     3 const pointer to const pointer to int 
-    f65: a function
-      with parameters 
-        int 
-      returning int 
-
-    f66: a function
-      with parameters 
-        int 
-      returning int 
-
-    f67: a function
-      with parameters 
-        int 
-      returning pointer to int 
-
-    f68: a function
-      with parameters 
-        int 
-      returning pointer to pointer to int 
-
-    f69: a function
-      with parameters 
-        int 
-      returning pointer to const pointer to int 
-
-    f70: a function
-      with parameters 
-        int 
-      returning const pointer to const pointer to int 
-
-    f71: a function
-      with parameters 
-        int 
-      returning pointer to int 
-
-    f72: a function
-      with parameters 
-        int 
-      returning pointer to pointer to int 
-
-    f73: a function
-      with parameters 
-        int 
-      returning pointer to const pointer to int 
-
-    f74: a function
-      with parameters 
-        int 
-      returning const pointer to const pointer to int 
-
-    f75: a pointer to function
-      with parameters 
-        int 
-      returning int 
-
-    f76: a pointer to pointer to function
-      with parameters 
-        int 
-      returning int 
-
-    f77: a pointer to const pointer to function
-      with parameters 
-        int 
-      returning int 
-
-    f78: a const pointer to const pointer to function
-      with parameters 
-        int 
-      returning int 
-
-    f79: a pointer to function
-      with parameters 
-        int 
-      returning pointer to function
-          with no parameters 
-          returning int 
-
-
-    f80: a const pointer to function
-      with parameters 
-        int 
-      returning pointer to function
-          with no parameters 
-          returning int 
-
-
-    f81: a const pointer to function
-      with parameters 
-        int 
-      returning const pointer to function
-          with no parameters 
-          returning int 
-
-
-    f82: a const variable-length array of int 
-    f83: a const array of     3 int 
-    f84: a static array of     3 int 
-    f85: a const static array of     3 int 
-    f86: a const variable-length array of int 
-    f87: a const array of     3 int 
-    f88: a static array of     3 int 
-    f89: a const static array of     3 int 
-    f90: a const variable-length array of pointer to int 
-    f91: a const array of     3 pointer to int 
-    f92: a static array of     3 pointer to pointer to int 
-    f93: a const static array of     3 pointer to const pointer to int 
-    f94: a const static array of     3 const pointer to const pointer to int 
-    f95: a const variable-length array of pointer to int 
-    f96: a const array of     3 pointer to int 
-    f97: a static array of     3 pointer to pointer to int 
-    f98: a const static array of     3 pointer to const pointer to int 
-    f99: a const static array of     3 const pointer to const pointer to int 
-    f100: a const variable-length array of array of     3 int 
-    f101: a const array of     3 array of     3 int 
-    f102: a static array of     3 array of     3 int 
-    f103: a const static array of     3 array of     3 int 
-    f104: a const variable-length array of array of     3 int 
-    f105: a const array of     3 array of     3 int 
-    f106: a static array of     3 array of     3 int 
-    f107: a const static array of     3 array of     3 int 
-    f108: a const variable-length array of array of     3 pointer to int 
-    f109: a const array of     3 array of     3 pointer to int 
-    f110: a static array of     3 array of     3 pointer to pointer to int 
-    f111: a const static array of     3 array of     3 pointer to const pointer to int 
-    f112: a const static array of     3 array of     3 const pointer to const pointer to int 
-    f113: a const variable-length array of array of     3 pointer to int 
-    f114: a const array of     3 array of     3 pointer to int 
-    f115: a static array of     3 array of     3 pointer to pointer to int 
-    f116: a const static array of     3 array of     3 pointer to const pointer to int 
-    f117: a const static array of     3 array of     3 const pointer to const pointer to int 
-  returning int 
-  with body 
-
Index: c/Tests/Parser/Expected/Initialization.tst
===================================================================
--- src/Tests/Parser/Expected/Initialization.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,29 +1,0 @@
-x21: a pointer to int 
-x22: a int 
-x21: a pointer to int 
-x22: a int 
-y1: a array of 20 int 
-y2: a array of 20 int 
-a: a instance of struct __anonymous0
-  with members 
-    w: a tuple with members 
-      int 
-
-
-w: a open array of instance of struct __anonymous1
-  with members 
-    a: a array of     3 int 
-    b: a int 
-
-v7: a instance of struct __anonymous3
-  with members 
-    f1: a int 
-    f2: a int 
-    f3: a int 
-    f4: a array of     4 instance of struct __anonymous2
-      with members 
-        g1: a int 
-        g2: a int 
-        g3: a int 
-
-
Index: c/Tests/Parser/Expected/Scope.tst
===================================================================
--- src/Tests/Parser/Expected/Scope.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,152 +1,0 @@
-x: a int 
-y: a typedef definition for double 
-t: a typedef definition for float 
-z: a instance of type y
-u: a type definition for instance of struct __anonymous0
-    with members 
-      a: a int 
-      b: a double 
-
-f: a function
-  with parameters 
-    y: a int 
-  returning int 
-
-q: a instance of type y
-w: a function
-  with parameters 
-    y: a instance of type y
-    v: a instance of type u
-  returning instance of type y
-  with body 
-    x: a type definition 
-      with assertions
-        t: a function
-          with parameters 
-            instance of type u
-          returning instance of type x
-
-      
-    u: a instance of type u
-      with initializer y 
-    z: a instance of type x
-      with initializer ( t u ) 
-
-p: a instance of type y
-context has_u
-  with type parameters 
-    z: a type variable 
-  with members 
-    u: a function
-      with parameters 
-        instance of type z
-      returning instance of type z
-
-
-q: a forall 
-    t: a type variable 
-      with assertions
-        instance of context has_u
-          with parameters 
-          Type:            instance of type t
-
-      
-function
-  with parameters 
-    the_t: a instance of type t
-  returning instance of type y
-  with body 
-    y: a instance of type t
-      with initializer ( u the_t ) 
-
-f: a function
-  with parameters 
-    p: a instance of type y
-  returning instance of type t
-  with body 
-    y: a int 
-    x: a typedef definition for char 
-      y: a instance of type x
-      z: a typedef definition for instance of type x
-        x: a instance of type z
-        y: a typedef definition for instance of type z
-        z: a instance of type y
-          with initializer x 
-      x: a instance of type z
-        with initializer y 
-    q: a instance of type x
-      with initializer y 
-
-g: a function
-  with parameters 
-    void 
-  returning instance of type t
-  with body 
-    x: a typedef definition for char 
-
-    Try
-
-        Branches of execution: 
-              
-              Application of: 
-
-                  Referencing: Variable: some_func
-
-              ... on no arguments: 
-
-
-            Catch
-
-                Declaration: 
-                    x: a instance of type x
-
-                Branches of execution: 
-                      y: a instance of type t
-                        with initializer x 
-    z: a instance of type x
-
-q: a function
-  with no parameters 
-  with old-style identifier list 
-    i: a untyped entity 
-  with old-style declaration list 
-    i: a int 
-  returning instance of type y
-  with body 
-
-    Switch
-
-        Expression: 
-
-            Referencing: Variable: i
-
-        Branches of execution: 
-
-            Case
-
-                Expression: 
-
-                    Referencing: Variable: 0
-
-                Branches of execution: 
-
-                    Return
-
-                        Expression: 
-
-                            Referencing: Variable: q
-
-            Default
-
-                Expression: 
-
-                    Null Expression
-
-                Branches of execution: 
-
-                    Return
-
-                        Expression: 
-
-                            Referencing: Variable: i
-
Index: c/Tests/Parser/Expected/StructMember.tst
===================================================================
--- src/Tests/Parser/Expected/StructMember.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,73 +1,0 @@
-T: a typedef definition for int 
-struct S
-  with members 
-    m1: a int 
-      with bitfield width 3 
-    m2: a int 
-      with bitfield width 4 
-    int 
-      with bitfield width 2 
-    int 
-      with bitfield width 3 
-    int 
-      with bitfield width 4 
-    m3: a int 
-    m4: a int 
-    m5: a int 
-    m6: a int 
-    m7: a pointer to int 
-    m8: a pointer to int 
-    m9: a pointer to int 
-    m10: a pointer to function
-      with no parameters 
-      returning int 
-
-    m11: a pointer to function
-      with parameters 
-        int 
-      returning pointer to int 
-
-    T: a instance of type T
-    T: a instance of type T
-    m12: a pointer to int 
-    m13: a pointer to int 
-    m14: a pointer to function
-      with parameters 
-        int 
-      returning tuple with members 
-          pointer to int 
-
-
-    int 
-    int 
-    int 
-    int 
-    pointer to int 
-    int 
-    int 
-    pointer to int 
-    pointer to int 
-    pointer to int 
-    pointer to int 
-    pointer to int 
-    pointer to int 
-    pointer to function
-      with no parameters 
-      returning int 
-
-    pointer to pointer to function
-      with parameters 
-        int 
-      returning int 
-
-    instance of type T
-
-s: a instance of struct S
-
-u: a instance of union U
-  with members 
-    m1: a array of     5 int 
-    m2: a array of     5 int 
-    m3: a pointer to int 
-    m4: a pointer to int 
-
Index: c/Tests/Parser/Expected/Tuple.tst
===================================================================
--- src/Tests/Parser/Expected/Tuple.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,788 +1,0 @@
-f: a function
-  with parameters 
-    int 
-    int 
-  returning int 
-
-g: a function
-  with parameters 
-    int 
-    int 
-    int 
-  returning int 
-
-h: a static function
-  with parameters 
-    a: a int 
-    b: a int 
-    c: a pointer to int 
-    d: a open array of char 
-  returning tuple with members 
-      int 
-      pointer to int 
-      pointer to int 
-      int 
-
-
-struct inner
-  with members 
-    f2: a int 
-    f3: a int 
-
-s: a instance of struct outer
-  with members 
-    f1: a int 
-    i: a instance of struct inner
-
-    f4: a double 
-
-sp: a pointer to instance of struct outer
-
-t1: a const volatile tuple with members 
-  int 
-  int 
-
-t2: a static const tuple with members 
-  int 
-  const int 
-
-t3: a static const tuple with members 
-  int 
-  const int 
-
-printf: a function
-  with parameters 
-    fmt: a pointer to char 
-    and a variable number of other arguments
-  returning tuple with members 
-      rc: a int 
-
-
-printf: a function
-  with parameters 
-    fmt: a pointer to char 
-    and a variable number of other arguments
-  returning int 
-
-f1: a function
-  with parameters 
-    w: a int 
-  returning tuple with members 
-      x: a short 
-      y: a unsigned 
-
-  with body 
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Application of: 
-
-            Operator: TupleC
-
-        ... on arguments: 
-
-            Referencing: Variable: y
-
-            Referencing: Variable: x
-
-        Application of: 
-
-            Operator: Assign
-
-        ... on arguments: 
-
-            Application of: 
-
-                Operator: TupleC
-
-            ... on arguments: 
-
-                Referencing: Variable: x
-
-                Referencing: Variable: y
-
-            Application of: 
-
-                Operator: TupleC
-
-            ... on arguments: 
-
-                Referencing: Variable: w
-                23 
-
-
-g1: a function
-  with no parameters 
-  returning tuple with members 
-      r: a tuple with members 
-        int 
-        char 
-        long 
-        int 
-
-
-  with body 
-    x: a short 
-    p: a short 
-    y: a unsigned int 
-    z: a tuple with members 
-      int 
-      int 
-
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Application of: 
-
-            Operator: TupleC
-
-        ... on arguments: 
-
-            Referencing: Variable: x
-
-            Referencing: Variable: y
-
-            Referencing: Variable: z
-
-        Application of: 
-
-            Operator: Cast
-
-        ... on arguments: 
-            Type:              tuple with members 
-                short 
-                unsigned int 
-                tuple with members 
-                  int 
-                  int 
-
-
-
-            Application of: 
-
-                Operator: TupleC
-
-            ... on arguments: 
-
-                Referencing: Variable: p
-
-                Application of: 
-
-                    Referencing: Variable: f
-
-                ... on arguments: 
-                    17 
-                3 
-
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Referencing: Variable: r
-
-        Application of: 
-
-            Operator: TupleC
-
-        ... on arguments: 
-
-            Referencing: Variable: x
-
-            Referencing: Variable: y
-
-            Referencing: Variable: z
-
-
-main: a function
-  with parameters 
-    argc: a int 
-    argv: a pointer to pointer to char 
-  returning tuple with members 
-      rc: a int 
-
-  with body 
-    a: a int 
-    b: a int 
-    c: a int 
-    d: a int 
-    t: a instance of struct outer
-
-      with initializer [designated by: ()( TupleC 1 7.0 ) ]
-    
-    Application of: 
-
-        Referencing: Variable: f
-
-    ... on arguments: 
-
-        Application of: 
-
-            Operator: TupleC
-
-        ... on arguments: 
-            3 
-            5 
-
-    
-    Application of: 
-
-        Referencing: Variable: g
-
-    ... on arguments: 
-
-        Application of: 
-
-            Operator: TupleC
-
-        ... on arguments: 
-            3 
-            5 
-        3 
-
-    
-    Application of: 
-
-        Referencing: Variable: f
-
-    ... on arguments: 
-
-        Referencing: Variable: t1
-
-    
-    Application of: 
-
-        Referencing: Variable: g
-
-    ... on arguments: 
-
-        Referencing: Variable: t1
-        3 
-
-    
-    Application of: 
-
-        Operator: TupleC
-
-    ... on arguments: 
-        3 
-        5 
-
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Application of: 
-
-            Operator: TupleC
-
-        ... on arguments: 
-
-            Referencing: Variable: a
-
-            Referencing: Variable: b
-        3 
-
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Application of: 
-
-            Operator: TupleC
-
-        ... on arguments: 
-
-            Referencing: Variable: a
-
-            Referencing: Variable: b
-
-        Application of: 
-
-            Operator: TupleC
-
-        ... on arguments: 
-            4.6 
-
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Application of: 
-
-            Operator: TupleC
-
-        ... on arguments: 
-
-            Referencing: Variable: a
-
-            Referencing: Variable: b
-
-        Application of: 
-
-            Operator: Assign
-
-        ... on arguments: 
-
-            Application of: 
-
-                Operator: TupleC
-
-            ... on arguments: 
-
-                Referencing: Variable: c
-
-                Referencing: Variable: d
-
-            Application of: 
-
-                Operator: TupleC
-
-            ... on arguments: 
-                3 
-                5 
-
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Application of: 
-
-            Operator: TupleC
-
-        ... on arguments: 
-
-            Referencing: Variable: a
-
-            Referencing: Variable: b
-
-            Application of: 
-
-                Operator: TupleC
-
-            ... on arguments: 
-
-                Referencing: Variable: c
-
-        Application of: 
-
-            Operator: TupleC
-
-        ... on arguments: 
-            2 
-
-            Referencing: Variable: a
-
-            Referencing: Variable: b
-
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Application of: 
-
-            Operator: TupleC
-
-        ... on arguments: 
-
-            Referencing: Variable: a
-
-            Referencing: Variable: b
-
-        Application of: 
-
-            Operator: Cond
-
-        ... on arguments: 
-
-            Application of: 
-
-                Operator: GThan
-
-            ... on arguments: 
-                3 
-                4 
-
-            Application of: 
-
-                Operator: TupleC
-
-            ... on arguments: 
-
-                Referencing: Variable: b
-                6 
-
-            Application of: 
-
-                Operator: TupleC
-
-            ... on arguments: 
-                7 
-                8 
-
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Referencing: Variable: t1
-
-        Application of: 
-
-            Operator: TupleC
-
-        ... on arguments: 
-
-            Referencing: Variable: a
-
-            Referencing: Variable: b
-
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Referencing: Variable: t1
-
-        Application of: 
-
-            Operator: Assign
-
-        ... on arguments: 
-
-            Referencing: Variable: t2
-
-            Application of: 
-
-                Operator: TupleC
-
-            ... on arguments: 
-
-                Referencing: Variable: a
-
-                Referencing: Variable: b
-
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Application of: 
-
-            Operator: TupleC
-
-        ... on arguments: 
-
-            Referencing: Variable: a
-
-            Referencing: Variable: b
-
-        Application of: 
-
-            Operator: Assign
-
-        ... on arguments: 
-
-            Application of: 
-
-                Operator: TupleC
-
-            ... on arguments: 
-
-                Referencing: Variable: c
-
-                Referencing: Variable: d
-
-            Application of: 
-
-                Operator: PlusAssn
-
-            ... on arguments: 
-
-                Referencing: Variable: d
-
-                Application of: 
-
-                    Operator: PlusAssn
-
-                ... on arguments: 
-
-                    Referencing: Variable: c
-
-                    Referencing: Variable: 1
-
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Application of: 
-
-            Operator: TupleC
-
-        ... on arguments: 
-
-            Referencing: Variable: a
-
-            Referencing: Variable: b
-
-        Application of: 
-
-            Operator: Assign
-
-        ... on arguments: 
-
-            Application of: 
-
-                Operator: TupleC
-
-            ... on arguments: 
-
-                Referencing: Variable: c
-
-                Referencing: Variable: d
-
-            Referencing: Variable: t1
-
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Application of: 
-
-            Operator: TupleC
-
-        ... on arguments: 
-
-            Referencing: Variable: a
-
-            Referencing: Variable: b
-
-        Application of: 
-
-            Operator: Assign
-
-        ... on arguments: 
-
-            Referencing: Variable: t1
-
-            Application of: 
-
-                Operator: TupleC
-
-            ... on arguments: 
-
-                Referencing: Variable: c
-
-                Referencing: Variable: d
-
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Application of: 
-
-            Operator: TupleC
-
-        ... on arguments: 
-
-            Referencing: Variable: a
-
-            Referencing: Variable: b
-
-        Application of: 
-
-            Operator: Assign
-
-        ... on arguments: 
-
-            Referencing: Variable: t1
-
-            Application of: 
-
-                Operator: Assign
-
-            ... on arguments: 
-
-                Referencing: Variable: t2
-
-                Application of: 
-
-                    Operator: TupleC
-
-                ... on arguments: 
-
-                    Referencing: Variable: c
-
-                    Referencing: Variable: d
-
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Referencing: Variable: t1
-
-        Application of: 
-
-            Operator: Assign
-
-        ... on arguments: 
-
-            Application of: 
-
-                Operator: TupleC
-
-            ... on arguments: 
-                3 
-                4 
-
-            Application of: 
-
-                Operator: Assign
-
-            ... on arguments: 
-
-                Application of: 
-
-                    Operator: TupleC
-
-                ... on arguments: 
-                    3 
-                    4 
-
-                Application of: 
-
-                    Operator: Assign
-
-                ... on arguments: 
-
-                    Referencing: Variable: t1
-
-                    Application of: 
-
-                        Operator: TupleC
-
-                    ... on arguments: 
-                        3 
-                        4 
-
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Referencing: Variable: s
-
-        Application of: 
-
-            Operator: TupleC
-
-        ... on arguments: 
-            11 
-
-            Application of: 
-
-                Operator: Comma
-
-            ... on arguments: 
-                12 
-                13 
-            3.14159 
-
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Referencing: Variable: s
-
-        Application of: 
-
-            Referencing: Variable: h
-
-        ... on arguments: 
-            3 
-            3 
-
-            Referencing: Variable: 0
-            ""abc"" 
-
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Referencing: Variable: sp
-
-        Referencing: Variable: sp
-
-    
-    Application of: 
-
-        Referencing: Variable: printf
-
-    ... on arguments: 
-        ""expecting 3, 17, 23, 4; got %d, %d, %d, %d\n"" 
-
-        Referencing: Variable: s
-
-    
-    Application of: 
-
-        Operator: Assign
-
-    ... on arguments: 
-
-        Referencing: Variable: rc
-
-        Referencing: Variable: 0
-
-
Index: c/Tests/Parser/Expected/TypeGenerator.tst
===================================================================
--- src/Tests/Parser/Expected/TypeGenerator.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,112 +1,0 @@
-context addable
-  with type parameters 
-    T: a type variable 
-  with members 
-    ?+?: a function
-      with parameters 
-        instance of type T
-        instance of type T
-      returning instance of type T
-
-
-List: a type definition 
-  with parameters
-  T: a type variable 
-    with assertions
-      instance of context addable
-        with parameters 
-        Type:          instance of type T
-
-    
-
-  with assertions
-    instance of context addable
-      with parameters 
-      Type:        instance of type T
-
-  for pointer to instance of struct __anonymous0
-    with members 
-      data: a instance of type T
-      next: a pointer to instance of type List with parameters
-        Type:          instance of type T
-
-
-ListOfIntegers: a typedef definition for instance of type List with parameters
-    Type:      int 
-
-li: a instance of type ListOfIntegers
-f: a function
-  with parameters 
-    g: a pointer to function
-      with parameters 
-        int 
-      returning instance of type List with parameters
-          Type:            int 
-
-
-  returning int 
-
-h: a function
-  with parameters 
-    p: a pointer to instance of type List with parameters
-      Type:        int 
-
-  returning tuple with members 
-      int 
-
-
-struct node
-  with type parameters 
-    T: a type variable 
-      with assertions
-        instance of context addable
-          with parameters 
-          Type:            instance of type T
-
-      
-  with members 
-    data: a instance of type T
-    next: a pointer to instance of struct node
-      instantiated with actual parameters 
-        Type:          instance of type T
-      with parameters 
-      Type:        instance of type T
-
-
-List: a type definition 
-  with parameters
-  T: a type variable 
-for pointer to instance of struct node
-    instantiated with actual parameters 
-      Type:        instance of type T
-    with parameters 
-    Type:      instance of type T
-
-my_list: a instance of type List with parameters
-  Type:    int 
-
-Complex: a type definition 
-  with assertions
-    instance of context addable
-      with parameters 
-      Type:        instance of type Complex
-
-  
-main: a function
-  with no parameters 
-  returning int 
-  with body 
-    
-    Application of: 
-
-        Operator: Cast
-
-    ... on arguments: 
-        Type:          struct node
-            instantiated with actual parameters 
-              Type:                int 
-
-
-        Referencing: Variable: my_list
-
-
Index: c/Tests/Parser/Expected/Typedef.tst
===================================================================
--- src/Tests/Parser/Expected/Typedef.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,97 +1,0 @@
-T: a typedef definition for int 
-f: a function
-  with parameters 
-    void 
-  returning void 
-  with body 
-    T: a function
-      with parameters 
-        instance of type T
-      returning int 
-
-    
-    Application of: 
-
-        Referencing: Variable: T
-
-    ... on arguments: 
-        3 
-
-
-fred: a instance of struct __anonymous0
-  with members 
-    T: a instance of type T
-
-  with initializer [3 ]
-a: a typedef definition for pointer to function
-    with parameters 
-      int 
-      char 
-    returning int 
-
-b: a instance of type a
-g: a function
-  with parameters 
-    void 
-  returning int 
-  with body 
-    a: a double 
-
-c: a instance of type a
-main: a function
-  with no parameters 
-  returning int 
-  with body 
-
-  Null Statement:
-
-arrayOf10Pointers: a typedef definition for array of   10 pointer to int 
-x: a instance of type arrayOf10Pointers
-constantPointer: a typedef definition for const pointer to int 
-funcPtr: a typedef definition for pointer to function
-    with parameters 
-      open array of int 
-    returning tuple with members 
-        int 
-
-
-funcProto: a typedef definition for function
-    with parameters 
-      open array of int 
-    returning tuple with members 
-        int 
-
-
-tupleType: a typedef definition for tuple with members 
-    int 
-    int 
-
-tupleTypePtr: a typedef definition for pointer to tuple with members 
-    int 
-    int 
-
-a: a typedef definition for pointer to int 
-b: a typedef definition for pointer to int 
-f: a typedef definition for function
-    with parameters 
-      pointer to int 
-    returning tuple with members 
-        int 
-
-
-g: a typedef definition for function
-    with parameters 
-      pointer to int 
-    returning tuple with members 
-        int 
-
-
-t: a typedef definition for tuple with members 
-    pointer to static array of     10 int 
-
-f: a typedef definition for function
-    with no parameters 
-    returning tuple with members 
-        x: a pointer to static array of         10 int 
-
-
Index: c/Tests/Parser/Expected/TypedefDeclarator.tst
===================================================================
--- src/Tests/Parser/Expected/TypedefDeclarator.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,253 +1,0 @@
-f0: a typedef definition for int 
-f1: a typedef definition for int 
-f2: a typedef definition for int 
-f3: a typedef definition for int 
-f4: a typedef definition for int 
-f5: a typedef definition for int 
-f6: a typedef definition for int 
-f7: a typedef definition for int 
-f8: a typedef definition for int 
-f9: a typedef definition for int 
-f10: a typedef definition for int 
-f11: a typedef definition for int 
-f12: a typedef definition for int 
-f13: a typedef definition for int 
-f14: a typedef definition for int 
-f15: a typedef definition for int 
-f16: a typedef definition for int 
-f17: a typedef definition for int 
-f18: a typedef definition for int 
-f19: a typedef definition for int 
-f20: a typedef definition for int 
-f21: a typedef definition for int 
-f22: a typedef definition for int 
-f23: a typedef definition for int 
-f24: a typedef definition for int 
-f25: a typedef definition for int 
-f26: a typedef definition for int 
-f27: a typedef definition for int 
-f28: a typedef definition for int 
-f29: a typedef definition for int 
-f30: a typedef definition for int 
-f31: a typedef definition for int 
-f32: a typedef definition for int 
-f33: a typedef definition for int 
-f34: a typedef definition for int 
-f35: a typedef definition for int 
-f36: a typedef definition for int 
-f37: a typedef definition for int 
-f38: a typedef definition for int 
-f39: a typedef definition for int 
-f40: a typedef definition for int 
-f41: a typedef definition for int 
-f42: a typedef definition for int 
-f43: a typedef definition for int 
-f44: a typedef definition for int 
-f45: a typedef definition for int 
-f46: a typedef definition for int 
-f47: a typedef definition for int 
-f48: a typedef definition for int 
-f49: a typedef definition for int 
-f50: a typedef definition for int 
-f51: a typedef definition for int 
-f52: a typedef definition for int 
-f53: a typedef definition for int 
-f54: a typedef definition for int 
-f55: a typedef definition for int 
-f56: a typedef definition for int 
-f57: a typedef definition for int 
-f58: a typedef definition for int 
-f59: a typedef definition for int 
-f60: a typedef definition for int 
-f61: a typedef definition for int 
-f62: a typedef definition for int 
-f63: a typedef definition for int 
-f64: a typedef definition for int 
-f65: a typedef definition for int 
-f66: a typedef definition for int 
-f67: a typedef definition for int 
-f68: a typedef definition for int 
-f69: a typedef definition for int 
-f70: a typedef definition for int 
-f71: a typedef definition for int 
-f72: a typedef definition for int 
-f73: a typedef definition for int 
-f74: a typedef definition for int 
-f75: a typedef definition for int 
-f76: a typedef definition for int 
-f77: a typedef definition for int 
-f78: a typedef definition for int 
-f79: a typedef definition for int 
-f80: a typedef definition for int 
-f81: a typedef definition for int 
-f82: a typedef definition for int 
-f83: a typedef definition for int 
-f84: a typedef definition for int 
-f85: a typedef definition for int 
-f86: a typedef definition for int 
-f87: a typedef definition for int 
-f88: a typedef definition for int 
-f89: a typedef definition for int 
-main: a function
-  with no parameters 
-  returning int 
-  with body 
-    f1: a int 
-    f2: a int 
-    f3: a pointer to int 
-    f4: a pointer to pointer to int 
-    f5: a pointer to const pointer to int 
-    f6: a const pointer to const pointer to int 
-    f7: a pointer to int 
-    f8: a pointer to pointer to int 
-    f9: a pointer to const pointer to int 
-    f10: a const pointer to const pointer to int 
-    f11: a pointer to int 
-    f12: a pointer to pointer to int 
-    f13: a pointer to const pointer to int 
-    f14: a const pointer to const pointer to int 
-    f15: a open array of int 
-    f16: a array of     10 int 
-    f17: a open array of int 
-    f18: a array of     10 int 
-    f19: a open array of pointer to int 
-    f20: a array of     10 pointer to int 
-    f21: a open array of pointer to pointer to int 
-    f22: a array of     10 pointer to pointer to int 
-    f23: a open array of pointer to const pointer to int 
-    f24: a array of     10 pointer to const pointer to int 
-    f25: a open array of const pointer to const pointer to int 
-    f26: a array of     10 const pointer to const pointer to int 
-    f27: a open array of pointer to int 
-    f28: a array of     10 pointer to int 
-    f29: a open array of pointer to pointer to int 
-    f30: a array of     10 pointer to pointer to int 
-    f31: a open array of pointer to const pointer to int 
-    f32: a array of     10 pointer to const pointer to int 
-    f33: a open array of const pointer to const pointer to int 
-    f34: a array of     10 const pointer to const pointer to int 
-    f35: a open array of pointer to int 
-    f36: a array of     10 pointer to int 
-    f37: a open array of pointer to pointer to int 
-    f38: a array of     10 pointer to pointer to int 
-    f39: a open array of pointer to const pointer to int 
-    f40: a array of     10 pointer to const pointer to int 
-    f41: a open array of const pointer to const pointer to int 
-    f42: a array of     10 const pointer to const pointer to int 
-    f43: a open array of array of     3 int 
-    f44: a array of     3 array of     3 int 
-    f45: a open array of array of     3 int 
-    f46: a array of     3 array of     3 int 
-    f47: a open array of array of     3 int 
-    f48: a array of     3 array of     3 int 
-    f49: a open array of array of     3 pointer to int 
-    f50: a array of     3 array of     3 pointer to int 
-    f51: a open array of array of     3 pointer to pointer to int 
-    f52: a array of     3 array of     3 pointer to pointer to int 
-    f53: a open array of array of     3 pointer to const pointer to int 
-    f54: a array of     3 array of     3 pointer to const pointer to int 
-    f55: a open array of array of     3 const pointer to const pointer to int 
-    f56: a array of     3 array of     3 const pointer to const pointer to int 
-    f57: a open array of array of     3 pointer to int 
-    f58: a array of     3 array of     3 pointer to int 
-    f59: a open array of array of     3 pointer to pointer to int 
-    f60: a array of     3 array of     3 pointer to pointer to int 
-    f61: a open array of array of     3 pointer to const pointer to int 
-    f62: a array of     3 array of     3 pointer to const pointer to int 
-    f63: a open array of array of     3 const pointer to const pointer to int 
-    f64: a array of     3 array of     3 const pointer to const pointer to int 
-    f65: a function
-      with parameters 
-        int 
-      returning int 
-
-    f66: a function
-      with parameters 
-        int 
-      returning int 
-
-    f67: a function
-      with parameters 
-        int 
-      returning pointer to int 
-
-    f68: a function
-      with parameters 
-        int 
-      returning pointer to pointer to int 
-
-    f69: a function
-      with parameters 
-        int 
-      returning pointer to const pointer to int 
-
-    f70: a function
-      with parameters 
-        int 
-      returning const pointer to const pointer to int 
-
-    f71: a function
-      with parameters 
-        int 
-      returning pointer to int 
-
-    f72: a function
-      with parameters 
-        int 
-      returning pointer to pointer to int 
-
-    f73: a function
-      with parameters 
-        int 
-      returning pointer to const pointer to int 
-
-    f74: a function
-      with parameters 
-        int 
-      returning const pointer to const pointer to int 
-
-    f75: a pointer to function
-      with parameters 
-        int 
-      returning int 
-
-    f76: a pointer to pointer to function
-      with parameters 
-        int 
-      returning int 
-
-    f77: a pointer to const pointer to function
-      with parameters 
-        int 
-      returning int 
-
-    f78: a const pointer to const pointer to function
-      with parameters 
-        int 
-      returning int 
-
-    f79: a pointer to function
-      with parameters 
-        int 
-      returning pointer to function
-          with no parameters 
-          returning int 
-
-
-    f80: a const pointer to function
-      with parameters 
-        int 
-      returning pointer to function
-          with no parameters 
-          returning int 
-
-
-    f81: a const pointer to function
-      with parameters 
-        int 
-      returning const pointer to function
-          with no parameters 
-          returning int 
-
-
-
Index: c/Tests/Parser/Expected/TypedefParamDeclarator.tst
===================================================================
--- src/Tests/Parser/Expected/TypedefParamDeclarator.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,349 +1,0 @@
-f0: a typedef definition for int 
-f1: a typedef definition for int 
-f2: a typedef definition for int 
-f3: a typedef definition for int 
-f4: a typedef definition for int 
-f5: a typedef definition for int 
-f6: a typedef definition for int 
-f7: a typedef definition for int 
-f8: a typedef definition for int 
-f9: a typedef definition for int 
-f10: a typedef definition for int 
-f11: a typedef definition for int 
-f12: a typedef definition for int 
-f13: a typedef definition for int 
-f14: a typedef definition for int 
-f15: a typedef definition for int 
-f16: a typedef definition for int 
-f17: a typedef definition for int 
-f18: a typedef definition for int 
-f19: a typedef definition for int 
-f20: a typedef definition for int 
-f21: a typedef definition for int 
-f22: a typedef definition for int 
-f23: a typedef definition for int 
-f24: a typedef definition for int 
-f25: a typedef definition for int 
-f26: a typedef definition for int 
-f27: a typedef definition for int 
-f28: a typedef definition for int 
-f29: a typedef definition for int 
-f30: a typedef definition for int 
-f31: a typedef definition for int 
-f32: a typedef definition for int 
-f33: a typedef definition for int 
-f34: a typedef definition for int 
-f35: a typedef definition for int 
-f36: a typedef definition for int 
-f37: a typedef definition for int 
-f38: a typedef definition for int 
-f39: a typedef definition for int 
-f40: a typedef definition for int 
-f41: a typedef definition for int 
-f42: a typedef definition for int 
-f43: a typedef definition for int 
-f44: a typedef definition for int 
-f45: a typedef definition for int 
-f46: a typedef definition for int 
-f47: a typedef definition for int 
-f48: a typedef definition for int 
-f49: a typedef definition for int 
-f50: a typedef definition for int 
-f51: a typedef definition for int 
-f52: a typedef definition for int 
-f53: a typedef definition for int 
-f54: a typedef definition for int 
-f55: a typedef definition for int 
-f56: a typedef definition for int 
-f57: a typedef definition for int 
-f58: a typedef definition for int 
-f59: a typedef definition for int 
-f60: a typedef definition for int 
-f61: a typedef definition for int 
-f62: a typedef definition for int 
-f63: a typedef definition for int 
-f64: a typedef definition for int 
-f65: a typedef definition for int 
-f66: a typedef definition for int 
-f67: a typedef definition for int 
-f68: a typedef definition for int 
-f69: a typedef definition for int 
-f70: a typedef definition for int 
-f71: a typedef definition for int 
-f72: a typedef definition for int 
-f73: a typedef definition for int 
-f74: a typedef definition for int 
-f75: a typedef definition for int 
-f76: a typedef definition for int 
-f77: a typedef definition for int 
-f78: a typedef definition for int 
-f79: a typedef definition for int 
-f80: a typedef definition for int 
-f81: a typedef definition for int 
-f82: a typedef definition for int 
-f83: a typedef definition for int 
-f84: a typedef definition for int 
-f85: a typedef definition for int 
-f86: a typedef definition for int 
-f87: a typedef definition for int 
-f88: a typedef definition for int 
-f89: a typedef definition for int 
-f90: a typedef definition for int 
-f91: a typedef definition for int 
-f92: a typedef definition for int 
-f93: a typedef definition for int 
-f94: a typedef definition for int 
-f95: a typedef definition for int 
-f96: a typedef definition for int 
-f97: a typedef definition for int 
-f98: a typedef definition for int 
-f99: a typedef definition for int 
-f100: a typedef definition for int 
-f101: a typedef definition for int 
-f102: a typedef definition for int 
-f103: a typedef definition for int 
-f104: a typedef definition for int 
-f105: a typedef definition for int 
-f106: a typedef definition for int 
-f107: a typedef definition for int 
-f108: a typedef definition for int 
-f109: a typedef definition for int 
-f110: a typedef definition for int 
-f111: a typedef definition for int 
-f112: a typedef definition for int 
-f113: a typedef definition for int 
-f114: a typedef definition for int 
-f115: a typedef definition for int 
-f116: a typedef definition for int 
-f117: a typedef definition for int 
-f118: a typedef definition for int 
-f119: a typedef definition for int 
-fred: a function
-  with parameters 
-    f1: a int 
-    f3: a pointer to int 
-    f4: a pointer to pointer to int 
-    f5: a pointer to const pointer to int 
-    f6: a const pointer to const pointer to int 
-    f11: a pointer to int 
-    f12: a pointer to pointer to int 
-    f13: a pointer to const pointer to int 
-    f14: a const pointer to const pointer to int 
-    f15: a open array of int 
-    f16: a array of     10 int 
-    f19: a open array of pointer to int 
-    f20: a array of     10 pointer to int 
-    f21: a open array of pointer to pointer to int 
-    f22: a array of     10 pointer to pointer to int 
-    f23: a open array of pointer to const pointer to int 
-    f24: a array of     10 pointer to const pointer to int 
-    f25: a open array of const pointer to const pointer to int 
-    f26: a array of     10 const pointer to const pointer to int 
-    f35: a open array of pointer to int 
-    f36: a array of     10 pointer to int 
-    f37: a open array of pointer to pointer to int 
-    f38: a array of     10 pointer to pointer to int 
-    f39: a open array of pointer to const pointer to int 
-    f40: a array of     10 pointer to const pointer to int 
-    f41: a open array of const pointer to const pointer to int 
-    f42: a array of     10 const pointer to const pointer to int 
-    f43: a open array of array of     3 int 
-    f44: a array of     3 array of     3 int 
-    f49: a open array of array of     3 pointer to int 
-    f50: a array of     3 array of     3 pointer to int 
-    f51: a open array of array of     3 pointer to pointer to int 
-    f52: a array of     3 array of     3 pointer to pointer to int 
-    f53: a open array of array of     3 pointer to const pointer to int 
-    f54: a array of     3 array of     3 pointer to const pointer to int 
-    f55: a open array of array of     3 const pointer to const pointer to int 
-    f56: a array of     3 array of     3 const pointer to const pointer to int 
-    f57: a open array of array of     3 pointer to int 
-    f58: a array of     3 array of     3 pointer to int 
-    f59: a open array of array of     3 pointer to pointer to int 
-    f60: a array of     3 array of     3 pointer to pointer to int 
-    f61: a open array of array of     3 pointer to const pointer to int 
-    f62: a array of     3 array of     3 pointer to const pointer to int 
-    f63: a open array of array of     3 const pointer to const pointer to int 
-    f64: a array of     3 array of     3 const pointer to const pointer to int 
-    f65: a function
-      with parameters 
-        int 
-      returning int 
-
-    f67: a function
-      with parameters 
-        int 
-      returning pointer to int 
-
-    f68: a function
-      with parameters 
-        int 
-      returning pointer to pointer to int 
-
-    f69: a function
-      with parameters 
-        int 
-      returning pointer to const pointer to int 
-
-    f70: a function
-      with parameters 
-        int 
-      returning const pointer to const pointer to int 
-
-    f75: a pointer to function
-      with parameters 
-        int 
-      returning int 
-
-    f76: a pointer to pointer to function
-      with parameters 
-        int 
-      returning int 
-
-    f77: a pointer to const pointer to function
-      with parameters 
-        int 
-      returning int 
-
-    f78: a const pointer to const pointer to function
-      with parameters 
-        int 
-      returning int 
-
-    f79: a pointer to function
-      with parameters 
-        int 
-      returning pointer to function
-          with no parameters 
-          returning int 
-
-
-    f80: a const pointer to function
-      with parameters 
-        int 
-      returning pointer to function
-          with no parameters 
-          returning int 
-
-
-    f81: a const pointer to function
-      with parameters 
-        int 
-      returning const pointer to function
-          with no parameters 
-          returning int 
-
-
-    f82: a const variable-length array of int 
-    f83: a const array of     3 int 
-    f84: a static array of     3 int 
-    f85: a const static array of     3 int 
-    function
-      with parameters 
-        const variable-length array of instance of type f86
-      returning int 
-
-    function
-      with parameters 
-        const array of         3 instance of type f87
-      returning int 
-
-    function
-      with parameters 
-        static array of         3 instance of type f88
-      returning int 
-
-    function
-      with parameters 
-        const static array of         3 instance of type f89
-      returning int 
-
-    f90: a const variable-length array of pointer to int 
-    f91: a const array of     3 pointer to int 
-    f92: a static array of     3 pointer to pointer to int 
-    f93: a const static array of     3 pointer to const pointer to int 
-    f94: a const static array of     3 const pointer to const pointer to int 
-    function
-      with parameters 
-        const variable-length array of instance of type f95
-      returning pointer to int 
-
-    function
-      with parameters 
-        const array of         3 instance of type f96
-      returning pointer to int 
-
-    function
-      with parameters 
-        static array of         3 instance of type f97
-      returning pointer to pointer to int 
-
-    function
-      with parameters 
-        const static array of         3 instance of type f98
-      returning pointer to const pointer to int 
-
-    function
-      with parameters 
-        const static array of         3 instance of type f99
-      returning const pointer to const pointer to int 
-
-    f100: a const variable-length array of array of     3 int 
-    f101: a const array of     3 array of     3 int 
-    f102: a static array of     3 array of     3 int 
-    f103: a const static array of     3 array of     3 int 
-    function
-      with parameters 
-        const variable-length array of array of         3 instance of type f104
-      returning int 
-
-    function
-      with parameters 
-        const array of         3 array of         3 instance of type f105
-      returning int 
-
-    function
-      with parameters 
-        static array of         3 array of         3 instance of type f106
-      returning int 
-
-    function
-      with parameters 
-        const static array of         3 array of         3 instance of type f107
-      returning int 
-
-    f108: a const variable-length array of array of     3 pointer to int 
-    f109: a const array of     3 array of     3 pointer to int 
-    f110: a static array of     3 array of     3 pointer to pointer to int 
-    f111: a const static array of     3 array of     3 pointer to const pointer to int 
-    f112: a const static array of     3 array of     3 const pointer to const pointer to int 
-    function
-      with parameters 
-        const variable-length array of array of         3 instance of type f113
-      returning pointer to int 
-
-    function
-      with parameters 
-        const array of         3 array of         3 instance of type f114
-      returning pointer to int 
-
-    function
-      with parameters 
-        static array of         3 array of         3 instance of type f115
-      returning pointer to pointer to int 
-
-    function
-      with parameters 
-        const static array of         3 array of         3 instance of type f116
-      returning pointer to const pointer to int 
-
-    function
-      with parameters 
-        const static array of         3 array of         3 instance of type f117
-      returning const pointer to const pointer to int 
-
-  returning int 
-  with body 
-
-  Null Statement:
-
Index: c/Tests/Parser/Expected/VariableDeclarator.tst
===================================================================
--- src/Tests/Parser/Expected/VariableDeclarator.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,168 +1,0 @@
-f1: a int 
-f2: a int 
-f3: a pointer to int 
-f4: a pointer to pointer to int 
-f5: a pointer to const pointer to int 
-f6: a const pointer to const pointer to int 
-f7: a pointer to int 
-f8: a pointer to pointer to int 
-f9: a pointer to const pointer to int 
-f10: a const pointer to const pointer to int 
-f11: a pointer to int 
-f12: a pointer to pointer to int 
-f13: a pointer to const pointer to int 
-f14: a const pointer to const pointer to int 
-f15: a open array of int 
-f16: a array of 10 int 
-f17: a open array of int 
-f18: a array of 10 int 
-f19: a open array of pointer to int 
-f20: a array of 10 pointer to int 
-f21: a open array of pointer to pointer to int 
-f22: a array of 10 pointer to pointer to int 
-f23: a open array of pointer to const pointer to int 
-f24: a array of 10 pointer to const pointer to int 
-f25: a open array of const pointer to const pointer to int 
-f26: a array of 10 const pointer to const pointer to int 
-f27: a open array of pointer to int 
-f28: a array of 10 pointer to int 
-f29: a open array of pointer to pointer to int 
-f30: a array of 10 pointer to pointer to int 
-f31: a open array of pointer to const pointer to int 
-f32: a array of 10 pointer to const pointer to int 
-f33: a open array of const pointer to const pointer to int 
-f34: a array of 10 const pointer to const pointer to int 
-f35: a open array of pointer to int 
-f36: a array of 10 pointer to int 
-f37: a open array of pointer to pointer to int 
-f38: a array of 10 pointer to pointer to int 
-f39: a open array of pointer to const pointer to int 
-f40: a array of 10 pointer to const pointer to int 
-f41: a open array of const pointer to const pointer to int 
-f42: a array of 10 const pointer to const pointer to int 
-f43: a open array of array of 3 int 
-f44: a array of 3 array of 3 int 
-f45: a open array of array of 3 int 
-f46: a array of 3 array of 3 int 
-f47: a open array of array of 3 int 
-f48: a array of 3 array of 3 int 
-f49: a open array of array of 3 pointer to int 
-f50: a array of 3 array of 3 pointer to int 
-f51: a open array of array of 3 pointer to pointer to int 
-f52: a array of 3 array of 3 pointer to pointer to int 
-f53: a open array of array of 3 pointer to const pointer to int 
-f54: a array of 3 array of 3 pointer to const pointer to int 
-f55: a open array of array of 3 const pointer to const pointer to int 
-f56: a array of 3 array of 3 const pointer to const pointer to int 
-f57: a open array of array of 3 pointer to int 
-f58: a array of 3 array of 3 pointer to int 
-f59: a open array of array of 3 pointer to pointer to int 
-f60: a array of 3 array of 3 pointer to pointer to int 
-f61: a open array of array of 3 pointer to const pointer to int 
-f62: a array of 3 array of 3 pointer to const pointer to int 
-f63: a open array of array of 3 const pointer to const pointer to int 
-f64: a array of 3 array of 3 const pointer to const pointer to int 
-f65: a function
-  with parameters 
-    int 
-  returning int 
-
-f66: a function
-  with parameters 
-    int 
-  returning int 
-
-f67: a function
-  with parameters 
-    int 
-  returning pointer to int 
-
-f68: a function
-  with parameters 
-    int 
-  returning pointer to pointer to int 
-
-f69: a function
-  with parameters 
-    int 
-  returning pointer to const pointer to int 
-
-f70: a function
-  with parameters 
-    int 
-  returning const pointer to const pointer to int 
-
-f71: a function
-  with parameters 
-    int 
-  returning pointer to int 
-
-f72: a function
-  with parameters 
-    int 
-  returning pointer to pointer to int 
-
-f73: a function
-  with parameters 
-    int 
-  returning pointer to const pointer to int 
-
-f74: a function
-  with parameters 
-    int 
-  returning const pointer to const pointer to int 
-
-f75: a pointer to function
-  with parameters 
-    int 
-  returning int 
-
-f76: a pointer to pointer to function
-  with parameters 
-    int 
-  returning int 
-
-f77: a pointer to const pointer to function
-  with parameters 
-    int 
-  returning int 
-
-f78: a const pointer to const pointer to function
-  with parameters 
-    int 
-  returning int 
-
-f79: a pointer to function
-  with parameters 
-    int 
-  returning pointer to function
-      with no parameters 
-      returning int 
-
-
-f80: a const pointer to function
-  with parameters 
-    int 
-  returning pointer to function
-      with no parameters 
-      returning int 
-
-
-f81: a const pointer to function
-  with parameters 
-    int 
-  returning const pointer to function
-      with no parameters 
-      returning int 
-
-
-z: a pointer to array of 20 double 
-w: a array of 20 pointer to char 
-v3: a pointer to open array of pointer to open array of pointer to function
-  with parameters 
-    pointer to open array of pointer to open array of int 
-    pointer to open array of pointer to open array of int 
-  returning tuple with members 
-      pointer to open array of pointer to open array of int 
-
-
Index: c/Tests/Parser/Forall.c
===================================================================
--- src/Tests/Parser/Forall.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,51 +1,0 @@
-typedef forall ( type T ) int (*f)( int );
-
-forall( type T )
-    void swap( T left, T right ) {
-	T temp = left;
-	left = right;
-	right = temp;
-    }
-
-context sumable( type T ) {
-    const T 0;
-    T ?+?(T, T);
-    T ?++(T);
-    [T] ?+=?(T,T);
-};
-
-type T1 | { const T1 0; T1 ?+?(T1, T1); T1 ?++(T1); [T1] ?+=?(T1,T1); },
-     T2(type P1, type P2 ),
-     T3 | sumable(T3);
-
-type T2(type P1, type P2) | sumable(T2(P1,P2)) = struct { P1 i; P2 j; };
-
-T2(int, int) w1;
-typedef T2(int, int) w2;
-w2 g2;
-type w3 = T2(int, int);
-w3 g3;
-
-forall( type T | sumable( T ) )
-    T sum( int n, T a[] ) {
-	T total = 0;
-	int i;
-	for ( i = 0; i < n; i += 1 )
-	    total = total + a[i];
-	return total;
-    }
-
-forall( type T | { const T 0; T ?+?(T, T); T ?++(T); [T] ?+=?(T,T); } )
-    T twice( T t ) {
-	return t + t;
-    }
-
-int main() {
-    int x = 1, y = 2, a[10];
-    float f;
-
-    swap( x, y );
-    twice( x, y );
-    f = min( 4.0, 3.0 );
-    sum( 10, a );
-}
Index: c/Tests/Parser/Functions.c
===================================================================
--- src/Tests/Parser/Functions.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,163 +1,0 @@
-// ANSI function definitions
-
-void h(void) {}
-
-int f (
-    int (void),
-    int (int),
-    int ((void)),
-    int ((int)),
-    void g(void)
-  ) {
-    (*g)();
-    g();
-    g = h;
-}
-
-int f1() {}
-int (f2()) {}
-int (*f3())() {}
-int *((f4())) {}
-int ((*f5()))() {}
-int *f6() {}
-int *(f7)() {}
-int **f8() {}
-int * const *(f9)() {}
-int (*f10())[] {}
-int (*f11())[][3] {}
-int ((*f12())[])[3] {}
-
-// "implicit int" type specifier (not ANSI)
-
-fII1( int i ) {}
-const fII2( int i ) {}
-extern fII3( int i ) {}
-extern const fII4( int i ) {}
-
-*fII5() {}
-const *fII6() {}
-const long *fII7() {}
-static const long *fII8() {}
-const static long *fII9() {}
-
-// K&R function definitions
-
-fO1( i ) int i; {}
-int fO2( i ) int i; {}
-const fO3( i ) int i; {}
-extern fO4( i ) int i; {}
-extern const fO5( i ) int i; {}
-
-// Cforall extensions
-
-[] f( );
-[int] f( );
-[] f(int);
-[int] f(int);
-[] f( ) {}
-[int] f( ) {}
-[] f(int) {}
-[int] f(int) {}
-
-[int x] f( );
-[] f(int x);
-[int x] f(int x);
-[int x] f( ) {}
-[] f(int x) {}
-[int x] f(int x) {}
-
-[int, int x] f( );
-[] f(int, int x);
-[int, int x] f(int, int x);
-[int, int x] f( ) {}
-[] f(int, int x) {}
-[int, int x] f(int, int x) {}
-
-[int, int x, int] f( );
-[] f(int, int x, int);
-[int, int x, int] f(int, int x, int);
-[int, int x, int] f( ) {}
-[] f(int, int x, int) {}
-[int, int x, int] f(int, int x, int) {}
-
-[int, int x, * int y] f( );
-[] f(int, int x, * int y);
-[int, int x, * int y] f(int, int x, * int y);
-[int, int x, * int y] f( ) {}
-[] f(int, int x, * int y) {}
-[int, int x, * int y] f(int, int x, * int y) {}
-
-[ int ] f11( int ), f12;  // => int f11( int ), f12( int );
-
-[int] f(
-	int ( int, int p ),
-	[int](int)
-    ) {
-    int (*(*p)[][10])[][3];
-    * [][10] * [][3] int p;
-    * [] * [int](int) p;
-}
-
-static const int *f1() {}
-static [ const int ] f2() {}
-static inline [ const * int ] f3() {}
-static inline [ const [ * int, int ] ] f4() {}
-static [ const [ * int, const int ] ] f5() {}
-
-// unnamed parameter
-
-int f(
-    int (),
-
-    int *(),
-    int **(),
-    int * const *(),
-    int * const * const (),
-
-    int ([]),
-    int ([10]),
-
-    int *([]),
-    int *([10]),
-    int **([]),
-    int **([10]),
-    int * const *([]),
-    int * const *([10]),
-    int * const * const ([]),
-    int * const * const ([10])
-    );
-
-int f(
-    int (),
-
-    int *(),
-    int **(),
-    int * const *(),
-    int * const * const (),
-
-    int ([]),
-    int ([10]),
-
-    int *([]),
-    int *([10]),
-    int **([]),
-    int **([10]),
-    int * const *([]),
-    int * const *([10]),
-    int * const * const ([]),
-    int * const * const ([10])
-    ) {
-}
-
-typedef int T;
-
-int f( T (T), T T ) {
-    T (T);
-}
-
-// errors
-
-//int f()[] {}
-//int (f[])() {}
-//int f[]() {}
-//int ((*f15())())[] {}
Index: c/Tests/Parser/IdentFuncDeclarator.c
===================================================================
--- src/Tests/Parser/IdentFuncDeclarator.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,105 +1,0 @@
-int main() {
-    //int f0[]();
-    //int (f0[])();
-    //int f0()[];
-    //int f0()();
-    //int (*f0)()();
-    //int ((*f0())())[];
-    
-    int f1;
-    int (f2);
-
-    int *f3;
-    int **f4;
-    int * const *f5;
-    int * const * const f6;
-
-    int *(f7);
-    int **(f8);
-    int * const *(f9);
-    int * const * const (f10);
-
-    int (*f11);
-    int (**f12);
-    int (* const *f13);
-    int (* const * const f14);
-
-    int f15[];
-    int f16[10];
-    int (f17[]);
-    int (f18[10]);
-
-    int *f19[];
-    int *f20[10];
-    int **f21[];
-    int **f22[10];
-    int * const *f23[];
-    int * const *f24[10];
-    int * const * const f25[];
-    int * const * const f26[10];
-
-    int *(f27[]);
-    int *(f28[10]);
-    int **(f29[]);
-    int **(f30[10]);
-    int * const *(f31[]);
-    int * const *(f32[10]);
-    int * const * const (f33[]);
-    int * const * const (f34[10]);
-
-    int (*f35[]);
-    int (*f36[10]);
-    int (**f37[]);
-    int (**f38[10]);
-    int (* const *f39[]);
-    int (* const *f40[10]);
-    int (* const * const f41[]);
-    int (* const * const f42[10]);
-
-    int f43[][3];
-    int f44[3][3];
-    int (f45[])[3];
-    int (f46[3])[3];
-    int ((f47[]))[3];
-    int ((f48[3]))[3];
-
-    int *f49[][3];
-    int *f50[3][3];
-    int **f51[][3];
-    int **f52[3][3];
-    int * const *f53[][3];
-    int * const *f54[3][3];
-    int * const * const f55[][3];
-    int * const * const f56[3][3];
-
-    int (*f57[][3]);
-    int (*f58[3][3]);
-    int (**f59[][3]);
-    int (**f60[3][3]);
-    int (* const *f61[][3]);
-    int (* const *f62[3][3]);
-    int (* const * const f63[][3]);
-    int (* const * const f64[3][3]);
-
-    int f65(int);
-    int (f66)(int);
-
-    int *f67(int);
-    int **f68(int);
-    int * const *f69(int);
-    int * const * const f70(int);
-
-    int *(f71)(int);
-    int **(f72)(int);
-    int * const *(f73)(int);
-    int * const * const (f74)(int);
-
-    int (*f75)(int);
-    int (**f76)(int);
-    int (* const *f77)(int);
-    int (* const * const f78)(int);
-
-    int (*(*f79)(int))();
-    int (*(* const f80)(int))();
-    int (* const(* const f81)(int))();
-}
Index: c/Tests/Parser/IdentFuncParamDeclarator.c
===================================================================
--- src/Tests/Parser/IdentFuncParamDeclarator.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,150 +1,0 @@
-int fred(
-    //int f0[](),
-    //int (f0[])(),
-    //int f0()[],
-    //int f0()(),
-    //int (*f0)()(),
-    //int ((*f0())())[],
-    
-    int f1,
-    int (f2),
-
-    int *f3,
-    int **f4,
-    int * const *f5,
-    int * const * const f6,
-
-    int *(f7),
-    int **(f8),
-    int * const *(f9),
-    int * const * const (f10),
-
-    int (*f11),
-    int (**f12),
-    int (* const *f13),
-    int (* const * const f14),
-
-    int f15[],
-    int f16[10],
-    int (f17[]),
-    int (f18[10]),
-
-    int *f19[],
-    int *f20[10],
-    int **f21[],
-    int **f22[10],
-    int * const *f23[],
-    int * const *f24[10],
-    int * const * const f25[],
-    int * const * const f26[10],
-
-    int *(f27[]),
-    int *(f28[10]),
-    int **(f29[]),
-    int **(f30[10]),
-    int * const *(f31[]),
-    int * const *(f32[10]),
-    int * const * const (f33[]),
-    int * const * const (f34[10]),
-
-    int (*f35[]),
-    int (*f36[10]),
-    int (**f37[]),
-    int (**f38[10]),
-    int (* const *f39[]),
-    int (* const *f40[10]),
-    int (* const * const f41[]),
-    int (* const * const f42[10]),
-
-    int f43[][3],
-    int f44[3][3],
-    int (f45[])[3],
-    int (f46[3])[3],
-    int ((f47[]))[3],
-    int ((f48[3]))[3],
-
-    int *f49[][3],
-    int *f50[3][3],
-    int **f51[][3],
-    int **f52[3][3],
-    int * const *f53[][3],
-    int * const *f54[3][3],
-    int * const * const f55[][3],
-    int * const * const f56[3][3],
-
-    int (*f57[][3]),
-    int (*f58[3][3]),
-    int (**f59[][3]),
-    int (**f60[3][3]),
-    int (* const *f61[][3]),
-    int (* const *f62[3][3]),
-    int (* const * const f63[][3]),
-    int (* const * const f64[3][3]),
-
-    int f65(int),
-    int (f66)(int),
-
-    int *f67(int),
-    int **f68(int),
-    int * const *f69(int),
-    int * const * const f70(int),
-
-    int *(f71)(int),
-    int **(f72)(int),
-    int * const *(f73)(int),
-    int * const * const (f74)(int),
-
-    int (*f75)(int),
-    int (**f76)(int),
-    int (* const *f77)(int),
-    int (* const * const f78)(int),
-
-    int (*(*f79)(int))(),
-    int (*(* const f80)(int))(),
-    int (* const(* const f81)(int))(),
-
-    int f82[const *],
-    int f83[const 3],
-    int f84[static 3],
-    int f85[static const 3],
-
-    int (f86[const *]),
-    int (f87[const 3]),
-    int (f88[static 3]),
-    int (f89[static const 3]),
-
-    int *f90[const *],
-    int *f91[const 3],
-    int **f92[static 3],
-    int * const *f93[static const 3],
-    int * const * const f94[static const 3],
-
-    int *(f95[const *]),
-    int *(f96[const 3]),
-    int **(f97[static 3]),
-    int * const *(f98[static const 3]),
-    int * const * const (f99[static const 3]),
-
-    int f100[const *][3],
-    int f101[const 3][3],
-    int f102[static 3][3],
-    int f103[static const 3][3],
-
-    int (f104[const *][3]),
-    int (f105[const 3][3]),
-    int (f106[static 3][3]),
-    int (f107[static const 3][3]),
-
-    int *f108[const *][3],
-    int *f109[const 3][3],
-    int **f110[static 3][3],
-    int * const *f111[static const 3][3],
-    int * const * const f112[static const 3][3],
-
-    int *(f113[const *][3]),
-    int *(f114[const 3][3]),
-    int **(f115[static 3][3]),
-    int * const *(f116[static const 3][3]),
-    int * const * const (f117[static const 3][3])
-    ) {
-}
Index: c/Tests/Parser/Initialization.c
===================================================================
--- src/Tests/Parser/Initialization.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,27 +1,0 @@
-// Cforall extensions
-
-int * x21 = 0, x22 = 0;
-int * x21 = 0, x22 = 0;
-
-[20] int y1, y2 = { 1, 2, 3 };
-
-// designators
-
-struct {
-    [int] w;
-} a = { .w : [2] };
-
-struct { int a[3], b; } w [] = { [0].a : {1}, [0].b : 1, [1].a[0] : 2 };
-
-struct {
-    int f1, f2, f3;
-    struct { int g1, g2, g3; } f4[4];
-} v7 = {
-    .f1 : 4,
-    f2 : 3,
-    .f4[2] : {
-	.g1 : 3,
-	g3 : 0,
-    },
-    .f4[3].g3 : 7,
-};
Index: c/Tests/Parser/Makefile
===================================================================
--- src/Tests/Parser/Makefile	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,19 +1,0 @@
-CFA = ../../cfa-cpp
-
-EXPECTED = ${wildcard Expected/*.tst}
-TESTS = $(EXPECTED:Expected/%=%)
-TEST_IN = $(TESTS:.tst=.c)
-DIFF = diff
-
-%.tst:%.c $(CFA)
-	$(CFA) -nt < $< > $@ 2>&1
-
-report: $(CFA) $(TESTS) $(EXPECTED)
-	rm -f report
-	@for i in $(TESTS); do \
-	  echo "---$$i---" | tee -a report; \
-	  $(DIFF) -B -w Expected/$$i $$i | tee -a report; \
-	done
-
-clean:
-	rm -f *.tst
Index: c/Tests/Parser/Scope.c
===================================================================
--- src/Tests/Parser/Scope.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,69 +1,0 @@
-int x;
-typedef double y;
-typedef float t;
-y z;
-type u = struct { int a; double b; };
-int f( int y );
-y q;
-
-y w(y y, u v) {
-  type x | { x t(u); };
-  u u = y;
-  x z = t(u);
-}
-
-y p;
-
-context has_u( type z )
-{
-  z u(z);
-};
-
-forall( type t | has_u( t ) )
-y q( t the_t )
-{
-  t y = u( the_t );
-}
-
-t f( y p ) {
-  int y;
-  typedef char x;
-
-  {
-    x y;
-    typedef x z;
-
-    {
-      z x;
-      typedef z y;
-      y z = x;
-    }
-
-    z x = y;
-  }
-
-  x q = y;
-}
-
-t g( void ) {
-  typedef char x;
-  try {
-    some_func();
-  } catch ( x x ) {
-    t y = x;
-  }
-  x z;
-}
-
-y q(i)
-    int i;
-{
-  switch (i) {
-    y q = i;
-  case 0:
-    return q;
-  default:
-    return i;
-  }
-}
-
Index: c/Tests/Parser/StructMember.c
===================================================================
--- src/Tests/Parser/StructMember.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,40 +1,0 @@
-typedef int T;
-
-struct S {
-    int m1:3, m2:4;
-    int :2;
-    int :3, :4;
-    int m3;
-    int m4, m5, m6;
-    int *m7, *m8, *m9;
-    int (*m10)();
-    int *(*m11)(int);
-    T T;
-    T (T);
-
-// Cforall extensions
-
-    * int m12, m13;
-    * [ * int ] (int) m14;
-    int ;
-    int , , ;
-    int * , , ;
-    int *, *, *;
-    * int , , ;
-    int (*)();
-    int (**)( int );
-    T ;
-
-// errors
-
-//    void f(void);
-};
-
-struct S s;
-
-union U {
-    [5] int m1;
-    int m2[5];
-    * int m3;
-    int *m4;
-} u;
Index: c/Tests/Parser/Tuple.c
===================================================================
--- src/Tests/Parser/Tuple.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,62 +1,0 @@
-int f( int, int );
-int g( int, int, int );
-static [ int, int *, * int, int ] h( int a, int b, * int c, [] char d );
-
-struct inner {
-    int f2, f3;
-};
-
-struct outer {
-    int f1;
-    struct inner i;
-    double f4;
-} s, *sp;
-
-const volatile [ int, int ] t1;
-static const [ int, const int ] t2;
-const static [ int, const int ] t3;
-
-[ int rc ] printf( * char fmt, ... );
-int printf( char *fmt, ... );
-
-[ short x, unsigned y ] f1( int w ) {
-    [ y, x ] = [ x, y ] = [ w, 23 ];
-}
-
-[ [ int, char, long, int ] r ] g1() {
-    short x, p;
-    unsigned int y;
-    [ int, int ] z;
-
-    [ x, y, z ] = ([short, unsigned int, [int, int]])([ p, f( 17 ), 3 ]);
-    r = [ x, y, z ];
-}
-
-[ int rc ] main( int argc, ** char argv ) {
-    int a, b, c, d;
-    struct outer t = { .[ f1,f4 ] : [ 1,7.0 ] };
-    f( [ 3,5 ] );
-    g( [ 3,5 ], 3 );
-    f( t1 );
-    g( t1, 3 );
-    [ 3,5 ];
-    [ a,b ] = 3;
-    [ a,b ] = [ 4.6 ];
-    [ a,b ] = [ c,d ] = [ 3,5 ];
-    [ a,b,[ c ] ] = [ 2,[ a,b ] ];
-    [ a,b ] = 3 > 4 ? [ b,6 ] : [ 7,8 ];
-
-    t1 = [ a,b ];
-    t1 = t2 = [ a,b ];
-    [ a,b ] = [ c,d ] = d += c += 1;
-    [ a,b ] = [ c,d ] = t1;
-    [ a,b ] = t1 = [ c,d ];
-    [ a,b ] = t1 = t2 = [ c,d ];
-    t1 = [ 3,4 ] = [ 3,4 ] = t1 = [ 3,4 ];
-
-    s.[ f1, i.[ f2, f3 ], f4 ] = [ 11, 12, 13, 3.14159 ];
-    s.[ f1, i.[ f2, f3 ], f4 ] = h( 3, 3, 0, "abc" );
-    sp->[ f4,f1 ] = sp->[ f1,f4 ];
-    printf( "expecting 3, 17, 23, 4; got %d, %d, %d, %d\n", s.[ f4, i.[ f3,f2 ], f1 ] );
-    rc = 0;
-}
Index: c/Tests/Parser/TypeGenerator.c
===================================================================
--- src/Tests/Parser/TypeGenerator.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,19 +1,0 @@
-context addable(type T) {
-   T ?+?(T,T);
-};
-
-type List(type T | addable(T) ) | addable(T) = struct { T data; List(T) *next; } *;
-typedef List(int) ListOfIntegers;
-ListOfIntegers li;
-int f( List(int) ((*g))(int) );
-[int] h( * List(int) p ); // new declaration syntax
-
-struct(type T | addable(T) ) node { T data; struct(T) node *next; };
-type List(type T) = struct(T) node *;
-List(int) my_list;
-
-type Complex | addable(Complex);
-
-int main() {
-    (struct(int) node)my_list;
-}
Index: c/Tests/Parser/Typedef.c
===================================================================
--- src/Tests/Parser/Typedef.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,41 +1,0 @@
-typedef int T;
-
-void f( void ) {
-    int T( T );
-    T( 3 );
-}
-
-struct {
-    T (T);
-} fred = { 3 };
-
-typedef int (*a)(int, char);
-a b;
-
-int g(void) {
-    double a;
-}
-a c;
-
-// typedef x = 3, y = 3;  /* GCC */
-
-// x p;
-// y q;
-
-int main() {
-//    typedef z = p = 3;
-}
-
-/* new-style function definitions */
-
-typedef [10] * int arrayOf10Pointers;
-arrayOf10Pointers x;
-typedef const * int constantPointer;
-typedef * [ int ]( [] int ) funcPtr;
-typedef [ int ] funcProto( []  int );
-typedef [ int, int ] tupleType;
-typedef * [ int, int ] tupleTypePtr;
-typedef * int a, b;
-typedef [ int ] f( * int ), g;
-typedef [ * [static 10] int ] t;
-typedef [ * [static 10] int x ] f();
Index: c/Tests/Parser/TypedefDeclarator.c
===================================================================
--- src/Tests/Parser/TypedefDeclarator.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,116 +1,0 @@
-typedef int
-     f0,  f1,  f2,  f3,  f4,  f5,  f6,  f7,  f8,  f9,
-    f10, f11, f12, f13, f14, f15, f16, f17, f18, f19,
-    f20, f21, f22, f23, f24, f25, f26, f27, f28, f29,
-    f30, f31, f32, f33, f34, f35, f36, f37, f38, f39,
-    f40, f41, f42, f43, f44, f45, f46, f47, f48, f49,
-    f50, f51, f52, f53, f54, f55, f56, f57, f58, f59,
-    f60, f61, f62, f63, f64, f65, f66, f67, f68, f69,
-    f70, f71, f72, f73, f74, f75, f76, f77, f78, f79,
-    f80, f81, f82, f83, f84, f85, f86, f87, f88, f89;
-
-int main() {
-    //int f0[]();
-    //int (f0[])();
-    //int f0()[];
-    //int f0()();
-    //int (*f0)()();
-    //int ((*f0())())[];
-    
-    int f1;
-    int (f2);
-
-    int *f3;
-    int **f4;
-    int * const *f5;
-    int * const * const f6;
-
-    int *(f7);
-    int **(f8);
-    int * const *(f9);
-    int * const * const (f10);
-
-    int (*f11);
-    int (**f12);
-    int (* const *f13);
-    int (* const * const f14);
-
-    int f15[];
-    int f16[10];
-    int (f17[]);
-    int (f18[10]);
-
-    int *f19[];
-    int *f20[10];
-    int **f21[];
-    int **f22[10];
-    int * const *f23[];
-    int * const *f24[10];
-    int * const * const f25[];
-    int * const * const f26[10];
-
-    int *(f27[]);
-    int *(f28[10]);
-    int **(f29[]);
-    int **(f30[10]);
-    int * const *(f31[]);
-    int * const *(f32[10]);
-    int * const * const (f33[]);
-    int * const * const (f34[10]);
-
-    int (*f35[]);
-    int (*f36[10]);
-    int (**f37[]);
-    int (**f38[10]);
-    int (* const *f39[]);
-    int (* const *f40[10]);
-    int (* const * const f41[]);
-    int (* const * const f42[10]);
-
-    int f43[][3];
-    int f44[3][3];
-    int (f45[])[3];
-    int (f46[3])[3];
-    int ((f47[]))[3];
-    int ((f48[3]))[3];
-
-    int *f49[][3];
-    int *f50[3][3];
-    int **f51[][3];
-    int **f52[3][3];
-    int * const *f53[][3];
-    int * const *f54[3][3];
-    int * const * const f55[][3];
-    int * const * const f56[3][3];
-
-    int (*f57[][3]);
-    int (*f58[3][3]);
-    int (**f59[][3]);
-    int (**f60[3][3]);
-    int (* const *f61[][3]);
-    int (* const *f62[3][3]);
-    int (* const * const f63[][3]);
-    int (* const * const f64[3][3]);
-
-    int f65(int);
-    int (f66)(int);
-
-    int *f67(int);
-    int **f68(int);
-    int * const *f69(int);
-    int * const * const f70(int);
-
-    int *(f71)(int);
-    int **(f72)(int);
-    int * const *(f73)(int);
-    int * const * const (f74)(int);
-
-    int (*f75)(int);
-    int (**f76)(int);
-    int (* const *f77)(int);
-    int (* const * const f78)(int);
-
-    int (*(*f79)(int))();
-    int (*(* const f80)(int))();
-    int (* const(* const f81)(int))();
-}
Index: c/Tests/Parser/TypedefParamDeclarator.c
===================================================================
--- src/Tests/Parser/TypedefParamDeclarator.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,150 +1,0 @@
-typedef int
-     f0,   f1,   f2,   f3,   f4,   f5,   f6,   f7,   f8,   f9,
-    f10,  f11,  f12,  f13,  f14,  f15,  f16,  f17,  f18,  f19,
-    f20,  f21,  f22,  f23,  f24,  f25,  f26,  f27,  f28,  f29,
-    f30,  f31,  f32,  f33,  f34,  f35,  f36,  f37,  f38,  f39,
-    f40,  f41,  f42,  f43,  f44,  f45,  f46,  f47,  f48,  f49,
-    f50,  f51,  f52,  f53,  f54,  f55,  f56,  f57,  f58,  f59,
-    f60,  f61,  f62,  f63,  f64,  f65,  f66,  f67,  f68,  f69,
-    f70,  f71,  f72,  f73,  f74,  f75,  f76,  f77,  f78,  f79,
-    f80,  f81,  f82,  f83,  f84,  f85,  f86,  f87,  f88,  f89,
-    f90,  f91,  f92,  f93,  f94,  f95,  f96,  f97,  f98,  f99,
-    f100, f101, f102, f103, f104, f105, f106, f107, f108, f109,
-    f110, f111, f112, f113, f114, f115, f116, f117, f118, f119;
-
-int fred(
-/*
-    //int f0[](),
-    //int (f0[])(),
-    //int f0()[],
-    //int f0()(),
-    //int (*f0)()(),
-    //int ((*f0())())[],
-*/
-    int f1,
-
-    int *f3,
-    int **f4,
-    int * const *f5,
-    int * const * const f6,
-
-    int (*f11),
-    int (**f12),
-    int (* const *f13),
-    int (* const * const f14),
-
-    int f15[],
-    int f16[10],
-
-    int *f19[],
-    int *f20[10],
-    int **f21[],
-    int **f22[10],
-    int * const *f23[],
-    int * const *f24[10],
-    int * const * const f25[],
-    int * const * const f26[10],
-
-    int (*f35[]),
-    int (*f36[10]),
-    int (**f37[]),
-    int (**f38[10]),
-    int (* const *f39[]),
-    int (* const *f40[10]),
-    int (* const * const f41[]),
-    int (* const * const f42[10]),
-
-    int f43[][3],
-    int f44[3][3],
-/*
-    int (f45[])[3],
-    int (f46[3])[3],
-    int ((f47[]))[3],
-    int ((f48[3]))[3],
-*/
-    int *f49[][3],
-    int *f50[3][3],
-    int **f51[][3],
-    int **f52[3][3],
-    int * const *f53[][3],
-    int * const *f54[3][3],
-    int * const * const f55[][3],
-    int * const * const f56[3][3],
-
-    int (*f57[][3]),
-    int (*f58[3][3]),
-    int (**f59[][3]),
-    int (**f60[3][3]),
-    int (* const *f61[][3]),
-    int (* const *f62[3][3]),
-    int (* const * const f63[][3]),
-    int (* const * const f64[3][3]),
-
-    int f65(int),
-/*
-    int (f66)(int),
-*/
-    int *f67(int),
-    int **f68(int),
-    int * const *f69(int),
-    int * const * const f70(int),
-/*
-    int *(f71)(int),
-    int **(f72)(int),
-    int * const *(f73)(int),
-    int * const * const (f74)(int),
-*/
-    int (*f75)(int),
-    int (**f76)(int),
-    int (* const *f77)(int),
-    int (* const * const f78)(int),
-
-    int (*(*f79)(int))(),
-    int (*(* const f80)(int))(),
-    int (* const(* const f81)(int))(),
-
-    int f82[const *],
-    int f83[const 3],
-    int f84[static 3],
-    int f85[static const 3],
-
-    int (f86[const *]),
-    int (f87[const 3]),
-    int (f88[static 3]),
-    int (f89[static const 3]),
-
-    int *f90[const *],
-    int *f91[const 3],
-    int **f92[static 3],
-    int * const *f93[static const 3],
-    int * const * const f94[static const 3],
-
-    int *(f95[const *]),
-    int *(f96[const 3]),
-    int **(f97[static 3]),
-    int * const *(f98[static const 3]),
-    int * const * const (f99[static const 3]),
-
-    int f100[const *][3],
-    int f101[const 3][3],
-    int f102[static 3][3],
-    int f103[static const 3][3],
-
-    int (f104[const *][3]),
-    int (f105[const 3][3]),
-    int (f106[static 3][3]),
-    int (f107[static const 3][3]),
-
-    int *f108[const *][3],
-    int *f109[const 3][3],
-    int **f110[static 3][3],
-    int * const *f111[static const 3][3],
-    int * const * const f112[static const 3][3],
-
-    int *(f113[const *][3]),
-    int *(f114[const 3][3]),
-    int **(f115[static 3][3]),
-    int * const *(f116[static const 3][3]),
-    int * const * const (f117[static const 3][3])
-    ) {
-}
Index: c/Tests/Parser/VariableDeclarator.c
===================================================================
--- src/Tests/Parser/VariableDeclarator.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,115 +1,0 @@
-int f1;
-int (f2);
-
-int *f3;
-int **f4;
-int * const *f5;
-int * const * const f6;
-
-int *(f7);
-int **(f8);
-int * const *(f9);
-int * const * const (f10);
-
-int (*f11);
-int (**f12);
-int (* const *f13);
-int (* const * const f14);
-
-int f15[];
-int f16[10];
-int (f17[]);
-int (f18[10]);
-
-int *f19[];
-int *f20[10];
-int **f21[];
-int **f22[10];
-int * const *f23[];
-int * const *f24[10];
-int * const * const f25[];
-int * const * const f26[10];
-
-int *(f27[]);
-int *(f28[10]);
-int **(f29[]);
-int **(f30[10]);
-int * const *(f31[]);
-int * const *(f32[10]);
-int * const * const (f33[]);
-int * const * const (f34[10]);
-
-int (*f35[]);
-int (*f36[10]);
-int (**f37[]);
-int (**f38[10]);
-int (* const *f39[]);
-int (* const *f40[10]);
-int (* const * const f41[]);
-int (* const * const f42[10]);
-
-int f43[][3];
-int f44[3][3];
-int (f45[])[3];
-int (f46[3])[3];
-int ((f47[]))[3];
-int ((f48[3]))[3];
-
-int *f49[][3];
-int *f50[3][3];
-int **f51[][3];
-int **f52[3][3];
-int * const *f53[][3];
-int * const *f54[3][3];
-int * const * const f55[][3];
-int * const * const f56[3][3];
-
-int (*f57[][3]);
-int (*f58[3][3]);
-int (**f59[][3]);
-int (**f60[3][3]);
-int (* const *f61[][3]);
-int (* const *f62[3][3]);
-int (* const * const f63[][3]);
-int (* const * const f64[3][3]);
-
-int f65(int);
-int (f66)(int);
-
-int *f67(int);
-int **f68(int);
-int * const *f69(int);
-int * const * const f70(int);
-
-int *(f71)(int);
-int **(f72)(int);
-int * const *(f73)(int);
-
-int * const * const (f74)(int);
-
-int (*f75)(int);
-int (**f76)(int);
-int (* const *f77)(int);
-int (* const * const f78)(int);
-
-int (*(*f79)(int))();
-int (*(* const f80)(int))();
-int (* const(* const f81)(int))();
-
-// errors
-
-//int fe0[]();				// array of functions
-//int (fe1[])();				// array of functions
-//int fe2()[];				// returning an array
-//int fe3()();				// returning a function
-//int (*fe4)()();				// returning a function
-//int ((*fe5())())[];			// returning an array
-
-// Cforall extensions
-
-* [20] double z;
-[20] * char w;
-
-// function pointer
-
-*[]*[]* [ *[]*[] int ]( *[]*[] int, *[]*[] int ) v3;
Index: src/Tests/Quad.c
===================================================================
--- src/Tests/Quad.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Quad.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,20 @@
+int ?=?( int *, int );
+int ?*?( int, int );
+
+forall( type T | { T ?*?( T, T ); } )
+T square( T t ) {
+	return t * t;
+}
+
+forall( type U | { U square( U ); } )
+U quad( U u ) {
+	return square( square( u ) );
+}
+
+void f() {
+	quad( 7 );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/Rank2.c
===================================================================
--- src/Tests/Rank2.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Rank2.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,20 @@
+int ?=?( int *, int );
+forall(dtype DT) DT * ?=?( DT **, DT * );
+
+void a() {
+	forall( type T ) void f( T );
+	void g( forall( type U ) void p( U ) );
+	g( f );
+}
+
+void g() {
+	void h( int *null );
+	forall( type T ) T id( T );
+	forall( dtype T ) T *0;
+	int 0;
+	h( id( id( id( 0 ) ) ) );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: c/Tests/ResolvExpr/Abstype.c
===================================================================
--- src/Tests/ResolvExpr/Abstype.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,28 +1,0 @@
-// "cfa-cpp -nx Abstype.c"
-
-type T | { T x( T ); };
-
-T y( T t )
-{
-	T t_instance;
-	return x( t );
-}
-
-forall(type T) lvalue T			*?(                T* );
-int		?++( int *);
-int ?=?( int*, int );
-forall(dtype DT) DT* 		   	?=?(                DT *          *,          DT* );
-
-type U = int*;
-
-U x( U u )
-{
-	U u_instance = u;
-	(*u)++;
-	return u;
-}
-
-int *break_abstraction( U u )
-{
-	return u;
-}
Index: c/Tests/ResolvExpr/Attributes.c
===================================================================
--- src/Tests/ResolvExpr/Attributes.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,19 +1,0 @@
-// "cfa-cpp -ne simple.c"
-
-int @voon;
-double @voon;
-
-int @bort(int);
-int @bort(double);
-
-void g( int );
-
-void
-f()
-{
-  float x;
-  double x;
-  @bort(x);
-  @bort(int);
-  g( @voon );
-}
Index: c/Tests/ResolvExpr/Cast.c
===================================================================
--- src/Tests/ResolvExpr/Cast.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,11 +1,0 @@
-char f;
-void f()
-{
-  char f;
-  double f;
-  (int)f;
-  short f;
-  (int)f;
-  (void(*)())f;
-  ([long, long double, *[]()])([f, f, f]);
-}
Index: c/Tests/ResolvExpr/CastError.c
===================================================================
--- src/Tests/ResolvExpr/CastError.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,8 +1,0 @@
-int f;
-void f()
-{
-  int f;
-  double f;
-  (char)f;
-  (int(*)())f;
-}
Index: c/Tests/ResolvExpr/Expected/Abstype.tst
===================================================================
--- src/Tests/ResolvExpr/Expected/Abstype.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,215 +1,0 @@
-T: a type
-  with assertions
-    x: a function
-        with parameters
-          instance of type T 
-        returning 
-          instance of type T 
-
-
-?=?: a automatically generated function
-    with parameters
-      _dst: a pointer to instance of type T 
-      _src: a instance of type T 
-    returning 
-      instance of type T 
-
-y: a function
-    with parameters
-      t: a instance of type T 
-    returning 
-      instance of type T 
-    with body 
-      Declaration of t_instance: a instance of type T 
-      
-        Return Statement, returning: Cast of:
-  Application of
-    Variable Expression: x: a function
-        with parameters
-          instance of type T 
-        returning 
-          instance of type T 
-
-  to arguments
-          Variable Expression: t: a instance of type T 
-
-
-to:
-  instance of type T 
-with environment:
-  Types:
-  Non-types:
-
-
-
-*?: a forall
-      T: a type
-        with assertions
-          ?=?: a pointer to function
-              with parameters
-                pointer to instance of type T 
-                instance of type T 
-              returning 
-                instance of type T 
-
-
-    function
-    with parameters
-      pointer to instance of type T 
-    returning 
-      lvalue instance of type T 
-
-?++: a function
-    with parameters
-      pointer to signed int 
-    returning 
-      signed int 
-
-?=?: a function
-    with parameters
-      pointer to signed int 
-      signed int 
-    returning 
-      signed int 
-
-?=?: a forall
-      DT: a incomplete type
-    function
-    with parameters
-      pointer to pointer to instance of type DT 
-      pointer to instance of type DT 
-    returning 
-      pointer to instance of type DT 
-
-U: a type for pointer to signed int 
-?=?: a automatically generated function
-    with parameters
-      _dst: a pointer to instance of type U 
-      _src: a instance of type U 
-    returning 
-      instance of type U 
-    with body 
-      
-        Return Statement, returning: Cast of:
-  Application of
-    Variable Expression: ?=?: a forall
-          DT: a incomplete type
-        function
-        with parameters
-          pointer to pointer to instance of type DT 
-          pointer to instance of type DT 
-        returning 
-          pointer to instance of type DT 
-
-  to arguments
-          Cast of:
-        Variable Expression: _dst: a pointer to instance of type U 
-
-      to:
-        pointer to pointer to signed int 
-
-          Cast of:
-        Variable Expression: _src: a instance of type U 
-
-      to:
-        pointer to signed int 
-
-
-to:
-  instance of type U 
-with environment:
-  Types:
-    _0_DT -> signed int 
-  Non-types:
-
-
-
-x: a function
-    with parameters
-      u: a instance of type U 
-    returning 
-      instance of type U 
-    with body 
-      Declaration of u_instance: a instance of type U with initializer 
-        Simple Initializer:           Name: u
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: ?++: a function
-                with parameters
-                  pointer to signed int 
-                returning 
-                  signed int 
-
-          to arguments
-                          Address of:
-                Application of
-                  Variable Expression: *?: a forall
-                        T: a type
-                          with assertions
-                            ?=?: a pointer to function
-                                with parameters
-                                  pointer to instance of type T 
-                                  instance of type T 
-                                returning 
-                                  instance of type T 
-
-
-                      function
-                      with parameters
-                        pointer to instance of type T 
-                      returning 
-                        lvalue instance of type T 
-
-                to arguments
-                                      Cast of:
-                      Variable Expression: u: a instance of type U 
-
-                    to:
-                      pointer to signed int 
-
-                with inferred parameters:
-                  ?=?: a function
-                    with parameters
-                      pointer to signed int 
-                      signed int 
-                    returning 
-                      signed int 
-
-
-          with environment:
-            Types:
-              _0_T -> signed int 
-            Non-types:
-
-      
-        Return Statement, returning: Cast of:
-  Variable Expression: u: a instance of type U 
-
-to:
-  instance of type U 
-with environment:
-  Types:
-  Non-types:
-
-
-
-break_abstraction: a function
-    with parameters
-      u: a instance of type U 
-    returning 
-      pointer to signed int 
-    with body 
-      
-        Return Statement, returning: Cast of:
-  Variable Expression: u: a instance of type U 
-
-to:
-  pointer to signed int 
-with environment:
-  Types:
-  Non-types:
-
-
-
Index: c/Tests/ResolvExpr/Expected/Attributes.tst
===================================================================
--- src/Tests/ResolvExpr/Expected/Attributes.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,70 +1,0 @@
-@voon: a signed int 
-@voon: a double 
-@bort: a function
-    with parameters
-      signed int 
-    returning 
-      signed int 
-
-@bort: a function
-    with parameters
-      double 
-    returning 
-      signed int 
-
-g: a function
-    with parameters
-      signed int 
-    returning 
-      nothing 
-
-f: a function
-      accepting unspecified arguments
-    returning 
-      nothing 
-    with body 
-      Declaration of x: a float 
-      Declaration of x: a double 
-      
-        Expression Statement:
-          Attr             Variable Expression: @bort: a function
-                with parameters
-                  double 
-                returning 
-                  signed int 
-
-applied to: lvalue double 
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Attr             Variable Expression: @bort: a function
-                with parameters
-                  signed int 
-                returning 
-                  signed int 
-
-applied to: signed int 
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: g: a function
-                with parameters
-                  signed int 
-                returning 
-                  nothing 
-
-          to arguments
-                          Variable Expression: @voon: a signed int 
-
-          with environment:
-            Types:
-            Non-types:
-
-
Index: c/Tests/ResolvExpr/Expected/Cast.tst
===================================================================
--- src/Tests/ResolvExpr/Expected/Cast.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,78 +1,0 @@
-f: a char 
-f: a function
-      accepting unspecified arguments
-    returning 
-      nothing 
-    with body 
-      Declaration of f: a char 
-      Declaration of f: a double 
-      
-        Expression Statement:
-          Cast of:
-            Variable Expression: f: a char 
-
-          to:
-            signed int 
-          with environment:
-            Types:
-            Non-types:
-
-      Declaration of f: a short signed int 
-      
-        Expression Statement:
-          Cast of:
-            Variable Expression: f: a short signed int 
-
-          to:
-            signed int 
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Cast of:
-            Variable Expression: f: a function
-                  accepting unspecified arguments
-                returning 
-                  nothing 
-
-
-          to:
-            pointer to function
-                  accepting unspecified arguments
-                returning 
-                  nothing 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Cast of:
-            Tuple:
-                              Variable Expression: f: a short signed int 
-
-                              Variable Expression: f: a double 
-
-                              Variable Expression: f: a function
-                      accepting unspecified arguments
-                    returning 
-                      nothing 
-
-
-
-          to:
-            long signed int 
-            long double 
-            pointer to function
-                  accepting unspecified arguments
-                returning 
-                  nothing 
-
-          with environment:
-            Types:
-            Non-types:
-
-
Index: c/Tests/ResolvExpr/Expected/CastError.tst
===================================================================
--- src/Tests/ResolvExpr/Expected/CastError.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,94 +1,0 @@
-Error: Can't choose between alternatives for expression Cast of:
-  Name: f
-
-to:
-  char 
-Alternatives are:        Cost ( 1, 0, 0 ):         Cast of:
-          Variable Expression: f: a signed int 
-
-        to:
-          char 
-(types:
-            char 
-)
-        Environment: 
-
-        Cost ( 1, 0, 0 ):         Cast of:
-          Variable Expression: f: a double 
-
-        to:
-          char 
-(types:
-            char 
-)
-        Environment: 
-
-
-Error: Can't choose between alternatives for expression Cast of:
-  Name: f
-
-to:
-  pointer to function
-        accepting unspecified arguments
-      returning 
-        signed int 
-
-Alternatives are:        Cost ( 1, 0, 0 ):         Cast of:
-          Variable Expression: f: a function
-                accepting unspecified arguments
-              returning 
-                nothing 
-
-
-        to:
-          pointer to function
-                accepting unspecified arguments
-              returning 
-                signed int 
-
-(types:
-            pointer to function
-                  accepting unspecified arguments
-                returning 
-                  signed int 
-
-)
-        Environment: 
-
-        Cost ( 1, 0, 0 ):         Cast of:
-          Variable Expression: f: a signed int 
-
-        to:
-          pointer to function
-                accepting unspecified arguments
-              returning 
-                signed int 
-
-(types:
-            pointer to function
-                  accepting unspecified arguments
-                returning 
-                  signed int 
-
-)
-        Environment: 
-
-        Cost ( 1, 0, 0 ):         Cast of:
-          Variable Expression: f: a double 
-
-        to:
-          pointer to function
-                accepting unspecified arguments
-              returning 
-                signed int 
-
-(types:
-            pointer to function
-                  accepting unspecified arguments
-                returning 
-                  signed int 
-
-)
-        Environment: 
-
-
Index: c/Tests/ResolvExpr/Expected/Forall.tst
===================================================================
--- src/Tests/ResolvExpr/Expected/Forall.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,495 +1,0 @@
-?=?: a function
-    with parameters
-      pointer to signed int 
-      signed int 
-    returning 
-      signed int 
-
-?=?: a function
-    with parameters
-      pointer to float 
-      float 
-    returning 
-      float 
-
-?=?: a function
-    with parameters
-      pointer to pointer to signed int 
-      pointer to signed int 
-    returning 
-      pointer to signed int 
-
-?=?: a function
-    with parameters
-      pointer to pointer to float 
-      pointer to float 
-    returning 
-      pointer to float 
-
-?=?: a function
-    with parameters
-      pointer to char 
-      char 
-    returning 
-      char 
-
-?=?: a function
-    with parameters
-      pointer to pointer to function
-          returning 
-            nothing 
-
-      pointer to function
-          returning 
-            nothing 
-
-    returning 
-      pointer to function
-          returning 
-            nothing 
-
-
-g1: a function
-      accepting unspecified arguments
-    returning 
-      nothing 
-    with body 
-      Declaration of f: a forall
-            T: a type
-              with assertions
-                ?=?: a pointer to function
-                    with parameters
-                      pointer to instance of type T 
-                      instance of type T 
-                    returning 
-                      instance of type T 
-
-
-          function
-          with parameters
-            instance of type T 
-          returning 
-            instance of type T 
-
-      Declaration of f: a function
-          with parameters
-            signed int 
-          returning 
-            nothing 
-
-      Declaration of h: a function
-          with parameters
-            p: a pointer to function
-                returning 
-                  nothing 
-
-          returning 
-            nothing 
-
-      Declaration of x: a signed int 
-      Declaration of y: a pointer to function
-          returning 
-            nothing 
-
-      Declaration of z: a char 
-      Declaration of w: a float 
-      
-        Expression Statement:
-          Application of
-            Variable Expression: f: a function
-                with parameters
-                  signed int 
-                returning 
-                  nothing 
-
-          to arguments
-                          Variable Expression: x: a signed int 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: f: a forall
-                  T: a type
-                    with assertions
-                      ?=?: a pointer to function
-                          with parameters
-                            pointer to instance of type T 
-                            instance of type T 
-                          returning 
-                            instance of type T 
-
-
-                function
-                with parameters
-                  instance of type T 
-                returning 
-                  instance of type T 
-
-          to arguments
-                          Variable Expression: y: a pointer to function
-                  returning 
-                    nothing 
-
-
-          with inferred parameters:
-            ?=?: a function
-              with parameters
-                pointer to pointer to function
-                    returning 
-                      nothing 
-
-                pointer to function
-                    returning 
-                      nothing 
-
-              returning 
-                pointer to function
-                    returning 
-                      nothing 
-
-
-          with environment:
-            Types:
-              _0_T -> pointer to function
-                  returning 
-                    nothing 
-
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: f: a function
-                with parameters
-                  signed int 
-                returning 
-                  nothing 
-
-          to arguments
-                          Cast of:
-                Variable Expression: z: a char 
-
-              to:
-                signed int 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: f: a forall
-                  T: a type
-                    with assertions
-                      ?=?: a pointer to function
-                          with parameters
-                            pointer to instance of type T 
-                            instance of type T 
-                          returning 
-                            instance of type T 
-
-
-                function
-                with parameters
-                  instance of type T 
-                returning 
-                  instance of type T 
-
-          to arguments
-                          Variable Expression: w: a float 
-
-          with inferred parameters:
-            ?=?: a function
-              with parameters
-                pointer to float 
-                float 
-              returning 
-                float 
-
-          with environment:
-            Types:
-              _0_T -> float 
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: h: a function
-                with parameters
-                  p: a pointer to function
-                      returning 
-                        nothing 
-
-                returning 
-                  nothing 
-
-          to arguments
-                          Application of
-                Variable Expression: f: a forall
-                      T: a type
-                        with assertions
-                          ?=?: a pointer to function
-                              with parameters
-                                pointer to instance of type T 
-                                instance of type T 
-                              returning 
-                                instance of type T 
-
-
-                    function
-                    with parameters
-                      instance of type T 
-                    returning 
-                      instance of type T 
-
-              to arguments
-                                  Variable Expression: y: a pointer to function
-                      returning 
-                        nothing 
-
-
-              with inferred parameters:
-                ?=?: a function
-                  with parameters
-                    pointer to pointer to function
-                        returning 
-                          nothing 
-
-                    pointer to function
-                        returning 
-                          nothing 
-
-                  returning 
-                    pointer to function
-                        returning 
-                          nothing 
-
-
-
-          with environment:
-            Types:
-              _0_T -> pointer to function
-                  returning 
-                    nothing 
-
-            Non-types:
-
-
-g2: a function
-      accepting unspecified arguments
-    returning 
-      nothing 
-    with body 
-      Declaration of f: a forall
-            T: a type
-              with assertions
-                ?=?: a pointer to function
-                    with parameters
-                      pointer to instance of type T 
-                      instance of type T 
-                    returning 
-                      instance of type T 
-
-
-          function
-          with parameters
-            instance of type T 
-            instance of type T 
-          returning 
-            nothing 
-
-      Declaration of f: a forall
-            T: a type
-              with assertions
-                ?=?: a pointer to function
-                    with parameters
-                      pointer to instance of type T 
-                      instance of type T 
-                    returning 
-                      instance of type T 
-
-
-            U: a type
-              with assertions
-                ?=?: a pointer to function
-                    with parameters
-                      pointer to instance of type U 
-                      instance of type U 
-                    returning 
-                      instance of type U 
-
-
-          function
-          with parameters
-            instance of type T 
-            instance of type U 
-          returning 
-            nothing 
-
-      Declaration of x: a signed int 
-      Declaration of y: a float 
-      Declaration of z: a pointer to signed int 
-      Declaration of w: a pointer to float 
-      
-        Expression Statement:
-          Application of
-            Variable Expression: f: a forall
-                  T: a type
-                    with assertions
-                      ?=?: a pointer to function
-                          with parameters
-                            pointer to instance of type T 
-                            instance of type T 
-                          returning 
-                            instance of type T 
-
-
-                function
-                with parameters
-                  instance of type T 
-                  instance of type T 
-                returning 
-                  nothing 
-
-          to arguments
-                          Cast of:
-                Variable Expression: x: a signed int 
-
-              to:
-                float 
-
-                          Variable Expression: y: a float 
-
-          with inferred parameters:
-            ?=?: a function
-              with parameters
-                pointer to float 
-                float 
-              returning 
-                float 
-
-          with environment:
-            Types:
-              _0_T -> float 
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: f: a forall
-                  T: a type
-                    with assertions
-                      ?=?: a pointer to function
-                          with parameters
-                            pointer to instance of type T 
-                            instance of type T 
-                          returning 
-                            instance of type T 
-
-
-                  U: a type
-                    with assertions
-                      ?=?: a pointer to function
-                          with parameters
-                            pointer to instance of type U 
-                            instance of type U 
-                          returning 
-                            instance of type U 
-
-
-                function
-                with parameters
-                  instance of type T 
-                  instance of type U 
-                returning 
-                  nothing 
-
-          to arguments
-                          Variable Expression: z: a pointer to signed int 
-
-                          Variable Expression: w: a pointer to float 
-
-          with inferred parameters:
-            ?=?: a function
-              with parameters
-                pointer to pointer to signed int 
-                pointer to signed int 
-              returning 
-                pointer to signed int 
-
-            ?=?: a function
-              with parameters
-                pointer to pointer to float 
-                pointer to float 
-              returning 
-                pointer to float 
-
-          with environment:
-            Types:
-              _1_T -> pointer to signed int 
-              _2_U -> pointer to float 
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: f: a forall
-                  T: a type
-                    with assertions
-                      ?=?: a pointer to function
-                          with parameters
-                            pointer to instance of type T 
-                            instance of type T 
-                          returning 
-                            instance of type T 
-
-
-                  U: a type
-                    with assertions
-                      ?=?: a pointer to function
-                          with parameters
-                            pointer to instance of type U 
-                            instance of type U 
-                          returning 
-                            instance of type U 
-
-
-                function
-                with parameters
-                  instance of type T 
-                  instance of type U 
-                returning 
-                  nothing 
-
-          to arguments
-                          Variable Expression: x: a signed int 
-
-                          Variable Expression: z: a pointer to signed int 
-
-          with inferred parameters:
-            ?=?: a function
-              with parameters
-                pointer to signed int 
-                signed int 
-              returning 
-                signed int 
-
-            ?=?: a function
-              with parameters
-                pointer to pointer to signed int 
-                pointer to signed int 
-              returning 
-                pointer to signed int 
-
-          with environment:
-            Types:
-              _1_T -> signed int 
-              _2_U -> pointer to signed int 
-            Non-types:
-
-
Index: c/Tests/ResolvExpr/Expected/Function.tst
===================================================================
--- src/Tests/ResolvExpr/Expected/Function.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,249 +1,0 @@
-a: a signed int 
-a: a float 
-f: a function
-    with parameters
-      signed int 
-    returning 
-      signed int 
-
-f: a function
-    with parameters
-      float 
-    returning 
-      float 
-
-g: a function
-      accepting unspecified arguments
-    returning 
-      nothing 
-    with body 
-      
-        Expression Statement:
-          Application of
-            Variable Expression: f: a function
-                with parameters
-                  signed int 
-                returning 
-                  signed int 
-
-          to arguments
-                          Cast of:
-                Variable Expression: a: a signed int 
-
-              to:
-                signed int 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Cast of:
-            Application of
-              Variable Expression: f: a function
-                  with parameters
-                    signed int 
-                  returning 
-                    signed int 
-
-            to arguments
-                              Variable Expression: a: a signed int 
-
-
-          to:
-            signed int 
-          with environment:
-            Types:
-            Non-types:
-
-
-p: a tuple of types
-    signed int 
-
-p: a tuple of types
-    signed int 
-    double 
-
-p: a tuple of types
-    signed int 
-    signed int 
-    signed int 
-
-p: a tuple of types
-    signed int 
-    signed int 
-    signed int 
-    signed int 
-
-q: a tuple of types
-    char 
-
-q: a tuple of types
-    signed int 
-    signed int 
-
-q: a tuple of types
-    signed int 
-    signed int 
-    float 
-
-q: a tuple of types
-    signed int 
-    signed int 
-    signed int 
-    signed int 
-
-r: a function
-    with parameters
-      signed int 
-      signed int 
-      signed int 
-      signed int 
-    returning 
-      signed int 
-      signed int 
-
-s: a function
-      accepting unspecified arguments
-    returning 
-      nothing 
-    with body 
-      
-        Expression Statement:
-          Application of
-            Variable Expression: r: a function
-                with parameters
-                  signed int 
-                  signed int 
-                  signed int 
-                  signed int 
-                returning 
-                  signed int 
-                  signed int 
-
-          to arguments
-                          Variable Expression: p: a tuple of types
-                  signed int 
-                  signed int 
-                  signed int 
-
-
-                          Cast of:
-                Variable Expression: q: a tuple of types
-                    char 
-
-
-              to:
-                signed int 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: r: a function
-                with parameters
-                  signed int 
-                  signed int 
-                  signed int 
-                  signed int 
-                returning 
-                  signed int 
-                  signed int 
-
-          to arguments
-                          Cast of:
-                Tuple:
-                                      Variable Expression: q: a tuple of types
-                        char 
-
-
-                                      Variable Expression: p: a tuple of types
-                        signed int 
-                        signed int 
-                        signed int 
-
-
-
-              to:
-                signed int 
-                signed int 
-                signed int 
-                signed int 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: r: a function
-                with parameters
-                  signed int 
-                  signed int 
-                  signed int 
-                  signed int 
-                returning 
-                  signed int 
-                  signed int 
-
-          to arguments
-                          Application of
-                Variable Expression: r: a function
-                    with parameters
-                      signed int 
-                      signed int 
-                      signed int 
-                      signed int 
-                    returning 
-                      signed int 
-                      signed int 
-
-              to arguments
-                                  Variable Expression: p: a tuple of types
-                      signed int 
-                      signed int 
-                      signed int 
-
-
-                                  Cast of:
-                    Variable Expression: q: a tuple of types
-                        char 
-
-
-                  to:
-                    signed int 
-
-
-                          Application of
-                Variable Expression: r: a function
-                    with parameters
-                      signed int 
-                      signed int 
-                      signed int 
-                      signed int 
-                    returning 
-                      signed int 
-                      signed int 
-
-              to arguments
-                                  Variable Expression: q: a tuple of types
-                      signed int 
-                      signed int 
-
-
-                                  Variable Expression: q: a tuple of types
-                      signed int 
-                      signed int 
-
-
-
-          with environment:
-            Types:
-            Non-types:
-
-
Index: c/Tests/ResolvExpr/Expected/InferParam.tst
===================================================================
--- src/Tests/ResolvExpr/Expected/InferParam.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,317 +1,0 @@
-?=?: a function
-    with parameters
-      pointer to signed int 
-      signed int 
-    returning 
-      signed int 
-
-?=?: a function
-    with parameters
-      pointer to float 
-      float 
-    returning 
-      float 
-
-?=?: a function
-    with parameters
-      pointer to double 
-      double 
-    returning 
-      double 
-
-g: a forall
-      T: a type
-        with assertions
-          ?=?: a pointer to function
-              with parameters
-                pointer to instance of type T 
-                instance of type T 
-              returning 
-                instance of type T 
-
-
-      U: a type
-        with assertions
-          ?=?: a pointer to function
-              with parameters
-                pointer to instance of type U 
-                instance of type U 
-              returning 
-                instance of type U 
-
-          f: a pointer to function
-              with parameters
-                instance of type T 
-              returning 
-                instance of type U 
-
-
-    function
-    with parameters
-      instance of type T 
-    returning 
-      instance of type U 
-
-f: a function
-    with parameters
-      signed int 
-    returning 
-      float 
-
-f: a function
-    with parameters
-      signed int 
-    returning 
-      double 
-
-i: a function
-    with parameters
-      float 
-    returning 
-      nothing 
-
-h: a function
-      accepting unspecified arguments
-    returning 
-      nothing 
-    with body 
-      Declaration of a: a signed int 
-      
-        Expression Statement:
-          Application of
-            Variable Expression: i: a function
-                with parameters
-                  float 
-                returning 
-                  nothing 
-
-          to arguments
-                          Application of
-                Variable Expression: g: a forall
-                      T: a type
-                        with assertions
-                          ?=?: a pointer to function
-                              with parameters
-                                pointer to instance of type T 
-                                instance of type T 
-                              returning 
-                                instance of type T 
-
-
-                      U: a type
-                        with assertions
-                          ?=?: a pointer to function
-                              with parameters
-                                pointer to instance of type U 
-                                instance of type U 
-                              returning 
-                                instance of type U 
-
-                          f: a pointer to function
-                              with parameters
-                                instance of type T 
-                              returning 
-                                instance of type U 
-
-
-                    function
-                    with parameters
-                      instance of type T 
-                    returning 
-                      instance of type U 
-
-              to arguments
-                                  Variable Expression: a: a signed int 
-
-              with inferred parameters:
-                ?=?: a function
-                  with parameters
-                    pointer to signed int 
-                    signed int 
-                  returning 
-                    signed int 
-
-                ?=?: a function
-                  with parameters
-                    pointer to float 
-                    float 
-                  returning 
-                    float 
-
-                f: a function
-                  with parameters
-                    signed int 
-                  returning 
-                    float 
-
-
-          with environment:
-            Types:
-              _0_T -> signed int 
-              _1_U -> float 
-            Non-types:
-
-
-context has_f_and_j
-    with parameters
-      T: a type
-      U: a type
-
-    with members
-      f: a function
-          with parameters
-            instance of type T 
-          returning 
-            instance of type U 
-
-      j: a function
-          with parameters
-            instance of type T 
-            instance of type U 
-          returning 
-            instance of type U 
-
-
-j: a function
-    with parameters
-      signed int 
-      float 
-    returning 
-      float 
-
-k: a forall
-      T: a type
-        with assertions
-          ?=?: a pointer to function
-              with parameters
-                pointer to instance of type T 
-                instance of type T 
-              returning 
-                instance of type T 
-
-
-      U: a type
-        with assertions
-          ?=?: a pointer to function
-              with parameters
-                pointer to instance of type U 
-                instance of type U 
-              returning 
-                instance of type U 
-
-          f: a pointer to function
-              with parameters
-                instance of type T 
-              returning 
-                instance of type U 
-
-          j: a pointer to function
-              with parameters
-                instance of type T 
-                instance of type U 
-              returning 
-                instance of type U 
-
-
-    function
-    with parameters
-      instance of type T 
-    returning 
-      instance of type U 
-
-l: a function
-      accepting unspecified arguments
-    returning 
-      nothing 
-    with body 
-      Declaration of b: a signed int 
-      
-        Expression Statement:
-          Application of
-            Variable Expression: i: a function
-                with parameters
-                  float 
-                returning 
-                  nothing 
-
-          to arguments
-                          Application of
-                Variable Expression: k: a forall
-                      T: a type
-                        with assertions
-                          ?=?: a pointer to function
-                              with parameters
-                                pointer to instance of type T 
-                                instance of type T 
-                              returning 
-                                instance of type T 
-
-
-                      U: a type
-                        with assertions
-                          ?=?: a pointer to function
-                              with parameters
-                                pointer to instance of type U 
-                                instance of type U 
-                              returning 
-                                instance of type U 
-
-                          f: a pointer to function
-                              with parameters
-                                instance of type T 
-                              returning 
-                                instance of type U 
-
-                          j: a pointer to function
-                              with parameters
-                                instance of type T 
-                                instance of type U 
-                              returning 
-                                instance of type U 
-
-
-                    function
-                    with parameters
-                      instance of type T 
-                    returning 
-                      instance of type U 
-
-              to arguments
-                                  Variable Expression: b: a signed int 
-
-              with inferred parameters:
-                ?=?: a function
-                  with parameters
-                    pointer to signed int 
-                    signed int 
-                  returning 
-                    signed int 
-
-                ?=?: a function
-                  with parameters
-                    pointer to float 
-                    float 
-                  returning 
-                    float 
-
-                f: a function
-                  with parameters
-                    signed int 
-                  returning 
-                    float 
-
-                j: a function
-                  with parameters
-                    signed int 
-                    float 
-                  returning 
-                    float 
-
-
-          with environment:
-            Types:
-              _0_T -> signed int 
-              _1_U -> float 
-            Non-types:
-
-
Index: c/Tests/ResolvExpr/Expected/Members.tst
===================================================================
--- src/Tests/ResolvExpr/Expected/Members.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,666 +1,0 @@
-?=?: a function
-    with parameters
-      pointer to char 
-      char 
-    returning 
-      char 
-
-?=?: a function
-    with parameters
-      pointer to signed int 
-      signed int 
-    returning 
-      signed int 
-
-?=?: a function
-    with parameters
-      pointer to float 
-      float 
-    returning 
-      float 
-
-?=?: a forall
-      DT: a incomplete type
-    function
-    with parameters
-      pointer to pointer to instance of type DT 
-      pointer to instance of type DT 
-    returning 
-      pointer to instance of type DT 
-
-*?: a forall
-      T: a type
-        with assertions
-          ?=?: a pointer to function
-              with parameters
-                pointer to instance of type T 
-                instance of type T 
-              returning 
-                instance of type T 
-
-
-    function
-    with parameters
-      pointer to instance of type T 
-    returning 
-      lvalue instance of type T 
-
-__builtin_memcpy: a function
-      accepting unspecified arguments
-    returning 
-      pointer to char 
-
-a: a function
-    with parameters
-      char 
-    returning 
-      nothing 
-
-b: a function
-    with parameters
-      signed int 
-    returning 
-      nothing 
-
-c: a function
-    with parameters
-      pointer to signed int 
-    returning 
-      nothing 
-
-d: a function
-    with parameters
-      pointer to float 
-    returning 
-      nothing 
-
-struct a_struct
-    with members
-      a: a signed int 
-      a: a char 
-      a: a float 
-
-?=?: a automatically generated inline static function
-    with parameters
-      _dst: a pointer to instance of struct a_struct 
-      _src: a instance of struct a_struct 
-    returning 
-      instance of struct a_struct 
-    with body 
-      
-        Expression Statement:
-          Application of
-            Variable Expression: ?=?: a function
-                with parameters
-                  pointer to signed int 
-                  signed int 
-                returning 
-                  signed int 
-
-          to arguments
-                          Address of:
-                Member Expression, with field: 
-                  a: a signed int 
-                from aggregate: 
-                  Applying untyped: 
-                      Name: *?
-
-                  ...to: 
-                      Variable Expression: _dst: a pointer to instance of struct a_struct 
-
-                          Member Expression, with field: 
-                a: a signed int 
-              from aggregate: 
-                Variable Expression: _src: a instance of struct a_struct 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: ?=?: a function
-                with parameters
-                  pointer to char 
-                  char 
-                returning 
-                  char 
-
-          to arguments
-                          Address of:
-                Member Expression, with field: 
-                  a: a char 
-                from aggregate: 
-                  Applying untyped: 
-                      Name: *?
-
-                  ...to: 
-                      Variable Expression: _dst: a pointer to instance of struct a_struct 
-
-                          Member Expression, with field: 
-                a: a char 
-              from aggregate: 
-                Variable Expression: _src: a instance of struct a_struct 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: ?=?: a function
-                with parameters
-                  pointer to float 
-                  float 
-                returning 
-                  float 
-
-          to arguments
-                          Address of:
-                Member Expression, with field: 
-                  a: a float 
-                from aggregate: 
-                  Applying untyped: 
-                      Name: *?
-
-                  ...to: 
-                      Variable Expression: _dst: a pointer to instance of struct a_struct 
-
-                          Member Expression, with field: 
-                a: a float 
-              from aggregate: 
-                Variable Expression: _src: a instance of struct a_struct 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Return Statement, returning: Cast of:
-  Variable Expression: _src: a instance of struct a_struct 
-
-to:
-  instance of struct a_struct 
-with environment:
-  Types:
-  Non-types:
-
-
-
-union b_struct
-    with members
-      a: a pointer to signed int 
-      a: a pointer to char 
-      a: a pointer to float 
-
-?=?: a automatically generated inline static function
-    with parameters
-      _dst: a pointer to instance of union b_struct 
-      _src: a instance of union b_struct 
-    returning 
-      instance of union b_struct 
-    with body 
-      
-        Expression Statement:
-          Application of
-            Variable Expression: __builtin_memcpy: a function
-                  accepting unspecified arguments
-                returning 
-                  pointer to char 
-
-          to arguments
-                          Variable Expression: _dst: a pointer to instance of union b_struct 
-
-                          Address of:
-                Variable Expression: _src: a instance of union b_struct 
-
-                          Sizeof Expression on: instance of union b_struct 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Return Statement, returning: Cast of:
-  Variable Expression: _src: a instance of union b_struct 
-
-to:
-  instance of union b_struct 
-with environment:
-  Types:
-  Non-types:
-
-
-
-f: a function
-      accepting unspecified arguments
-    returning 
-      nothing 
-    with body 
-      Declaration of the_struct: a instance of struct a_struct 
-      Declaration of the_struct: a instance of union b_struct 
-      
-        Expression Statement:
-          Application of
-            Variable Expression: a: a function
-                with parameters
-                  char 
-                returning 
-                  nothing 
-
-          to arguments
-                          Member Expression, with field: 
-                a: a char 
-              from aggregate: 
-                Variable Expression: the_struct: a instance of struct a_struct 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: b: a function
-                with parameters
-                  signed int 
-                returning 
-                  nothing 
-
-          to arguments
-                          Member Expression, with field: 
-                a: a signed int 
-              from aggregate: 
-                Variable Expression: the_struct: a instance of struct a_struct 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: c: a function
-                with parameters
-                  pointer to signed int 
-                returning 
-                  nothing 
-
-          to arguments
-                          Member Expression, with field: 
-                a: a pointer to signed int 
-              from aggregate: 
-                Variable Expression: the_struct: a instance of union b_struct 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: d: a function
-                with parameters
-                  pointer to float 
-                returning 
-                  nothing 
-
-          to arguments
-                          Member Expression, with field: 
-                a: a pointer to float 
-              from aggregate: 
-                Variable Expression: the_struct: a instance of union b_struct 
-
-          with environment:
-            Types:
-            Non-types:
-
-
-struct c_struct
-    with members
-      signed int 
-      char 
-      float 
-
-?=?: a automatically generated inline static function
-    with parameters
-      _dst: a pointer to instance of struct c_struct 
-      _src: a instance of struct c_struct 
-    returning 
-      instance of struct c_struct 
-    with body 
-      
-        Expression Statement:
-          Application of
-            Variable Expression: ?=?: a function
-                with parameters
-                  pointer to signed int 
-                  signed int 
-                returning 
-                  signed int 
-
-          to arguments
-                          Address of:
-                Member Expression, with field: 
-                  signed int 
-                from aggregate: 
-                  Applying untyped: 
-                      Name: *?
-
-                  ...to: 
-                      Variable Expression: _dst: a pointer to instance of struct c_struct 
-
-                          Member Expression, with field: 
-                signed int 
-              from aggregate: 
-                Variable Expression: _src: a instance of struct c_struct 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: ?=?: a function
-                with parameters
-                  pointer to char 
-                  char 
-                returning 
-                  char 
-
-          to arguments
-                          Address of:
-                Member Expression, with field: 
-                  char 
-                from aggregate: 
-                  Applying untyped: 
-                      Name: *?
-
-                  ...to: 
-                      Variable Expression: _dst: a pointer to instance of struct c_struct 
-
-                          Member Expression, with field: 
-                char 
-              from aggregate: 
-                Variable Expression: _src: a instance of struct c_struct 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: ?=?: a function
-                with parameters
-                  pointer to float 
-                  float 
-                returning 
-                  float 
-
-          to arguments
-                          Address of:
-                Member Expression, with field: 
-                  float 
-                from aggregate: 
-                  Applying untyped: 
-                      Name: *?
-
-                  ...to: 
-                      Variable Expression: _dst: a pointer to instance of struct c_struct 
-
-                          Member Expression, with field: 
-                float 
-              from aggregate: 
-                Variable Expression: _src: a instance of struct c_struct 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Return Statement, returning: Cast of:
-  Variable Expression: _src: a instance of struct c_struct 
-
-to:
-  instance of struct c_struct 
-with environment:
-  Types:
-  Non-types:
-
-
-
-union d_struct
-    with members
-      pointer to signed int 
-      pointer to char 
-      pointer to float 
-
-?=?: a automatically generated inline static function
-    with parameters
-      _dst: a pointer to instance of union d_struct 
-      _src: a instance of union d_struct 
-    returning 
-      instance of union d_struct 
-    with body 
-      
-        Expression Statement:
-          Application of
-            Variable Expression: __builtin_memcpy: a function
-                  accepting unspecified arguments
-                returning 
-                  pointer to char 
-
-          to arguments
-                          Variable Expression: _dst: a pointer to instance of union d_struct 
-
-                          Address of:
-                Variable Expression: _src: a instance of union d_struct 
-
-                          Sizeof Expression on: instance of union d_struct 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Return Statement, returning: Cast of:
-  Variable Expression: _src: a instance of union d_struct 
-
-to:
-  instance of union d_struct 
-with environment:
-  Types:
-  Non-types:
-
-
-
-g: a function
-      accepting unspecified arguments
-    returning 
-      nothing 
-    with body 
-      Declaration of x: a short unsigned int 
-      Declaration of x: a instance of struct c_struct 
-      Declaration of x: a instance of union d_struct 
-      
-        Expression Statement:
-          Application of
-            Variable Expression: a: a function
-                with parameters
-                  char 
-                returning 
-                  nothing 
-
-          to arguments
-                          Cast of:
-                Variable Expression: x: a short unsigned int 
-
-              to:
-                char 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: b: a function
-                with parameters
-                  signed int 
-                returning 
-                  nothing 
-
-          to arguments
-                          Cast of:
-                Variable Expression: x: a short unsigned int 
-
-              to:
-                signed int 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: c: a function
-                with parameters
-                  pointer to signed int 
-                returning 
-                  nothing 
-
-          to arguments
-                          Member Expression, with field: 
-                pointer to signed int 
-              from aggregate: 
-                Variable Expression: x: a instance of union d_struct 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: d: a function
-                with parameters
-                  pointer to float 
-                returning 
-                  nothing 
-
-          to arguments
-                          Member Expression, with field: 
-                pointer to float 
-              from aggregate: 
-                Variable Expression: x: a instance of union d_struct 
-
-          with environment:
-            Types:
-            Non-types:
-
-
-struct forward
-q: a pointer to instance of struct forward 
-struct forward
-    with members
-      y: a signed int 
-
-?=?: a automatically generated inline static function
-    with parameters
-      _dst: a pointer to instance of struct forward 
-      _src: a instance of struct forward 
-    returning 
-      instance of struct forward 
-    with body 
-      
-        Expression Statement:
-          Application of
-            Variable Expression: ?=?: a function
-                with parameters
-                  pointer to signed int 
-                  signed int 
-                returning 
-                  signed int 
-
-          to arguments
-                          Address of:
-                Member Expression, with field: 
-                  y: a signed int 
-                from aggregate: 
-                  Applying untyped: 
-                      Name: *?
-
-                  ...to: 
-                      Variable Expression: _dst: a pointer to instance of struct forward 
-
-                          Member Expression, with field: 
-                y: a signed int 
-              from aggregate: 
-                Variable Expression: _src: a instance of struct forward 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Return Statement, returning: Cast of:
-  Variable Expression: _src: a instance of struct forward 
-
-to:
-  instance of struct forward 
-with environment:
-  Types:
-  Non-types:
-
-
-
-h: a function
-      accepting unspecified arguments
-    returning 
-      nothing 
-    with body 
-      
-        Expression Statement:
-          Member Expression, with field: 
-            y: a signed int 
-          from aggregate: 
-            Application of
-              Variable Expression: *?: a forall
-                    T: a type
-                      with assertions
-                        ?=?: a pointer to function
-                            with parameters
-                              pointer to instance of type T 
-                              instance of type T 
-                            returning 
-                              instance of type T 
-
-
-                  function
-                  with parameters
-                    pointer to instance of type T 
-                  returning 
-                    lvalue instance of type T 
-
-            to arguments
-                              Variable Expression: q: a pointer to instance of struct forward 
-
-            with inferred parameters:
-              ?=?: a inline static function
-                with parameters
-                  _dst: a pointer to instance of struct forward 
-                  _src: a instance of struct forward 
-                returning 
-                  instance of struct forward 
-
-          with environment:
-            Types:
-            Non-types:
-
-
Index: c/Tests/ResolvExpr/Expected/Misc.tst
===================================================================
--- src/Tests/ResolvExpr/Expected/Misc.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,94 +1,0 @@
-a: a signed int 
-b: a signed int 
-b: a float 
-g: a function
-    with parameters
-      signed int 
-    returning 
-      nothing 
-
-g: a function
-    with parameters
-      unsigned int 
-    returning 
-      nothing 
-
-f: a function
-    returning 
-      nothing 
-    with body 
-      
-        Expression Statement:
-          Application of
-            Variable Expression: g: a function
-                with parameters
-                  signed int 
-                returning 
-                  nothing 
-
-          to arguments
-                          Comma Expression:
-                Variable Expression: a: a signed int 
-
-                Variable Expression: b: a signed int 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: g: a function
-                with parameters
-                  signed int 
-                returning 
-                  nothing 
-
-          to arguments
-                          Comma Expression:
-                Comma Expression:
-                  Variable Expression: a: a signed int 
-
-                  Variable Expression: a: a signed int 
-
-                Variable Expression: b: a signed int 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: g: a function
-                with parameters
-                  unsigned int 
-                returning 
-                  nothing 
-
-          to arguments
-                          Sizeof Expression on:                 Variable Expression: a: a signed int 
-
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: g: a function
-                with parameters
-                  unsigned int 
-                returning 
-                  nothing 
-
-          to arguments
-                          Sizeof Expression on: signed int 
-
-          with environment:
-            Types:
-            Non-types:
-
-
Index: c/Tests/ResolvExpr/Expected/MiscError.tst
===================================================================
--- src/Tests/ResolvExpr/Expected/MiscError.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,83 +1,0 @@
-Error: Can't choose between alternatives for expression Cast of:
-  Name: b
-
-to:
-  nothing
-Alternatives are:        Cost ( 0, 0, 1 ):         Cast of:
-          Variable Expression: b: a signed int 
-
-        to:
-          nothing
-(types:
-)
-        Environment: 
-
-        Cost ( 0, 0, 1 ):         Cast of:
-          Variable Expression: b: a float 
-
-        to:
-          nothing
-(types:
-)
-        Environment: 
-
-
-Error: Can't choose between alternatives for expression Cast of:
-  Name: b
-
-to:
-  nothing
-Alternatives are:        Cost ( 0, 0, 1 ):         Cast of:
-          Variable Expression: b: a signed int 
-
-        to:
-          nothing
-(types:
-)
-        Environment: 
-
-        Cost ( 0, 0, 1 ):         Cast of:
-          Variable Expression: b: a float 
-
-        to:
-          nothing
-(types:
-)
-        Environment: 
-
-
-Error: Can't choose between alternatives for expression Cast of:
-  Comma Expression:
-    Name: a
-
-    Name: b
-
-to:
-  nothing
-Alternatives are:        Cost ( 0, 0, 1 ):         Cast of:
-          Comma Expression:
-            Variable Expression: a: a signed int 
-
-            Variable Expression: b: a signed int 
-
-        to:
-          nothing
-(types:
-)
-        Environment: 
-
-        Cost ( 0, 0, 1 ):         Cast of:
-          Comma Expression:
-            Variable Expression: a: a signed int 
-
-            Variable Expression: b: a float 
-
-        to:
-          nothing
-(types:
-)
-        Environment: 
-
-
-Error: Ambiguous expression in sizeof operand: Name: b
-
Index: c/Tests/ResolvExpr/Expected/OccursError.tst
===================================================================
--- src/Tests/ResolvExpr/Expected/OccursError.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,6 +1,0 @@
-Error: No reasonable alternatives for expression Applying untyped: 
-    Name: f
-
-...to: 
-    Name: g
-
Index: c/Tests/ResolvExpr/Expected/Operators.tst
===================================================================
--- src/Tests/ResolvExpr/Expected/Operators.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,224 +1,0 @@
-?*?: a function
-    with parameters
-      signed int 
-      signed int 
-    returning 
-      signed int 
-
-?(): a function
-    with parameters
-      number1: a signed int 
-      number2: a signed int 
-    returning 
-      signed int 
-    with body 
-      
-        Return Statement, returning: Cast of:
-  Application of
-    Variable Expression: ?*?: a function
-        with parameters
-          signed int 
-          signed int 
-        returning 
-          signed int 
-
-  to arguments
-          Variable Expression: number1: a signed int 
-
-          Variable Expression: number2: a signed int 
-
-
-to:
-  signed int 
-with environment:
-  Types:
-  Non-types:
-
-
-
-?+?: a function
-    with parameters
-      signed int 
-      signed int 
-    returning 
-      signed int 
-
-?=?: a function
-    with parameters
-      pointer to signed int 
-      signed int 
-    returning 
-      signed int 
-
-struct accumulator
-    with members
-      total: a signed int 
-
-?=?: a automatically generated inline static function
-    with parameters
-      _dst: a pointer to instance of struct accumulator 
-      _src: a instance of struct accumulator 
-    returning 
-      instance of struct accumulator 
-    with body 
-      
-        Expression Statement:
-          Application of
-            Variable Expression: ?=?: a function
-                with parameters
-                  pointer to signed int 
-                  signed int 
-                returning 
-                  signed int 
-
-          to arguments
-                          Address of:
-                Member Expression, with field: 
-                  total: a signed int 
-                from aggregate: 
-                  Applying untyped: 
-                      Name: *?
-
-                  ...to: 
-                      Variable Expression: _dst: a pointer to instance of struct accumulator 
-
-                          Member Expression, with field: 
-                total: a signed int 
-              from aggregate: 
-                Variable Expression: _src: a instance of struct accumulator 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Return Statement, returning: Cast of:
-  Variable Expression: _src: a instance of struct accumulator 
-
-to:
-  instance of struct accumulator 
-with environment:
-  Types:
-  Non-types:
-
-
-
-?(): a function
-    with parameters
-      a: a instance of struct accumulator 
-      number1: a char 
-      number2: a char 
-    returning 
-      char 
-
-f: a function
-    returning 
-      nothing 
-    with body 
-      Declaration of a: a char 
-      Declaration of b: a char 
-      
-        Expression Statement:
-          Application of
-            Variable Expression: ?(): a function
-                with parameters
-                  number1: a signed int 
-                  number2: a signed int 
-                returning 
-                  signed int 
-
-          to arguments
-                          Cast of:
-                Variable Expression: a: a char 
-
-              to:
-                signed int 
-
-                          Cast of:
-                Variable Expression: b: a char 
-
-              to:
-                signed int 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: ?(): a function
-                with parameters
-                  number1: a signed int 
-                  number2: a signed int 
-                returning 
-                  signed int 
-
-          to arguments
-                          Cast of:
-                Variable Expression: a: a char 
-
-              to:
-                signed int 
-
-                          Cast of:
-                Variable Expression: b: a char 
-
-              to:
-                signed int 
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: ?+?: a function
-                with parameters
-                  signed int 
-                  signed int 
-                returning 
-                  signed int 
-
-          to arguments
-                          Cast of:
-                Variable Expression: a: a char 
-
-              to:
-                signed int 
-
-                          Cast of:
-                Variable Expression: b: a char 
-
-              to:
-                signed int 
-
-          with environment:
-            Types:
-            Non-types:
-
-      Declaration of ?+?: a instance of struct accumulator 
-      
-        Expression Statement:
-          Application of
-            Variable Expression: ?(): a function
-                with parameters
-                  a: a instance of struct accumulator 
-                  number1: a char 
-                  number2: a char 
-                returning 
-                  char 
-
-          to arguments
-                          Variable Expression: ?+?: a instance of struct accumulator 
-
-                          Variable Expression: a: a char 
-
-                          Variable Expression: b: a char 
-
-          with environment:
-            Types:
-            Non-types:
-
-
Index: c/Tests/ResolvExpr/Expected/Quad.tst
===================================================================
--- src/Tests/ResolvExpr/Expected/Quad.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,201 +1,0 @@
-?=?: a function
-    with parameters
-      pointer to signed int 
-      signed int 
-    returning 
-      signed int 
-
-?*?: a function
-    with parameters
-      signed int 
-      signed int 
-    returning 
-      signed int 
-
-square: a forall
-      T: a type
-        with assertions
-          ?=?: a pointer to function
-              with parameters
-                pointer to instance of type T 
-                instance of type T 
-              returning 
-                instance of type T 
-
-          ?*?: a pointer to function
-              with parameters
-                instance of type T 
-                instance of type T 
-              returning 
-                instance of type T 
-
-
-    function
-    with parameters
-      t: a instance of type T 
-    returning 
-      instance of type T 
-    with body 
-      
-        Return Statement, returning: Cast of:
-  Application of
-    Variable Expression: ?*?: a pointer to function
-        with parameters
-          instance of type T 
-          instance of type T 
-        returning 
-          instance of type T 
-
-  to arguments
-          Variable Expression: t: a instance of type T 
-
-          Variable Expression: t: a instance of type T 
-
-
-to:
-  instance of type T 
-with environment:
-  Types:
-  Non-types:
-
-
-
-quad: a forall
-      U: a type
-        with assertions
-          ?=?: a pointer to function
-              with parameters
-                pointer to instance of type U 
-                instance of type U 
-              returning 
-                instance of type U 
-
-          square: a pointer to function
-              with parameters
-                instance of type U 
-              returning 
-                instance of type U 
-
-
-    function
-    with parameters
-      u: a instance of type U 
-    returning 
-      instance of type U 
-    with body 
-      
-        Return Statement, returning: Cast of:
-  Application of
-    Variable Expression: square: a pointer to function
-        with parameters
-          instance of type U 
-        returning 
-          instance of type U 
-
-  to arguments
-          Application of
-        Variable Expression: square: a pointer to function
-            with parameters
-              instance of type U 
-            returning 
-              instance of type U 
-
-      to arguments
-                  Variable Expression: u: a instance of type U 
-
-
-
-to:
-  instance of type U 
-with environment:
-  Types:
-  Non-types:
-
-
-
-f: a function
-      accepting unspecified arguments
-    returning 
-      nothing 
-    with body 
-      
-        Expression Statement:
-          Application of
-            Variable Expression: quad: a forall
-                  U: a type
-                    with assertions
-                      ?=?: a pointer to function
-                          with parameters
-                            pointer to instance of type U 
-                            instance of type U 
-                          returning 
-                            instance of type U 
-
-                      square: a pointer to function
-                          with parameters
-                            instance of type U 
-                          returning 
-                            instance of type U 
-
-
-                function
-                with parameters
-                  u: a instance of type U 
-                returning 
-                  instance of type U 
-
-          to arguments
-                          Constant Expression: 7 (type: signed int )
-          with inferred parameters:
-            ?=?: a function
-              with parameters
-                pointer to signed int 
-                signed int 
-              returning 
-                signed int 
-
-            ?*?: a function
-              with parameters
-                signed int 
-                signed int 
-              returning 
-                signed int 
-
-            ?=?: a function
-              with parameters
-                pointer to signed int 
-                signed int 
-              returning 
-                signed int 
-
-            square: a forall
-                T: a type
-                  with assertions
-                    ?=?: a pointer to function
-                        with parameters
-                          pointer to instance of type T 
-                          instance of type T 
-                        returning 
-                          instance of type T 
-
-                    ?*?: a pointer to function
-                        with parameters
-                          instance of type T 
-                          instance of type T 
-                        returning 
-                          instance of type T 
-
-
-              function
-              with parameters
-                t: a instance of type T 
-              returning 
-                instance of type T 
-
-          with environment:
-            Types:
-              _0_U -> signed int 
-              _1_T -> signed int 
-            Non-types:
-
-
Index: c/Tests/ResolvExpr/Expected/Rank2.tst
===================================================================
--- src/Tests/ResolvExpr/Expected/Rank2.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,272 +1,0 @@
-?=?: a function
-    with parameters
-      pointer to signed int 
-      signed int 
-    returning 
-      signed int 
-
-?=?: a forall
-      DT: a incomplete type
-    function
-    with parameters
-      pointer to pointer to instance of type DT 
-      pointer to instance of type DT 
-    returning 
-      pointer to instance of type DT 
-
-a: a function
-      accepting unspecified arguments
-    returning 
-      nothing 
-    with body 
-      Declaration of f: a forall
-            T: a type
-              with assertions
-                ?=?: a pointer to function
-                    with parameters
-                      pointer to instance of type T 
-                      instance of type T 
-                    returning 
-                      instance of type T 
-
-
-          function
-          with parameters
-            instance of type T 
-          returning 
-            nothing 
-
-      Declaration of g: a function
-          with parameters
-            p: a pointer to forall
-                  U: a type
-                    with assertions
-                      ?=?: a pointer to function
-                          with parameters
-                            pointer to instance of type U 
-                            instance of type U 
-                          returning 
-                            instance of type U 
-
-
-                function
-                with parameters
-                  instance of type U 
-                returning 
-                  nothing 
-
-          returning 
-            nothing 
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: g: a function
-                with parameters
-                  p: a pointer to forall
-                        U: a type
-                          with assertions
-                            ?=?: a pointer to function
-                                with parameters
-                                  pointer to instance of type U 
-                                  instance of type U 
-                                returning 
-                                  instance of type U 
-
-
-                      function
-                      with parameters
-                        instance of type U 
-                      returning 
-                        nothing 
-
-                returning 
-                  nothing 
-
-          to arguments
-                          Variable Expression: f: a forall
-                    T: a type
-                      with assertions
-                        ?=?: a pointer to function
-                            with parameters
-                              pointer to instance of type T 
-                              instance of type T 
-                            returning 
-                              instance of type T 
-
-
-                  function
-                  with parameters
-                    instance of type T 
-                  returning 
-                    nothing 
-
-
-          with inferred parameters:
-            ?=?: a pointer to function
-              with parameters
-                pointer to instance of type U 
-                instance of type U 
-              returning 
-                instance of type U 
-
-          with environment:
-            Types:
-              _1_T -> instance of type _0_U 
-            Non-types:
-
-
-g: a function
-      accepting unspecified arguments
-    returning 
-      nothing 
-    with body 
-      Declaration of h: a function
-          with parameters
-            null: a pointer to signed int 
-          returning 
-            nothing 
-
-      Declaration of id: a forall
-            T: a type
-              with assertions
-                ?=?: a pointer to function
-                    with parameters
-                      pointer to instance of type T 
-                      instance of type T 
-                    returning 
-                      instance of type T 
-
-
-          function
-          with parameters
-            instance of type T 
-          returning 
-            instance of type T 
-
-      Declaration of 0: a forall
-            T: a incomplete type
-          pointer to instance of type T 
-      Declaration of 0: a signed int 
-      
-        Expression Statement:
-          Application of
-            Variable Expression: h: a function
-                with parameters
-                  null: a pointer to signed int 
-                returning 
-                  nothing 
-
-          to arguments
-                          Application of
-                Variable Expression: id: a forall
-                      T: a type
-                        with assertions
-                          ?=?: a pointer to function
-                              with parameters
-                                pointer to instance of type T 
-                                instance of type T 
-                              returning 
-                                instance of type T 
-
-
-                    function
-                    with parameters
-                      instance of type T 
-                    returning 
-                      instance of type T 
-
-              to arguments
-                                  Application of
-                    Variable Expression: id: a forall
-                          T: a type
-                            with assertions
-                              ?=?: a pointer to function
-                                  with parameters
-                                    pointer to instance of type T 
-                                    instance of type T 
-                                  returning 
-                                    instance of type T 
-
-
-                        function
-                        with parameters
-                          instance of type T 
-                        returning 
-                          instance of type T 
-
-                  to arguments
-                                          Application of
-                        Variable Expression: id: a forall
-                              T: a type
-                                with assertions
-                                  ?=?: a pointer to function
-                                      with parameters
-                                        pointer to instance of type T 
-                                        instance of type T 
-                                      returning 
-                                        instance of type T 
-
-
-                            function
-                            with parameters
-                              instance of type T 
-                            returning 
-                              instance of type T 
-
-                      to arguments
-                                                  Variable Expression: 0: a forall
-                                T: a incomplete type
-                              pointer to instance of type T 
-
-                      with inferred parameters:
-                        ?=?: a forall
-                            DT: a incomplete type
-                          function
-                          with parameters
-                            pointer to pointer to instance of type DT 
-                            pointer to instance of type DT 
-                          returning 
-                            pointer to instance of type DT 
-
-
-                  with inferred parameters:
-                    ?=?: a forall
-                        DT: a incomplete type
-                      function
-                      with parameters
-                        pointer to pointer to instance of type DT 
-                        pointer to instance of type DT 
-                      returning 
-                        pointer to instance of type DT 
-
-
-              with inferred parameters:
-                ?=?: a forall
-                    DT: a incomplete type
-                  function
-                  with parameters
-                    pointer to pointer to instance of type DT 
-                    pointer to instance of type DT 
-                  returning 
-                    pointer to instance of type DT 
-
-
-          with environment:
-            Types:
-              _0_T -> forall
-                    _3_T: a incomplete type
-                  pointer to instance of type _3_T 
-              _1_T -> forall
-                    _3_T: a incomplete type
-                  pointer to instance of type _3_T 
-              _2_T -> forall
-                    _3_T: a incomplete type
-                  pointer to instance of type _3_T 
-              _3_T -> signed int 
-              _5_DT -> signed int 
-              _7_DT -> signed int 
-              _9_DT -> signed int 
-            Non-types:
-
-
Index: c/Tests/ResolvExpr/Expected/ShortCircuit.tst
===================================================================
--- src/Tests/ResolvExpr/Expected/ShortCircuit.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,178 +1,0 @@
-?!=?: a function
-    with parameters
-      signed int 
-      signed int 
-    returning 
-      signed int 
-
-?!=?: a function
-    with parameters
-      float 
-      float 
-    returning 
-      signed int 
-
-0: a signed int 
-g: a function
-    with parameters
-      float 
-    returning 
-      nothing 
-
-g: a function
-    with parameters
-      signed int 
-    returning 
-      nothing 
-
-f: a function
-    with parameters
-      a: a signed int 
-    returning 
-      nothing 
-    with body 
-      Declaration of b: a signed int 
-      Declaration of c: a float 
-      
-        Expression Statement:
-          Application of
-            Variable Expression: g: a function
-                with parameters
-                  float 
-                returning 
-                  nothing 
-
-          to arguments
-                          Conditional expression on: 
-                Cast of:
-                  Application of
-                    Variable Expression: ?!=?: a function
-                        with parameters
-                          signed int 
-                          signed int 
-                        returning 
-                          signed int 
-
-                  to arguments
-                                          Variable Expression: a: a signed int 
-
-                                          Variable Expression: 0: a signed int 
-
-
-                to:
-                  signed int 
-              First alternative:
-                Variable Expression: b: a signed int 
-              Second alternative:
-                Variable Expression: c: a float 
-
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: g: a function
-                with parameters
-                  signed int 
-                returning 
-                  nothing 
-
-          to arguments
-                          Short-circuited operation (and) on: Cast of:
-  Application of
-    Variable Expression: ?!=?: a function
-        with parameters
-          signed int 
-          signed int 
-        returning 
-          signed int 
-
-  to arguments
-          Variable Expression: a: a signed int 
-
-          Variable Expression: 0: a signed int 
-
-
-to:
-  signed int 
- and Cast of:
-  Application of
-    Variable Expression: ?!=?: a function
-        with parameters
-          float 
-          float 
-        returning 
-          signed int 
-
-  to arguments
-          Variable Expression: c: a float 
-
-          Cast of:
-        Variable Expression: 0: a signed int 
-
-      to:
-        float 
-
-
-to:
-  signed int 
-
-
-          with environment:
-            Types:
-            Non-types:
-
-      
-        Expression Statement:
-          Application of
-            Variable Expression: g: a function
-                with parameters
-                  signed int 
-                returning 
-                  nothing 
-
-          to arguments
-                          Short-circuited operation (or) on: Cast of:
-  Application of
-    Variable Expression: ?!=?: a function
-        with parameters
-          signed int 
-          signed int 
-        returning 
-          signed int 
-
-  to arguments
-          Variable Expression: a: a signed int 
-
-          Variable Expression: 0: a signed int 
-
-
-to:
-  signed int 
- and Cast of:
-  Application of
-    Variable Expression: ?!=?: a function
-        with parameters
-          signed int 
-          signed int 
-        returning 
-          signed int 
-
-  to arguments
-          Variable Expression: b: a signed int 
-
-          Variable Expression: 0: a signed int 
-
-
-to:
-  signed int 
-
-
-          with environment:
-            Types:
-            Non-types:
-
-
Index: c/Tests/ResolvExpr/Expected/Statement.tst
===================================================================
--- src/Tests/ResolvExpr/Expected/Statement.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,170 +1,0 @@
-?=?: a function
-    with parameters
-      pointer to signed int 
-      signed int 
-    returning 
-      signed int 
-
-?!=?: a function
-    with parameters
-      signed int 
-      signed int 
-    returning 
-      signed int 
-
-0: a signed int 
-f: a function
-      accepting unspecified arguments
-    returning 
-      nothing 
-    with body 
-      Declaration of a: a signed int 
-      Declaration of struct __anonymous0
-          with members
-            b: a signed int 
-
-      Declaration of ?=?: a automatically generated inline static function
-          with parameters
-            _dst: a pointer to instance of struct __anonymous0 
-            _src: a instance of struct __anonymous0 
-          returning 
-            instance of struct __anonymous0 
-          with body 
-            
-              Expression Statement:
-                Application of
-                  Variable Expression: ?=?: a function
-                      with parameters
-                        pointer to signed int 
-                        signed int 
-                      returning 
-                        signed int 
-
-                to arguments
-                                      Address of:
-                      Member Expression, with field: 
-                        b: a signed int 
-                      from aggregate: 
-                        Applying untyped: 
-                            Name: *?
-
-                        ...to: 
-                            Variable Expression: _dst: a pointer to instance of struct __anonymous0 
-
-                                      Member Expression, with field: 
-                      b: a signed int 
-                    from aggregate: 
-                      Variable Expression: _src: a instance of struct __anonymous0 
-
-                with environment:
-                  Types:
-                  Non-types:
-
-            
-              Return Statement, returning: Cast of:
-  Variable Expression: _src: a instance of struct __anonymous0 
-
-to:
-  instance of struct __anonymous0 
-with environment:
-  Types:
-  Non-types:
-
-
-
-      Declaration of a: a instance of struct __anonymous0 
-      
-        If on condition: 
-            Cast of:
-              Application of
-                Variable Expression: ?!=?: a function
-                    with parameters
-                      signed int 
-                      signed int 
-                    returning 
-                      signed int 
-
-              to arguments
-                                  Variable Expression: a: a signed int 
-
-                                  Variable Expression: 0: a signed int 
-
-
-            to:
-              signed int 
-            with environment:
-              Types:
-              Non-types:
-        .... and branches: 
-            
-              While on condition: 
-                  Cast of:
-                    Application of
-                      Variable Expression: ?!=?: a function
-                          with parameters
-                            signed int 
-                            signed int 
-                          returning 
-                            signed int 
-
-                    to arguments
-                                              Variable Expression: a: a signed int 
-
-                                              Variable Expression: 0: a signed int 
-
-
-                  to:
-                    signed int 
-                  with environment:
-                    Types:
-                    Non-types:
-              .... with body: 
-                  Declaration of b: a pointer to signed int 
-                  
-                    For Statement
-
-                      initialization: 
-
-                        Expression Statement:
-                          Variable Expression: b: a pointer to signed int 
-                          with environment:
-                            Types:
-                            Non-types:
-
-
-                      condition: 
-                        Cast of:
-                          Application of
-                            Variable Expression: ?!=?: a function
-                                with parameters
-                                  signed int 
-                                  signed int 
-                                returning 
-                                  signed int 
-
-                          to arguments
-                                                          Variable Expression: a: a signed int 
-
-                                                          Variable Expression: 0: a signed int 
-
-
-                        to:
-                          signed int 
-                        with environment:
-                          Types:
-                          Non-types:
-
-
-                      increment: 
-                        Variable Expression: b: a pointer to signed int 
-                        with environment:
-                          Types:
-                          Non-types:
-
-
-                      statement block: 
-
-
-
-
-
Index: c/Tests/ResolvExpr/Forall.c
===================================================================
--- src/Tests/ResolvExpr/Forall.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,39 +1,0 @@
-int ?=?( int*, int );
-float ?=?( float*, float );
-int * ?=?( int **, int * );
-float * ?=?( float **, float * );
-char ?=?( char*, char );
-void (* ?=?( void (**)(void), void (*)(void) ))(void);
-
-void g1()
-{
-  forall( type T ) T f( T );
-  void f( int );
-  void h( void (*p)(void) );
-  
-  int x;
-  void (*y)(void);
-  char z;
-  float w;
-  
-  f( x );
-  f( y );
-  f( z );
-  f( w );
-  h( f( y ) );
-}
-
-void g2()
-{
-  forall( type T ) void f( T, T );
-  forall( type T, type U ) void f( T, U );
-  
-  int x;
-  float y;
-  int *z;
-  float *w;
-  
-  f( x, y );
-  f( z, w );
-  f( x, z );
-}
Index: c/Tests/ResolvExpr/Function.c
===================================================================
--- src/Tests/ResolvExpr/Function.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,31 +1,0 @@
-int a;
-float a;
-int f( int );
-float f( float );
-
-void g()
-{
-  // selects the same f and a each time
-  // but without a cast would be ambiguous
-  f( (int)a );
-  (int)f( a );
-}
-
-[ int ] p;
-[ int, double ] p;
-[ int, int, int ] p;
-[ int, int, int, int ] p;
-
-[ char ] q;
-[ int, int ] q;
-[ int, int, float ] q;
-[ int, int, int, int ] q;
-
-[ int, int ] r( int, int, int, int );
-
-void s()
-{
-  r( p, q );
-  r( [ q, p ] );
-  r( r( p, q ), r( q, q ) );
-}
Index: c/Tests/ResolvExpr/InferParam.c
===================================================================
--- src/Tests/ResolvExpr/InferParam.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,29 +1,0 @@
-int ?=?( int*, int );
-float ?=?( float*, float );
-double ?=?( double*, double );
-
-forall( type T, type U | { U f(T); } ) U g(T);
-float f( int );
-double f( int );
-void i( float );
-
-void h()
-{
-  int a;
-  i( g( a ) );
-}
-
-context has_f_and_j( type T, type U )
-{
-  U f( T );
-  U j( T, U );
-};
-
-float j( int, float );
-forall( type T, type U | has_f_and_j( T, U ) ) U k( T );
-
-void l()
-{
-  int b;
-  i( k( b ) );
-}
Index: c/Tests/ResolvExpr/Makefile
===================================================================
--- src/Tests/ResolvExpr/Makefile	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,2 +1,0 @@
-all:
-	sh run-tests.sh
Index: c/Tests/ResolvExpr/Members.c
===================================================================
--- src/Tests/ResolvExpr/Members.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,77 +1,0 @@
-// "../../cfa-cpp -nc Members.c"
-
-char ?=?( char*, char );
-int ?=?( int*, int );
-float ?=?( float*, float );
-forall( dtype DT ) DT * ?=?( DT**, DT* );
-forall(type T) lvalue T *?( T* );
-char *__builtin_memcpy();
-
-void a( char );
-void b( int );
-void c( int* );
-void d( float* );
-
-struct a_struct
-{
-  int a;
-  char a;
-  float a;
-};
-
-union b_struct
-{
-  int *a;
-  char *a;
-  float *a;
-};
-
-void f()
-{
-  struct a_struct the_struct;
-  union b_struct the_struct;
-  
-  a( the_struct.a );
-  b( the_struct.a );
-  c( the_struct.a );
-  d( the_struct.a );
-}
-
-struct c_struct
-{
-  int;
-  char;
-  float;
-};
-
-union d_struct
-{
-  int*;
-  char*;
-  float*;
-};
-
-void g()
-{
-  unsigned short x;
-  struct c_struct x;
-  union d_struct x;
-  
-  a( x );	// the 'a' and 'b' calls resolve to the ushort
-  b( x );	// it's debatable whether this is good
-  c( x );
-  d( x );
-}
-
-// make sure that forward declarations work
-
-struct forward;
-
-struct forward *q;
-
-struct forward { int y; };
-
-void h()
-{
-	q->y;
-}
Index: c/Tests/ResolvExpr/Misc.c
===================================================================
--- src/Tests/ResolvExpr/Misc.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,15 +1,0 @@
-int a;
-int b;
-float b;
-
-void g( int );
-void g( unsigned );
-
-void
-f( void )
-{
-  g( (a, b) );
-  g( (a, a, b) );
-  g( sizeof a );
-  g( sizeof( int ) );
-}
Index: c/Tests/ResolvExpr/MiscError.c
===================================================================
--- src/Tests/ResolvExpr/MiscError.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,14 +1,0 @@
-int a;
-int b;
-float b;
-
-void g( int );
-
-void
-f( void )
-{
-  g( (b, a) );
-  g( (b, a, b) );
-  g( (a, b, b) );
-  sizeof b;
-}
Index: c/Tests/ResolvExpr/OccursError.c
===================================================================
--- src/Tests/ResolvExpr/OccursError.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,11 +1,0 @@
-// "./cfa-cpp -c simple.c"
-// "./cfa -v simple.c"
-// "./cfa -CFA simple.c > simple_out.c"
-
-forall( type T ) void f( void (*)( T, T* ) );
-forall( type U ) void g( U*, U );
-
-void test()
-{
-  f( g );
-}
Index: c/Tests/ResolvExpr/Operators.c
===================================================================
--- src/Tests/ResolvExpr/Operators.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,28 +1,0 @@
-int ?*?( int, int );
-
-int
-?()( int number1, int number2 )
-{
-  return number1 * number2;
-}
-
-int ?+?( int, int );
-
-int ?=?( int*, int );
-struct accumulator
-{
-  int total;
-};
-
-char ?()( struct accumulator a, char number1, char number2 );
-
-void
-f( void )
-{
-  char a, b;
-  ?()( a, b );
-  a(b);
-  a + b;
-  struct accumulator ?+?;	// why not, eh?
-  a + b;
-}
Index: c/Tests/ResolvExpr/Quad.c
===================================================================
--- src/Tests/ResolvExpr/Quad.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,19 +1,0 @@
-int ?=?( int*, int );
-int ?*?( int, int );
-
-forall( type T | { T ?*?( T, T ); } )
-T square( T t )
-{
-  return t * t;
-}
-
-forall( type U | { U square( U ); } )
-U quad( U u )
-{
-  return square( square( u ) );
-}
-
-void f()
-{
-  quad( 7 );
-}
Index: c/Tests/ResolvExpr/Rank2.c
===================================================================
--- src/Tests/ResolvExpr/Rank2.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,18 +1,0 @@
-int ?=?( int*, int );
-forall(dtype DT) DT* 	   	?=?( DT *          *,            DT* );
-
-void a()
-{
-  forall( type T ) void f( T );
-  void g( forall( type U ) void p( U ) );
-  g( f );
-}
-
-void g()
-{
-  void h( int *null );
-  forall( type T ) T id( T );
-  forall( dtype T ) T *0;
-  int 0;
-  h( id( id( id( 0 ) ) ) );
-}
Index: c/Tests/ResolvExpr/ShortCircuit.c
===================================================================
--- src/Tests/ResolvExpr/ShortCircuit.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,15 +1,0 @@
-int ?!=?( int, int );
-int ?!=?( float, float );
-int 0;
-
-void g( float );
-void g( int );
-
-void f( int a )
-{
-  int b;
-  float c;
-  g( a ? b : c );
-  g( a && c );
-  g( a || b );
-}
Index: c/Tests/ResolvExpr/Statement.c
===================================================================
--- src/Tests/ResolvExpr/Statement.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,16 +1,0 @@
-int ?=?( int*, int );
-int ?!=?( int, int );
-int 0;
-
-void f()
-{
-    int a;
-    struct { int b; } a;
-    if ( a ) {
-      while ( a ) {
-        int *b;
-        for ( b; a; b ) {
-        }
-      }
-    }
-}
Index: c/Tests/ResolvExpr/make-rules
===================================================================
--- src/Tests/ResolvExpr/make-rules	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,21 +1,0 @@
-CFA = ../../cfa-cpp
-
-DIFF = /software/gnu/bin/diff
-
-# Basic SynTree printing
-EXPECTED := ${wildcard $(EXPECTDIR)/*.tst}
-TESTS := $(EXPECTED:$(EXPECTDIR)/%=$(OUTPUTDIR)/%)
-TEST_IN := $(TESTS:.tst=.c)
-
-$(OUTPUTDIR)/%.tst:%.c $(CFA)
-	-$(CFA) $(CFAOPT) < $< > $@ 2>&1
-
-$(OUTPUTDIR)/report: $(TESTS) $(EXPECTED)
-	rm -f $@
-	@for i in $(TESTS); do \
-	  echo "---"`basename $$i`"---" | tee -a $@; \
-	  $(DIFF) -B -w -u $(EXPECTDIR)/`basename $$i` $$i | tee -a $@; \
-	done
-
-clean:
-	rm -rf $(OUTPUTDIR)
Index: c/Tests/ResolvExpr/run-tests.sh
===================================================================
--- src/Tests/ResolvExpr/run-tests.sh	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,8 +1,0 @@
-#!/bin/sh -v
-
-dotest() {
-  mkdir -p Output$1
-  OUTPUTDIR=Output$1 EXPECTDIR=Expected$1 CFAOPT=$2 gmake -f make-rules $3
-}
-
-dotest "" -ne "$*"
Index: src/Tests/Scope.c
===================================================================
--- src/Tests/Scope.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Scope.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,66 @@
+int x;
+typedef double y;
+typedef float t;
+y z;
+type u = struct { int a; double b; };
+int f( int y );
+y q;
+
+y w( y y, u v ) {
+	type x | { x t(u); };
+	u u = y;
+	x z = t(u);
+}
+
+y p;
+
+context has_u( type z ) {
+	z u(z);
+};
+
+forall( type t | has_u( t ) )
+y q( t the_t ) {
+	t y = u( the_t );
+}
+
+t f( y p ) {
+	int y;
+	typedef char x;
+	{
+		x y;
+		typedef x z;
+		{
+			z x;
+			typedef z y;
+			y z = x;
+		}
+		z x = y;
+	}
+	x q = y;
+}
+
+t g( void ) {
+	typedef char x;
+	try {
+		some_func();
+	} catch ( x x ) {
+		t y = x;
+	}
+	x z;
+}
+
+y q( i )												/* K&R style */
+	int i;
+{
+	switch ( i ) {
+		y q = i;
+	  case 0:
+		return q;
+	  default:
+		return i;
+	}
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/ScopeErrors.c
===================================================================
--- src/Tests/ScopeErrors.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/ScopeErrors.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,25 @@
+int thisIsAnError;
+int thisIsAnError;
+
+int thisIsNotAnError;
+float thisIsNotAnError;
+
+int thisIsAlsoNotAnError() {
+  int thisIsNotAnError;
+}
+
+int thisIsAlsoNotAnError( double x ) {
+}
+
+double thisIsStillNotAnError( double );
+double thisIsStillNotAnError( double );
+
+double butThisIsAnError( double ) {
+}
+
+double butThisIsAnError( double ) {
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/ShortCircuit.c
===================================================================
--- src/Tests/ShortCircuit.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/ShortCircuit.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,18 @@
+int ?!=?( int, int );
+int ?!=?( float, float );
+int 0;
+
+void g( float );
+void g( int );
+
+void f( int a ) {
+	int b;
+	float c;
+	g( a ? b : c );
+	g( a && c );
+	g( a || b );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/Statement.c
===================================================================
--- src/Tests/Statement.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Statement.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,19 @@
+int ?=?( int *, int );
+int ?!=?( int, int );
+int 0;
+
+void f() {
+    int a;
+    struct { int b; } a;
+    if ( a ) {
+		while ( a ) {
+			int *b;
+			for ( b; a; b ) {
+			}
+		}
+    }
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/StructMember.c
===================================================================
--- src/Tests/StructMember.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/StructMember.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,44 @@
+typedef int T;
+
+struct S {
+	int m1:3, m2:4;
+	int :2;
+	int :3, :4;
+	int m3;
+	int m4, m5, m6;
+	int *m7, *m8, *m9;
+	int (*m10)();
+	int *(*m11)(int);
+	T T;
+	T (T);
+
+// Cforall extensions
+
+	* int m12, m13;
+	* [ * int ] (int) m14;
+	int ;
+	int , , ;
+	int * , , ;
+	int *, *, *;
+	* int , , ;
+	int (*)();
+	int (**)( int );
+	T ;
+
+// errors
+
+//    void f(void);
+};
+
+struct S s;
+
+union U {
+	[5] int m1;
+	int m2[5];
+	* int m3;
+	int *m4;
+} u;
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/Subrange.c
===================================================================
--- src/Tests/Subrange.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Subrange.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,63 @@
+// A small context defining the notion of an ordered type.  (The standard
+// library should probably contain a context for this purpose.)
+context ordered(type T) {
+    int ?<?(T, T), ?<=?(T, T);
+};
+
+// A subrange type resembling an Ada subtype with a base type and a range
+// constraint.
+type subrange(type base_t | ordered(base_t), base_t low = 0, base_t high = 8) = base_t;
+
+// Note that subrange() can be applied to floating-point and pointer types, not
+// just integral types.
+//   This requires a "type generator" extension to Cforall.  Type generators
+// must accept type and non-type parameters, which is beyond what we discussed
+// previously.  Type parameters must be usable in the declaration of
+// subsequent parameters: parameter T is used to declare parameters "low"
+// and "high".
+
+// Example usage:
+subrange(unsigned, 1, 31) day_of_month;
+subrange(char, 'a', 'z')  lcase;
+subrange(int, 0, (rand() & 0xF) ) foo;
+
+// What sorts of expressions can be used as arguments of type generators?  Is
+// "subrange(int, 0, rand() & 0xF)" legal?  Probably.  The nearest C equivalent
+// to the "low" and "high" arguments is the array size in a variable-length
+// array declaration, and C allows assignment expressions there.
+
+// Convenient access to subrange bounds, for instance for iteration:
+forall (type T, T low, T high)
+T lbound( subrange(T, low, high) v) {
+    return low;
+}
+
+forall (type T, T low, T high)
+T hbound( subrange(T, low, high) v) {
+    return high;
+}
+
+// Example usage:
+unsigned lday = lbound(day_of_month);
+
+// Assignment from the base type, with bounds checking.  I'll ignore the issue
+// of exception handling here.  Inlining allows the compiler to eliminate
+// bounds checks.
+forall (type T | ordered(T), T low, T high)
+inline subrange(T, low, high) ?=?(subrange(T, low, high)* target, T source) {
+    if (low <= source && source <= high) *((T*)target) = source;
+    else abort();
+    return target;
+}
+
+// Assignment between subranges with a common base type.  The bounds check
+// compares range bounds so that the compiler can optimize checks away when the
+// ranges are known to overlap.
+forall (type T | ordered(T), T t_low, T t_high, T s_low, T s_high)
+inline subrange(T, t_low, t_high) ?=?(subrange(T, t_low, t_high)* target,
+				      subrange(T, s_low, s_high) source) {
+    if ( (t_low <= s_low || t_low <= source)
+	 && (s_high <= t_high || source <= t_high) ) *((T*)target) = source;
+    else abort();
+    return target;
+}
Index: src/Tests/Switch.c
===================================================================
--- src/Tests/Switch.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Switch.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,42 @@
+int fred() {
+    int i;
+    switch ( i ) case 3 : i = 1;
+    switch ( i ) default : i = 1;
+    switch ( 3 )
+      default:
+      case 2:
+      case 3:
+	3;
+
+    switch ( i ) {
+    }
+
+    switch ( i ) {
+	int i;
+      case 8~10:
+      default:
+	i = 3;
+      case 3:
+      case 'A' ... 'Z':
+      case 5 ... 6:
+      case 2, 4:
+	i = 3;
+	break;
+    }
+
+    choose ( i ) case 3 : i = 1;
+    choose ( i ) default : i = 1;
+    choose ( i ) {
+	int i;
+      case 3:
+      case 'A' ... 'Z':
+      case 5 ... 6:
+      case 2, 4, 7:
+	i = 3;
+	fallthru;
+      default:
+	i = 3;
+      case 8~10:
+	fallthru
+    }
+}
Index: c/Tests/SynTree/Array.c
===================================================================
--- src/Tests/SynTree/Array.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,33 +1,0 @@
-int a1[];
-int a2[*];
-int a4[3];
-
-int m1[][3];
-int m2[*][*];
-int m4[3][3];
-
-typedef int T;
-
-int fred() {
-    int a1[];
-    int a2[*];
-    int a4[3];
-    int T[3];
-}
-
-int mary( int T[3],
-	  int p1[const 3],
-	  int p2[static 3],
-	  int p3[static const 3]
-    ) {
-}
-
-int (*tom())[3] {
-}
-
-int (*(jane)())( int T[3],
-		 int p1[const 3],
-		 int p2[static 3],
-		 int p3[static const 3]
-    ) {
-}
Index: c/Tests/SynTree/Constant0-1.c
===================================================================
--- src/Tests/SynTree/Constant0-1.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,35 +1,0 @@
-// Cforall extension
-
-// value
-
-int 0;
-const int 0;
-static const int 0;
-int 1;
-const int 1;
-static const int 1;
-int 0, 1;
-const int 0, 1;
-static const int 0, 1;
-struct { int i; } 0;
-const struct { int i; } 1;
-static const struct { int i; } 1;
-
-// pointer
-
-int 1, * 0;
-int (1), ((1)), * (0), (* 0), ((* 0));
-int * const (0), (* const 0), ((* const 0));
-struct { int i; } * 0;
-
-// Cforall style
-
-* int x, 0;
-const * int x, 0;
-static const * int x, 0;
-* struct { int i; } 0;
-const * struct { int i; } 0;
-static const * struct { int i; } 0;
-static * int x, 0;
-static const * int x, 0;
-const * * int x, 0;
Index: c/Tests/SynTree/Context.c
===================================================================
--- src/Tests/SynTree/Context.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,16 +1,0 @@
-context has_q( type T )
-{
-  T q( T );
-};
-
-forall( type z | has_q( z ) )
-void f()
-{
-  context has_r( type T, type U )
-  {
-    T r( T, T (T,U) );
-  };
-  
-  extern type x, y | has_r( x, y );
-  
-}
Index: c/Tests/SynTree/DeclarationErrors.c
===================================================================
--- src/Tests/SynTree/DeclarationErrors.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,5 +1,0 @@
-static short int volatile static const x9;		// duplicate static
-struct { int i; } const static volatile static x18;	// duplicate static
-struct { int i; } const static volatile static volatile x19; // duplicate static & volatile
-typedef int Int;
-static Int volatile static const x28;			// duplicate static
Index: c/Tests/SynTree/DeclarationSpecifier.c
===================================================================
--- src/Tests/SynTree/DeclarationSpecifier.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,86 +1,0 @@
-typedef short int Int;
-
-
-const short int volatile x1;
-static const short int volatile x2;
-const static short int volatile x3;
-const short static int volatile x4;
-const static volatile short int x4;
-const short int static volatile x5;
-const short int volatile static x6;
-const short volatile int static x7;
-short int volatile static const x8;
-
-const volatile struct { int i; } x10;
-const struct { int i; } volatile x11;
-struct { int i; } const volatile x12;
-static const volatile struct { int i; } x13;
-const static struct { int i; } volatile x14;
-struct { int i; } static const volatile x15;
-struct { int i; } const static volatile x16;
-struct { int i; } const volatile static x17;
-
-const Int volatile x20;
-static const Int volatile x21;
-const static Int volatile x22;
-const static Int volatile x23;
-const Int static volatile x24;
-const Int volatile static x25;
-const volatile Int static x26;
-Int volatile static const x27;
-
-const volatile struct { Int i; } x29;
-const struct { Int i; } volatile x30;
-struct { Int i; } const volatile x31;
-static const volatile struct { Int i; } x32;
-const static struct { Int i; } volatile x33;
-struct { Int i; } static const volatile x34;
-struct { Int i; } const static volatile x35;
-struct { Int i; } const volatile static x36;
-
-
-const static inline const volatile int f01();		// duplicate const
-volatile inline const volatile static int f02();	// duplicate volatile
-const inline const volatile int static f03();		// duplicate const
-volatile inline static const volatile int f04();	// duplicate volatile
-const static const inline volatile int f05();		// duplicate const
-volatile static const volatile inline int f06();	// duplicate volatile
-const static const volatile int inline f07();		// duplicate const
-volatile static const int inline volatile f08();	// duplicate volatile
-
-static inline const volatile int f11();
-inline const volatile static int f12();
-inline const volatile int static f13();
-inline static const volatile int f14();
-static const inline volatile int f15();
-static const volatile inline int f16();
-static const volatile int inline f17();
-static const int inline volatile f18();
-
-short static inline const volatile int f21();
-inline short const volatile static int f22();
-inline const short volatile int static f23();
-inline static const short volatile int f24();
-static const inline volatile short int f25();
-static const volatile inline int short f26();
-static const volatile int inline short f27();
-static const int inline volatile short f28();
-
-static inline const volatile struct { int i; } f31();
-inline const volatile static struct { int i; } f32();
-inline const volatile struct { int i; } static f33();
-inline static const volatile struct { int i; } f34();
-static const inline volatile struct { int i; } f35();
-static const volatile inline struct { int i; } f36();
-static const volatile struct { int i; } inline f37();
-static const struct { int i; } inline volatile f38();
-
-static inline const volatile Int f41();
-inline const volatile static Int f42();
-inline const volatile Int static f43();
-inline static const volatile Int f44();
-static const inline volatile Int f45();
-static const volatile inline Int f46();
-static const volatile Int inline f47();
-static const Int inline volatile f48();
-
Index: c/Tests/SynTree/Enum.c
===================================================================
--- src/Tests/SynTree/Enum.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,20 +1,0 @@
-enum Colors {
-  Red,
-  Yellow,
-  Pink,
-  Blue,
-  Purple,
-  Orange,
-  Green
-};
-
-
-void f( void )
-{
-  enum Fruits {
-    Apple,
-    Banana,
-    Pear,
-    Mango
-  } fruit = Mango;
-}
Index: c/Tests/SynTree/Expected-SymTab/Array.tst
===================================================================
--- src/Tests/SynTree/Expected-SymTab/Array.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,53 +1,0 @@
-Adding object a1
-Adding object a2
-Adding object a4
-Adding object m1
-Adding object m2
-Adding object m4
-Adding typedef T
---- Entering scope
---- Leaving scope containing
-Adding function fred
---- Entering scope
---- Entering scope
-Adding object a1
-Adding object a2
-Adding object a4
-Adding object T
---- Leaving scope containing
-T (__T__A0i) (2)
-a1 (__a1__A0i) (2)
-a2 (__a2__A0i) (2)
-a4 (__a4__A0i) (2)
---- Leaving scope containing
-Adding function mary
---- Entering scope
-Adding object T
-Adding object p1
-Adding object p2
-Adding object p3
---- Entering scope
---- Leaving scope containing
---- Leaving scope containing
-T (__T__Pi) (1)
-p1 (__p1__CPi) (1)
-p2 (__p2__Pi) (1)
-p3 (__p3__CPi) (1)
-Adding function tom
---- Entering scope
---- Entering scope
---- Leaving scope containing
---- Leaving scope containing
-Adding function jane
---- Entering scope
-Adding object T
-Adding object p1
-Adding object p2
-Adding object p3
---- Entering scope
---- Leaving scope containing
---- Leaving scope containing
-T (__T__Pi) (1)
-p1 (__p1__CPi) (1)
-p2 (__p2__Pi) (1)
-p3 (__p3__CPi) (1)
Index: c/Tests/SynTree/Expected-SymTab/Context.tst
===================================================================
--- src/Tests/SynTree/Expected-SymTab/Context.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,52 +1,0 @@
-Adding context has_q
---- Entering scope
-Adding type T
---- Entering scope
---- Leaving scope containing
-Adding function q
---- Entering scope
---- Leaving scope containing
---- Leaving scope containing
-q (__q__F_2tT_2tT_) (1)
-T
-Adding function f
---- Entering scope
-Adding type z
---- Entering scope
---- Leaving scope containing
-Adding function q
---- Entering scope
---- Leaving scope containing
---- Entering scope
-Adding context has_r
---- Entering scope
-Adding type T
---- Entering scope
---- Leaving scope containing
-Adding type U
---- Entering scope
---- Leaving scope containing
-Adding function r
---- Entering scope
---- Leaving scope containing
---- Leaving scope containing
-r (__r__F_2tT_2tTPF_2tT_2tT2tU__) (3)
-T
-U
-Adding type x
---- Entering scope
---- Leaving scope containing
-Adding type y
---- Entering scope
---- Leaving scope containing
-Adding function r
---- Entering scope
---- Leaving scope containing
---- Leaving scope containing
-r (__r__F_2tx_2txPF_2tx_2tx2ty__) (2)
-x
-y
-has_r
---- Leaving scope containing
-q (__q__F_2tz_2tz_) (1)
-z
Index: c/Tests/SynTree/Expected-SymTab/Enum.tst
===================================================================
--- src/Tests/SynTree/Expected-SymTab/Enum.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,25 +1,0 @@
-Adding enum Colors
-Adding object Red
-Adding object Yellow
-Adding object Pink
-Adding object Blue
-Adding object Purple
-Adding object Orange
-Adding object Green
-Adding function f
---- Entering scope
---- Entering scope
-Adding enum Fruits
-Adding object Apple
-Adding object Banana
-Adding object Pear
-Adding object Mango
-Adding object fruit
---- Leaving scope containing
-Apple (__Apple__C7eFruits) (2)
-Banana (__Banana__C7eFruits) (2)
-Mango (__Mango__C7eFruits) (2)
-Pear (__Pear__C7eFruits) (2)
-fruit (__fruit__7eFruits) (2)
-Fruits
---- Leaving scope containing
Index: c/Tests/SynTree/Expected-SymTab/Forall.tst
===================================================================
--- src/Tests/SynTree/Expected-SymTab/Forall.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,188 +1,0 @@
-in default case, (shouldn't be here)
-in default case, (shouldn't be here)
-Adding typedef f
---- Entering scope
-Adding type T
---- Entering scope
---- Leaving scope containing
---- Leaving scope containing
-T
-Adding function swap
---- Entering scope
-Adding type T
---- Entering scope
---- Leaving scope containing
-Adding object left
-Adding object right
---- Entering scope
-Adding object temp
---- Leaving scope containing
-temp (__temp__2tT) (2)
---- Leaving scope containing
-left (__left__2tT) (1)
-right (__right__2tT) (1)
-T
-Adding context sumable
---- Entering scope
-Adding type T
---- Entering scope
---- Leaving scope containing
-Adding object 0
-Adding function ?+?
---- Entering scope
---- Leaving scope containing
-Adding function ?++
---- Entering scope
---- Leaving scope containing
-Adding function ?+=?
---- Entering scope
---- Leaving scope containing
---- Leaving scope containing
-0 (__0__C2tT) (1)
-?++ (__?++__F_2tT_2tT_) (1)
-?+=? (__?+=?__F_2tT_2tT2tT_) (1)
-?+? (__?+?__F_2tT_2tT2tT_) (1)
-T
-Adding type T1
---- Entering scope
---- Leaving scope containing
-Adding object 0
-Adding function ?+?
---- Entering scope
---- Leaving scope containing
-Adding function ?++
---- Entering scope
---- Leaving scope containing
-Adding function ?+=?
---- Entering scope
---- Leaving scope containing
-Adding type T2
---- Entering scope
-Adding type P1
---- Entering scope
---- Leaving scope containing
-Adding type P2
---- Entering scope
---- Leaving scope containing
---- Leaving scope containing
-P1
-P2
-Adding type T3
---- Entering scope
---- Leaving scope containing
-Adding object 0
-Adding function ?+?
---- Entering scope
---- Leaving scope containing
-Adding function ?++
---- Entering scope
---- Leaving scope containing
-Adding function ?+=?
---- Entering scope
---- Leaving scope containing
-Adding struct __anonymous0
---- Entering scope
-Adding object i
-Adding object j
---- Leaving scope containing
-i (__i__3tP1) (1)
-j (__j__3tP2) (1)
-Adding type T2
---- Entering scope
-Adding type P1
---- Entering scope
---- Leaving scope containing
-Adding type P2
---- Entering scope
---- Leaving scope containing
---- Leaving scope containing
-P1
-P2
-Adding object 0
-Adding function ?+?
---- Entering scope
---- Leaving scope containing
-Adding function ?++
---- Entering scope
---- Leaving scope containing
-Adding function ?+=?
---- Entering scope
---- Leaving scope containing
-Adding object w1
-Adding typedef w2
---- Entering scope
---- Leaving scope containing
-Adding object g2
-Adding type w3
---- Entering scope
---- Leaving scope containing
-Adding object g3
-Adding function sum
---- Entering scope
-Adding type T
---- Entering scope
---- Leaving scope containing
-Adding object 0
-Adding function ?+?
---- Entering scope
---- Leaving scope containing
-Adding function ?++
---- Entering scope
---- Leaving scope containing
-Adding function ?+=?
---- Entering scope
---- Leaving scope containing
-Adding object n
-Adding object a
---- Entering scope
-Adding object total
-Adding object i
---- Leaving scope containing
-i (__i__i) (2)
-total (__total__2tT) (2)
---- Leaving scope containing
-0 (__0__2tT) (1)
-?++ (__?++__F_2tT_2tT_) (1)
-?+=? (__?+=?__F_2tT_2tT2tT_) (1)
-?+? (__?+?__F_2tT_2tT2tT_) (1)
-a (__a__P2tT) (1)
-n (__n__i) (1)
-T
-Adding function twice
---- Entering scope
-Adding type T
---- Entering scope
---- Leaving scope containing
-Adding object 0
-Adding function ?+?
---- Entering scope
---- Leaving scope containing
-Adding function ?++
---- Entering scope
---- Leaving scope containing
-Adding function ?+=?
---- Entering scope
---- Leaving scope containing
-Adding object t
---- Entering scope
---- Leaving scope containing
---- Leaving scope containing
-0 (__0__C2tT) (1)
-?++ (__?++__F_2tT_2tT_) (1)
-?+=? (__?+=?__F_2tT_2tT2tT_) (1)
-?+? (__?+?__F_2tT_2tT2tT_) (1)
-t (__t__2tT) (1)
-T
-Adding function main
---- Entering scope
---- Entering scope
-Adding object x
-Adding object y
-Adding object a
-Adding object f
---- Leaving scope containing
-a (__a__A0i) (2)
-f (__f__f) (2)
-x (__x__i) (2)
-y (__y__i) (2)
---- Leaving scope containing
Index: c/Tests/SynTree/Expected-SymTab/Scope.tst
===================================================================
--- src/Tests/SynTree/Expected-SymTab/Scope.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,130 +1,0 @@
-in default case, (shouldn't be here)
-in default case, (shouldn't be here)
-in default case, (shouldn't be here)
-Adding object x
-Adding typedef y
---- Entering scope
---- Leaving scope containing
-Adding typedef t
---- Entering scope
---- Leaving scope containing
-Adding object z
-Adding struct __anonymous0
---- Entering scope
-Adding object a
-Adding object b
---- Leaving scope containing
-a (__a__i) (1)
-b (__b__d) (1)
-Adding type u
---- Entering scope
---- Leaving scope containing
-Adding function f
---- Entering scope
-Adding object y
---- Leaving scope containing
-y (__y__i) (1)
-Adding object q
-Adding function w
---- Entering scope
-Adding object y
-Adding object v
---- Entering scope
-Adding type x
---- Entering scope
---- Leaving scope containing
-Adding function t
---- Entering scope
---- Leaving scope containing
-Adding object u
-Adding object z
---- Leaving scope containing
-t (__t__F_2tx_2tu_) (2)
-u (__u__2tu) (2)
-z (__z__2tx) (2)
-x
---- Leaving scope containing
-v (__v__2tu) (1)
-y (__y__2ty) (1)
-Adding object p
-Adding context has_u
---- Entering scope
-Adding type z
---- Entering scope
---- Leaving scope containing
-Adding function u
---- Entering scope
---- Leaving scope containing
---- Leaving scope containing
-u (__u__F_2tz_2tz_) (1)
-z
-Adding function q
---- Entering scope
-Adding type t
---- Entering scope
---- Leaving scope containing
-Adding function u
---- Entering scope
---- Leaving scope containing
-Adding object the_t
---- Entering scope
-Adding object y
---- Leaving scope containing
-y (__y__2tt) (2)
---- Leaving scope containing
-the_t (__the_t__2tt) (1)
-u (__u__F_2tt_2tt_) (1)
-t
-Adding function f
---- Entering scope
-Adding object p
---- Entering scope
-Adding object y
-Adding typedef x
---- Entering scope
---- Leaving scope containing
---- Entering scope
-Adding object y
-Adding typedef z
---- Entering scope
---- Leaving scope containing
---- Entering scope
-Adding object x
-Adding typedef y
---- Entering scope
---- Leaving scope containing
-Adding object z
---- Leaving scope containing
-x (__x__2tz) (4)
-z (__z__2ty) (4)
-y
-Adding object x
---- Leaving scope containing
-x (__x__2tz) (3)
-y (__y__2tx) (3)
-z
-Adding object q
---- Leaving scope containing
-q (__q__2tx) (2)
-y (__y__i) (2)
-x
---- Leaving scope containing
-p (__p__2ty) (1)
-Adding function g
---- Entering scope
---- Entering scope
-Adding typedef x
---- Entering scope
---- Leaving scope containing
-Adding object z
---- Leaving scope containing
-z (__z__2tx) (2)
-x
---- Leaving scope containing
-Adding function q
---- Entering scope
-Adding object i
---- Entering scope
---- Leaving scope containing
---- Leaving scope containing
-i (__i__i) (1)
Index: c/Tests/SynTree/Expected-SymTab/ScopeErrors.tst
===================================================================
--- src/Tests/SynTree/Expected-SymTab/ScopeErrors.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,38 +1,0 @@
-Adding object thisIsAnError
-Adding object thisIsAnError
-Adding object thisIsNotAnError
-Adding object thisIsNotAnError
-Adding function thisIsAlsoNotAnError
---- Entering scope
---- Entering scope
-Adding object thisIsNotAnError
---- Leaving scope containing
-thisIsNotAnError (__thisIsNotAnError__i) (2)
---- Leaving scope containing
-Adding function thisIsAlsoNotAnError
---- Entering scope
-Adding object x
---- Entering scope
---- Leaving scope containing
---- Leaving scope containing
-x (__x__d) (1)
-Adding function thisIsStillNotAnError
---- Entering scope
---- Leaving scope containing
-Adding function thisIsStillNotAnError
---- Entering scope
---- Leaving scope containing
-Adding function butThisIsAnError
---- Entering scope
---- Entering scope
---- Leaving scope containing
---- Leaving scope containing
-Adding function butThisIsAnError
-Error: duplicate definition for thisIsAnError: a signed int 
-Error: duplicate function definition for butThisIsAnError: a function
-  with parameters
-    double 
-  returning 
-    double 
-  with body 
-
Index: c/Tests/SynTree/Expected-SymTab/Tuple.tst
===================================================================
--- src/Tests/SynTree/Expected-SymTab/Tuple.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,97 +1,0 @@
-Adding function f
---- Entering scope
---- Leaving scope containing
-Adding function g
---- Entering scope
---- Leaving scope containing
-Adding function h
---- Entering scope
-Adding object a
-Adding object b
-Adding object c
-Adding object d
---- Leaving scope containing
-a (__a__i) (1)
-b (__b__i) (1)
-c (__c__Pi) (1)
-d (__d__Pc) (1)
-Adding struct inner
---- Entering scope
-Adding object f2
-Adding object f3
---- Leaving scope containing
-f2 (__f2__i) (1)
-f3 (__f3__i) (1)
-Adding struct outer
---- Entering scope
-Adding object f1
-Adding object i
-Adding object f4
---- Leaving scope containing
-f1 (__f1__i) (1)
-f4 (__f4__d) (1)
-i (__i__6sinner) (1)
-Adding object s
-Adding object sp
-Adding object t1
-Adding object t2
-Adding object t3
-Adding function printf
---- Entering scope
-Adding object rc
-Adding object fmt
---- Leaving scope containing
-fmt (__fmt__Pc) (1)
-rc (__rc__i) (1)
-Adding function printf
---- Entering scope
-Adding object fmt
---- Leaving scope containing
-fmt (__fmt__Pc) (1)
-Adding function f1
---- Entering scope
-Adding object x
-Adding object y
-Adding object w
---- Entering scope
---- Leaving scope containing
---- Leaving scope containing
-w (__w__i) (1)
-x (__x__s) (1)
-y (__y__Ui) (1)
-Adding function g1
---- Entering scope
-Adding object r
---- Entering scope
-Adding object x
-Adding object p
-Adding object y
-Adding object z
---- Leaving scope containing
-p (__p__s) (2)
-x (__x__s) (2)
-y (__y__Ui) (2)
-z (__z__Tii_) (2)
---- Leaving scope containing
-r (__r__Ticli_) (1)
-Adding function main
---- Entering scope
-Adding object rc
-Adding object argc
-Adding object argv
---- Entering scope
-Adding object a
-Adding object b
-Adding object c
-Adding object d
-Adding object t
---- Leaving scope containing
-a (__a__i) (2)
-b (__b__i) (2)
-c (__c__i) (2)
-d (__d__i) (2)
-t (__t__6souter) (2)
---- Leaving scope containing
-argc (__argc__i) (1)
-argv (__argv__PPc) (1)
-rc (__rc__i) (1)
Index: c/Tests/SynTree/Expected/Array.tst
===================================================================
--- src/Tests/SynTree/Expected/Array.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,50 +1,0 @@
-a1: a open array of signed int 
-a2: a variable length array of signed int 
-a4: a array of   Constant Expression: 3signed int 
-m1: a open array of array of   Constant Expression: 3signed int 
-m2: a variable length array of variable length array of signed int 
-m4: a array of   Constant Expression: 3array of   Constant Expression: 3signed int 
-T: a typedef for signed int 
-fred: a function
-    returning 
-      signed int 
-    with body 
-      Declaration of a1: a open array of signed int 
-      Declaration of a2: a variable length array of signed int 
-      Declaration of a4: a array of         Constant Expression: 3signed int 
-      Declaration of T: a array of         Constant Expression: 3signed int 
-
-mary: a function
-    with parameters
-      T: a array of         Constant Expression: 3signed int 
-      p1: a const array of         Constant Expression: 3signed int 
-      p2: a static array of         Constant Expression: 3signed int 
-      p3: a const static array of         Constant Expression: 3signed int 
-    returning 
-      signed int 
-    with body 
-
-      Null Statement
-
-tom: a function
-    returning 
-      pointer to array of         Constant Expression: 3signed int 
-    with body 
-
-      Null Statement
-
-jane: a function
-    returning 
-      pointer to function
-          with parameters
-            T: a array of               Constant Expression: 3signed int 
-            p1: a const array of               Constant Expression: 3signed int 
-            p2: a static array of               Constant Expression: 3signed int 
-            p3: a const static array of               Constant Expression: 3signed int 
-          returning 
-            signed int 
-
-    with body 
-
-      Null Statement
-
Index: c/Tests/SynTree/Expected/Constant0-1.tst
===================================================================
--- src/Tests/SynTree/Expected/Constant0-1.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,69 +1,0 @@
-0: a signed int 
-0: a const signed int 
-0: a static const signed int 
-1: a signed int 
-1: a const signed int 
-1: a static const signed int 
-0: a signed int 
-1: a signed int 
-0: a const signed int 
-1: a const signed int 
-0: a static const signed int 
-1: a static const signed int 
-struct __anonymous0
-    with members
-      i: a signed int 
-
-0: a instance of struct __anonymous0 
-struct __anonymous1
-    with members
-      i: a signed int 
-
-1: a const instance of struct __anonymous1 
-struct __anonymous2
-    with members
-      i: a signed int 
-
-1: a static const instance of struct __anonymous2 
-1: a signed int 
-0: a pointer to signed int 
-1: a signed int 
-1: a signed int 
-0: a pointer to signed int 
-0: a pointer to signed int 
-0: a pointer to signed int 
-0: a const pointer to signed int 
-0: a const pointer to signed int 
-0: a const pointer to signed int 
-struct __anonymous3
-    with members
-      i: a signed int 
-
-0: a pointer to instance of struct __anonymous3 
-x: a pointer to signed int 
-0: a pointer to signed int 
-x: a const pointer to signed int 
-0: a const pointer to signed int 
-x: a static const pointer to signed int 
-0: a static const pointer to signed int 
-struct __anonymous4
-    with members
-      i: a signed int 
-
-0: a pointer to instance of struct __anonymous4 
-struct __anonymous5
-    with members
-      i: a signed int 
-
-0: a const pointer to instance of struct __anonymous5 
-struct __anonymous6
-    with members
-      i: a signed int 
-
-0: a static const pointer to instance of struct __anonymous6 
-x: a static pointer to signed int 
-0: a static pointer to signed int 
-x: a static const pointer to signed int 
-0: a static const pointer to signed int 
-x: a const pointer to pointer to signed int 
-0: a const pointer to pointer to signed int 
Index: c/Tests/SynTree/Expected/Context.tst
===================================================================
--- src/Tests/SynTree/Expected/Context.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,54 +1,0 @@
-context has_q
-    with parameters
-      T: a type
-
-    with members
-      q: a function
-          with parameters
-            instance of type T 
-          returning 
-            instance of type T 
-
-
-f: a function
-    with forall
-      z: a type
-        with assertions
-          instance of context has_q 
-            with parameters
-              instance of type z 
-
-
-    returning 
-      void 
-    with body 
-      Declaration of context has_r
-          with parameters
-            T: a type
-            U: a type
-
-          with members
-            r: a function
-                with parameters
-                  instance of type T 
-                  function
-                      with parameters
-                        instance of type T 
-                        instance of type U 
-                      returning 
-                        instance of type T 
-
-                returning 
-                  instance of type T 
-
-
-      Declaration of x: a extern type
-      Declaration of y: a extern type
-        with assertions
-          instance of context has_r 
-            with parameters
-              instance of type x 
-              instance of type y 
-
-
-
Index: c/Tests/SynTree/Expected/DeclarationSpecifier.tst
===================================================================
--- src/Tests/SynTree/Expected/DeclarationSpecifier.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,290 +1,0 @@
-Int: a typedef for short signed int 
-x1: a const volatile short signed int 
-x2: a static const volatile short signed int 
-x3: a static const volatile short signed int 
-x4: a static const volatile short signed int 
-x4: a static const volatile short signed int 
-x5: a static const volatile short signed int 
-x6: a static const volatile short signed int 
-x7: a static const volatile short signed int 
-x8: a static const volatile short signed int 
-struct __anonymous0
-    with members
-      i: a signed int 
-
-x10: a const volatile instance of struct __anonymous0 
-struct __anonymous1
-    with members
-      i: a signed int 
-
-x11: a const volatile instance of struct __anonymous1 
-struct __anonymous2
-    with members
-      i: a signed int 
-
-x12: a const volatile instance of struct __anonymous2 
-struct __anonymous3
-    with members
-      i: a signed int 
-
-x13: a static const volatile instance of struct __anonymous3 
-struct __anonymous4
-    with members
-      i: a signed int 
-
-x14: a static const volatile instance of struct __anonymous4 
-struct __anonymous5
-    with members
-      i: a signed int 
-
-x15: a static const volatile instance of struct __anonymous5 
-struct __anonymous6
-    with members
-      i: a signed int 
-
-x16: a static const volatile instance of struct __anonymous6 
-struct __anonymous7
-    with members
-      i: a signed int 
-
-x17: a static const volatile instance of struct __anonymous7 
-x20: a const volatile instance of type Int 
-x21: a static const volatile instance of type Int 
-x22: a static const volatile instance of type Int 
-x23: a static const volatile instance of type Int 
-x24: a static const volatile instance of type Int 
-x25: a static const volatile instance of type Int 
-x26: a static const volatile instance of type Int 
-x27: a static const volatile instance of type Int 
-struct __anonymous8
-    with members
-      i: a instance of type Int 
-
-x29: a const volatile instance of struct __anonymous8 
-struct __anonymous9
-    with members
-      i: a instance of type Int 
-
-x30: a const volatile instance of struct __anonymous9 
-struct __anonymous10
-    with members
-      i: a instance of type Int 
-
-x31: a const volatile instance of struct __anonymous10 
-struct __anonymous11
-    with members
-      i: a instance of type Int 
-
-x32: a static const volatile instance of struct __anonymous11 
-struct __anonymous12
-    with members
-      i: a instance of type Int 
-
-x33: a static const volatile instance of struct __anonymous12 
-struct __anonymous13
-    with members
-      i: a instance of type Int 
-
-x34: a static const volatile instance of struct __anonymous13 
-struct __anonymous14
-    with members
-      i: a instance of type Int 
-
-x35: a static const volatile instance of struct __anonymous14 
-struct __anonymous15
-    with members
-      i: a instance of type Int 
-
-x36: a static const volatile instance of struct __anonymous15 
-f01: a inline static function
-    returning 
-      const volatile signed int 
-
-f02: a inline static function
-    returning 
-      const volatile signed int 
-
-f03: a inline static function
-    returning 
-      const volatile signed int 
-
-f04: a inline static function
-    returning 
-      const volatile signed int 
-
-f05: a inline static function
-    returning 
-      const volatile signed int 
-
-f06: a inline static function
-    returning 
-      const volatile signed int 
-
-f07: a inline static function
-    returning 
-      const volatile signed int 
-
-f08: a inline static function
-    returning 
-      const volatile signed int 
-
-f11: a inline static function
-    returning 
-      const volatile signed int 
-
-f12: a inline static function
-    returning 
-      const volatile signed int 
-
-f13: a inline static function
-    returning 
-      const volatile signed int 
-
-f14: a inline static function
-    returning 
-      const volatile signed int 
-
-f15: a inline static function
-    returning 
-      const volatile signed int 
-
-f16: a inline static function
-    returning 
-      const volatile signed int 
-
-f17: a inline static function
-    returning 
-      const volatile signed int 
-
-f18: a inline static function
-    returning 
-      const volatile signed int 
-
-f21: a inline static function
-    returning 
-      const volatile short signed int 
-
-f22: a inline static function
-    returning 
-      const volatile short signed int 
-
-f23: a inline static function
-    returning 
-      const volatile short signed int 
-
-f24: a inline static function
-    returning 
-      const volatile short signed int 
-
-f25: a inline static function
-    returning 
-      const volatile short signed int 
-
-f26: a inline static function
-    returning 
-      const volatile short signed int 
-
-f27: a inline static function
-    returning 
-      const volatile short signed int 
-
-f28: a inline static function
-    returning 
-      const volatile short signed int 
-
-struct __anonymous16
-    with members
-      i: a signed int 
-
-f31: a inline static function
-    returning 
-      const volatile instance of struct __anonymous16 
-
-struct __anonymous17
-    with members
-      i: a signed int 
-
-f32: a inline static function
-    returning 
-      const volatile instance of struct __anonymous17 
-
-struct __anonymous18
-    with members
-      i: a signed int 
-
-f33: a inline static function
-    returning 
-      const volatile instance of struct __anonymous18 
-
-struct __anonymous19
-    with members
-      i: a signed int 
-
-f34: a inline static function
-    returning 
-      const volatile instance of struct __anonymous19 
-
-struct __anonymous20
-    with members
-      i: a signed int 
-
-f35: a inline static function
-    returning 
-      const volatile instance of struct __anonymous20 
-
-struct __anonymous21
-    with members
-      i: a signed int 
-
-f36: a inline static function
-    returning 
-      const volatile instance of struct __anonymous21 
-
-struct __anonymous22
-    with members
-      i: a signed int 
-
-f37: a inline static function
-    returning 
-      const volatile instance of struct __anonymous22 
-
-struct __anonymous23
-    with members
-      i: a signed int 
-
-f38: a inline static function
-    returning 
-      const volatile instance of struct __anonymous23 
-
-f41: a inline static function
-    returning 
-      const volatile instance of type Int 
-
-f42: a inline static function
-    returning 
-      const volatile instance of type Int 
-
-f43: a inline static function
-    returning 
-      const volatile instance of type Int 
-
-f44: a inline static function
-    returning 
-      const volatile instance of type Int 
-
-f45: a inline static function
-    returning 
-      const volatile instance of type Int 
-
-f46: a inline static function
-    returning 
-      const volatile instance of type Int 
-
-f47: a inline static function
-    returning 
-      const volatile instance of type Int 
-
-f48: a inline static function
-    returning 
-      const volatile instance of type Int 
-
Index: c/Tests/SynTree/Expected/Enum.tst
===================================================================
--- src/Tests/SynTree/Expected/Enum.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,25 +1,0 @@
-enum Colors
-    with members
-      Red: a untyped entity 
-      Yellow: a untyped entity 
-      Pink: a untyped entity 
-      Blue: a untyped entity 
-      Purple: a untyped entity 
-      Orange: a untyped entity 
-      Green: a untyped entity 
-
-f: a function
-    with parameters
-      void 
-    returning 
-      void 
-    with body 
-      Declaration of enum Fruits
-          with members
-            Apple: a untyped entity 
-            Banana: a untyped entity 
-            Pear: a untyped entity 
-            Mango: a untyped entity 
-
-      Declaration of fruit: a instance of enum Fruits 
-
Index: c/Tests/SynTree/Expected/Forall.tst
===================================================================
--- src/Tests/SynTree/Expected/Forall.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,229 +1,0 @@
-in default case, (shouldn't be here)
-in default case, (shouldn't be here)
-f: a typedef for pointer to function
-    with parameters
-      signed int 
-    with forall
-      T: a type
-    returning 
-      signed int 
-
-swap: a function
-    with parameters
-      left: a instance of type T 
-      right: a instance of type T 
-    with forall
-      T: a type
-    returning 
-      void 
-    with body 
-      Declaration of temp: a instance of type T 
-      
-        Expression Statement:
-          Applying untyped: 
-              Name: ?=?
- to: 
-              Name: left
-              Name: right
-
-      
-        Expression Statement:
-          Applying untyped: 
-              Name: ?=?
- to: 
-              Name: right
-              Name: temp
-
-
-context sumable
-    with parameters
-      T: a type
-
-    with members
-      0: a const instance of type T 
-      ?+?: a function
-          with parameters
-            instance of type T 
-            instance of type T 
-          returning 
-            instance of type T 
-
-      ?++: a function
-          with parameters
-            instance of type T 
-          returning 
-            instance of type T 
-
-      ?+=?: a function
-          with parameters
-            instance of type T 
-            instance of type T 
-          returning 
-            instance of type T 
-
-
-T1: a type
-  with assertions
-    0: a const instance of type T1 
-    ?+?: a function
-        with parameters
-          instance of type T1 
-          instance of type T1 
-        returning 
-          instance of type T1 
-
-    ?++: a function
-        with parameters
-          instance of type T1 
-        returning 
-          instance of type T1 
-
-    ?+=?: a function
-        with parameters
-          instance of type T1 
-          instance of type T1 
-        returning 
-          instance of type T1 
-
-
-T2: a type
-  with parameters
-    P1: a type
-    P2: a type
-
-T3: a type
-  with assertions
-    instance of context sumable 
-      with parameters
-        instance of type T3 
-
-
-struct __anonymous0
-    with members
-      i: a instance of type P1 
-      j: a instance of type P2 
-
-T2: a type for instance of struct __anonymous0 
-  with parameters
-    P1: a type
-    P2: a type
-
-  with assertions
-    instance of context sumable 
-      with parameters
-        instance of type T2 
-          with parameters
-            instance of type P1 
-            instance of type P2 
-
-
-
-w1: a instance of type T2 
-  with parameters
-    signed int 
-    signed int 
-
-w2: a typedef for instance of type T2 
-  with parameters
-    signed int 
-    signed int 
-
-g2: a instance of type w2 
-w3: a type for instance of type T2 
-  with parameters
-    signed int 
-    signed int 
-
-g3: a instance of type w3 
-sum: a function
-    with parameters
-      n: a signed int 
-      a: a open array of instance of type T 
-    with forall
-      T: a type
-        with assertions
-          instance of context sumable 
-            with parameters
-              instance of type T 
-
-
-    returning 
-      instance of type T 
-    with body 
-      Declaration of total: a instance of type T 
-      Declaration of i: a signed int 
-
-twice: a function
-    with parameters
-      t: a instance of type T 
-    with forall
-      T: a type
-        with assertions
-          0: a const instance of type T 
-          ?+?: a function
-              with parameters
-                instance of type T 
-                instance of type T 
-              returning 
-                instance of type T 
-
-          ?++: a function
-              with parameters
-                instance of type T 
-              returning 
-                instance of type T 
-
-          ?+=?: a function
-              with parameters
-                instance of type T 
-                instance of type T 
-              returning 
-                instance of type T 
-
-
-    returning 
-      instance of type T 
-    with body 
-
-main: a function
-    returning 
-      signed int 
-    with body 
-      Declaration of x: a signed int 
-      Declaration of y: a signed int 
-      Declaration of a: a array of         Constant Expression: 10signed int 
-      Declaration of f: a float 
-      
-        Expression Statement:
-          Applying untyped: 
-              Name: swap
- to: 
-              Name: x
-              Name: y
-
-      
-        Expression Statement:
-          Applying untyped: 
-              Name: twice
- to: 
-              Name: x
-              Name: y
-
-      
-        Expression Statement:
-          Applying untyped: 
-              Name: ?=?
- to: 
-              Name: f
-              Applying untyped: 
-                  Name: min
- to: 
-                  Constant Expression: 4.0                  Constant Expression: 3.0
-      
-        Expression Statement:
-          Applying untyped: 
-              Name: sum
- to: 
-              Constant Expression: 10              Name: a
-
-
Index: c/Tests/SynTree/Expected/Functions.tst
===================================================================
--- src/Tests/SynTree/Expected/Functions.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,586 +1,0 @@
-h: a function
-    with parameters
-      void 
-    returning 
-      void 
-    with body 
-
-f: a function
-    with parameters
-      function
-          with parameters
-            void 
-          returning 
-            signed int 
-
-      function
-          with parameters
-            signed int 
-          returning 
-            signed int 
-
-      function
-          with parameters
-            void 
-          returning 
-            signed int 
-
-      function
-          with parameters
-            signed int 
-          returning 
-            signed int 
-
-      g: a function
-          with parameters
-            void 
-          returning 
-            void 
-
-    returning 
-      signed int 
-    with body 
-
-f1: a function
-    returning 
-      signed int 
-    with body 
-
-f2: a function
-    returning 
-      signed int 
-    with body 
-
-f3: a function
-    returning 
-      pointer to function
-          returning 
-            signed int 
-
-    with body 
-
-f4: a function
-    returning 
-      pointer to signed int 
-    with body 
-
-f5: a function
-    returning 
-      pointer to function
-          returning 
-            signed int 
-
-    with body 
-
-f6: a function
-    returning 
-      pointer to signed int 
-    with body 
-
-f7: a function
-    returning 
-      pointer to signed int 
-    with body 
-
-f8: a function
-    returning 
-      pointer to pointer to signed int 
-    with body 
-
-f9: a function
-    returning 
-      pointer to const pointer to signed int 
-    with body 
-
-f10: a function
-    returning 
-      pointer to open array of signed int 
-    with body 
-
-f11: a function
-    returning 
-      pointer to open array of open array of signed int 
-    with body 
-
-f12: a function
-    returning 
-      pointer to open array of open array of signed int 
-    with body 
-
-fII1: a function
-    with parameters
-      i: a signed int 
-    returning 
-      signed int 
-    with body 
-
-fII2: a function
-    with parameters
-      i: a signed int 
-    returning 
-      const signed int 
-    with body 
-
-fII3: a extern function
-    with parameters
-      i: a signed int 
-    returning 
-      signed int 
-    with body 
-
-fII4: a extern function
-    with parameters
-      i: a signed int 
-    returning 
-      const signed int 
-    with body 
-
-fII5: a function
-    returning 
-      pointer to signed int 
-    with body 
-
-fII6: a function
-    returning 
-      const pointer to signed int 
-    with body 
-
-fII7: a function
-    returning 
-      pointer to const long signed int 
-    with body 
-
-fII8: a static function
-    returning 
-      pointer to const long signed int 
-    with body 
-
-fII9: a static function
-    returning 
-      pointer to const long signed int 
-    with body 
-
-fO1: a function
-    returning 
-      signed int 
-    with parameter names
-      i
-    with parameter declarations
-      i: a signed int 
-    with body 
-
-fO2: a function
-    returning 
-      signed int 
-    with parameter names
-      i
-    with parameter declarations
-      i: a signed int 
-    with body 
-
-fO3: a function
-    returning 
-      const signed int 
-    with parameter names
-      i
-    with parameter declarations
-      i: a signed int 
-    with body 
-
-fO4: a extern function
-    returning 
-      signed int 
-    with parameter names
-      i
-    with parameter declarations
-      i: a signed int 
-    with body 
-
-fO5: a extern function
-    returning 
-      const signed int 
-    with parameter names
-      i
-    with parameter declarations
-      i: a signed int 
-    with body 
-
-f: a function
-    returning 
-      nothing 
-
-f: a function
-    returning 
-      signed int 
-
-f: a function
-    with parameters
-      signed int 
-    returning 
-      nothing 
-
-f: a function
-    with parameters
-      signed int 
-    returning 
-      signed int 
-
-f: a function
-    returning 
-      nothing 
-    with body 
-
-f: a function
-    returning 
-      signed int 
-    with body 
-
-f: a function
-    with parameters
-      signed int 
-    returning 
-      nothing 
-    with body 
-
-f: a function
-    with parameters
-      signed int 
-    returning 
-      signed int 
-    with body 
-
-f: a function
-    returning 
-      x: a signed int 
-
-f: a function
-    with parameters
-      x: a signed int 
-    returning 
-      nothing 
-
-f: a function
-    with parameters
-      x: a signed int 
-    returning 
-      x: a signed int 
-
-f: a function
-    returning 
-      x: a signed int 
-    with body 
-
-f: a function
-    with parameters
-      x: a signed int 
-    returning 
-      nothing 
-    with body 
-
-f: a function
-    with parameters
-      x: a signed int 
-    returning 
-      x: a signed int 
-    with body 
-
-f: a function
-    returning 
-      signed int 
-      x: a signed int 
-
-f: a function
-    with parameters
-      signed int 
-      x: a signed int 
-    returning 
-      nothing 
-
-f: a function
-    with parameters
-      signed int 
-      x: a signed int 
-    returning 
-      signed int 
-      x: a signed int 
-
-f: a function
-    returning 
-      signed int 
-      x: a signed int 
-    with body 
-
-f: a function
-    with parameters
-      signed int 
-      x: a signed int 
-    returning 
-      nothing 
-    with body 
-
-f: a function
-    with parameters
-      signed int 
-      x: a signed int 
-    returning 
-      signed int 
-      x: a signed int 
-    with body 
-
-f: a function
-    returning 
-      signed int 
-      x: a signed int 
-      signed int 
-
-f: a function
-    with parameters
-      signed int 
-      x: a signed int 
-      signed int 
-    returning 
-      nothing 
-
-f: a function
-    with parameters
-      signed int 
-      x: a signed int 
-      signed int 
-    returning 
-      signed int 
-      x: a signed int 
-      signed int 
-
-f: a function
-    returning 
-      signed int 
-      x: a signed int 
-      signed int 
-    with body 
-
-f: a function
-    with parameters
-      signed int 
-      x: a signed int 
-      signed int 
-    returning 
-      nothing 
-    with body 
-
-f: a function
-    with parameters
-      signed int 
-      x: a signed int 
-      signed int 
-    returning 
-      signed int 
-      x: a signed int 
-      signed int 
-    with body 
-
-f: a function
-    returning 
-      signed int 
-      x: a signed int 
-      y: a pointer to signed int 
-
-f: a function
-    with parameters
-      signed int 
-      x: a signed int 
-      y: a pointer to signed int 
-    returning 
-      nothing 
-
-f: a function
-    with parameters
-      signed int 
-      x: a signed int 
-      y: a pointer to signed int 
-    returning 
-      signed int 
-      x: a signed int 
-      y: a pointer to signed int 
-
-f: a function
-    returning 
-      signed int 
-      x: a signed int 
-      y: a pointer to signed int 
-    with body 
-
-f: a function
-    with parameters
-      signed int 
-      x: a signed int 
-      y: a pointer to signed int 
-    returning 
-      nothing 
-    with body 
-
-f: a function
-    with parameters
-      signed int 
-      x: a signed int 
-      y: a pointer to signed int 
-    returning 
-      signed int 
-      x: a signed int 
-      y: a pointer to signed int 
-    with body 
-
-f11: a function
-    with parameters
-      signed int 
-    returning 
-      signed int 
-
-f12: a function
-    with parameters
-      signed int 
-    returning 
-      signed int 
-
-f: a function
-    with parameters
-      function
-          with parameters
-            signed int 
-            p: a signed int 
-          returning 
-            signed int 
-
-      function
-          with parameters
-            signed int 
-          returning 
-            signed int 
-
-    returning 
-      signed int 
-    with body 
-      Declaration of p: a pointer to open array of open array of pointer to open array of open array of signed int 
-      Declaration of p: a pointer to open array of open array of pointer to open array of open array of signed int 
-      Declaration of p: a pointer to open array of pointer to function
-          with parameters
-            signed int 
-          returning 
-            signed int 
-
-
-f1: a static function
-    returning 
-      pointer to const signed int 
-    with body 
-
-f2: a static function
-    returning 
-      const signed int 
-    with body 
-
-f3: a inline static function
-    returning 
-      const pointer to signed int 
-    with body 
-
-f4: a inline static function
-    returning 
-      const tuple of types
-          pointer to signed int 
-          signed int 
-
-    with body 
-
-f5: a static function
-    returning 
-      const tuple of types
-          pointer to signed int 
-          const signed int 
-
-    with body 
-
-f: a function
-    with parameters
-      function
-          returning 
-            signed int 
-
-      function
-          returning 
-            pointer to signed int 
-
-      function
-          returning 
-            pointer to pointer to signed int 
-
-      function
-          returning 
-            pointer to const pointer to signed int 
-
-      function
-          returning 
-            const pointer to const pointer to signed int 
-
-      open array of signed int 
-      open array of signed int 
-      open array of pointer to signed int 
-      open array of pointer to signed int 
-      open array of pointer to pointer to signed int 
-      open array of pointer to pointer to signed int 
-      open array of pointer to const pointer to signed int 
-      open array of pointer to const pointer to signed int 
-      open array of const pointer to const pointer to signed int 
-      open array of const pointer to const pointer to signed int 
-    returning 
-      signed int 
-
-f: a function
-    with parameters
-      function
-          returning 
-            signed int 
-
-      function
-          returning 
-            pointer to signed int 
-
-      function
-          returning 
-            pointer to pointer to signed int 
-
-      function
-          returning 
-            pointer to const pointer to signed int 
-
-      function
-          returning 
-            const pointer to const pointer to signed int 
-
-      open array of signed int 
-      open array of signed int 
-      open array of pointer to signed int 
-      open array of pointer to signed int 
-      open array of pointer to pointer to signed int 
-      open array of pointer to pointer to signed int 
-      open array of pointer to const pointer to signed int 
-      open array of pointer to const pointer to signed int 
-      open array of const pointer to const pointer to signed int 
-      open array of const pointer to const pointer to signed int 
-    returning 
-      signed int 
-    with body 
-
-T: a typedef for signed int 
-f: a function
-    with parameters
-      function
-          with parameters
-            instance of type T 
-          returning 
-            instance of type T 
-
-      T: a instance of type T 
-    returning 
-      signed int 
-    with body 
-
Index: c/Tests/SynTree/Expected/IdentFuncDeclarator.tst
===================================================================
--- src/Tests/SynTree/Expected/IdentFuncDeclarator.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,180 +1,0 @@
-main: a function
-    returning 
-      signed int 
-    with body 
-      Declaration of f1: a signed int 
-      Declaration of f2: a signed int 
-      Declaration of f3: a pointer to signed int 
-      Declaration of f4: a pointer to pointer to signed int 
-      Declaration of f5: a pointer to const pointer to signed int 
-      Declaration of f6: a const pointer to const pointer to signed int 
-      Declaration of f7: a pointer to signed int 
-      Declaration of f8: a pointer to pointer to signed int 
-      Declaration of f9: a pointer to const pointer to signed int 
-      Declaration of f10: a const pointer to const pointer to signed int 
-      Declaration of f11: a pointer to signed int 
-      Declaration of f12: a pointer to pointer to signed int 
-      Declaration of f13: a pointer to const pointer to signed int 
-      Declaration of f14: a const pointer to const pointer to signed int 
-      Declaration of f15: a open array of signed int 
-      Declaration of f16: a open array of signed int 
-      Declaration of f17: a open array of signed int 
-      Declaration of f18: a open array of signed int 
-      Declaration of f19: a open array of pointer to signed int 
-      Declaration of f20: a open array of pointer to signed int 
-      Declaration of f21: a open array of pointer to pointer to signed int 
-      Declaration of f22: a open array of pointer to pointer to signed int 
-      Declaration of f23: a open array of pointer to const pointer to signed int 
-      Declaration of f24: a open array of pointer to const pointer to signed int 
-      Declaration of f25: a open array of const pointer to const pointer to signed int 
-      Declaration of f26: a open array of const pointer to const pointer to signed int 
-      Declaration of f27: a open array of pointer to signed int 
-      Declaration of f28: a open array of pointer to signed int 
-      Declaration of f29: a open array of pointer to pointer to signed int 
-      Declaration of f30: a open array of pointer to pointer to signed int 
-      Declaration of f31: a open array of pointer to const pointer to signed int 
-      Declaration of f32: a open array of pointer to const pointer to signed int 
-      Declaration of f33: a open array of const pointer to const pointer to signed int 
-      Declaration of f34: a open array of const pointer to const pointer to signed int 
-      Declaration of f35: a open array of pointer to signed int 
-      Declaration of f36: a open array of pointer to signed int 
-      Declaration of f37: a open array of pointer to pointer to signed int 
-      Declaration of f38: a open array of pointer to pointer to signed int 
-      Declaration of f39: a open array of pointer to const pointer to signed int 
-      Declaration of f40: a open array of pointer to const pointer to signed int 
-      Declaration of f41: a open array of const pointer to const pointer to signed int 
-      Declaration of f42: a open array of const pointer to const pointer to signed int 
-      Declaration of f43: a open array of open array of signed int 
-      Declaration of f44: a open array of open array of signed int 
-      Declaration of f45: a open array of open array of signed int 
-      Declaration of f46: a open array of open array of signed int 
-      Declaration of f47: a open array of open array of signed int 
-      Declaration of f48: a open array of open array of signed int 
-      Declaration of f49: a open array of open array of pointer to signed int 
-      Declaration of f50: a open array of open array of pointer to signed int 
-      Declaration of f51: a open array of open array of pointer to pointer to signed int 
-      Declaration of f52: a open array of open array of pointer to pointer to signed int 
-      Declaration of f53: a open array of open array of pointer to const pointer to signed int 
-      Declaration of f54: a open array of open array of pointer to const pointer to signed int 
-      Declaration of f55: a open array of open array of const pointer to const pointer to signed int 
-      Declaration of f56: a open array of open array of const pointer to const pointer to signed int 
-      Declaration of f57: a open array of open array of pointer to signed int 
-      Declaration of f58: a open array of open array of pointer to signed int 
-      Declaration of f59: a open array of open array of pointer to pointer to signed int 
-      Declaration of f60: a open array of open array of pointer to pointer to signed int 
-      Declaration of f61: a open array of open array of pointer to const pointer to signed int 
-      Declaration of f62: a open array of open array of pointer to const pointer to signed int 
-      Declaration of f63: a open array of open array of const pointer to const pointer to signed int 
-      Declaration of f64: a open array of open array of const pointer to const pointer to signed int 
-      Declaration of f65: a function
-          with parameters
-            signed int 
-          returning 
-            signed int 
-
-      Declaration of f66: a function
-          with parameters
-            signed int 
-          returning 
-            signed int 
-
-      Declaration of f67: a function
-          with parameters
-            signed int 
-          returning 
-            pointer to signed int 
-
-      Declaration of f68: a function
-          with parameters
-            signed int 
-          returning 
-            pointer to pointer to signed int 
-
-      Declaration of f69: a function
-          with parameters
-            signed int 
-          returning 
-            pointer to const pointer to signed int 
-
-      Declaration of f70: a function
-          with parameters
-            signed int 
-          returning 
-            const pointer to const pointer to signed int 
-
-      Declaration of f71: a function
-          with parameters
-            signed int 
-          returning 
-            pointer to signed int 
-
-      Declaration of f72: a function
-          with parameters
-            signed int 
-          returning 
-            pointer to pointer to signed int 
-
-      Declaration of f73: a function
-          with parameters
-            signed int 
-          returning 
-            pointer to const pointer to signed int 
-
-      Declaration of f74: a function
-          with parameters
-            signed int 
-          returning 
-            const pointer to const pointer to signed int 
-
-      Declaration of f75: a pointer to function
-          with parameters
-            signed int 
-          returning 
-            signed int 
-
-      Declaration of f76: a pointer to pointer to function
-          with parameters
-            signed int 
-          returning 
-            signed int 
-
-      Declaration of f77: a pointer to const pointer to function
-          with parameters
-            signed int 
-          returning 
-            signed int 
-
-      Declaration of f78: a const pointer to const pointer to function
-          with parameters
-            signed int 
-          returning 
-            signed int 
-
-      Declaration of f79: a pointer to function
-          with parameters
-            signed int 
-          returning 
-            pointer to function
-                returning 
-                  signed int 
-
-
-      Declaration of f80: a const pointer to function
-          with parameters
-            signed int 
-          returning 
-            pointer to function
-                returning 
-                  signed int 
-
-
-      Declaration of f81: a const pointer to function
-          with parameters
-            signed int 
-          returning 
-            const pointer to function
-                returning 
-                  signed int 
-
-
-
Index: c/Tests/SynTree/Expected/Initialization.tst
===================================================================
--- src/Tests/SynTree/Expected/Initialization.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,33 +1,0 @@
-x21: a pointer to signed int 
-x22: a signed int 
-x21: a pointer to signed int 
-x22: a signed int 
-y1: a open array of signed int 
-y2: a open array of signed int 
-struct __anonymous0
-    with members
-      w: a tuple of types
-          signed int 
-
-
-a: a instance of struct __anonymous0 
-struct __anonymous1
-    with members
-      a: a open array of signed int 
-      b: a signed int 
-
-w: a open array of instance of struct __anonymous1 
-struct __anonymous3
-    with members
-      f1: a signed int 
-      f2: a signed int 
-      f3: a signed int 
-      struct __anonymous2
-          with members
-            g1: a signed int 
-            g2: a signed int 
-            g3: a signed int 
-
-      f4: a open array of instance of struct __anonymous2 
-
-v7: a instance of struct __anonymous3 
Index: c/Tests/SynTree/Expected/Scope.tst
===================================================================
--- src/Tests/SynTree/Expected/Scope.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,115 +1,0 @@
-in default case, (shouldn't be here)
-in default case, (shouldn't be here)
-in default case, (shouldn't be here)
-x: a signed int 
-y: a typedef for double 
-t: a typedef for float 
-z: a instance of type y 
-struct __anonymous0
-    with members
-      a: a signed int 
-      b: a double 
-
-u: a type for instance of struct __anonymous0 
-f: a function
-    with parameters
-      y: a signed int 
-    returning 
-      signed int 
-
-q: a instance of type y 
-w: a function
-    with parameters
-      y: a instance of type y 
-      v: a instance of type u 
-    returning 
-      instance of type y 
-    with body 
-      Declaration of x: a type
-        with assertions
-          t: a function
-              with parameters
-                instance of type u 
-              returning 
-                instance of type x 
-
-
-      Declaration of u: a instance of type u 
-      Declaration of z: a instance of type x 
-
-p: a instance of type y 
-context has_u
-    with parameters
-      z: a type
-
-    with members
-      u: a function
-          with parameters
-            instance of type z 
-          returning 
-            instance of type z 
-
-
-q: a function
-    with parameters
-      the_t: a instance of type t 
-    with forall
-      t: a type
-        with assertions
-          instance of context has_u 
-            with parameters
-              instance of type t 
-
-
-    returning 
-      instance of type y 
-    with body 
-      Declaration of y: a instance of type t 
-
-f: a function
-    with parameters
-      p: a instance of type y 
-    returning 
-      instance of type t 
-    with body 
-      Declaration of y: a signed int 
-      Declaration of x: a typedef for char 
-              Declaration of y: a instance of type x 
-        Declaration of z: a typedef for instance of type x 
-                  Declaration of x: a instance of type z 
-          Declaration of y: a typedef for instance of type z 
-          Declaration of z: a instance of type y 
-
-        Declaration of x: a instance of type z 
-
-      Declaration of q: a instance of type x 
-
-g: a function
-    with parameters
-      void 
-    returning 
-      instance of type t 
-    with body 
-      Declaration of x: a typedef for char 
-      Declaration of z: a instance of type x 
-
-q: a function
-    returning 
-      instance of type y 
-    with parameter names
-      i
-    with parameter declarations
-      i: a signed int 
-    with body 
-      
-        Switch on condition: 
-            Name: i
-
-            Case: 
-            .... and 1 conditions 
-                Name: 0
-
-            Case: 
-            .... and 0 conditions 
-
-
Index: c/Tests/SynTree/Expected/StructMember.tst
===================================================================
--- src/Tests/SynTree/Expected/StructMember.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,69 +1,0 @@
-T: a typedef for signed int 
-struct S
-    with members
-      m1: a signed int 
-      m2: a signed int 
-      signed int 
-      signed int 
-      signed int 
-      m3: a signed int 
-      m4: a signed int 
-      m5: a signed int 
-      m6: a signed int 
-      m7: a pointer to signed int 
-      m8: a pointer to signed int 
-      m9: a pointer to signed int 
-      m10: a pointer to function
-          returning 
-            signed int 
-
-      m11: a pointer to function
-          with parameters
-            signed int 
-          returning 
-            pointer to signed int 
-
-      T: a instance of type T 
-      T: a instance of type T 
-      m12: a pointer to signed int 
-      m13: a pointer to signed int 
-      m14: a pointer to function
-          with parameters
-            signed int 
-          returning 
-            pointer to signed int 
-
-      signed int 
-      signed int 
-      signed int 
-      signed int 
-      pointer to signed int 
-      signed int 
-      signed int 
-      pointer to signed int 
-      pointer to signed int 
-      pointer to signed int 
-      pointer to signed int 
-      pointer to signed int 
-      pointer to signed int 
-      pointer to function
-          returning 
-            signed int 
-
-      pointer to pointer to function
-          with parameters
-            signed int 
-          returning 
-            signed int 
-
-      instance of type T 
-
-s: a instance of struct S 
-union U
-    with members
-      m1: a open array of signed int 
-      m2: a open array of signed int 
-      m3: a pointer to signed int 
-      m4: a pointer to signed int 
-
-u: a instance of union U 
Index: c/Tests/SynTree/Expected/Tuple.tst
===================================================================
--- src/Tests/SynTree/Expected/Tuple.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,104 +1,0 @@
-f: a function
-    with parameters
-      signed int 
-      signed int 
-    returning 
-      signed int 
-
-g: a function
-    with parameters
-      signed int 
-      signed int 
-      signed int 
-    returning 
-      signed int 
-
-h: a static function
-    with parameters
-      a: a signed int 
-      b: a signed int 
-      c: a pointer to signed int 
-      d: a open array of char 
-    returning 
-      signed int 
-      signed int 
-      signed int 
-      signed int 
-
-struct inner
-    with members
-      f2: a signed int 
-      f3: a signed int 
-
-struct outer
-    with members
-      f1: a signed int 
-      i: a instance of struct inner 
-      f4: a double 
-
-s: a instance of struct outer 
-sp: a pointer to instance of struct outer 
-t1: a const volatile tuple of types
-    signed int 
-    signed int 
-
-t2: a static const tuple of types
-    signed int 
-    const signed int 
-
-t3: a static const tuple of types
-    signed int 
-    const signed int 
-
-printf: a function
-    with parameters
-      fmt: a pointer to char 
-      and a variable number of other arguments
-    returning 
-      rc: a signed int 
-
-printf: a function
-    with parameters
-      fmt: a pointer to char 
-      and a variable number of other arguments
-    returning 
-      signed int 
-
-f1: a function
-    with parameters
-      w: a signed int 
-    returning 
-      x: a short signed int 
-      y: a unsigned int 
-    with body 
-
-g1: a function
-    returning 
-      r: a tuple of types
-          signed int 
-          char 
-          long signed int 
-          signed int 
-
-    with body 
-      Declaration of x: a short signed int 
-      Declaration of p: a short signed int 
-      Declaration of y: a unsigned int 
-      Declaration of z: a tuple of types
-          signed int 
-          signed int 
-
-
-main: a function
-    with parameters
-      argc: a signed int 
-      argv: a pointer to pointer to char 
-    returning 
-      rc: a signed int 
-    with body 
-      Declaration of a: a signed int 
-      Declaration of b: a signed int 
-      Declaration of c: a signed int 
-      Declaration of d: a signed int 
-      Declaration of t: a instance of struct outer 
-
Index: c/Tests/SynTree/Expected/TypeGenerator.tst
===================================================================
--- src/Tests/SynTree/Expected/TypeGenerator.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,116 +1,0 @@
-context addable
-    with parameters
-      T: a type
-
-    with members
-      ?+?: a function
-          with parameters
-            instance of type T 
-            instance of type T 
-          returning 
-            instance of type T 
-
-
-struct __anonymous0
-    with members
-      data: a instance of type T 
-      next: a pointer to instance of type List 
-        with parameters
-          instance of type T 
-
-
-List: a type for pointer to instance of struct __anonymous0 
-  with parameters
-    T: a type
-      with assertions
-        instance of context addable 
-          with parameters
-            instance of type T 
-
-
-
-  with assertions
-    instance of context addable 
-      with parameters
-        instance of type T 
-
-
-ListOfIntegers: a typedef for instance of type List 
-  with parameters
-    signed int 
-
-li: a instance of type ListOfIntegers 
-f: a function
-    with parameters
-      g: a pointer to function
-          with parameters
-            signed int 
-          returning 
-            instance of type List 
-              with parameters
-                signed int 
-
-
-    returning 
-      signed int 
-
-h: a function
-    with parameters
-      p: a pointer to instance of type List 
-        with parameters
-          signed int 
-
-    returning 
-      signed int 
-
-struct node
-    with parameters
-      T: a type
-        with assertions
-          instance of context addable 
-            with parameters
-              instance of type T 
-
-
-
-    with members
-      data: a instance of type T 
-      next: a pointer to instance of struct node 
-        with parameters
-          instance of type T 
-
-
-List: a type for pointer to instance of struct node 
-  with parameters
-    instance of type T 
-
-  with parameters
-    T: a type
-
-my_list: a instance of type List 
-  with parameters
-    signed int 
-
-Complex: a type
-  with assertions
-    instance of context addable 
-      with parameters
-        instance of type Complex 
-
-
-main: a function
-    returning 
-      signed int 
-    with body 
-      
-        Expression Statement:
-          Cast of:
-            Name: my_list
-
-          to:
-            instance of struct node 
-              with parameters
-                signed int 
-
-
-
Index: c/Tests/SynTree/Expected/Typedef.tst
===================================================================
--- src/Tests/SynTree/Expected/Typedef.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,85 +1,0 @@
-T: a typedef for signed int 
-f: a function
-    with parameters
-      void 
-    returning 
-      void 
-    with body 
-      Declaration of T: a function
-          with parameters
-            instance of type T 
-          returning 
-            signed int 
-
-
-struct __anonymous0
-    with members
-      T: a instance of type T 
-
-fred: a instance of struct __anonymous0 
-a: a typedef for pointer to function
-    with parameters
-      signed int 
-      char 
-    returning 
-      signed int 
-
-b: a instance of type a 
-g: a function
-    with parameters
-      void 
-    returning 
-      signed int 
-    with body 
-      Declaration of a: a double 
-
-c: a instance of type a 
-main: a function
-    returning 
-      signed int 
-    with body 
-
-arrayOf10Pointers: a typedef for open array of pointer to signed int 
-x: a instance of type arrayOf10Pointers 
-constantPointer: a typedef for const pointer to signed int 
-funcPtr: a typedef for pointer to function
-    with parameters
-      open array of signed int 
-    returning 
-      signed int 
-
-funcProto: a typedef for function
-    with parameters
-      open array of signed int 
-    returning 
-      signed int 
-
-tupleType: a typedef for tuple of types
-    signed int 
-    signed int 
-
-tupleTypePtr: a typedef for pointer to tuple of types
-    signed int 
-    signed int 
-
-a: a typedef for pointer to signed int 
-b: a typedef for pointer to signed int 
-f: a typedef for function
-    with parameters
-      pointer to signed int 
-    returning 
-      signed int 
-
-g: a typedef for function
-    with parameters
-      pointer to signed int 
-    returning 
-      signed int 
-
-t: a typedef for tuple of types
-    pointer to static open array of signed int 
-
-f: a typedef for function
-    returning 
-      x: a pointer to static open array of signed int 
-
Index: c/Tests/SynTree/Expected/TypedefDeclarator.tst
===================================================================
--- src/Tests/SynTree/Expected/TypedefDeclarator.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,270 +1,0 @@
-f0: a typedef for signed int 
-f1: a typedef for signed int 
-f2: a typedef for signed int 
-f3: a typedef for signed int 
-f4: a typedef for signed int 
-f5: a typedef for signed int 
-f6: a typedef for signed int 
-f7: a typedef for signed int 
-f8: a typedef for signed int 
-f9: a typedef for signed int 
-f10: a typedef for signed int 
-f11: a typedef for signed int 
-f12: a typedef for signed int 
-f13: a typedef for signed int 
-f14: a typedef for signed int 
-f15: a typedef for signed int 
-f16: a typedef for signed int 
-f17: a typedef for signed int 
-f18: a typedef for signed int 
-f19: a typedef for signed int 
-f20: a typedef for signed int 
-f21: a typedef for signed int 
-f22: a typedef for signed int 
-f23: a typedef for signed int 
-f24: a typedef for signed int 
-f25: a typedef for signed int 
-f26: a typedef for signed int 
-f27: a typedef for signed int 
-f28: a typedef for signed int 
-f29: a typedef for signed int 
-f30: a typedef for signed int 
-f31: a typedef for signed int 
-f32: a typedef for signed int 
-f33: a typedef for signed int 
-f34: a typedef for signed int 
-f35: a typedef for signed int 
-f36: a typedef for signed int 
-f37: a typedef for signed int 
-f38: a typedef for signed int 
-f39: a typedef for signed int 
-f40: a typedef for signed int 
-f41: a typedef for signed int 
-f42: a typedef for signed int 
-f43: a typedef for signed int 
-f44: a typedef for signed int 
-f45: a typedef for signed int 
-f46: a typedef for signed int 
-f47: a typedef for signed int 
-f48: a typedef for signed int 
-f49: a typedef for signed int 
-f50: a typedef for signed int 
-f51: a typedef for signed int 
-f52: a typedef for signed int 
-f53: a typedef for signed int 
-f54: a typedef for signed int 
-f55: a typedef for signed int 
-f56: a typedef for signed int 
-f57: a typedef for signed int 
-f58: a typedef for signed int 
-f59: a typedef for signed int 
-f60: a typedef for signed int 
-f61: a typedef for signed int 
-f62: a typedef for signed int 
-f63: a typedef for signed int 
-f64: a typedef for signed int 
-f65: a typedef for signed int 
-f66: a typedef for signed int 
-f67: a typedef for signed int 
-f68: a typedef for signed int 
-f69: a typedef for signed int 
-f70: a typedef for signed int 
-f71: a typedef for signed int 
-f72: a typedef for signed int 
-f73: a typedef for signed int 
-f74: a typedef for signed int 
-f75: a typedef for signed int 
-f76: a typedef for signed int 
-f77: a typedef for signed int 
-f78: a typedef for signed int 
-f79: a typedef for signed int 
-f80: a typedef for signed int 
-f81: a typedef for signed int 
-f82: a typedef for signed int 
-f83: a typedef for signed int 
-f84: a typedef for signed int 
-f85: a typedef for signed int 
-f86: a typedef for signed int 
-f87: a typedef for signed int 
-f88: a typedef for signed int 
-f89: a typedef for signed int 
-main: a function
-    returning 
-      signed int 
-    with body 
-      Declaration of f1: a signed int 
-      Declaration of f2: a signed int 
-      Declaration of f3: a pointer to signed int 
-      Declaration of f4: a pointer to pointer to signed int 
-      Declaration of f5: a pointer to const pointer to signed int 
-      Declaration of f6: a const pointer to const pointer to signed int 
-      Declaration of f7: a pointer to signed int 
-      Declaration of f8: a pointer to pointer to signed int 
-      Declaration of f9: a pointer to const pointer to signed int 
-      Declaration of f10: a const pointer to const pointer to signed int 
-      Declaration of f11: a pointer to signed int 
-      Declaration of f12: a pointer to pointer to signed int 
-      Declaration of f13: a pointer to const pointer to signed int 
-      Declaration of f14: a const pointer to const pointer to signed int 
-      Declaration of f15: a open array of signed int 
-      Declaration of f16: a open array of signed int 
-      Declaration of f17: a open array of signed int 
-      Declaration of f18: a open array of signed int 
-      Declaration of f19: a open array of pointer to signed int 
-      Declaration of f20: a open array of pointer to signed int 
-      Declaration of f21: a open array of pointer to pointer to signed int 
-      Declaration of f22: a open array of pointer to pointer to signed int 
-      Declaration of f23: a open array of pointer to const pointer to signed int 
-      Declaration of f24: a open array of pointer to const pointer to signed int 
-      Declaration of f25: a open array of const pointer to const pointer to signed int 
-      Declaration of f26: a open array of const pointer to const pointer to signed int 
-      Declaration of f27: a open array of pointer to signed int 
-      Declaration of f28: a open array of pointer to signed int 
-      Declaration of f29: a open array of pointer to pointer to signed int 
-      Declaration of f30: a open array of pointer to pointer to signed int 
-      Declaration of f31: a open array of pointer to const pointer to signed int 
-      Declaration of f32: a open array of pointer to const pointer to signed int 
-      Declaration of f33: a open array of const pointer to const pointer to signed int 
-      Declaration of f34: a open array of const pointer to const pointer to signed int 
-      Declaration of f35: a open array of pointer to signed int 
-      Declaration of f36: a open array of pointer to signed int 
-      Declaration of f37: a open array of pointer to pointer to signed int 
-      Declaration of f38: a open array of pointer to pointer to signed int 
-      Declaration of f39: a open array of pointer to const pointer to signed int 
-      Declaration of f40: a open array of pointer to const pointer to signed int 
-      Declaration of f41: a open array of const pointer to const pointer to signed int 
-      Declaration of f42: a open array of const pointer to const pointer to signed int 
-      Declaration of f43: a open array of open array of signed int 
-      Declaration of f44: a open array of open array of signed int 
-      Declaration of f45: a open array of open array of signed int 
-      Declaration of f46: a open array of open array of signed int 
-      Declaration of f47: a open array of open array of signed int 
-      Declaration of f48: a open array of open array of signed int 
-      Declaration of f49: a open array of open array of pointer to signed int 
-      Declaration of f50: a open array of open array of pointer to signed int 
-      Declaration of f51: a open array of open array of pointer to pointer to signed int 
-      Declaration of f52: a open array of open array of pointer to pointer to signed int 
-      Declaration of f53: a open array of open array of pointer to const pointer to signed int 
-      Declaration of f54: a open array of open array of pointer to const pointer to signed int 
-      Declaration of f55: a open array of open array of const pointer to const pointer to signed int 
-      Declaration of f56: a open array of open array of const pointer to const pointer to signed int 
-      Declaration of f57: a open array of open array of pointer to signed int 
-      Declaration of f58: a open array of open array of pointer to signed int 
-      Declaration of f59: a open array of open array of pointer to pointer to signed int 
-      Declaration of f60: a open array of open array of pointer to pointer to signed int 
-      Declaration of f61: a open array of open array of pointer to const pointer to signed int 
-      Declaration of f62: a open array of open array of pointer to const pointer to signed int 
-      Declaration of f63: a open array of open array of const pointer to const pointer to signed int 
-      Declaration of f64: a open array of open array of const pointer to const pointer to signed int 
-      Declaration of f65: a function
-          with parameters
-            signed int 
-          returning 
-            signed int 
-
-      Declaration of f66: a function
-          with parameters
-            signed int 
-          returning 
-            signed int 
-
-      Declaration of f67: a function
-          with parameters
-            signed int 
-          returning 
-            pointer to signed int 
-
-      Declaration of f68: a function
-          with parameters
-            signed int 
-          returning 
-            pointer to pointer to signed int 
-
-      Declaration of f69: a function
-          with parameters
-            signed int 
-          returning 
-            pointer to const pointer to signed int 
-
-      Declaration of f70: a function
-          with parameters
-            signed int 
-          returning 
-            const pointer to const pointer to signed int 
-
-      Declaration of f71: a function
-          with parameters
-            signed int 
-          returning 
-            pointer to signed int 
-
-      Declaration of f72: a function
-          with parameters
-            signed int 
-          returning 
-            pointer to pointer to signed int 
-
-      Declaration of f73: a function
-          with parameters
-            signed int 
-          returning 
-            pointer to const pointer to signed int 
-
-      Declaration of f74: a function
-          with parameters
-            signed int 
-          returning 
-            const pointer to const pointer to signed int 
-
-      Declaration of f75: a pointer to function
-          with parameters
-            signed int 
-          returning 
-            signed int 
-
-      Declaration of f76: a pointer to pointer to function
-          with parameters
-            signed int 
-          returning 
-            signed int 
-
-      Declaration of f77: a pointer to const pointer to function
-          with parameters
-            signed int 
-          returning 
-            signed int 
-
-      Declaration of f78: a const pointer to const pointer to function
-          with parameters
-            signed int 
-          returning 
-            signed int 
-
-      Declaration of f79: a pointer to function
-          with parameters
-            signed int 
-          returning 
-            pointer to function
-                returning 
-                  signed int 
-
-
-      Declaration of f80: a const pointer to function
-          with parameters
-            signed int 
-          returning 
-            pointer to function
-                returning 
-                  signed int 
-
-
-      Declaration of f81: a const pointer to function
-          with parameters
-            signed int 
-          returning 
-            const pointer to function
-                returning 
-                  signed int 
-
-
-
Index: c/Tests/SynTree/Expected/TypedefParamDeclarator.tst
===================================================================
--- src/Tests/SynTree/Expected/TypedefParamDeclarator.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,378 +1,0 @@
-f0: a typedef for signed int 
-f1: a typedef for signed int 
-f2: a typedef for signed int 
-f3: a typedef for signed int 
-f4: a typedef for signed int 
-f5: a typedef for signed int 
-f6: a typedef for signed int 
-f7: a typedef for signed int 
-f8: a typedef for signed int 
-f9: a typedef for signed int 
-f10: a typedef for signed int 
-f11: a typedef for signed int 
-f12: a typedef for signed int 
-f13: a typedef for signed int 
-f14: a typedef for signed int 
-f15: a typedef for signed int 
-f16: a typedef for signed int 
-f17: a typedef for signed int 
-f18: a typedef for signed int 
-f19: a typedef for signed int 
-f20: a typedef for signed int 
-f21: a typedef for signed int 
-f22: a typedef for signed int 
-f23: a typedef for signed int 
-f24: a typedef for signed int 
-f25: a typedef for signed int 
-f26: a typedef for signed int 
-f27: a typedef for signed int 
-f28: a typedef for signed int 
-f29: a typedef for signed int 
-f30: a typedef for signed int 
-f31: a typedef for signed int 
-f32: a typedef for signed int 
-f33: a typedef for signed int 
-f34: a typedef for signed int 
-f35: a typedef for signed int 
-f36: a typedef for signed int 
-f37: a typedef for signed int 
-f38: a typedef for signed int 
-f39: a typedef for signed int 
-f40: a typedef for signed int 
-f41: a typedef for signed int 
-f42: a typedef for signed int 
-f43: a typedef for signed int 
-f44: a typedef for signed int 
-f45: a typedef for signed int 
-f46: a typedef for signed int 
-f47: a typedef for signed int 
-f48: a typedef for signed int 
-f49: a typedef for signed int 
-f50: a typedef for signed int 
-f51: a typedef for signed int 
-f52: a typedef for signed int 
-f53: a typedef for signed int 
-f54: a typedef for signed int 
-f55: a typedef for signed int 
-f56: a typedef for signed int 
-f57: a typedef for signed int 
-f58: a typedef for signed int 
-f59: a typedef for signed int 
-f60: a typedef for signed int 
-f61: a typedef for signed int 
-f62: a typedef for signed int 
-f63: a typedef for signed int 
-f64: a typedef for signed int 
-f65: a typedef for signed int 
-f66: a typedef for signed int 
-f67: a typedef for signed int 
-f68: a typedef for signed int 
-f69: a typedef for signed int 
-f70: a typedef for signed int 
-f71: a typedef for signed int 
-f72: a typedef for signed int 
-f73: a typedef for signed int 
-f74: a typedef for signed int 
-f75: a typedef for signed int 
-f76: a typedef for signed int 
-f77: a typedef for signed int 
-f78: a typedef for signed int 
-f79: a typedef for signed int 
-f80: a typedef for signed int 
-f81: a typedef for signed int 
-f82: a typedef for signed int 
-f83: a typedef for signed int 
-f84: a typedef for signed int 
-f85: a typedef for signed int 
-f86: a typedef for signed int 
-f87: a typedef for signed int 
-f88: a typedef for signed int 
-f89: a typedef for signed int 
-f90: a typedef for signed int 
-f91: a typedef for signed int 
-f92: a typedef for signed int 
-f93: a typedef for signed int 
-f94: a typedef for signed int 
-f95: a typedef for signed int 
-f96: a typedef for signed int 
-f97: a typedef for signed int 
-f98: a typedef for signed int 
-f99: a typedef for signed int 
-f100: a typedef for signed int 
-f101: a typedef for signed int 
-f102: a typedef for signed int 
-f103: a typedef for signed int 
-f104: a typedef for signed int 
-f105: a typedef for signed int 
-f106: a typedef for signed int 
-f107: a typedef for signed int 
-f108: a typedef for signed int 
-f109: a typedef for signed int 
-f110: a typedef for signed int 
-f111: a typedef for signed int 
-f112: a typedef for signed int 
-f113: a typedef for signed int 
-f114: a typedef for signed int 
-f115: a typedef for signed int 
-f116: a typedef for signed int 
-f117: a typedef for signed int 
-f118: a typedef for signed int 
-f119: a typedef for signed int 
-fred: a function
-    with parameters
-      f1: a signed int 
-      f3: a pointer to signed int 
-      f4: a pointer to pointer to signed int 
-      f5: a pointer to const pointer to signed int 
-      f6: a const pointer to const pointer to signed int 
-      f11: a pointer to signed int 
-      f12: a pointer to pointer to signed int 
-      f13: a pointer to const pointer to signed int 
-      f14: a const pointer to const pointer to signed int 
-      f15: a open array of signed int 
-      f16: a open array of signed int 
-      f19: a open array of pointer to signed int 
-      f20: a open array of pointer to signed int 
-      f21: a open array of pointer to pointer to signed int 
-      f22: a open array of pointer to pointer to signed int 
-      f23: a open array of pointer to const pointer to signed int 
-      f24: a open array of pointer to const pointer to signed int 
-      f25: a open array of const pointer to const pointer to signed int 
-      f26: a open array of const pointer to const pointer to signed int 
-      f35: a open array of pointer to signed int 
-      f36: a open array of pointer to signed int 
-      f37: a open array of pointer to pointer to signed int 
-      f38: a open array of pointer to pointer to signed int 
-      f39: a open array of pointer to const pointer to signed int 
-      f40: a open array of pointer to const pointer to signed int 
-      f41: a open array of const pointer to const pointer to signed int 
-      f42: a open array of const pointer to const pointer to signed int 
-      f43: a open array of open array of signed int 
-      f44: a open array of open array of signed int 
-      f49: a open array of open array of pointer to signed int 
-      f50: a open array of open array of pointer to signed int 
-      f51: a open array of open array of pointer to pointer to signed int 
-      f52: a open array of open array of pointer to pointer to signed int 
-      f53: a open array of open array of pointer to const pointer to signed int 
-      f54: a open array of open array of pointer to const pointer to signed int 
-      f55: a open array of open array of const pointer to const pointer to signed int 
-      f56: a open array of open array of const pointer to const pointer to signed int 
-      f57: a open array of open array of pointer to signed int 
-      f58: a open array of open array of pointer to signed int 
-      f59: a open array of open array of pointer to pointer to signed int 
-      f60: a open array of open array of pointer to pointer to signed int 
-      f61: a open array of open array of pointer to const pointer to signed int 
-      f62: a open array of open array of pointer to const pointer to signed int 
-      f63: a open array of open array of const pointer to const pointer to signed int 
-      f64: a open array of open array of const pointer to const pointer to signed int 
-      f65: a function
-          with parameters
-            signed int 
-          returning 
-            signed int 
-
-      f67: a function
-          with parameters
-            signed int 
-          returning 
-            pointer to signed int 
-
-      f68: a function
-          with parameters
-            signed int 
-          returning 
-            pointer to pointer to signed int 
-
-      f69: a function
-          with parameters
-            signed int 
-          returning 
-            pointer to const pointer to signed int 
-
-      f70: a function
-          with parameters
-            signed int 
-          returning 
-            const pointer to const pointer to signed int 
-
-      f75: a pointer to function
-          with parameters
-            signed int 
-          returning 
-            signed int 
-
-      f76: a pointer to pointer to function
-          with parameters
-            signed int 
-          returning 
-            signed int 
-
-      f77: a pointer to const pointer to function
-          with parameters
-            signed int 
-          returning 
-            signed int 
-
-      f78: a const pointer to const pointer to function
-          with parameters
-            signed int 
-          returning 
-            signed int 
-
-      f79: a pointer to function
-          with parameters
-            signed int 
-          returning 
-            pointer to function
-                returning 
-                  signed int 
-
-
-      f80: a const pointer to function
-          with parameters
-            signed int 
-          returning 
-            pointer to function
-                returning 
-                  signed int 
-
-
-      f81: a const pointer to function
-          with parameters
-            signed int 
-          returning 
-            const pointer to function
-                returning 
-                  signed int 
-
-
-      f82: a const variable length array of signed int 
-      f83: a const open array of signed int 
-      f84: a static open array of signed int 
-      f85: a const static open array of signed int 
-      function
-          with parameters
-            const variable length array of instance of type f86 
-          returning 
-            signed int 
-
-      function
-          with parameters
-            const open array of instance of type f87 
-          returning 
-            signed int 
-
-      function
-          with parameters
-            static open array of instance of type f88 
-          returning 
-            signed int 
-
-      function
-          with parameters
-            const static open array of instance of type f89 
-          returning 
-            signed int 
-
-      f90: a const variable length array of pointer to signed int 
-      f91: a const open array of pointer to signed int 
-      f92: a static open array of pointer to pointer to signed int 
-      f93: a const static open array of pointer to const pointer to signed int 
-      f94: a const static open array of const pointer to const pointer to signed int 
-      function
-          with parameters
-            const variable length array of instance of type f95 
-          returning 
-            pointer to signed int 
-
-      function
-          with parameters
-            const open array of instance of type f96 
-          returning 
-            pointer to signed int 
-
-      function
-          with parameters
-            static open array of instance of type f97 
-          returning 
-            pointer to pointer to signed int 
-
-      function
-          with parameters
-            const static open array of instance of type f98 
-          returning 
-            pointer to const pointer to signed int 
-
-      function
-          with parameters
-            const static open array of instance of type f99 
-          returning 
-            const pointer to const pointer to signed int 
-
-      f100: a const variable length array of open array of signed int 
-      f101: a const open array of open array of signed int 
-      f102: a static open array of open array of signed int 
-      f103: a const static open array of open array of signed int 
-      function
-          with parameters
-            const variable length array of open array of instance of type f104 
-          returning 
-            signed int 
-
-      function
-          with parameters
-            const open array of open array of instance of type f105 
-          returning 
-            signed int 
-
-      function
-          with parameters
-            static open array of open array of instance of type f106 
-          returning 
-            signed int 
-
-      function
-          with parameters
-            const static open array of open array of instance of type f107 
-          returning 
-            signed int 
-
-      f108: a const variable length array of open array of pointer to signed int 
-      f109: a const open array of open array of pointer to signed int 
-      f110: a static open array of open array of pointer to pointer to signed int 
-      f111: a const static open array of open array of pointer to const pointer to signed int 
-      f112: a const static open array of open array of const pointer to const pointer to signed int 
-      function
-          with parameters
-            const variable length array of open array of instance of type f113 
-          returning 
-            pointer to signed int 
-
-      function
-          with parameters
-            const open array of open array of instance of type f114 
-          returning 
-            pointer to signed int 
-
-      function
-          with parameters
-            static open array of open array of instance of type f115 
-          returning 
-            pointer to pointer to signed int 
-
-      function
-          with parameters
-            const static open array of open array of instance of type f116 
-          returning 
-            pointer to const pointer to signed int 
-
-      function
-          with parameters
-            const static open array of open array of instance of type f117 
-          returning 
-            const pointer to const pointer to signed int 
-
-    returning 
-      signed int 
-    with body 
-
Index: c/Tests/SynTree/Expected/VariableDeclarator.tst
===================================================================
--- src/Tests/SynTree/Expected/VariableDeclarator.tst	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,184 +1,0 @@
-f1: a signed int 
-f2: a signed int 
-f3: a pointer to signed int 
-f4: a pointer to pointer to signed int 
-f5: a pointer to const pointer to signed int 
-f6: a const pointer to const pointer to signed int 
-f7: a pointer to signed int 
-f8: a pointer to pointer to signed int 
-f9: a pointer to const pointer to signed int 
-f10: a const pointer to const pointer to signed int 
-f11: a pointer to signed int 
-f12: a pointer to pointer to signed int 
-f13: a pointer to const pointer to signed int 
-f14: a const pointer to const pointer to signed int 
-f15: a open array of signed int 
-f16: a open array of signed int 
-f17: a open array of signed int 
-f18: a open array of signed int 
-f19: a open array of pointer to signed int 
-f20: a open array of pointer to signed int 
-f21: a open array of pointer to pointer to signed int 
-f22: a open array of pointer to pointer to signed int 
-f23: a open array of pointer to const pointer to signed int 
-f24: a open array of pointer to const pointer to signed int 
-f25: a open array of const pointer to const pointer to signed int 
-f26: a open array of const pointer to const pointer to signed int 
-f27: a open array of pointer to signed int 
-f28: a open array of pointer to signed int 
-f29: a open array of pointer to pointer to signed int 
-f30: a open array of pointer to pointer to signed int 
-f31: a open array of pointer to const pointer to signed int 
-f32: a open array of pointer to const pointer to signed int 
-f33: a open array of const pointer to const pointer to signed int 
-f34: a open array of const pointer to const pointer to signed int 
-f35: a open array of pointer to signed int 
-f36: a open array of pointer to signed int 
-f37: a open array of pointer to pointer to signed int 
-f38: a open array of pointer to pointer to signed int 
-f39: a open array of pointer to const pointer to signed int 
-f40: a open array of pointer to const pointer to signed int 
-f41: a open array of const pointer to const pointer to signed int 
-f42: a open array of const pointer to const pointer to signed int 
-f43: a open array of open array of signed int 
-f44: a open array of open array of signed int 
-f45: a open array of open array of signed int 
-f46: a open array of open array of signed int 
-f47: a open array of open array of signed int 
-f48: a open array of open array of signed int 
-f49: a open array of open array of pointer to signed int 
-f50: a open array of open array of pointer to signed int 
-f51: a open array of open array of pointer to pointer to signed int 
-f52: a open array of open array of pointer to pointer to signed int 
-f53: a open array of open array of pointer to const pointer to signed int 
-f54: a open array of open array of pointer to const pointer to signed int 
-f55: a open array of open array of const pointer to const pointer to signed int 
-f56: a open array of open array of const pointer to const pointer to signed int 
-f57: a open array of open array of pointer to signed int 
-f58: a open array of open array of pointer to signed int 
-f59: a open array of open array of pointer to pointer to signed int 
-f60: a open array of open array of pointer to pointer to signed int 
-f61: a open array of open array of pointer to const pointer to signed int 
-f62: a open array of open array of pointer to const pointer to signed int 
-f63: a open array of open array of const pointer to const pointer to signed int 
-f64: a open array of open array of const pointer to const pointer to signed int 
-f65: a function
-    with parameters
-      signed int 
-    returning 
-      signed int 
-
-f66: a function
-    with parameters
-      signed int 
-    returning 
-      signed int 
-
-f67: a function
-    with parameters
-      signed int 
-    returning 
-      pointer to signed int 
-
-f68: a function
-    with parameters
-      signed int 
-    returning 
-      pointer to pointer to signed int 
-
-f69: a function
-    with parameters
-      signed int 
-    returning 
-      pointer to const pointer to signed int 
-
-f70: a function
-    with parameters
-      signed int 
-    returning 
-      const pointer to const pointer to signed int 
-
-f71: a function
-    with parameters
-      signed int 
-    returning 
-      pointer to signed int 
-
-f72: a function
-    with parameters
-      signed int 
-    returning 
-      pointer to pointer to signed int 
-
-f73: a function
-    with parameters
-      signed int 
-    returning 
-      pointer to const pointer to signed int 
-
-f74: a function
-    with parameters
-      signed int 
-    returning 
-      const pointer to const pointer to signed int 
-
-f75: a pointer to function
-    with parameters
-      signed int 
-    returning 
-      signed int 
-
-f76: a pointer to pointer to function
-    with parameters
-      signed int 
-    returning 
-      signed int 
-
-f77: a pointer to const pointer to function
-    with parameters
-      signed int 
-    returning 
-      signed int 
-
-f78: a const pointer to const pointer to function
-    with parameters
-      signed int 
-    returning 
-      signed int 
-
-f79: a pointer to function
-    with parameters
-      signed int 
-    returning 
-      pointer to function
-          returning 
-            signed int 
-
-
-f80: a const pointer to function
-    with parameters
-      signed int 
-    returning 
-      pointer to function
-          returning 
-            signed int 
-
-
-f81: a const pointer to function
-    with parameters
-      signed int 
-    returning 
-      const pointer to function
-          returning 
-            signed int 
-
-
-z: a pointer to open array of double 
-w: a open array of pointer to char 
-v3: a pointer to open array of pointer to open array of pointer to function
-    with parameters
-      pointer to open array of pointer to open array of signed int 
-      pointer to open array of pointer to open array of signed int 
-    returning 
-      pointer to open array of pointer to open array of signed int 
-
Index: c/Tests/SynTree/Forall.c
===================================================================
--- src/Tests/SynTree/Forall.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,51 +1,0 @@
-typedef forall ( type T ) int (*f)( int );
-
-forall( type T )
-    void swap( T left, T right ) {
-	T temp = left;
-	left = right;
-	right = temp;
-    }
-
-context sumable( type T ) {
-    const T 0;
-    T ?+?(T, T);
-    T ?++(T);
-    [T] ?+=?(T,T);
-};
-
-type T1 | { const T1 0; T1 ?+?(T1, T1); T1 ?++(T1); [T1] ?+=?(T1,T1); },
-     T2(type P1, type P2 ),
-     T3 | sumable(T3);
-
-type T2(type P1, type P2) | sumable(T2(P1,P2)) = struct { P1 i; P2 j; };
-
-T2(int, int) w1;
-typedef T2(int, int) w2;
-w2 g2;
-type w3 = T2(int, int);
-w3 g3;
-
-forall( type T | sumable( T ) )
-    T sum( int n, T a[] ) {
-	T total = 0;
-	int i;
-	for ( i = 0; i < n; i += 1 )
-	    total = total + a[i];
-	return total;
-    }
-
-forall( type T | { const T 0; T ?+?(T, T); T ?++(T); [T] ?+=?(T,T); } )
-    T twice( T t ) {
-	return t + t;
-    }
-
-int main() {
-    int x = 1, y = 2, a[10];
-    float f;
-
-    swap( x, y );
-    twice( x, y );
-    f = min( 4.0, 3.0 );
-    sum( 10, a );
-}
Index: c/Tests/SynTree/Functions.c
===================================================================
--- src/Tests/SynTree/Functions.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,163 +1,0 @@
-// ANSI function definitions
-
-void h(void) {}
-
-int f (
-    int (void),
-    int (int),
-    int ((void)),
-    int ((int)),
-    void g(void)
-  ) {
-    (*g)();
-    g();
-    g = h;
-}
-
-int f1() {}
-int (f2()) {}
-int (*f3())() {}
-int *((f4())) {}
-int ((*f5()))() {}
-int *f6() {}
-int *(f7)() {}
-int **f8() {}
-int * const *(f9)() {}
-int (*f10())[] {}
-int (*f11())[][3] {}
-int ((*f12())[])[3] {}
-
-// "implicit int" type specifier (not ANSI)
-
-fII1( int i ) {}
-const fII2( int i ) {}
-extern fII3( int i ) {}
-extern const fII4( int i ) {}
-
-*fII5() {}
-const *fII6() {}
-const long *fII7() {}
-static const long *fII8() {}
-const static long *fII9() {}
-
-// K&R function definitions
-
-fO1( i ) int i; {}
-int fO2( i ) int i; {}
-const fO3( i ) int i; {}
-extern fO4( i ) int i; {}
-extern const fO5( i ) int i; {}
-
-// Cforall extensions
-
-[] f( );
-[int] f( );
-[] f(int);
-[int] f(int);
-[] f( ) {}
-[int] f( ) {}
-[] f(int) {}
-[int] f(int) {}
-
-[int x] f( );
-[] f(int x);
-[int x] f(int x);
-[int x] f( ) {}
-[] f(int x) {}
-[int x] f(int x) {}
-
-[int, int x] f( );
-[] f(int, int x);
-[int, int x] f(int, int x);
-[int, int x] f( ) {}
-[] f(int, int x) {}
-[int, int x] f(int, int x) {}
-
-[int, int x, int] f( );
-[] f(int, int x, int);
-[int, int x, int] f(int, int x, int);
-[int, int x, int] f( ) {}
-[] f(int, int x, int) {}
-[int, int x, int] f(int, int x, int) {}
-
-[int, int x, * int y] f( );
-[] f(int, int x, * int y);
-[int, int x, * int y] f(int, int x, * int y);
-[int, int x, * int y] f( ) {}
-[] f(int, int x, * int y) {}
-[int, int x, * int y] f(int, int x, * int y) {}
-
-[ int ] f11( int ), f12;  // => int f11( int ), f12( int );
-
-[int] f(
-	int ( int, int p ),
-	[int](int)
-    ) {
-    int (*(*p)[][10])[][3];
-    * [][10] * [][3] int p;
-    * [] * [int](int) p;
-}
-
-static const int *f1() {}
-static [ const int ] f2() {}
-static inline [ const * int ] f3() {}
-static inline [ const [ * int, int ] ] f4() {}
-static [ const [ * int, const int ] ] f5() {}
-
-// unnamed parameter
-
-int f(
-    int (),
-
-    int *(),
-    int **(),
-    int * const *(),
-    int * const * const (),
-
-    int ([]),
-    int ([10]),
-
-    int *([]),
-    int *([10]),
-    int **([]),
-    int **([10]),
-    int * const *([]),
-    int * const *([10]),
-    int * const * const ([]),
-    int * const * const ([10])
-    );
-
-int f(
-    int (),
-
-    int *(),
-    int **(),
-    int * const *(),
-    int * const * const (),
-
-    int ([]),
-    int ([10]),
-
-    int *([]),
-    int *([10]),
-    int **([]),
-    int **([10]),
-    int * const *([]),
-    int * const *([10]),
-    int * const * const ([]),
-    int * const * const ([10])
-    ) {
-}
-
-typedef int T;
-
-int f( T (T), T T ) {
-    T (T);
-}
-
-// errors
-
-//int f()[] {}
-//int (f[])() {}
-//int f[]() {}
-//int ((*f15())())[] {}
Index: c/Tests/SynTree/IdentFuncDeclarator.c
===================================================================
--- src/Tests/SynTree/IdentFuncDeclarator.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,105 +1,0 @@
-int main() {
-    //int f0[]();
-    //int (f0[])();
-    //int f0()[];
-    //int f0()();
-    //int (*f0)()();
-    //int ((*f0())())[];
-    
-    int f1;
-    int (f2);
-
-    int *f3;
-    int **f4;
-    int * const *f5;
-    int * const * const f6;
-
-    int *(f7);
-    int **(f8);
-    int * const *(f9);
-    int * const * const (f10);
-
-    int (*f11);
-    int (**f12);
-    int (* const *f13);
-    int (* const * const f14);
-
-    int f15[];
-    int f16[10];
-    int (f17[]);
-    int (f18[10]);
-
-    int *f19[];
-    int *f20[10];
-    int **f21[];
-    int **f22[10];
-    int * const *f23[];
-    int * const *f24[10];
-    int * const * const f25[];
-    int * const * const f26[10];
-
-    int *(f27[]);
-    int *(f28[10]);
-    int **(f29[]);
-    int **(f30[10]);
-    int * const *(f31[]);
-    int * const *(f32[10]);
-    int * const * const (f33[]);
-    int * const * const (f34[10]);
-
-    int (*f35[]);
-    int (*f36[10]);
-    int (**f37[]);
-    int (**f38[10]);
-    int (* const *f39[]);
-    int (* const *f40[10]);
-    int (* const * const f41[]);
-    int (* const * const f42[10]);
-
-    int f43[][3];
-    int f44[3][3];
-    int (f45[])[3];
-    int (f46[3])[3];
-    int ((f47[]))[3];
-    int ((f48[3]))[3];
-
-    int *f49[][3];
-    int *f50[3][3];
-    int **f51[][3];
-    int **f52[3][3];
-    int * const *f53[][3];
-    int * const *f54[3][3];
-    int * const * const f55[][3];
-    int * const * const f56[3][3];
-
-    int (*f57[][3]);
-    int (*f58[3][3]);
-    int (**f59[][3]);
-    int (**f60[3][3]);
-    int (* const *f61[][3]);
-    int (* const *f62[3][3]);
-    int (* const * const f63[][3]);
-    int (* const * const f64[3][3]);
-
-    int f65(int);
-    int (f66)(int);
-
-    int *f67(int);
-    int **f68(int);
-    int * const *f69(int);
-    int * const * const f70(int);
-
-    int *(f71)(int);
-    int **(f72)(int);
-    int * const *(f73)(int);
-    int * const * const (f74)(int);
-
-    int (*f75)(int);
-    int (**f76)(int);
-    int (* const *f77)(int);
-    int (* const * const f78)(int);
-
-    int (*(*f79)(int))();
-    int (*(* const f80)(int))();
-    int (* const(* const f81)(int))();
-}
Index: c/Tests/SynTree/IdentFuncParamDeclarator.c
===================================================================
--- src/Tests/SynTree/IdentFuncParamDeclarator.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,150 +1,0 @@
-int fred(
-    //int f0[](),
-    //int (f0[])(),
-    //int f0()[],
-    //int f0()(),
-    //int (*f0)()(),
-    //int ((*f0())())[],
-    
-    int f1,
-    int (f2),
-
-    int *f3,
-    int **f4,
-    int * const *f5,
-    int * const * const f6,
-
-    int *(f7),
-    int **(f8),
-    int * const *(f9),
-    int * const * const (f10),
-
-    int (*f11),
-    int (**f12),
-    int (* const *f13),
-    int (* const * const f14),
-
-    int f15[],
-    int f16[10],
-    int (f17[]),
-    int (f18[10]),
-
-    int *f19[],
-    int *f20[10],
-    int **f21[],
-    int **f22[10],
-    int * const *f23[],
-    int * const *f24[10],
-    int * const * const f25[],
-    int * const * const f26[10],
-
-    int *(f27[]),
-    int *(f28[10]),
-    int **(f29[]),
-    int **(f30[10]),
-    int * const *(f31[]),
-    int * const *(f32[10]),
-    int * const * const (f33[]),
-    int * const * const (f34[10]),
-
-    int (*f35[]),
-    int (*f36[10]),
-    int (**f37[]),
-    int (**f38[10]),
-    int (* const *f39[]),
-    int (* const *f40[10]),
-    int (* const * const f41[]),
-    int (* const * const f42[10]),
-
-    int f43[][3],
-    int f44[3][3],
-    int (f45[])[3],
-    int (f46[3])[3],
-    int ((f47[]))[3],
-    int ((f48[3]))[3],
-
-    int *f49[][3],
-    int *f50[3][3],
-    int **f51[][3],
-    int **f52[3][3],
-    int * const *f53[][3],
-    int * const *f54[3][3],
-    int * const * const f55[][3],
-    int * const * const f56[3][3],
-
-    int (*f57[][3]),
-    int (*f58[3][3]),
-    int (**f59[][3]),
-    int (**f60[3][3]),
-    int (* const *f61[][3]),
-    int (* const *f62[3][3]),
-    int (* const * const f63[][3]),
-    int (* const * const f64[3][3]),
-
-    int f65(int),
-    int (f66)(int),
-
-    int *f67(int),
-    int **f68(int),
-    int * const *f69(int),
-    int * const * const f70(int),
-
-    int *(f71)(int),
-    int **(f72)(int),
-    int * const *(f73)(int),
-    int * const * const (f74)(int),
-
-    int (*f75)(int),
-    int (**f76)(int),
-    int (* const *f77)(int),
-    int (* const * const f78)(int),
-
-    int (*(*f79)(int))(),
-    int (*(* const f80)(int))(),
-    int (* const(* const f81)(int))(),
-
-    int f82[const *],
-    int f83[const 3],
-    int f84[static 3],
-    int f85[static const 3],
-
-    int (f86[const *]),
-    int (f87[const 3]),
-    int (f88[static 3]),
-    int (f89[static const 3]),
-
-    int *f90[const *],
-    int *f91[const 3],
-    int **f92[static 3],
-    int * const *f93[static const 3],
-    int * const * const f94[static const 3],
-
-    int *(f95[const *]),
-    int *(f96[const 3]),
-    int **(f97[static 3]),
-    int * const *(f98[static const 3]),
-    int * const * const (f99[static const 3]),
-
-    int f100[const *][3],
-    int f101[const 3][3],
-    int f102[static 3][3],
-    int f103[static const 3][3],
-
-    int (f104[const *][3]),
-    int (f105[const 3][3]),
-    int (f106[static 3][3]),
-    int (f107[static const 3][3]),
-
-    int *f108[const *][3],
-    int *f109[const 3][3],
-    int **f110[static 3][3],
-    int * const *f111[static const 3][3],
-    int * const * const f112[static const 3][3],
-
-    int *(f113[const *][3]),
-    int *(f114[const 3][3]),
-    int **(f115[static 3][3]),
-    int * const *(f116[static const 3][3]),
-    int * const * const (f117[static const 3][3])
-    ) {
-}
Index: c/Tests/SynTree/Initialization.c
===================================================================
--- src/Tests/SynTree/Initialization.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,27 +1,0 @@
-// Cforall extensions
-
-int * x21 = 0, x22 = 0;
-int * x21 = 0, x22 = 0;
-
-[20] int y1, y2 = { 1, 2, 3 };
-
-// designators
-
-struct {
-    [int] w;
-} a = { .w : [2] };
-
-struct { int a[3], b; } w [] = { [0].a : {1}, [0].b : 1, [1].a[0] : 2 };
-
-struct {
-    int f1, f2, f3;
-    struct { int g1, g2, g3; } f4[4];
-} v7 = {
-    .f1 : 4,
-    f2 : 3,
-    .f4[2] : {
-	.g1 : 3,
-	g3 : 0,
-    },
-    .f4[3].g3 : 7,
-};
Index: c/Tests/SynTree/Makefile
===================================================================
--- src/Tests/SynTree/Makefile	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,2 +1,0 @@
-all:
-	sh run-tests.sh
Index: c/Tests/SynTree/Scope.c
===================================================================
--- src/Tests/SynTree/Scope.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,69 +1,0 @@
-int x;
-typedef double y;
-typedef float t;
-y z;
-type u = struct { int a; double b; };
-int f( int y );
-y q;
-
-y w(y y, u v) {
-  type x | { x t(u); };
-  u u = y;
-  x z = t(u);
-}
-
-y p;
-
-context has_u( type z )
-{
-  z u(z);
-};
-
-forall( type t | has_u( t ) )
-y q( t the_t )
-{
-  t y = u( the_t );
-}
-
-t f( y p ) {
-  int y;
-  typedef char x;
-
-  {
-    x y;
-    typedef x z;
-
-    {
-      z x;
-      typedef z y;
-      y z = x;
-    }
-
-    z x = y;
-  }
-
-  x q = y;
-}
-
-t g( void ) {
-  typedef char x;
-  try {
-    some_func();
-  } catch ( x x ) {
-    t y = x;
-  }
-  x z;
-}
-
-y q(i)
-    int i;
-{
-  switch (i) {
-    y q = i;
-  case 0:
-    return q;
-  default:
-    return i;
-  }
-}
-
Index: c/Tests/SynTree/ScopeErrors.c
===================================================================
--- src/Tests/SynTree/ScopeErrors.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,26 +1,0 @@
-int thisIsAnError;
-int thisIsAnError;
-
-int thisIsNotAnError;
-float thisIsNotAnError;
-
-int thisIsAlsoNotAnError()
-{
-  int thisIsNotAnError;
-}
-
-int thisIsAlsoNotAnError( double x )
-{
-}
-
-double thisIsStillNotAnError( double );
-double thisIsStillNotAnError( double );
-
-double butThisIsAnError( double )
-{
-}
-
-double butThisIsAnError( double )
-{
-}
-
Index: c/Tests/SynTree/StructMember.c
===================================================================
--- src/Tests/SynTree/StructMember.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,40 +1,0 @@
-typedef int T;
-
-struct S {
-    int m1:3, m2:4;
-    int :2;
-    int :3, :4;
-    int m3;
-    int m4, m5, m6;
-    int *m7, *m8, *m9;
-    int (*m10)();
-    int *(*m11)(int);
-    T T;
-    T (T);
-
-// Cforall extensions
-
-    * int m12, m13;
-    * [ * int ] (int) m14;
-    int ;
-    int , , ;
-    int * , , ;
-    int *, *, *;
-    * int , , ;
-    int (*)();
-    int (**)( int );
-    T ;
-
-// errors
-
-//    void f(void);
-};
-
-struct S s;
-
-union U {
-    [5] int m1;
-    int m2[5];
-    * int m3;
-    int *m4;
-} u;
Index: c/Tests/SynTree/Tuple.c
===================================================================
--- src/Tests/SynTree/Tuple.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,62 +1,0 @@
-int f( int, int );
-int g( int, int, int );
-static [ int, int, int, int ] h( int a, int b, * int c, [] char d );
-
-struct inner {
-    int f2, f3;
-};
-
-struct outer {
-    int f1;
-    struct inner i;
-    double f4;
-} s, *sp;
-
-const volatile [ int, int ] t1;
-static const [ int, const int ] t2;
-const static [ int, const int ] t3;
-
-[ int rc ] printf( * char fmt, ... );
-int printf( char *fmt, ... );
-
-[ short x, unsigned y ] f1( int w ) {
-    [ y, x ] = [ x, y ] = [ w, 23 ];
-}
-
-[ [ int, char, long, int ] r ] g1() {
-    short x, p;
-    unsigned int y;
-    [ int, int ] z;
-
-    [ x, y, z ] = [ p, f( 17 ), 3 ];
-    r = [ x, y, z ];
-}
-
-[ int rc ] main( int argc, ** char argv ) {
-    int a, b, c, d;
-    struct outer t = { .[ f1,f4 ] : [ 1,7.0 ] };
-    f( [ 3,5 ] );
-    g( [ 3,5 ], 3 );
-    f( t1 );
-    g( t1, 3 );
-    [ 3,5 ];
-    [ a,b ] = 3;
-    [ a,b ] = [ 4.6 ];
-    [ a,b ] = [ c,d ] = [ 3,5 ];
-    [ a,b,[ c ] ] = [ 2,[ a,b ] ];
-    [ a,b ] = 3 > 4 ? [ b,6 ] : [ 7,8 ];
-
-    t1 = [ a,b ];
-    t1 = t2 = [ a,b ];
-    [ a,b ] = [ c,d ] = d += c += 1;
-    [ a,b ] = [ c,d ] = t1;
-    [ a,b ] = t1 = [ c,d ];
-    [ a,b ] = t1 = t2 = [ c,d ];
-    t1 = [ 3,4 ] = [ 3,4 ] = t1 = [ 3,4 ];
-
-    s.[ f1, i.[ f2, f3 ], f4 ] = [ 11, 12, 13, 3.14159 ];
-    s.[ f1, i.[ f2, f3 ], f4 ] = h( 3, 3, 0, "abc" );
-    sp->[ f4,f1 ] = sp->[ f1,f4 ];
-    printf( "expecting 3, 17, 23, 4; got %d, %d, %d, %d\n", s.[ f4, i.[ f3,f2 ], f1 ] );
-    rc = 0;
-}
Index: c/Tests/SynTree/TypeGenerator.c
===================================================================
--- src/Tests/SynTree/TypeGenerator.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,19 +1,0 @@
-context addable(type T) {
-   T ?+?(T,T);
-};
-
-type List(type T | addable(T) ) | addable(T) = struct { T data; List(T) *next; } *;
-typedef List(int) ListOfIntegers;
-ListOfIntegers li;
-int f( List(int) ((*g))(int) );
-[int] h( * List(int) p ); // new declaration syntax
-
-struct(type T | addable(T) ) node { T data; struct(T) node *next; };
-type List(type T) = struct(T) node *;
-List(int) my_list;
-
-type Complex | addable(Complex);
-
-int main() {
-    (struct(int) node)my_list;
-}
Index: c/Tests/SynTree/Typedef.c
===================================================================
--- src/Tests/SynTree/Typedef.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,41 +1,0 @@
-typedef int T;
-
-void f( void ) {
-    int T( T );
-    T( 3 );
-}
-
-struct {
-    T (T);
-} fred = { 3 };
-
-typedef int (*a)(int, char);
-a b;
-
-int g(void) {
-    double a;
-}
-a c;
-
-// typedef x = 3, y = 3;  /* GCC */
-
-// x p;
-// y q;
-
-int main() {
-//    typedef z = p = 3;
-}
-
-/* new-style function definitions */
-
-typedef [10] * int arrayOf10Pointers;
-arrayOf10Pointers x;
-typedef const * int constantPointer;
-typedef * [ int ]( [] int ) funcPtr;
-typedef [ int ] funcProto( []  int );
-typedef [ int, int ] tupleType;
-typedef * [ int, int ] tupleTypePtr;
-typedef * int a, b;
-typedef [ int ] f( * int ), g;
-typedef [ * [static 10] int ] t;
-typedef [ * [static 10] int x ] f();
Index: c/Tests/SynTree/TypedefDeclarator.c
===================================================================
--- src/Tests/SynTree/TypedefDeclarator.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,116 +1,0 @@
-typedef int
-     f0,  f1,  f2,  f3,  f4,  f5,  f6,  f7,  f8,  f9,
-    f10, f11, f12, f13, f14, f15, f16, f17, f18, f19,
-    f20, f21, f22, f23, f24, f25, f26, f27, f28, f29,
-    f30, f31, f32, f33, f34, f35, f36, f37, f38, f39,
-    f40, f41, f42, f43, f44, f45, f46, f47, f48, f49,
-    f50, f51, f52, f53, f54, f55, f56, f57, f58, f59,
-    f60, f61, f62, f63, f64, f65, f66, f67, f68, f69,
-    f70, f71, f72, f73, f74, f75, f76, f77, f78, f79,
-    f80, f81, f82, f83, f84, f85, f86, f87, f88, f89;
-
-int main() {
-    //int f0[]();
-    //int (f0[])();
-    //int f0()[];
-    //int f0()();
-    //int (*f0)()();
-    //int ((*f0())())[];
-    
-    int f1;
-    int (f2);
-
-    int *f3;
-    int **f4;
-    int * const *f5;
-    int * const * const f6;
-
-    int *(f7);
-    int **(f8);
-    int * const *(f9);
-    int * const * const (f10);
-
-    int (*f11);
-    int (**f12);
-    int (* const *f13);
-    int (* const * const f14);
-
-    int f15[];
-    int f16[10];
-    int (f17[]);
-    int (f18[10]);
-
-    int *f19[];
-    int *f20[10];
-    int **f21[];
-    int **f22[10];
-    int * const *f23[];
-    int * const *f24[10];
-    int * const * const f25[];
-    int * const * const f26[10];
-
-    int *(f27[]);
-    int *(f28[10]);
-    int **(f29[]);
-    int **(f30[10]);
-    int * const *(f31[]);
-    int * const *(f32[10]);
-    int * const * const (f33[]);
-    int * const * const (f34[10]);
-
-    int (*f35[]);
-    int (*f36[10]);
-    int (**f37[]);
-    int (**f38[10]);
-    int (* const *f39[]);
-    int (* const *f40[10]);
-    int (* const * const f41[]);
-    int (* const * const f42[10]);
-
-    int f43[][3];
-    int f44[3][3];
-    int (f45[])[3];
-    int (f46[3])[3];
-    int ((f47[]))[3];
-    int ((f48[3]))[3];
-
-    int *f49[][3];
-    int *f50[3][3];
-    int **f51[][3];
-    int **f52[3][3];
-    int * const *f53[][3];
-    int * const *f54[3][3];
-    int * const * const f55[][3];
-    int * const * const f56[3][3];
-
-    int (*f57[][3]);
-    int (*f58[3][3]);
-    int (**f59[][3]);
-    int (**f60[3][3]);
-    int (* const *f61[][3]);
-    int (* const *f62[3][3]);
-    int (* const * const f63[][3]);
-    int (* const * const f64[3][3]);
-
-    int f65(int);
-    int (f66)(int);
-
-    int *f67(int);
-    int **f68(int);
-    int * const *f69(int);
-    int * const * const f70(int);
-
-    int *(f71)(int);
-    int **(f72)(int);
-    int * const *(f73)(int);
-    int * const * const (f74)(int);
-
-    int (*f75)(int);
-    int (**f76)(int);
-    int (* const *f77)(int);
-    int (* const * const f78)(int);
-
-    int (*(*f79)(int))();
-    int (*(* const f80)(int))();
-    int (* const(* const f81)(int))();
-}
Index: c/Tests/SynTree/TypedefParamDeclarator.c
===================================================================
--- src/Tests/SynTree/TypedefParamDeclarator.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,150 +1,0 @@
-typedef int
-     f0,   f1,   f2,   f3,   f4,   f5,   f6,   f7,   f8,   f9,
-    f10,  f11,  f12,  f13,  f14,  f15,  f16,  f17,  f18,  f19,
-    f20,  f21,  f22,  f23,  f24,  f25,  f26,  f27,  f28,  f29,
-    f30,  f31,  f32,  f33,  f34,  f35,  f36,  f37,  f38,  f39,
-    f40,  f41,  f42,  f43,  f44,  f45,  f46,  f47,  f48,  f49,
-    f50,  f51,  f52,  f53,  f54,  f55,  f56,  f57,  f58,  f59,
-    f60,  f61,  f62,  f63,  f64,  f65,  f66,  f67,  f68,  f69,
-    f70,  f71,  f72,  f73,  f74,  f75,  f76,  f77,  f78,  f79,
-    f80,  f81,  f82,  f83,  f84,  f85,  f86,  f87,  f88,  f89,
-    f90,  f91,  f92,  f93,  f94,  f95,  f96,  f97,  f98,  f99,
-    f100, f101, f102, f103, f104, f105, f106, f107, f108, f109,
-    f110, f111, f112, f113, f114, f115, f116, f117, f118, f119;
-
-int fred(
-/*
-    //int f0[](),
-    //int (f0[])(),
-    //int f0()[],
-    //int f0()(),
-    //int (*f0)()(),
-    //int ((*f0())())[],
-*/
-    int f1,
-
-    int *f3,
-    int **f4,
-    int * const *f5,
-    int * const * const f6,
-
-    int (*f11),
-    int (**f12),
-    int (* const *f13),
-    int (* const * const f14),
-
-    int f15[],
-    int f16[10],
-
-    int *f19[],
-    int *f20[10],
-    int **f21[],
-    int **f22[10],
-    int * const *f23[],
-    int * const *f24[10],
-    int * const * const f25[],
-    int * const * const f26[10],
-
-    int (*f35[]),
-    int (*f36[10]),
-    int (**f37[]),
-    int (**f38[10]),
-    int (* const *f39[]),
-    int (* const *f40[10]),
-    int (* const * const f41[]),
-    int (* const * const f42[10]),
-
-    int f43[][3],
-    int f44[3][3],
-/*
-    int (f45[])[3],
-    int (f46[3])[3],
-    int ((f47[]))[3],
-    int ((f48[3]))[3],
-*/
-    int *f49[][3],
-    int *f50[3][3],
-    int **f51[][3],
-    int **f52[3][3],
-    int * const *f53[][3],
-    int * const *f54[3][3],
-    int * const * const f55[][3],
-    int * const * const f56[3][3],
-
-    int (*f57[][3]),
-    int (*f58[3][3]),
-    int (**f59[][3]),
-    int (**f60[3][3]),
-    int (* const *f61[][3]),
-    int (* const *f62[3][3]),
-    int (* const * const f63[][3]),
-    int (* const * const f64[3][3]),
-
-    int f65(int),
-/*
-    int (f66)(int),
-*/
-    int *f67(int),
-    int **f68(int),
-    int * const *f69(int),
-    int * const * const f70(int),
-/*
-    int *(f71)(int),
-    int **(f72)(int),
-    int * const *(f73)(int),
-    int * const * const (f74)(int),
-*/
-    int (*f75)(int),
-    int (**f76)(int),
-    int (* const *f77)(int),
-    int (* const * const f78)(int),
-
-    int (*(*f79)(int))(),
-    int (*(* const f80)(int))(),
-    int (* const(* const f81)(int))(),
-
-    int f82[const *],
-    int f83[const 3],
-    int f84[static 3],
-    int f85[static const 3],
-
-    int (f86[const *]),
-    int (f87[const 3]),
-    int (f88[static 3]),
-    int (f89[static const 3]),
-
-    int *f90[const *],
-    int *f91[const 3],
-    int **f92[static 3],
-    int * const *f93[static const 3],
-    int * const * const f94[static const 3],
-
-    int *(f95[const *]),
-    int *(f96[const 3]),
-    int **(f97[static 3]),
-    int * const *(f98[static const 3]),
-    int * const * const (f99[static const 3]),
-
-    int f100[const *][3],
-    int f101[const 3][3],
-    int f102[static 3][3],
-    int f103[static const 3][3],
-
-    int (f104[const *][3]),
-    int (f105[const 3][3]),
-    int (f106[static 3][3]),
-    int (f107[static const 3][3]),
-
-    int *f108[const *][3],
-    int *f109[const 3][3],
-    int **f110[static 3][3],
-    int * const *f111[static const 3][3],
-    int * const * const f112[static const 3][3],
-
-    int *(f113[const *][3]),
-    int *(f114[const 3][3]),
-    int **(f115[static 3][3]),
-    int * const *(f116[static const 3][3]),
-    int * const * const (f117[static const 3][3])
-    ) {
-}
Index: c/Tests/SynTree/VariableDeclarator.c
===================================================================
--- src/Tests/SynTree/VariableDeclarator.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,115 +1,0 @@
-int f1;
-int (f2);
-
-int *f3;
-int **f4;
-int * const *f5;
-int * const * const f6;
-
-int *(f7);
-int **(f8);
-int * const *(f9);
-int * const * const (f10);
-
-int (*f11);
-int (**f12);
-int (* const *f13);
-int (* const * const f14);
-
-int f15[];
-int f16[10];
-int (f17[]);
-int (f18[10]);
-
-int *f19[];
-int *f20[10];
-int **f21[];
-int **f22[10];
-int * const *f23[];
-int * const *f24[10];
-int * const * const f25[];
-int * const * const f26[10];
-
-int *(f27[]);
-int *(f28[10]);
-int **(f29[]);
-int **(f30[10]);
-int * const *(f31[]);
-int * const *(f32[10]);
-int * const * const (f33[]);
-int * const * const (f34[10]);
-
-int (*f35[]);
-int (*f36[10]);
-int (**f37[]);
-int (**f38[10]);
-int (* const *f39[]);
-int (* const *f40[10]);
-int (* const * const f41[]);
-int (* const * const f42[10]);
-
-int f43[][3];
-int f44[3][3];
-int (f45[])[3];
-int (f46[3])[3];
-int ((f47[]))[3];
-int ((f48[3]))[3];
-
-int *f49[][3];
-int *f50[3][3];
-int **f51[][3];
-int **f52[3][3];
-int * const *f53[][3];
-int * const *f54[3][3];
-int * const * const f55[][3];
-int * const * const f56[3][3];
-
-int (*f57[][3]);
-int (*f58[3][3]);
-int (**f59[][3]);
-int (**f60[3][3]);
-int (* const *f61[][3]);
-int (* const *f62[3][3]);
-int (* const * const f63[][3]);
-int (* const * const f64[3][3]);
-
-int f65(int);
-int (f66)(int);
-
-int *f67(int);
-int **f68(int);
-int * const *f69(int);
-int * const * const f70(int);
-
-int *(f71)(int);
-int **(f72)(int);
-int * const *(f73)(int);
-
-int * const * const (f74)(int);
-
-int (*f75)(int);
-int (**f76)(int);
-int (* const *f77)(int);
-int (* const * const f78)(int);
-
-int (*(*f79)(int))();
-int (*(* const f80)(int))();
-int (* const(* const f81)(int))();
-
-// errors
-
-//int fe0[]();				// array of functions
-//int (fe1[])();				// array of functions
-//int fe2()[];				// returning an array
-//int fe3()();				// returning a function
-//int (*fe4)()();				// returning a function
-//int ((*fe5())())[];			// returning an array
-
-// Cforall extensions
-
-* [20] double z;
-[20] * char w;
-
-// function pointer
-
-*[]*[]* [ *[]*[] int ]( *[]*[] int, *[]*[] int ) v3;
Index: c/Tests/SynTree/make-rules
===================================================================
--- src/Tests/SynTree/make-rules	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,21 +1,0 @@
-CFA = ../../cfa-cpp
-
-DIFF = diff#/software/gnu/bin/diff
-
-# Basic SynTree printing
-EXPECTED := ${wildcard $(EXPECTDIR)/*.tst}
-TESTS := $(EXPECTED:$(EXPECTDIR)/%=$(OUTPUTDIR)/%)
-TEST_IN := $(TESTS:.tst=.c)
-
-$(OUTPUTDIR)/%.tst:%.c $(CFA)
-	$(CFA) $(CFAOPT) < $< > $@ 2>&1
-
-$(OUTPUTDIR)/report: $(TESTS) $(EXPECTED)
-	rm -f $@
-	@for i in $(TESTS); do \
-	  echo "---"`basename $$i`"---" | tee -a $@; \
-	  $(DIFF) -B -w $(EXPECTDIR)/`basename $$i` $$i | tee -a $@; \
-	done
-
-clean:
-	rm -rf $(OUTPUTDIR)
Index: c/Tests/SynTree/run-tests.sh
===================================================================
--- src/Tests/SynTree/run-tests.sh	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,10 +1,0 @@
-#!/bin/sh -v
-
-dotest() {
-  mkdir -p Output$1
-  OUTPUTDIR=Output$1 EXPECTDIR=Expected$1 CFAOPT=$2 make -f make-rules $3
-}
-
-dotest "" -ns "$*"
-dotest -SymTab -nm "$*"
-#dotest -Validate -v "$*"
Index: c/Tests/Syntax/Array.c
===================================================================
--- src/Tests/Syntax/Array.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,33 +1,0 @@
-int a1[];
-int a2[*];
-int a4[3];
-
-int m1[][3];
-int m2[*][*];
-int m4[3][3];
-
-typedef int T;
-
-int fred() {
-    int a1[];
-    int a2[*];
-    int a4[3];
-    int T[3];
-}
-
-int mary( int T[3],
-	  int p1[const 3],
-	  int p2[static 3],
-	  int p3[static const 3]
-    ) {
-}
-
-int (*tom())[3] {
-}
-
-int (*(jane)())( int T[3],
-		 int p1[const 3],
-		 int p2[static 3],
-		 int p3[static const 3]
-    ) {
-}
Index: c/Tests/Syntax/AsmName.c
===================================================================
--- src/Tests/Syntax/AsmName.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,14 +1,0 @@
-extern int x asm( "xx" );
-
-int fred( int x ) {
-    static int y asm( "yy" );
-
-// Cforall extensions
-
-    static * int z asm( "zz" );
-}
-
-// errors
-
-//typedef int t asm( "tt" );
-//int mary( int p asm( "pp" ) ) {}
Index: c/Tests/Syntax/Attributes.c
===================================================================
--- src/Tests/Syntax/Attributes.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,22 +1,0 @@
-int @max = 3;
-
-int main() {
-    int x;
-    type @type(type t);		// compiler intrinsic
-    type @widest(type t);
-    @type(x) *y;		// gcc: typeof(x) *y;
-    const @widest(double) *w;	// gcc: const typeof(x) *w;
-    * @type(3 + 4) z;		// cfa declaration syntax
-    y = @max;		
-    z = @max(x) + @size(int);
-    y = @min(3 + 4);
-    if ( @const(x) ) { }
-    if ( @volatile(y) ) { }
-    if ( @extern(y) ) { }
-    if ( @static(y) ) { }
-    @max;
-}
-
-int @foo(int) {
-    return 7;
-}
Index: c/Tests/Syntax/CharStringConstants.c
===================================================================
--- src/Tests/Syntax/CharStringConstants.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,87 +1,0 @@
-int main() {
-// character constants
-
-    ' ';
-    'a';
-    '"';
-    '_';
-
-    '\a';				// simple escape
-    '\b';
-    '\e';				// GCC
-    '\f';
-    '\n';
-    '\r';
-    '\t';
-    '\v';
-    '\'';
-    '\"';
-    '\?';
-    '\\';
-
-    '\0';				// octal escape
-
-    '\377';
-
-    '\xf';				// hex escape
-    '\xff';
-
-// warnings/errors
-
-    '';					// empty character
-    'aa';				// multi-character
-    'a\na';				// multi-character, embedded escape
-    'a\0a';
-    '\xfff';				// hex escape out of range
-    '_\377_';				// multi-character
-    '_\xff_';
-    '\xffff';				// hex escape out of range
-    'a\xff34w';
-    '\xf_f';				// multi-character
-    '\xff_ff';
-
-// string constants
-
-    " ";
-    "a";
-    "'";
-    '_';
-
-    "\a";				// simple escape
-    "\b";
-    "\e";				// GCC
-    "\f";
-    "\n";
-    "\r";
-    "\t";
-    "\v";
-    "\'";
-    "\"";
-    "\?";
-    "\\";
-
-    "\0";				// octal escape
-    "\377";
-
-    "\xf";				// hex escape
-    "\xff";
-
-    "";
-    "aa";
-    "a\na";
-    "a\0a";
-    "_\377_";
-    "_\xff_";
-    "\xf_f";
-
-// warnings/errors
-
-    "\xff_ff";
-    "\xfff";				// hex escape out of range
-    "a\xff34w";
-    "\xffff";
-}
-
-// Local Variables: //
-// compile-command: "../../../bin/cfa -std=c99 CharStringConstants.c" //
-// End: //
Index: c/Tests/Syntax/CommentMisc.c
===================================================================
--- src/Tests/Syntax/CommentMisc.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,44 +1,0 @@
-/* single line */
-// single line
-
-// single line containing */
-// single line containing /*
-// single line containing /* */
-
-/* 1st */ int i;
-int i; /* 2nd */
-/* 1st */ int i; /* 2nd */
-/* 1st */ /* 2nd */
-
-/* 1st
-   2nd */ int i;
-
-/*
-*/
-
-/*
-
-*/
-
-/*
-  1st
-*/
-
-/*
-  1st
-  2nd
-*/
-
-// ignore preprocessor directives
-
-#line 2
- #
- #include <fred>
-	#define mary abc
-
-// alternative ANSI99 brackets
-
-int main() <%
-    int x<:10:>;
-%>
-
Index: c/Tests/Syntax/Constant0-1.c
===================================================================
--- src/Tests/Syntax/Constant0-1.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,73 +1,0 @@
-// Cforall extension
-
-int fred() {
-
-// value
-    {
-	int 0;
-	const int 0;
-	int 1;
-	const int 1;
-    }
-    static const int 0;
-    static const int 1;
-    {
-	int 0, 1;
-	const int 0, 1;
-    }
-    {
-	int (0), (1);
-    }
-    {
-	int ((0)), ((1));
-    }
-    {
-	static const int 0, 1;
-    }
-    {
-	struct { int i; } 0;
-	const struct { int i; } 1;
-    }
-    static const struct { int i; } 1;
-
-// pointer
-
-    {
-	int *0, *1;
-    }
-    {
-	int *(0), *(1);
-    }
-    {
-	int (*0), (*1);
-    }
-    {
-	int ((*0)), ((*1));
-    }
-    {
-	int * const (0), * const 1;
-    }
-    {
-	int (* const 0), (* const 1);
-    }
-    {
-	int ((* const 0)), ((* const 1));
-    }
-    struct { int i; } *0;
-
-// Cforall style
-
-    {
-	* int x, 0;
-	const * int x, 0;
-    }
-    static const * int x, 0;
-    * struct { int i; } 0;
-    const * struct { int i; } 0;
-    static const * struct { int i; } 0;
-    {
-	static * int x, 0;
-	static const * int x, 0;
-    }
-    const * * int x, 0;
-}
Index: c/Tests/Syntax/DeclarationSpecifier.c
===================================================================
--- src/Tests/Syntax/DeclarationSpecifier.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,97 +1,0 @@
-typedef short int Int;
-
-
-const short int volatile x1;
-static const short int volatile x2;
-const static short int volatile x3;
-const short static int volatile x4;
-const static volatile short int x4;
-const short int static volatile x5;
-const short int volatile static x6;
-const short volatile int static x7;
-short int volatile static const x8;
-
-const volatile struct { int i; } x10;
-const struct { int i; } volatile x11;
-struct { int i; } const volatile x12;
-static const volatile struct { int i; } x13;
-const static struct { int i; } volatile x14;
-struct { int i; } static const volatile x15;
-struct { int i; } const static volatile x16;
-struct { int i; } const volatile static x17;
-
-const Int volatile x20;
-static const Int volatile x21;
-const static Int volatile x22;
-const static Int volatile x23;
-const Int static volatile x24;
-const Int volatile static x25;
-const volatile Int static x26;
-Int volatile static const x27;
-
-const volatile struct { Int i; } x29;
-const struct { Int i; } volatile x30;
-struct { Int i; } const volatile x31;
-static const volatile struct { Int i; } x32;
-const static struct { Int i; } volatile x33;
-struct { Int i; } static const volatile x34;
-struct { Int i; } const static volatile x35;
-struct { Int i; } const volatile static x36;
-
-
-const static inline const volatile int f01();		// duplicate const
-volatile inline const volatile static int f02();	// duplicate volatile
-const inline const volatile int static f03();		// duplicate const
-volatile inline static const volatile int f04();	// duplicate volatile
-const static const inline volatile int f05();		// duplicate const
-volatile static const volatile inline int f06();	// duplicate volatile
-const static const volatile int inline f07();		// duplicate const
-volatile static const int inline volatile f08();	// duplicate volatile
-
-static inline const volatile int f11();
-inline const volatile static int f12();
-inline const volatile int static f13();
-inline static const volatile int f14();
-static const inline volatile int f15();
-static const volatile inline int f16();
-static const volatile int inline f17();
-static const int inline volatile f18();
-
-short static inline const volatile int f21();
-inline short const volatile static int f22();
-inline const short volatile int static f23();
-inline static const short volatile int f24();
-static const inline volatile short int f25();
-static const volatile inline int short f26();
-static const volatile int inline short f27();
-static const int inline volatile short f28();
-
-static inline const volatile struct { int i; } f31();
-inline const volatile static struct { int i; } f32();
-inline const volatile struct { int i; } static f33();
-inline static const volatile struct { int i; } f34();
-static const inline volatile struct { int i; } f35();
-static const volatile inline struct { int i; } f36();
-static const volatile struct { int i; } inline f37();
-static const struct { int i; } inline volatile f38();
-
-static inline const volatile Int f41();
-inline const volatile static Int f42();
-inline const volatile Int static f43();
-inline static const volatile Int f44();
-static const inline volatile Int f45();
-static const volatile inline Int f46();
-static const volatile Int inline f47();
-static const Int inline volatile f48();
-
-long long ll;
-long long int lli;
-double _Complex dc;
-long double _Complex lfc;
-
-// errors
-
-//static short int volatile static const e1;		// duplicate static
-//struct { int i; } const static volatile static e2;	// duplicate static
-//struct { int i; } const static volatile static volatile e3; // duplicate static & volatile
-//static Int volatile static const e4;			// duplicate static
Index: c/Tests/Syntax/Exception.c
===================================================================
--- src/Tests/Syntax/Exception.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,24 +1,0 @@
-int fred() {
-    int x;
-    throw 3;
-    throw x = 5;
-
-    try {
-    } catch( int i ) {}
-
-    try {
-	x/4;
-    } catch( int) {
-    } catch( int x ) {
-    } catch( struct { int i; } ) {
-    } catch( struct { int i; } x ) {
-    } catch( struct { int i; } *x ) {
-
-// Cforall extensions
-
-    } catch( * struct { int i; } ) {
-    } catch( * struct { int i; } x ) {
-    } catch( ... ) {
-//    } finally {
-    } // try
-}
Index: c/Tests/Syntax/Expression.c
===================================================================
--- src/Tests/Syntax/Expression.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,67 +1,0 @@
-int fred() {
-    struct s { int i; } *p;
-    int i;
-
-    // order of evaluation (GCC is different)
-/*
-    i = sizeof( (int) {3} );
-    i = sizeof (int) {3};
-*/
-    // operators
-
-    ! i;
-    ~i;
-    +i;
-    -i;
-    *p;
-    ++p;
-    --p;
-    p++;
-    p--;
-
-    i+i;
-    i-i;
-    i*i;
-
-    i/i;
-    i%i;
-    i^i;
-    i&i;
-    i|i;
-    i<i;
-    i>i;
-    i=i;
-
-    i==i;
-    i!=i;
-    i<<i;
-    i>>i;
-    i<=i;
-    i>=i;
-    i&&i;
-    i||i;
-    p->i;
-    i+=i;
-    i-=i;
-    i*=i;
-    i/=i;
-    i%=i;
-    i&=i;
-    i|=i;
-    i^=i;
-    i<<=i;
-    i>>=i;
-
-    i?i:i;
-
-    // cast
-/*
-    double d;
-    int *ip;
-    (int *) i;
-    (* int) i;
-    ([char, int *])[d, d];
-    [i,ip,ip] = ([int, * int, int *])[1,(void *)2,(void *)3];
-    [i,ip,ip] = ([int, * int, int *])([1,(void *)2,(void *)3]);
-*/
-}
Index: c/Tests/Syntax/Forall.c
===================================================================
--- src/Tests/Syntax/Forall.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,56 +1,0 @@
-typedef forall ( type T ) int (*f)( int );
-
-forall( type T )
-    void swap( T left, T right ) {
-	T temp = left;
-	left = right;
-	right = temp;
-    }
-
-context sumable( type T ) {
-    const T 0;
-    T ?+?(T, T);
-    T ?++(T*);
-    [T] ?+=?(T*,T);
-};
-
-type T1 | { const T1 0; T1 ?+?(T1, T1); T1 ?++(T1); [T1] ?+=?(T1,T1); },
-     T2(type P1, type P2 ) | (type Q, type W) { const Q 0; W ?+?(W, W); Q ?++(W); [Q] ?+=?(W,W); }(T1,T2(T1,f)),
-     T3 | sumable(T3);
-
-type T2(type P1, type P2) | sumable(T2(P1,P2)) = struct { P1 i; P2 j; };
-
-T2(int, int) w1;
-typedef T2(int, int) w2;
-w2 g2;
-type w3 = T2(int, int);
-w3 g3;
-
-forall( type T | sumable( T ) )
-    T sum( int n, T a[] ) {
-	T total = 0;
-	int i;
-	for ( i = 0; i < n; i += 1 )
-	    total = total + a[i];
-	return total;
-    }
-
-forall( type T | { T ?+?(T, T); T ?++(T*); [T] ?+=?(T*,T); } )
-    T twice( T t ) {
-	return t + t;
-    }
-
-forall( type T | { const T 0; int ?!=?(T, T); int ?<?(T, T); } )
-    T min( T t1, T t2 ) {
-	return t1 < t2 ? t1 : t2;
-    }
-
-int main() {
-    int x = 1, y = 2, a[10];
-    float f;
-
-    swap( x, y );
-    twice( x );
-    f = min( 4.0, 3.0 );
-    sum( 10, a );
-}
Index: c/Tests/Syntax/Functions.c
===================================================================
--- src/Tests/Syntax/Functions.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,165 +1,0 @@
-// ANSI function definitions
-
-void h(void) {}
-
-int f (
-    int p1(void),
-    int p2(int),
-    int (p3(void)),
-    int (p4(int)),
-    void g(void)
-  ) {
-    (*g)();
-    g();
-    g = h;
-}
-
-int f1() {}
-int (f2()) {}
-int (*f3())() {}
-int *((f4())) {}
-int ((*f5()))() {}
-int *f6() {}
-int *(f7)() {}
-int **f8() {}
-int * const *(f9)() {}
-int (*f10())[] {}
-int (*f11())[][3] {}
-int ((*f12())[])[3] {}
-
-// "implicit int" type specifier (not ANSI)
-
-fII1( int i ) {}
-const fII2( int i ) {}
-extern fII3( int i ) {}
-extern const fII4( int i ) {}
-
-*fII5() {}
-const *fII6() {}
-const long *fII7() {}
-static const long *fII8() {}
-const static long *fII9() {}
-
-// K&R function definitions
-
-fO1( i ) int i; {}
-int fO2( i ) int i; {}
-const fO3( i ) int i; {}
-extern fO4( i ) int i; {}
-extern const fO5( i ) int i; {}
-
-// Cforall extensions
-#if 1
-[] f( );
-[int] f( );
-[] f(int);
-[int] f(int);
-[] f( ) {}
-[int] f( ) {}
-[] f(int) {}
-[int] f(int) {}
-
-[int x] f( );
-[] f(int x);
-[int x] f(int x);
-[int x] f( ) {}
-[] f(int x) {}
-[int x] f(int x) {}
-
-[int, int x] f( );
-[] f(int, int x);
-[int, int x] f(int, int x);
-[int, int x] f( ) {}
-[] f(int, int x) {}
-[int, int x] f(int, int x) {}
-
-[int, int x, int] f( );
-[] f(int, int x, int);
-[int, int x, int] f(int, int x, int);
-[int, int x, int] f( ) {}
-[] f(int, int x, int) {}
-[int, int x, int] f(int, int x, int) {}
-
-[int, int x, * int y] f( );
-[] f(int, int x, * int y);
-[int, int x, * int y] f(int, int x, * int y);
-[int, int x, * int y] f( ) {}
-[] f(int, int x, * int y) {}
-[int, int x, * int y] f(int, int x, * int y) {}
-
-[ int ] f11( int ), f12;  // => int f11( int ), f12( int );
-
-[int] f(
-	int ( int, int p ),
-	[int](int)
-    ) {
-    int (*(*p)[][10])[][3];
-    * [][10] * [][3] int p;
-    * [] * [int](int) p;
-}
-
-static const int *g1() {}
-static [ const int ] g2() {}
-static inline [ const * int ] g3() {}
-static inline [ const [ * int, int ] ] g4() {}
-static [ const [ * int, const int ] ] g5() {}
-#endif
-
-// unnamed parameter
-
-int g(
-    int (),
-
-    int *(),
-    int **(),
-    int * const *(),
-    int * const * const (),
-
-    int ([]),
-    int ([10]),
-
-    int *([]),
-    int *([10]),
-    int **([]),
-    int **([10]),
-    int * const *([]),
-    int * const *([10]),
-    int * const * const ([]),
-    int * const * const ([10])
-    );
-
-int g(
-    int (),
-
-    int *(),
-    int **(),
-    int * const *(),
-    int * const * const (),
-
-    int ([]),
-    int ([10]),
-
-    int *([]),
-    int *([10]),
-    int **([]),
-    int **([10]),
-    int * const *([]),
-    int * const *([10]),
-    int * const * const ([]),
-    int * const * const ([10])
-    ) {
-}
-
-typedef int T;
-
-int g( T g(T), T T ) {
-    g(T);
-    T = 3;
-}
-
-// errors
-
-//int f()[] {}
-//int (f[])() {}
-//int f[]() {}
-//int ((*f15())())[] {}
Index: c/Tests/Syntax/GccExtensions.c
===================================================================
--- src/Tests/Syntax/GccExtensions.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,48 +1,0 @@
-int fred() {
-    asm( "nop" );
-    __asm( "nop" );
-    __asm__( "nop" );
-
-    __complex__ c1;
-    _Complex c2;
-
-    const int i1;
-    __const int i2;
-    __const__ int i3;
-
-    __extension__ const int ex;
-
-    __inline int f1();
-    __inline__ int f2();
-
-    __signed s1;
-    __signed s2;
-
-    __typeof(s1) t1;
-    __typeof__(s1) t2;
-
-    __volatile int v1;
-    __volatile__ int v2;
-
-    __attribute__(()) int a1;
-    const __attribute(()) int a2;
-    const static __attribute(()) int a3;
-    const static int __attribute(()) a4;
-    const static int a5 __attribute(());
-    const static int a6, __attribute(()) a7;
-
-    int * __attribute(()) p1;
-    int (* __attribute(()) p2);
-//    int (__attribute(()) (p3));
-//    int ( __attribute(()) (* __attribute(()) p4));
-
-    struct __attribute(()) s1;
-    struct __attribute(()) s2 { int i; };
-    struct __attribute(()) s3 { int i; } x1, __attribute(()) y1;
-    struct __attribute(()) s4 { int i; } x2, y2 __attribute(());
-
-    int m1 [10] __attribute(());
-    int m2 [10][10] __attribute(());
-    int __attribute(()) m3 [10][10];
-//    int ( __attribute(()) m4 [10] )[10];
-}
Index: c/Tests/Syntax/IdentFuncDeclarator.c
===================================================================
--- src/Tests/Syntax/IdentFuncDeclarator.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,105 +1,0 @@
-int main() {
-    //int f0[]();
-    //int (f0[])();
-    //int f0()[];
-    //int f0()();
-    //int (*f0)()();
-    //int ((*f0())())[];
-    
-    int f1;
-    int (f2);
-
-    int *f3;
-    int **f4;
-    int * const *f5;
-    int * const * const f6;
-
-    int *(f7);
-    int **(f8);
-    int * const *(f9);
-    int * const * const (f10);
-
-    int (*f11);
-    int (**f12);
-    int (* const *f13);
-    int (* const * const f14);
-
-    int f15[];
-    int f16[10];
-    int (f17[]);
-    int (f18[10]);
-
-    int *f19[];
-    int *f20[10];
-    int **f21[];
-    int **f22[10];
-    int * const *f23[];
-    int * const *f24[10];
-    int * const * const f25[];
-    int * const * const f26[10];
-
-    int *(f27[]);
-    int *(f28[10]);
-    int **(f29[]);
-    int **(f30[10]);
-    int * const *(f31[]);
-    int * const *(f32[10]);
-    int * const * const (f33[]);
-    int * const * const (f34[10]);
-
-    int (*f35[]);
-    int (*f36[10]);
-    int (**f37[]);
-    int (**f38[10]);
-    int (* const *f39[]);
-    int (* const *f40[10]);
-    int (* const * const f41[]);
-    int (* const * const f42[10]);
-
-    int f43[][3];
-    int f44[3][3];
-    int (f45[])[3];
-    int (f46[3])[3];
-    int ((f47[]))[3];
-    int ((f48[3]))[3];
-
-    int *f49[][3];
-    int *f50[3][3];
-    int **f51[][3];
-    int **f52[3][3];
-    int * const *f53[][3];
-    int * const *f54[3][3];
-    int * const * const f55[][3];
-    int * const * const f56[3][3];
-
-    int (*f57[][3]);
-    int (*f58[3][3]);
-    int (**f59[][3]);
-    int (**f60[3][3]);
-    int (* const *f61[][3]);
-    int (* const *f62[3][3]);
-    int (* const * const f63[][3]);
-    int (* const * const f64[3][3]);
-
-    int f65(int);
-    int (f66)(int);
-
-    int *f67(int);
-    int **f68(int);
-    int * const *f69(int);
-    int * const * const f70(int);
-
-    int *(f71)(int);
-    int **(f72)(int);
-    int * const *(f73)(int);
-    int * const * const (f74)(int);
-
-    int (*f75)(int);
-    int (**f76)(int);
-    int (* const *f77)(int);
-    int (* const * const f78)(int);
-
-    int (*(*f79)(int))();
-    int (*(* const f80)(int))();
-    int (* const(* const f81)(int))();
-}
Index: c/Tests/Syntax/IdentFuncParamDeclarator.c
===================================================================
--- src/Tests/Syntax/IdentFuncParamDeclarator.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,150 +1,0 @@
-int fred(
-    //int f0[](),
-    //int (f0[])(),
-    //int f0()[],
-    //int f0()(),
-    //int (*f0)()(),
-    //int ((*f0())())[],
-    
-    int f1,
-    int (f2),
-
-    int *f3,
-    int **f4,
-    int * const *f5,
-    int * const * const f6,
-
-    int *(f7),
-    int **(f8),
-    int * const *(f9),
-    int * const * const (f10),
-
-    int (*f11),
-    int (**f12),
-    int (* const *f13),
-    int (* const * const f14),
-
-    int f15[],
-    int f16[10],
-    int (f17[]),
-    int (f18[10]),
-
-    int *f19[],
-    int *f20[10],
-    int **f21[],
-    int **f22[10],
-    int * const *f23[],
-    int * const *f24[10],
-    int * const * const f25[],
-    int * const * const f26[10],
-
-    int *(f27[]),
-    int *(f28[10]),
-    int **(f29[]),
-    int **(f30[10]),
-    int * const *(f31[]),
-    int * const *(f32[10]),
-    int * const * const (f33[]),
-    int * const * const (f34[10]),
-
-    int (*f35[]),
-    int (*f36[10]),
-    int (**f37[]),
-    int (**f38[10]),
-    int (* const *f39[]),
-    int (* const *f40[10]),
-    int (* const * const f41[]),
-    int (* const * const f42[10]),
-
-    int f43[][3],
-    int f44[3][3],
-    int (f45[])[3],
-    int (f46[3])[3],
-    int ((f47[]))[3],
-    int ((f48[3]))[3],
-
-    int *f49[][3],
-    int *f50[3][3],
-    int **f51[][3],
-    int **f52[3][3],
-    int * const *f53[][3],
-    int * const *f54[3][3],
-    int * const * const f55[][3],
-    int * const * const f56[3][3],
-
-    int (*f57[][3]),
-    int (*f58[3][3]),
-    int (**f59[][3]),
-    int (**f60[3][3]),
-    int (* const *f61[][3]),
-    int (* const *f62[3][3]),
-    int (* const * const f63[][3]),
-    int (* const * const f64[3][3]),
-
-    int f65(int),
-    int (f66)(int),
-
-    int *f67(int),
-    int **f68(int),
-    int * const *f69(int),
-    int * const * const f70(int),
-
-    int *(f71)(int),
-    int **(f72)(int),
-    int * const *(f73)(int),
-    int * const * const (f74)(int),
-
-    int (*f75)(int),
-    int (**f76)(int),
-    int (* const *f77)(int),
-    int (* const * const f78)(int),
-
-    int (*(*f79)(int))(),
-    int (*(* const f80)(int))(),
-    int (* const(* const f81)(int))(),
-
-    int f82[const *],
-    int f83[const 3],
-    int f84[static 3],
-    int f85[static const 3],
-
-    int (f86[const *]),
-    int (f87[const 3]),
-    int (f88[static 3]),
-    int (f89[static const 3]),
-
-    int *f90[const *],
-    int *f91[const 3],
-    int **f92[static 3],
-    int * const *f93[static const 3],
-    int * const * const f94[static const 3],
-
-    int *(f95[const *]),
-    int *(f96[const 3]),
-    int **(f97[static 3]),
-    int * const *(f98[static const 3]),
-    int * const * const (f99[static const 3]),
-
-    int f100[const *][3],
-    int f101[const 3][3],
-    int f102[static 3][3],
-    int f103[static const 3][3],
-
-    int (f104[const *][3]),
-    int (f105[const 3][3]),
-    int (f106[static 3][3]),
-    int (f107[static const 3][3]),
-
-    int *f108[const *][3],
-    int *f109[const 3][3],
-    int **f110[static 3][3],
-    int * const *f111[static const 3][3],
-    int * const * const f112[static const 3][3],
-
-    int *(f113[const *][3]),
-    int *(f114[const 3][3]),
-    int **(f115[static 3][3]),
-    int * const *(f116[static const 3][3]),
-    int * const * const (f117[static const 3][3])
-    ) {
-}
Index: c/Tests/Syntax/Initialization.c
===================================================================
--- src/Tests/Syntax/Initialization.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,45 +1,0 @@
-// Cforall extensions
-
-int * v1 = 0, v2 = 0;
-int * v3 = 0, v4 = 0;
-
-void fred() {
-    int y1, y2[20]  = { 1, 2, 3 };
-
-    // designators
-
-    struct {
-	[int] w;
-    } a = { .w : [2] };
-
-    struct { int a[3], b; } w [] = { [0].a : {1}, [0].b : 1, [1].a[0] : 2 };
-
-    struct {
-	int f1, f2, f3;
-	struct { int g1, g2, g3; } f4[4];
-    } v7 = {
-	.f1 : 4,
-	.f2 : 3,
-	.f4[2] : {
-	    .g1 : 3,
-	    .g3 : 0,
-	},
-	.f4[3].g3 : 7,
-    };
-}
-
-struct point { int x; int z; struct {int y1, y2, y3;} y; int w;};
-struct quintet { int v, w, x, y, z;};
-
-int foo() {
-  return 4;
-}
-
-int main() {
-  foo();
-  int i;
-  struct point p1 = { x: 3 };
-  struct point p2 = { 3, 4 };
-  struct point p3 = { .[x,z]: 5, y : { .[y3,y1] : 6, 17 } };
-  struct point p4 = { w : 5, 4 };
-}
Index: c/Tests/Syntax/LabelledExit.c
===================================================================
--- src/Tests/Syntax/LabelledExit.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,139 +1,0 @@
-int main() {
-    int i;
-    int x, y;
-
-    x = 0; y = 0;
-
-// block, labelled exits
-
-  Block: {
-	if ( x == y ) {
-	    for ( ; i < y; ) {
-		y += 1;
-		if ( y < 10 ) break Block;
-	    }
-	}
-    }
-
-// loops, labelled exits
-
-  w1: while ( y == 10 );
-
-  w2: while ( x < 10 ) {
-      while (y < 5 ) {
-	  if ( y == 3 ) break w2;
-      }
-      x += 1;
-  }
-
-  A: for ( i = 0; i < 10; i += 1 ) {
-    B: for ( i = 0; i < 10; i += 1 ) {
-      C: for ( i = 0; i < 10; i += 1 ) {
-	  goto A;
-	  goto B;
-	  goto C;
-	  continue A;
-	  continue B;
-	  continue C;
-	  continue;
-	  break A;
-	  break B;
-	  break C;
-	  break;
-      }
-    }
-  }
-
-  D: for ( ;; ) {
-      break D;
-      continue D;
-  }
-
-    Z : i += 1;
-    goto Z;
-  X: Y: for ( ;; ) {
-      i += 1;
-      if ( i > 5 ) continue X;
-      if ( i < 5 ) break X;
-      if ( i < 5 ) break Y;
-      break;
-  }
-  XX: for ( ;; ) {
-    YY: for ( ;; ) {
-      ZZ: for ( ;; ) {
-	  i += 1;
-	  if ( i > 5 ) continue XX;
-	  if ( i < 5 ) continue YY;
-	  if ( i < 5 ) continue ZZ;
-	  if ( i > 5 ) break XX;
-	  if ( i < 5 ) break YY;
-	  if ( i < 5 ) break ZZ;
-	  break;
-      }
-    }
-  }
-
-    for ( ;; ) ;
-    for ( int i = 0 ;; ) ;
-    for (  ; i < 0; ) ;
-    for (  ; ; i += 1 ) ;
-  L0:  L1:  L2:  L3:  L4:  L5:  L6:  L7:  L8:  L9:
-  L10: L11: L12: L13: L14: L15: L16: L17: L18: L19:
-  L20: L21: L22: L23: L24: L25: L26: L27: L28: L29:
-  L31: L32: L33: L34:
-    for ( ;; ) {
-	break L0;
-    }
-
-// switch/choose, labelled exits
-
-  Switch: switch ( i ) {
-    default:
-      i += 1;
-    case 0:
-      i += 1;
-      break Switch;
-    case 1:
-      switch ( i ) {
-	case 0:
-	  break Switch;
-	default:
-	  break;
-      }
-  }
-
-  Choose: choose ( i ) {
-    default:
-      i += 1;
-    case 0:
-      i += 1;
-      break Choose;
-    case 1:
-      choose ( i ) {
-	case 0:
-	  break;
-	default:
-	  break Choose;
-      }
-      fallthru;
-    case 2:
-      i += 1;
-  }
-#if 0
-// computed goto
-
-    {
-	static void *array[] = { &&foo, &&bar, &&hack };
-
-      foo: bar: hack:
-	goto *array[i];
-    }
-#endif
-#if 0
-  Q: if ( i > 5 ) {
-      i += 1;
-      break Q;
-  } else
-      i += 1;
-#endif
-}
Index: c/Tests/Syntax/Makefile
===================================================================
--- src/Tests/Syntax/Makefile	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,22 +1,0 @@
-CFA = ../../cfa-cpp
-
-TESTS = ${shell ls *.c}
-TEST_OUT = $(TESTS:.c=.tst)
-
-%.tst:%.c $(CFA)
-	$(CFA) -nd < $< > $@ 2>&1
-
-tests: $(TEST_OUT)
-
-clean:
-	rm -rf $(TEST_OUT)
-
-force: clean tests
-
-all: $(TESTS)
-	@for i in $(TESTS); do     \
-	  echo -n $$i "... " ;     \
-	  $(CFA) -d < $$i > $$i.log;  \
-	done
-
-
Index: c/Tests/Syntax/NamedParmArg.c
===================================================================
--- src/Tests/Syntax/NamedParmArg.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,14 +1,0 @@
-int f1( int i = 3, int *j = 0 ) {}  /* ANSI */
-[int, int ] f2( int i = 3, * int j = 0 ) {}  /* CFA */
-
-int main() {
-    f1();		/* identical calls */
-    f1( 3 );
-    f1( 3, );
-    f1( 3, 0 );
-    f1( 3, j : 0 );
-    f1( j : 0, 3 );
-    f1( i : 3, j : 0 );
-    f1( j : 0, i : 3 );
-    f1( [j, i] : f2() );
-}
Index: c/Tests/Syntax/NumericConstants.c
===================================================================
--- src/Tests/Syntax/NumericConstants.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,54 +1,0 @@
-int main() {
-    1;							/* decimal */
-    2_1;
-    2_147_483_647;
-    37LL;
-    45ull;
-    89llu;
-    99LLu;
-    56_lu;
-    88_LLu;
-
-//    0;							/* octal */
-    0u;
-    0_3_77;
-    0_377_ul;
-
-    0x1;						/* hexadecimal */
-    0x1u;
-    0xabL;
-    0x_80000000;
-    0x_fff;
-    0x_ef3d_aa5c;
-    0x_3LL;
-
-    3.;							/* integral real */
-    3_100.;
-    1_000_000.;
-
-    3.1;						/* integral/fractional real */
-    3.141_592_654L;
-    123_456.123_456;
-
-    3E1;						/* integral/exponent real */
-    3_e1f;
-    3_E1_1_F;
-    3_E_11;
-    3_e_+11;
-    3_E_-11;
-
-    3.0E1;						/* integral/fractional/exponent real */
-    3.0_E1L;
-    3.0_e1_1;
-    3.0_E_11_l;
-    3.0_e_+11l;
-    3.0_E_-11;
-    123_456.123_456E-16;
-
-    0x_ff.ffp0;						/* hex real */
-    0x_1.ffff_ffff_p_128_l;
-}
-
-// Local Variables: //
-// compile-command: "../../../bin/cfa -std=c99 NumericConstants.c" //
-// End: //
Index: c/Tests/Syntax/Scope.c
===================================================================
--- src/Tests/Syntax/Scope.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,68 +1,0 @@
-int x;
-typedef double y;
-typedef float t;
-y z;
-type u = struct { int a; double b; };
-int f( int y );
-y q;
-
-y w(y y, u v) {
-    type x | { x t(u); };
-    u u = y;
-    x z = t(u);
-}
-
-y p;
-
-context has_u( type z )
-{
-  forall( type t ) z u(t);
-};
-
-forall( type t | has_u( t ) )
-y q( t the_t )
-{
-    t y = u( the_t );
-}
-
-t f( y p ) {
-    int y;
-    typedef char x;
-
-    {
-	x y;
-	typedef x z;
-
-	{
-	    z x;
-	    typedef z y;
-	    y z = x;
-	}
-
-	z x = y;
-    }
-
-    x q = y;
-}
-
-t g( void ) {
-    typedef char x;
-    try {
-	some_func();
-    } catch ( x x ) {
-	t y = x;
-    }
-    x z;
-}
-
-y q(i)							/* K&R style */
-    int i;
-{
-    switch (i) {
-	y q = i;
-      case 0:
-	return q;
-      default:
-	return i;
-    }
-}
Index: c/Tests/Syntax/StructMember.c
===================================================================
--- src/Tests/Syntax/StructMember.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,40 +1,0 @@
-typedef int T;
-
-struct S {
-    int m1:3, m2:4;
-    int :2;
-    int :3, :4;
-    int m3;
-    int m4, m5, m6;
-    int *m7, *m8, *m9;
-    int (*m10)();
-    int *(*m11)(int);
-    T T;
-    T (T);
-
-// Cforall extensions
-
-    * int m12, m13;
-    * [ * int ] (int) m14;
-    int ;
-    int , , ;
-    int * , , ;
-    int *, *, *;
-    * int , , ;
-    int (*)();
-    int (**)( int );
-    T ;
-
-// errors
-
-//    void f(void);
-};
-
-struct S s;
-
-union U {
-    [5] int m1;
-    int m2[5];
-    * int m3;
-    int *m4;
-} u;
Index: c/Tests/Syntax/Subrange.c
===================================================================
--- src/Tests/Syntax/Subrange.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,63 +1,0 @@
-// A small context defining the notion of an ordered type.  (The standard
-// library should probably contain a context for this purpose.)
-context ordered(type T) {
-    int ?<?(T, T), ?<=?(T, T);
-};
-
-// A subrange type resembling an Ada subtype with a base type and a range
-// constraint.
-type subrange(type base_t | ordered(base_t), base_t low = 0, base_t high = 8) = base_t;
-
-// Note that subrange() can be applied to floating-point and pointer types, not
-// just integral types.
-//   This requires a "type generator" extension to Cforall.  Type generators
-// must accept type and non-type parameters, which is beyond what we discussed
-// previously.  Type parameters must be usable in the declaration of
-// subsequent parameters: parameter T is used to declare parameters "low"
-// and "high".
-
-// Example usage:
-subrange(unsigned, 1, 31) day_of_month;
-subrange(char, 'a', 'z')  lcase;
-subrange(int, 0, (rand() & 0xF) ) foo;
-
-// What sorts of expressions can be used as arguments of type generators?  Is
-// "subrange(int, 0, rand() & 0xF)" legal?  Probably.  The nearest C equivalent
-// to the "low" and "high" arguments is the array size in a variable-length
-// array declaration, and C allows assignment expressions there.
-
-// Convenient access to subrange bounds, for instance for iteration:
-forall (type T, T low, T high)
-T lbound( subrange(T, low, high) v) {
-    return low;
-}
-
-forall (type T, T low, T high)
-T hbound( subrange(T, low, high) v) {
-    return high;
-}
-
-// Example usage:
-unsigned lday = lbound(day_of_month);
-
-// Assignment from the base type, with bounds checking.  I'll ignore the issue
-// of exception handling here.  Inlining allows the compiler to eliminate
-// bounds checks.
-forall (type T | ordered(T), T low, T high)
-inline subrange(T, low, high) ?=?(subrange(T, low, high)* target, T source) {
-    if (low <= source && source <= high) *((T*)target) = source;
-    else abort();
-    return target;
-}
-
-// Assignment between subranges with a common base type.  The bounds check
-// compares range bounds so that the compiler can optimize checks away when the
-// ranges are known to overlap.
-forall (type T | ordered(T), T t_low, T t_high, T s_low, T s_high)
-inline subrange(T, t_low, t_high) ?=?(subrange(T, t_low, t_high)* target,
-				      subrange(T, s_low, s_high) source) {
-    if ( (t_low <= s_low || t_low <= source)
-	 && (s_high <= t_high || source <= t_high) ) *((T*)target) = source;
-    else abort();
-    return target;
-}
Index: c/Tests/Syntax/Switch.c
===================================================================
--- src/Tests/Syntax/Switch.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,42 +1,0 @@
-int fred() {
-    int i;
-    switch ( i ) case 3 : i = 1;
-    switch ( i ) default : i = 1;
-    switch ( 3 )
-      default:
-      case 2:
-      case 3:
-	3;
-
-    switch ( i ) {
-    }
-
-    switch ( i ) {
-	int i;
-      case 8~10:
-      default:
-	i = 3;
-      case 3:
-      case 'A' ... 'Z':
-      case 5 ... 6:
-      case 2, 4:
-	i = 3;
-	break;
-    }
-
-    choose ( i ) case 3 : i = 1;
-    choose ( i ) default : i = 1;
-    choose ( i ) {
-	int i;
-      case 3:
-      case 'A' ... 'Z':
-      case 5 ... 6:
-      case 2, 4, 7:
-	i = 3;
-	fallthru;
-      default:
-	i = 3;
-      case 8~10:
-	fallthru
-    }
-}
Index: c/Tests/Syntax/Tuple.c
===================================================================
--- src/Tests/Syntax/Tuple.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,66 +1,0 @@
-int f( int, int );
-int g( int, int, int );
-static [ int, int, int, int ] h( int a, int b, * int c, [] char d );
-
-struct inner {
-    int f2, f3;
-};
-
-struct outer {
-    int f1;
-    struct inner i;
-    double f4;
-} s, *sp;
-
-const volatile [ int, int ] t1;
-static const [ int, const int ] t2;
-const static [ int, const int ] t3;
-
-[ int rc ] printf( * char fmt, ... );
-int printf( char *fmt, ... );
-
-[ short x, unsigned y ] f1( int w ) {
-    [ y, x ] = [ x, y ] = [ w, 23 ];
-}
-
-[ [ int, char, long, int ] r ] g1() {
-    short x, p;
-    unsigned int y;
-    [ int, int ] z;
-
-    [ x, y, z ] = [ p, f( 17 ), 3 ];
-    r = [ x, y, z ];
-}
-
-[ int rc ] main( int argc, ** char argv ) {
-    int a, b, c, d;
-    struct outer t = { .[ f1,f4 ] : [ 1,7.0 ] };
-    f( [ 3,5 ] );
-    g( [ 3,5 ], 3 );
-    f( t1 );
-    g( t1, 3 );
-
-    [ ,,, ];						/* empty tuple */
-    [ 3,5 ];
-    [ a,b ] = 3;
-    [ a,b ] = [ 4.6 ];
-    [ a,b ] = [ c,d ] = [ 3,5 ];
-    [ a,b,[ c ] ] = [ 2,[ a,b ] ];
-    [ a,b ] = 3 > 4 ? [ b,6 ] : [ 7,8 ];
-
-    t1 = [ a,b ];
-    t1 = [ a, ];					/* semantic error */
-    t1 = t2 = [ a,b ];
-    [ a,b ] = [ c,d ] = d += c += 1;
-    [ a,b ] = [ c,d ] = t1;
-    [ a,b ] = t1 = [ c,d ];
-    [ a,b ] = t1 = t2 = [ c,d ];
-    t1 = [ 3,4 ] = [ 3,4 ] = t1 = [ 3,4 ];
-
-    s.[ f1, i.[ f2, f3 ], f4 ] = [ 11, 12, 13, 3.14159 ];
-    s.[ f1, i.[ f2, f3 ], f4 ] = h( 3, 3, 0, "abc" );
-    [ a, ,b, ] = h( 3, 3, 0, "abc" );			/* ignore some results */
-    sp->[ f4,f1 ] = sp->[ f1,f4 ];
-    printf( "expecting 3, 17, 23, 4; got %d, %d, %d, %d\n", s.[ f4, i.[ f3,f2 ], f1 ] );
-    rc = 0;
-}
Index: c/Tests/Syntax/TypeGenerator.c
===================================================================
--- src/Tests/Syntax/TypeGenerator.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,25 +1,0 @@
-context addable(type T) {
-   T ?+?(T,T);
-};
-
-type List(type T | addable(T) ) | addable(T) = struct { T data; List(T) *next; } *;
-typedef List(int) ListOfIntegers;
-ListOfIntegers li;
-int f( List(int) ((*g))(int) );
-[int] h( * List(int) p ); // new declaration syntax
-
-struct(type T) S1;			// forward definition
-struct(type T) S1 { T i; };		// actual definition
-struct(int) S1 v1, *p;			// expansion and instantiation
-struct(type T)(int) S2 { T i; } v2;	// actual definition, expansion and instantiation
-struct(type T)(int) { T i; } v2;	// anonymous actual definition, expansion and instantiation
-
-struct(type T | addable(T) ) node { T data; struct(T) node *next; };
-type List(type T) = struct(T) node *;
-List(int) my_list;
-
-type Complex | addable(Complex);
-
-int main() {
-    (struct(int) node)my_list;
-}
Index: c/Tests/Syntax/Typedef.c
===================================================================
--- src/Tests/Syntax/Typedef.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,43 +1,0 @@
-typedef int T;
-
-void f( void ) {
-    int T( T );
-    T( 3 );
-}
-
-struct {
-    T (T);
-} fred = { 3 };
-
-typedef int (*a)(int, char);
-a b;
-
-int g(void) {
-    double a;
-}
-a c;
-
-typedef typeof(3) x, y;  /* GCC */
-
-x p;
-y q;
-
-int main() {
-    typedef typeof(3) z, p;
-    z w;
-    p x;
-}
-
-/* new-style function definitions */
-
-typedef [10] * int arrayOf10Pointers;
-arrayOf10Pointers array;
-typedef const * int constantPointer;
-typedef * [ int ]( [] int ) funcPtr;
-typedef [ int ] funcProto( []  int );
-typedef [ int, int ] tupleType;
-typedef * [ int, int ] tupleTypePtr;
-typedef * int a, b;
-typedef [ int ] f( * int ), g;
-typedef [ * [static 10] int ] t;
-typedef [ * [static 10] int x ] f();
Index: c/Tests/Syntax/TypedefDeclarator.c
===================================================================
--- src/Tests/Syntax/TypedefDeclarator.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,116 +1,0 @@
-typedef int
-     f0,  f1,  f2,  f3,  f4,  f5,  f6,  f7,  f8,  f9,
-    f10, f11, f12, f13, f14, f15, f16, f17, f18, f19,
-    f20, f21, f22, f23, f24, f25, f26, f27, f28, f29,
-    f30, f31, f32, f33, f34, f35, f36, f37, f38, f39,
-    f40, f41, f42, f43, f44, f45, f46, f47, f48, f49,
-    f50, f51, f52, f53, f54, f55, f56, f57, f58, f59,
-    f60, f61, f62, f63, f64, f65, f66, f67, f68, f69,
-    f70, f71, f72, f73, f74, f75, f76, f77, f78, f79,
-    f80, f81, f82, f83, f84, f85, f86, f87, f88, f89;
-
-int main() {
-    //int f0[]();
-    //int (f0[])();
-    //int f0()[];
-    //int f0()();
-    //int (*f0)()();
-    //int ((*f0())())[];
-    
-    int f1;
-    int (f2);
-
-    int *f3;
-    int **f4;
-    int * const *f5;
-    int * const * const f6;
-
-    int *(f7);
-    int **(f8);
-    int * const *(f9);
-    int * const * const (f10);
-
-    int (*f11);
-    int (**f12);
-    int (* const *f13);
-    int (* const * const f14);
-
-    int f15[];
-    int f16[10];
-    int (f17[]);
-    int (f18[10]);
-
-    int *f19[];
-    int *f20[10];
-    int **f21[];
-    int **f22[10];
-    int * const *f23[];
-    int * const *f24[10];
-    int * const * const f25[];
-    int * const * const f26[10];
-
-    int *(f27[]);
-    int *(f28[10]);
-    int **(f29[]);
-    int **(f30[10]);
-    int * const *(f31[]);
-    int * const *(f32[10]);
-    int * const * const (f33[]);
-    int * const * const (f34[10]);
-
-    int (*f35[]);
-    int (*f36[10]);
-    int (**f37[]);
-    int (**f38[10]);
-    int (* const *f39[]);
-    int (* const *f40[10]);
-    int (* const * const f41[]);
-    int (* const * const f42[10]);
-
-    int f43[][3];
-    int f44[3][3];
-    int (f45[])[3];
-    int (f46[3])[3];
-    int ((f47[]))[3];
-    int ((f48[3]))[3];
-
-    int *f49[][3];
-    int *f50[3][3];
-    int **f51[][3];
-    int **f52[3][3];
-    int * const *f53[][3];
-    int * const *f54[3][3];
-    int * const * const f55[][3];
-    int * const * const f56[3][3];
-
-    int (*f57[][3]);
-    int (*f58[3][3]);
-    int (**f59[][3]);
-    int (**f60[3][3]);
-    int (* const *f61[][3]);
-    int (* const *f62[3][3]);
-    int (* const * const f63[][3]);
-    int (* const * const f64[3][3]);
-
-    int f65(int);
-    int (f66)(int);
-
-    int *f67(int);
-    int **f68(int);
-    int * const *f69(int);
-    int * const * const f70(int);
-
-    int *(f71)(int);
-    int **(f72)(int);
-    int * const *(f73)(int);
-    int * const * const (f74)(int);
-
-    int (*f75)(int);
-    int (**f76)(int);
-    int (* const *f77)(int);
-    int (* const * const f78)(int);
-
-    int (*(*f79)(int))();
-    int (*(* const f80)(int))();
-    int (* const(* const f81)(int))();
-}
Index: c/Tests/Syntax/TypedefParamDeclarator.c
===================================================================
--- src/Tests/Syntax/TypedefParamDeclarator.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,150 +1,0 @@
-typedef int
-     f0,   f1,   f2,   f3,   f4,   f5,   f6,   f7,   f8,   f9,
-    f10,  f11,  f12,  f13,  f14,  f15,  f16,  f17,  f18,  f19,
-    f20,  f21,  f22,  f23,  f24,  f25,  f26,  f27,  f28,  f29,
-    f30,  f31,  f32,  f33,  f34,  f35,  f36,  f37,  f38,  f39,
-    f40,  f41,  f42,  f43,  f44,  f45,  f46,  f47,  f48,  f49,
-    f50,  f51,  f52,  f53,  f54,  f55,  f56,  f57,  f58,  f59,
-    f60,  f61,  f62,  f63,  f64,  f65,  f66,  f67,  f68,  f69,
-    f70,  f71,  f72,  f73,  f74,  f75,  f76,  f77,  f78,  f79,
-    f80,  f81,  f82,  f83,  f84,  f85,  f86,  f87,  f88,  f89,
-    f90,  f91,  f92,  f93,  f94,  f95,  f96,  f97,  f98,  f99,
-    f100, f101, f102, f103, f104, f105, f106, f107, f108, f109,
-    f110, f111, f112, f113, f114, f115, f116, f117, f118, f119;
-
-int fred(
-/*
-    //int f0[](),
-    //int (f0[])(),
-    //int f0()[],
-    //int f0()(),
-    //int (*f0)()(),
-    //int ((*f0())())[],
-*/
-    int f1,
-
-    int *f3,
-    int **f4,
-    int * const *f5,
-    int * const * const f6,
-
-    int (*f11),
-    int (**f12),
-    int (* const *f13),
-    int (* const * const f14),
-
-    int f15[],
-    int f16[10],
-
-    int *f19[],
-    int *f20[10],
-    int **f21[],
-    int **f22[10],
-    int * const *f23[],
-    int * const *f24[10],
-    int * const * const f25[],
-    int * const * const f26[10],
-
-    int (*f35[]),
-    int (*f36[10]),
-    int (**f37[]),
-    int (**f38[10]),
-    int (* const *f39[]),
-    int (* const *f40[10]),
-    int (* const * const f41[]),
-    int (* const * const f42[10]),
-
-    int f43[][3],
-    int f44[3][3],
-/*
-    int (f45[])[3],
-    int (f46[3])[3],
-    int ((f47[]))[3],
-    int ((f48[3]))[3],
-*/
-    int *f49[][3],
-    int *f50[3][3],
-    int **f51[][3],
-    int **f52[3][3],
-    int * const *f53[][3],
-    int * const *f54[3][3],
-    int * const * const f55[][3],
-    int * const * const f56[3][3],
-
-    int (*f57[][3]),
-    int (*f58[3][3]),
-    int (**f59[][3]),
-    int (**f60[3][3]),
-    int (* const *f61[][3]),
-    int (* const *f62[3][3]),
-    int (* const * const f63[][3]),
-    int (* const * const f64[3][3]),
-
-    int f65(int),
-/*
-    int (f66)(int),
-*/
-    int *f67(int),
-    int **f68(int),
-    int * const *f69(int),
-    int * const * const f70(int),
-/*
-    int *(f71)(int),
-    int **(f72)(int),
-    int * const *(f73)(int),
-    int * const * const (f74)(int),
-*/
-    int (*f75)(int),
-    int (**f76)(int),
-    int (* const *f77)(int),
-    int (* const * const f78)(int),
-
-    int (*(*f79)(int))(),
-    int (*(* const f80)(int))(),
-    int (* const(* const f81)(int))(),
-
-    int f82[const *],
-    int f83[const 3],
-    int f84[static 3],
-    int f85[static const 3],
-
-    int (f86[const *]),
-    int (f87[const 3]),
-    int (f88[static 3]),
-    int (f89[static const 3]),
-
-    int *f90[const *],
-    int *f91[const 3],
-    int **f92[static 3],
-    int * const *f93[static const 3],
-    int * const * const f94[static const 3],
-
-    int *(f95[const *]),
-    int *(f96[const 3]),
-    int **(f97[static 3]),
-    int * const *(f98[static const 3]),
-    int * const * const (f99[static const 3]),
-
-    int f100[const *][3],
-    int f101[const 3][3],
-    int f102[static 3][3],
-    int f103[static const 3][3],
-
-    int (f104[const *][3]),
-    int (f105[const 3][3]),
-    int (f106[static 3][3]),
-    int (f107[static const 3][3]),
-
-    int *f108[const *][3],
-    int *f109[const 3][3],
-    int **f110[static 3][3],
-    int * const *f111[static const 3][3],
-    int * const * const f112[static const 3][3],
-
-    int *(f113[const *][3]),
-    int *(f114[const 3][3]),
-    int **(f115[static 3][3]),
-    int * const *(f116[static const 3][3]),
-    int * const * const (f117[static const 3][3])
-    ) {
-}
Index: c/Tests/Syntax/Typeof.c
===================================================================
--- src/Tests/Syntax/Typeof.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,10 +1,0 @@
-int main() {
-    int *v1;
-    typeof(v1) v2;
-    typeof(*v1) v3[4];
-    char *v4[4];
-    typeof(typeof(char *)[4]) v5;
-    typeof (int *) v6;
-    typeof( int ( int, int p ) ) *v7;
-    typeof( [int] ( int, int p ) ) *v8;
-}
Index: c/Tests/Syntax/VariableDeclarator.c
===================================================================
--- src/Tests/Syntax/VariableDeclarator.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,162 +1,0 @@
-int f1;
-int (f2);
-
-int *f3;
-int **f4;
-int * const *f5;
-int * const * const f6;
-
-int *(f7);
-int **(f8);
-int * const *(f9);
-int * const * const (f10);
-
-int (*f11);
-int (**f12);
-int (* const *f13);
-int (* const * const f14);
-
-int f15[];
-int f16[10];
-int (f17[]);
-int (f18[10]);
-
-int *f19[];
-int *f20[10];
-int **f21[];
-int **f22[10];
-int * const *f23[];
-int * const *f24[10];
-int * const * const f25[];
-int * const * const f26[10];
-
-int *(f27[]);
-int *(f28[10]);
-int **(f29[]);
-int **(f30[10]);
-int * const *(f31[]);
-int * const *(f32[10]);
-int * const * const (f33[]);
-int * const * const (f34[10]);
-
-int (*f35)[];
-int (*f36)[10];
-int (**f37)[];
-int (**f38)[10];
-int (* const *f39)[];
-int (* const *f40)[10];
-int (* const * const f41)[];
-int (* const * const f42)[10];
-
-int f43[][3];
-int f44[3][3];
-int (f45[])[3];
-int (f46[3])[3];
-int ((f47[]))[3];
-int ((f48[3]))[3];
-
-int *f49[][3];
-int *f50[3][3];
-int **f51[][3];
-int **f52[3][3];
-int * const *f53[][3];
-int * const *f54[3][3];
-int * const * const f55[][3];
-int * const * const f56[3][3];
-
-int (*f57[][3]);
-int (*f58[3][3]);
-int (**f59[][3]);
-int (**f60[3][3]);
-int (* const *f61[][3]);
-int (* const *f62[3][3]);
-int (* const * const f63[][3]);
-int (* const * const f64[3][3]);
-
-int f65(int);
-int (f66)(int);
-
-int *f67(int);
-int **f68(int);
-int * const *f69(int);
-int * const * const f70(int);
-
-int *(f71)(int);
-int **(f72)(int);
-int * const *(f73)(int);
-
-int * const * const (f74)(int);
-
-int (*f75)(int);
-int (**f76)(int);
-int (* const *f77)(int);
-int (* const * const f78)(int);
-
-int (*(*f79)(int))();
-int (*(* const f80)(int))();
-int (* const(* const f81)(int))();
-
-// errors
-
-//int fe0[]();				// array of functions
-//int (fe1[])();				// array of functions
-//int fe2()[];				// returning an array
-//int fe3()();				// returning a function
-//int (*fe4)()();				// returning a function
-//int ((*fe5())())[];			// returning an array
-
-// Cforall extensions
-
-* int cf3;
-* * int cf4;
-* const * int cf5;
-const * const * int cf6;
-
-[] int cf15;
-[10] int cf16;
-
-[] * int cf19;
-[10] * int cf20;
-int **cf21[];
-[10] * * int cf22;
-[] * const * int cf23;
-[10] * const * int cf24;
-[] const * const * int cf25;
-[10] const * const * int cf26;
-
-* [] int cf35;
-* [10] int cf36;
-* * [] int cf37;
-* * [10] int cf38;
-* const * [] int cf39;
-* const * [10] int cf40;
-const * const * [] int cf41;
-const * const * [10] int cf42;
-
-[][3] int cf43;
-[3][3] int cf44;
-
-[][3] * int cf49;
-[3][3] * int cf50;
-[][3] * * int cf51;
-[3][3] * * int cf52;
-[][3] const * int cf53;
-[3][3] * const * int cf54;
-[][3] const * const * int cf55;
-[3][3] const * const * int cf56;
-
-[int] cf65(int);
-[int] cf66(int);
-
-[* int] cf67(int);
-[* * int] cf68(int);
-[const * * int] cf69(int);
-[const * const * int] cf70(int);
-
-
-* [20] double z;
-[20] * char w;
-
-// function pointer
-
-*[]*[]* [ *[]*[] int ]( *[]*[] int, *[]*[] int ) v3;
Index: src/Tests/Tuple.c
===================================================================
--- src/Tests/Tuple.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Tuple.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,70 @@
+int f( int, int );
+int g( int, int, int );
+static [ int, int *, * int, int ] h( int a, int b, * int c, [] char d );
+
+struct inner {
+	int f2, f3;
+};
+
+struct outer {
+	int f1;
+	struct inner i;
+	double f4;
+} s, *sp;
+
+const volatile [ int, int ] t1;
+static const [ int, const int ] t2;
+const static [ int, const int ] t3;
+
+[ int rc ] printf( * char fmt, ... );
+int printf( char *fmt, ... );
+
+[ short x, unsigned y ] f1( int w ) {
+	[ y, x ] = [ x, y ] = [ w, 23 ];
+}
+
+[ [ int, char, long, int ] r ] g1() {
+	short x, p;
+	unsigned int y;
+	[ int, int ] z;
+
+	[ x, y, z ] = [ p, f( 17 ), 3 ];
+	[ x, y, z ] = ([short, unsigned int, [int, int]])([ p, f( 17 ), 3 ]);
+	r = [ x, y, z ];
+}
+
+[ int rc ] main( int argc, ** char argv ) {
+	int a, b, c, d;
+	struct outer t = { .[ f1,f4 ] : [ 1,7.0 ] };
+	f( [ 3,5 ] );
+	g( [ 3,5 ], 3 );
+	f( t1 );
+	g( t1, 3 );
+
+	[ , , , ];						/* empty tuple */
+	[ 3, 5 ];
+	[ a, b ] = 3;
+	[ a, b ] = [ 4.6 ];
+	[ a, b ] = [ c, d ] = [ 3, 5 ];
+	[ a, b, [ c ] ] = [ 2,[ a, b ] ];
+	[ a, b ] = 3 > 4 ? [ b, 6 ] : [ 7, 8 ];
+
+	t1 = [ a, b ];
+	t1 = t2 = [ a, b ];
+	[ a, b ] = [ c, d ] = d += c += 1;
+	[ a, b ] = [ c, d ] = t1;
+	[ a, b ] = t1 = [ c, d ];
+	[ a, b ] = t1 = t2 = [ c, d ];
+	t1 = [ 3, 4 ] = [ 3, 4 ] = t1 = [ 3, 4 ];
+
+	s.[ f1, i.[ f2, f3 ], f4 ] = [ 11, 12, 13, 3.14159 ];
+	s.[ f1, i.[ f2, f3 ], f4 ] = h( 3, 3, 0, "abc" );
+	[ a, , b, ] = h( 3, 3, 0, "abc" );			/* ignore some results */
+	sp->[ f4,f1 ] = sp->[ f1, f4 ];
+	printf( "expecting 3, 17, 23, 4; got %d, %d, %d, %d\n", s.[ f4, i.[ f3, f2 ], f1 ] );
+	rc = 0;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: c/Tests/TupleAssign/Initialization2.c
===================================================================
--- src/Tests/TupleAssign/Initialization2.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,15 +1,0 @@
-int a = 3;
-struct { int x; int y; } z = { 3, 7 };      /* OK */
-struct { int x; int y; } z1 = { .[x,y]:3 }; /* OK */
-struct { int x; int y; } z2 = { y:3, x:4 }; /* OK */
-struct { int x; struct { int y1; int y2; } y; } z3 = { x:3, y:{y1:4, y2:5} };  /* OK */
-struct { int x; struct { int y1; int y2; } y; } z3 = { y:{y2:9, y1:8}, x:7 };  /* OK */
-struct { int x; struct { int y1; int y2; } y; } z3 = { x:7, {y2:9, y1:8} };  /* OK */
-struct { int x; struct { int y1; int y2; } y; } z3 = { 3, {4, 5} };   /* OK */
-//struct { int x; struct { int y1; int y2; } } z3 = {4, {5,6}};
-//struct { int x; struct { int y1; int y2; } y; } z4 = { y:{4,5}, a:3 };
-//struct { int x; struct { int y1; int y2; } y; } z5 = { a:3, {4,5}};
-//int x[20] = { [10]: 4 };
-struct t { int a, b; };
-struct t x = { b:4, a:3 };
-struct { int x; int y; } z6= {5,6,4};  /* (should be an) error */
Index: src/Tests/TypeGenerator.c
===================================================================
--- src/Tests/TypeGenerator.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/TypeGenerator.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,30 @@
+context addable( type T ) {
+	T ?+?( T,T );
+	T ?=?( T*, T);
+};
+
+type List1( type T | addable( T ) ) = struct { T data; List1( T ) *next; } *;
+typedef List1( int ) ListOfIntegers;
+//List1( int ) li;
+ListOfIntegers li;
+int f( List1( int ) ( (*g ))( int ) );
+[int] h( * List1( int ) p );							// new declaration syntax
+
+struct( type T ) S2 { T i; };							// actual definition
+struct( int ) S3 v1, *p;								// expansion and instantiation
+struct( type T )( int ) S24 { T i; } v2;				// actual definition, expansion and instantiation
+struct( type T )( int ) { T i; } v2;					// anonymous actual definition, expansion and instantiation
+
+struct( type T | addable( T ) ) node { T data; struct( T ) node *next; };
+type List( type T ) = struct( T ) node *;
+List( int ) my_list;
+
+type Complex | addable( Complex );
+
+int main() {
+	(struct( int ) node)my_list;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/Typedef.c
===================================================================
--- src/Tests/Typedef.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Typedef.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,47 @@
+typedef int T;
+
+void f( void ) {
+    int T( T );
+    T( 3 );
+}
+
+struct {
+    T (T);
+} fred = { 3 };
+
+typedef int (*a)(int, char);
+a b;
+
+int g(void) {
+    double a;
+}
+a c;
+
+typedef typeof(3) x, y;  // GCC
+
+x p;
+y q;
+
+int main() {
+    typedef typeof(3) z, p;
+    z w;
+    p x;
+}
+
+// new-style function definitions
+
+typedef [10] * int arrayOf10Pointers;
+arrayOf10Pointers array;
+typedef const * int constantPointer;
+typedef * [ int ]( [] int ) funcPtr;
+typedef [ int ] funcProto( []  int );
+typedef [ int, int ] tupleType;
+typedef * [ int, int ] tupleTypePtr;
+typedef * int a, b;
+typedef [ int ] f( * int ), g;
+typedef [ * [static 10] int ] t;
+typedef [ * [static 10] int x ] f();
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/TypedefDeclarator.c
===================================================================
--- src/Tests/TypedefDeclarator.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/TypedefDeclarator.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,120 @@
+typedef int
+	 f0,  f1,  f2,  f3,  f4,  f5,  f6,  f7,  f8,  f9,
+	f10, f11, f12, f13, f14, f15, f16, f17, f18, f19,
+	f20, f21, f22, f23, f24, f25, f26, f27, f28, f29,
+	f30, f31, f32, f33, f34, f35, f36, f37, f38, f39,
+	f40, f41, f42, f43, f44, f45, f46, f47, f48, f49,
+	f50, f51, f52, f53, f54, f55, f56, f57, f58, f59,
+	f60, f61, f62, f63, f64, f65, f66, f67, f68, f69,
+	f70, f71, f72, f73, f74, f75, f76, f77, f78, f79,
+	f80, f81, f82, f83, f84, f85, f86, f87, f88, f89;
+
+int main() {
+	//int f0[]();
+	//int (f0[])();
+	//int f0()[];
+	//int f0()();
+	//int (*f0)()();
+	//int ((*f0())())[];
+	
+	int f1;
+	int (f2);
+
+	int *f3;
+	int **f4;
+	int * const *f5;
+	int * const * const f6;
+
+	int *(f7);
+	int **(f8);
+	int * const *(f9);
+	int * const * const (f10);
+
+	int (*f11);
+	int (**f12);
+	int (* const *f13);
+	int (* const * const f14);
+
+	int f15[];
+	int f16[10];
+	int (f17[]);
+	int (f18[10]);
+
+	int *f19[];
+	int *f20[10];
+	int **f21[];
+	int **f22[10];
+	int * const *f23[];
+	int * const *f24[10];
+	int * const * const f25[];
+	int * const * const f26[10];
+
+	int *(f27[]);
+	int *(f28[10]);
+	int **(f29[]);
+	int **(f30[10]);
+	int * const *(f31[]);
+	int * const *(f32[10]);
+	int * const * const (f33[]);
+	int * const * const (f34[10]);
+
+	int (*f35[]);
+	int (*f36[10]);
+	int (**f37[]);
+	int (**f38[10]);
+	int (* const *f39[]);
+	int (* const *f40[10]);
+	int (* const * const f41[]);
+	int (* const * const f42[10]);
+
+	int f43[][3];
+	int f44[3][3];
+	int (f45[])[3];
+	int (f46[3])[3];
+	int ((f47[]))[3];
+	int ((f48[3]))[3];
+
+	int *f49[][3];
+	int *f50[3][3];
+	int **f51[][3];
+	int **f52[3][3];
+	int * const *f53[][3];
+	int * const *f54[3][3];
+	int * const * const f55[][3];
+	int * const * const f56[3][3];
+
+	int (*f57[][3]);
+	int (*f58[3][3]);
+	int (**f59[][3]);
+	int (**f60[3][3]);
+	int (* const *f61[][3]);
+	int (* const *f62[3][3]);
+	int (* const * const f63[][3]);
+	int (* const * const f64[3][3]);
+
+	int f65(int);
+	int (f66)(int);
+
+	int *f67(int);
+	int **f68(int);
+	int * const *f69(int);
+	int * const * const f70(int);
+
+	int *(f71)(int);
+	int **(f72)(int);
+	int * const *(f73)(int);
+	int * const * const (f74)(int);
+
+	int (*f75)(int);
+	int (**f76)(int);
+	int (* const *f77)(int);
+	int (* const * const f78)(int);
+
+	int (*(*f79)(int))();
+	int (*(* const f80)(int))();
+	int (* const(* const f81)(int))();
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/TypedefParamDeclarator.c
===================================================================
--- src/Tests/TypedefParamDeclarator.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/TypedefParamDeclarator.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,154 @@
+typedef int
+	 f0,   f1,   f2,   f3,   f4,   f5,   f6,   f7,   f8,   f9,
+	f10,  f11,  f12,  f13,  f14,  f15,  f16,  f17,  f18,  f19,
+	f20,  f21,  f22,  f23,  f24,  f25,  f26,  f27,  f28,  f29,
+	f30,  f31,  f32,  f33,  f34,  f35,  f36,  f37,  f38,  f39,
+	f40,  f41,  f42,  f43,  f44,  f45,  f46,  f47,  f48,  f49,
+	f50,  f51,  f52,  f53,  f54,  f55,  f56,  f57,  f58,  f59,
+	f60,  f61,  f62,  f63,  f64,  f65,  f66,  f67,  f68,  f69,
+	f70,  f71,  f72,  f73,  f74,  f75,  f76,  f77,  f78,  f79,
+	f80,  f81,  f82,  f83,  f84,  f85,  f86,  f87,  f88,  f89,
+	f90,  f91,  f92,  f93,  f94,  f95,  f96,  f97,  f98,  f99,
+	f100, f101, f102, f103, f104, f105, f106, f107, f108, f109,
+	f110, f111, f112, f113, f114, f115, f116, f117, f118, f119;
+
+int fred(
+/*
+	//int f0[](),
+	//int (f0[])(),
+	//int f0()[],
+	//int f0()(),
+	//int (*f0)()(),
+	//int ((*f0())())[],
+*/
+	int f1,
+
+	int *f3,
+	int **f4,
+	int * const *f5,
+	int * const * const f6,
+
+	int (*f11),
+	int (**f12),
+	int (* const *f13),
+	int (* const * const f14),
+
+	int f15[],
+	int f16[10],
+
+	int *f19[],
+	int *f20[10],
+	int **f21[],
+	int **f22[10],
+	int * const *f23[],
+	int * const *f24[10],
+	int * const * const f25[],
+	int * const * const f26[10],
+
+	int (*f35[]),
+	int (*f36[10]),
+	int (**f37[]),
+	int (**f38[10]),
+	int (* const *f39[]),
+	int (* const *f40[10]),
+	int (* const * const f41[]),
+	int (* const * const f42[10]),
+
+	int f43[][3],
+	int f44[3][3],
+/*
+	int (f45[])[3],
+	int (f46[3])[3],
+	int ((f47[]))[3],
+	int ((f48[3]))[3],
+*/
+	int *f49[][3],
+	int *f50[3][3],
+	int **f51[][3],
+	int **f52[3][3],
+	int * const *f53[][3],
+	int * const *f54[3][3],
+	int * const * const f55[][3],
+	int * const * const f56[3][3],
+
+	int (*f57[][3]),
+	int (*f58[3][3]),
+	int (**f59[][3]),
+	int (**f60[3][3]),
+	int (* const *f61[][3]),
+	int (* const *f62[3][3]),
+	int (* const * const f63[][3]),
+	int (* const * const f64[3][3]),
+
+	int f65(int),
+/*
+	int (f66)(int),
+*/
+	int *f67(int),
+	int **f68(int),
+	int * const *f69(int),
+	int * const * const f70(int),
+/*
+	int *(f71)(int),
+	int **(f72)(int),
+	int * const *(f73)(int),
+	int * const * const (f74)(int),
+*/
+	int (*f75)(int),
+	int (**f76)(int),
+	int (* const *f77)(int),
+	int (* const * const f78)(int),
+
+	int (*(*f79)(int))(),
+	int (*(* const f80)(int))(),
+	int (* const(* const f81)(int))(),
+
+	int f82[const *],
+	int f83[const 3],
+	int f84[static 3],
+	int f85[static const 3],
+
+	int (f86[const *]),
+	int (f87[const 3]),
+	int (f88[static 3]),
+	int (f89[static const 3]),
+
+	int *f90[const *],
+	int *f91[const 3],
+	int **f92[static 3],
+	int * const *f93[static const 3],
+	int * const * const f94[static const 3],
+
+	int *(f95[const *]),
+	int *(f96[const 3]),
+	int **(f97[static 3]),
+	int * const *(f98[static const 3]),
+	int * const * const (f99[static const 3]),
+
+	int f100[const *][3],
+	int f101[const 3][3],
+	int f102[static 3][3],
+	int f103[static const 3][3],
+
+	int (f104[const *][3]),
+	int (f105[const 3][3]),
+	int (f106[static 3][3]),
+	int (f107[static const 3][3]),
+
+	int *f108[const *][3],
+	int *f109[const 3][3],
+	int **f110[static 3][3],
+	int * const *f111[static const 3][3],
+	int * const * const f112[static const 3][3],
+
+	int *(f113[const *][3]),
+	int *(f114[const 3][3]),
+	int **(f115[static 3][3]),
+	int * const *(f116[static const 3][3]),
+	int * const * const (f117[static const 3][3])
+	) {
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/Typeof.c
===================================================================
--- src/Tests/Typeof.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/Typeof.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,10 @@
+int main() {
+    int *v1;
+    typeof(v1) v2;
+    typeof(*v1) v3[4];
+    char *v4[4];
+    typeof(typeof(char *)[4]) v5;
+    typeof (int *) v6;
+    typeof( int ( int, int p ) ) *v7;
+    typeof( [int] ( int, int p ) ) *v8;
+}
Index: src/Tests/VariableDeclarator.c
===================================================================
--- src/Tests/VariableDeclarator.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/VariableDeclarator.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,162 @@
+int f1;
+int (f2);
+
+int *f3;
+int **f4;
+int * const *f5;
+int * const * const f6;
+
+int *(f7);
+int **(f8);
+int * const *(f9);
+int * const * const (f10);
+
+int (*f11);
+int (**f12);
+int (* const *f13);
+int (* const * const f14);
+
+int f15[];
+int f16[10];
+int (f17[]);
+int (f18[10]);
+
+int *f19[];
+int *f20[10];
+int **f21[];
+int **f22[10];
+int * const *f23[];
+int * const *f24[10];
+int * const * const f25[];
+int * const * const f26[10];
+
+int *(f27[]);
+int *(f28[10]);
+int **(f29[]);
+int **(f30[10]);
+int * const *(f31[]);
+int * const *(f32[10]);
+int * const * const (f33[]);
+int * const * const (f34[10]);
+
+int (*f35)[];
+int (*f36)[10];
+int (**f37)[];
+int (**f38)[10];
+int (* const *f39)[];
+int (* const *f40)[10];
+int (* const * const f41)[];
+int (* const * const f42)[10];
+
+int f43[][3];
+int f44[3][3];
+int (f45[])[3];
+int (f46[3])[3];
+int ((f47[]))[3];
+int ((f48[3]))[3];
+
+int *f49[][3];
+int *f50[3][3];
+int **f51[][3];
+int **f52[3][3];
+int * const *f53[][3];
+int * const *f54[3][3];
+int * const * const f55[][3];
+int * const * const f56[3][3];
+
+int (*f57[][3]);
+int (*f58[3][3]);
+int (**f59[][3]);
+int (**f60[3][3]);
+int (* const *f61[][3]);
+int (* const *f62[3][3]);
+int (* const * const f63[][3]);
+int (* const * const f64[3][3]);
+
+int f65(int);
+int (f66)(int);
+
+int *f67(int);
+int **f68(int);
+int * const *f69(int);
+int * const * const f70(int);
+
+int *(f71)(int);
+int **(f72)(int);
+int * const *(f73)(int);
+
+int * const * const (f74)(int);
+
+int (*f75)(int);
+int (**f76)(int);
+int (* const *f77)(int);
+int (* const * const f78)(int);
+
+int (*(*f79)(int))();
+int (*(* const f80)(int))();
+int (* const(* const f81)(int))();
+
+// errors
+
+//int fe0[]();				// array of functions
+//int (fe1[])();				// array of functions
+//int fe2()[];				// returning an array
+//int fe3()();				// returning a function
+//int (*fe4)()();				// returning a function
+//int ((*fe5())())[];			// returning an array
+
+// Cforall extensions
+
+* int cf3;
+* * int cf4;
+* const * int cf5;
+const * const * int cf6;
+
+[] int cf15;
+[10] int cf16;
+
+[] * int cf19;
+[10] * int cf20;
+int **cf21[];
+[10] * * int cf22;
+[] * const * int cf23;
+[10] * const * int cf24;
+[] const * const * int cf25;
+[10] const * const * int cf26;
+
+* [] int cf35;
+* [10] int cf36;
+* * [] int cf37;
+* * [10] int cf38;
+* const * [] int cf39;
+* const * [10] int cf40;
+const * const * [] int cf41;
+const * const * [10] int cf42;
+
+[][3] int cf43;
+[3][3] int cf44;
+
+[][3] * int cf49;
+[3][3] * int cf50;
+[][3] * * int cf51;
+[3][3] * * int cf52;
+[][3] const * int cf53;
+[3][3] * const * int cf54;
+[][3] const * const * int cf55;
+[3][3] const * const * int cf56;
+
+[int] cf65(int);
+[int] cf66(int);
+
+[* int] cf67(int);
+[* * int] cf68(int);
+[const * * int] cf69(int);
+[const * const * int] cf70(int);
+
+// function pointer
+
+*[]*[]* [ *[]*[] int ]( *[]*[] int, *[]*[] int ) v3;
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: c/Tests/gcc/900407-1.c
===================================================================
--- src/Tests/gcc/900407-1.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,9 +1,0 @@
-foo (int a, int b, int *p)
-{
-  int c;
-  p[2] = a + 0x1000;
-  c = b + 0xffff0000;
-  if ((b + 0xffff0000) == 2)
-    c++;
-  p[2] = c;
-}
Index: c/Tests/gcc/900516-1.c
===================================================================
--- src/Tests/gcc/900516-1.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,2 +1,0 @@
-/* added 'int' to argument */
-f(int c) { return!(c?2.0:1.0); }
Index: c/Tests/gcc/920301-1.c
===================================================================
--- src/Tests/gcc/920301-1.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,2 +1,0 @@
-f() {static void*t[];/*={&&x};*/ x:y:;}
-g() {static unsigned p[5];}
Index: c/Tests/gcc/920409-1.c
===================================================================
--- src/Tests/gcc/920409-1.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,1 +1,0 @@
-x() {int y;y>0.0?y:y-1;}
Index: c/Tests/gcc/920409-2.c
===================================================================
--- src/Tests/gcc/920409-2.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,2 +1,0 @@
-double x() {int x1,x2;double v;
-if (((long)(x1-x2))<1)return -1.0;v=t(v);v=y(1,v>0.0?(int)v:((int)v-1));}
Index: c/Tests/gcc/920410-2.c
===================================================================
--- src/Tests/gcc/920410-2.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,12 +1,0 @@
-joe()
-  {
-    int j;
-
-    while ( 1 )
-      {
-	for ( j = 0; j < 4; j++ )
-	  ;
-	for ( j = 0; j < 4; j++ )
-	  ;
-      }
-  }
Index: c/Tests/gcc/920501-1.c
===================================================================
--- src/Tests/gcc/920501-1.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,1 +1,0 @@
-a() {int**b[]={&&c};c:;}
Index: c/Tests/gcc/920501-11.c
===================================================================
--- src/Tests/gcc/920501-11.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,1 +1,0 @@
-typedef struct{int s;}S;foo() {int i=(int)&(S) {(void*)((int)&(S) {1})};}
Index: c/Tests/gcc/920501-19.c
===================================================================
--- src/Tests/gcc/920501-19.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,1 +1,0 @@
-long long x=0;y() {x=0;}
Index: src/Tests/gcc900407-1.c
===================================================================
--- src/Tests/gcc900407-1.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/gcc900407-1.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,12 @@
+foo ( int a, int b, int *p ) {
+	int c;
+	p[2] = a + 0x1000;
+	c = b + 0xffff0000;
+	if ( (b + 0xffff0000) == 2 )
+		c++;
+	p[2] = c;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/gcc900516-1.c
===================================================================
--- src/Tests/gcc900516-1.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/gcc900516-1.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,1 @@
+f( int c ) { return ! ( c ? 2.0 : 1.0 ); }
Index: src/Tests/gcc920301-1.c
===================================================================
--- src/Tests/gcc920301-1.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/gcc920301-1.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,2 @@
+f() { static void*t[]; /*={&&x};*/ x:y: ; }
+g() { static unsigned p[5]; }
Index: src/Tests/gcc920409-1.c
===================================================================
--- src/Tests/gcc920409-1.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/gcc920409-1.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,1 @@
+x() { int y; y > 0.0 ? y : y - 1; }
Index: src/Tests/gcc920409-2.c
===================================================================
--- src/Tests/gcc920409-2.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/gcc920409-2.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,12 @@
+double x() {
+	int x1, x2;
+	double v;
+	if ( ( (long)(x1-x2) ) < 1 )
+		return -1.0;
+	v = t( v );
+	v = y( 1, v > 0.0 ? (int)v : ( (int)v - 1 ) );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/gcc920410-2.c
===================================================================
--- src/Tests/gcc920410-2.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/gcc920410-2.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,12 @@
+joe() {
+	int j;
+
+	while ( 1 ) {
+		for ( j = 0; j < 4; j++ );
+		for ( j = 0; j < 4; j++ );
+	}
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/gcc920501-1.c
===================================================================
--- src/Tests/gcc920501-1.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/gcc920501-1.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,1 @@
+a() { int **b[] = { &&c }; c: ; }
Index: src/Tests/gcc920501-11.c
===================================================================
--- src/Tests/gcc920501-11.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/gcc920501-11.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,8 @@
+typedef struct{ int s; } S;
+foo() {
+	int i = (int)&(S){ (void*)((int)&(S) {1}) };
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: src/Tests/gcc920501-19.c
===================================================================
--- src/Tests/gcc920501-19.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/Tests/gcc920501-19.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,1 @@
+long long x = 0; y() { x = 0; }
Index: src/Tuples/AssignExpand.cc
===================================================================
--- src/Tuples/AssignExpand.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Tuples/AssignExpand.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 11:24:47 2015
-// Update Count     : 2
+// Last Modified On : Sat Jun 13 08:16:39 2015
+// Update Count     : 4
 //
 
@@ -23,8 +23,10 @@
 #include "AssignExpand.h"
 
+#include "Parser/ParseNode.h"
+
 #include "SynTree/Type.h"
+#include "SynTree/Declaration.h"
+#include "SynTree/Expression.h"
 #include "SynTree/Statement.h"
-#include "SynTree/Expression.h"
-#include "SynTree/Declaration.h"
 
 namespace Tuples {
@@ -100,8 +102,8 @@
 					assert( rhsT->get_results().size() == 1 );
 					// declare temporaries
-					ObjectDecl *lhs = new ObjectDecl( temporaryNamer.newName("_lhs_"), Declaration::NoStorageClass, LinkageSpec::Intrinsic, 0,
+					ObjectDecl *lhs = new ObjectDecl( temporaryNamer.newName("_lhs_"), DeclarationNode::NoStorageClass, LinkageSpec::Intrinsic, 0,
 													  lhsT->get_results().front(), 0 );
 					decls.push_back( new DeclStmt( std::list< Label >(), lhs ) );
-					ObjectDecl *rhs = new ObjectDecl( temporaryNamer.newName("_rhs_"), Declaration::NoStorageClass, LinkageSpec::Intrinsic, 0,
+					ObjectDecl *rhs = new ObjectDecl( temporaryNamer.newName("_rhs_"), DeclarationNode::NoStorageClass, LinkageSpec::Intrinsic, 0,
 													  rhsT->get_results().front(), 0);
 					decls.push_back( new DeclStmt( std::list< Label >(), rhs ));
Index: src/Tuples/FunctionChecker.cc
===================================================================
--- src/Tuples/FunctionChecker.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Tuples/FunctionChecker.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 11:59:55 2015
-// Update Count     : 3
+// Last Modified On : Sat Jun 13 08:17:19 2015
+// Update Count     : 4
 //
 
@@ -75,5 +75,5 @@
 		if ( applicationExpr->get_results().size() > 1 ) {
 			for ( std::list< Type *>::iterator res = applicationExpr->get_results().begin(); res != applicationExpr->get_results().end(); res++ )
-				temporaries.push_back( new ObjectDecl( nameGen->newName(),Declaration::Auto,LinkageSpec::AutoGen, 0, (*res )->clone(), 0 ) );
+				temporaries.push_back( new ObjectDecl( nameGen->newName(), DeclarationNode::Auto, LinkageSpec::AutoGen, 0, (*res )->clone(), 0 ) );
 
 			assert( ! temporaries.empty() );
Index: src/Tuples/MultRet.cc
===================================================================
--- src/Tuples/MultRet.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Tuples/MultRet.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 12:37:57 2015
-// Update Count     : 1
+// Last Modified On : Mon Jun  8 14:54:44 2015
+// Update Count     : 2
 //
 
@@ -141,7 +141,6 @@
 	// Auxiliary function to generate new names for the `output' parameters
 	DeclStmt *MVRMutator::newVar( DeclarationWithType *reqDecl ) {
-		// std::ostrstream os;
+		// std::ostringstream os;
 		// os << "__" << curVal++ << "__";// << std::ends;
-		// os.freeze( false );
 
 		ObjectDecl *decl;
Index: src/Tuples/module.mk
===================================================================
--- src/Tuples/module.mk	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/Tuples/module.mk	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,2 +1,18 @@
+######################### -*- Mode: Makefile-Gmake -*- ########################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## module.mk -- 
+##
+## Author           : Richard C. Bilson
+## Created On       : Mon Jun  1 17:49:17 2015
+## Last Modified By : Peter A. Buhr
+## Last Modified On : Mon Jun  1 17:54:33 2015
+## Update Count     : 1
+###############################################################################
+
 SRC += 	Tuples/Mutate.cc \
 	Tuples/AssignExpand.cc \
@@ -4,5 +20,6 @@
 	Tuples/TupleAssignment.cc \
 	Tuples/FunctionChecker.cc \
-	Tuples/NameMatcher.cc \
+	Tuples/NameMatcher.cc
+
 #	Tuples/MultipleAssign.cc \
 #	Tuples/FlattenTuple.cc \
@@ -10,5 +27,3 @@
 #	Tuples/FixReturn.cc \
 #	Tuples/MassAssignment.cc \
-#	Tuples/TupleFixer.cc \
-	$(NULL)
-
+#	Tuples/TupleFixer.cc
Index: c/attr-ex
===================================================================
--- src/attr-ex	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,49 +1,0 @@
-I Compile-time resolution
-=========================
-
-1. an isolated name, where the argument is implicitly determined by the result context
-
-@max
-
-2. a direct application to a manifest type
-
-@max( int )
-
-3. constraining a type variable; the application is implicitly performed at the call site as in (2)
-
-forall( type T | { T @max( T ); } ) T x( T t );
-
-
-II Run-time resolution
-======================
-
-1. an indirect reference, where the argument is implicitly determined by the result context
-
-attr_var = &@max;
-x = (*attr_var);
-
-2. an indirect application to a manifest type
-
-(*attr_var)( int )
-
-3. a direct application to a type variable
-
-@max( T )
-
-Under what circumstances can this be done at compile/link time?
-
-
-III Declaration forms
-=====================
-
-1. monomorphic with implicit argument
-
-int @max;
-
-2. monomorphic with explicit argument
-
-int @max( int );
-
-3. polymorphic
-
-forall( type T | constraint( T ) ) int @attr( T );
Index: c/comments.txt
===================================================================
--- src/comments.txt	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,7 +1,0 @@
-BasicInit::mutate(SynTree::CompoundStmt *compoundStmt)
-	- collect all decl stmts from kids
-	- move to top of block
-	- replace initializers with assignment stmts
-
-	- throw( 0 ) s.b. throw SemanticError( "type doesn't match initializer in ", odecl );
-	- doesn't work when initialization depends on previous computation in same block
Index: src/driver/Makefile.am
===================================================================
--- src/driver/Makefile.am	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/driver/Makefile.am	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,26 @@
+######################## -*- Mode: Makefile-Automake -*- ######################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## Makefile.am -- 
+##
+## Author           : Peter A. Buhr
+## Created On       : Sun May 31 08:49:31 2015
+## Last Modified By : Peter A. Buhr
+## Last Modified On : Sun May 31 08:50:25 2015
+## Update Count     : 1
+###############################################################################
+
+# applies to both programs
+AM_CXXFLAGS = -Wall
+
+bin_PROGRAMS = cfa
+cfa_SOURCES = cfa.cc
+
+# put into lib for now
+cc1libdir = ${libdir}
+cc1lib_PROGRAMS = cc1
+cc1_SOURCES = cc1.cc
Index: src/driver/Makefile.in
===================================================================
--- src/driver/Makefile.in	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/driver/Makefile.in	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,530 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+######################## -*- Mode: Makefile-Automake -*- ######################
+###############################################################################
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+bin_PROGRAMS = cfa$(EXEEXT)
+cc1lib_PROGRAMS = cc1$(EXEEXT)
+subdir = src/driver
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(cc1libdir)"
+PROGRAMS = $(bin_PROGRAMS) $(cc1lib_PROGRAMS)
+am_cc1_OBJECTS = cc1.$(OBJEXT)
+cc1_OBJECTS = $(am_cc1_OBJECTS)
+cc1_LDADD = $(LDADD)
+am_cfa_OBJECTS = cfa.$(OBJEXT)
+cfa_OBJECTS = $(am_cfa_OBJECTS)
+cfa_LDADD = $(LDADD)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/automake/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
+SOURCES = $(cc1_SOURCES) $(cfa_SOURCES)
+DIST_SOURCES = $(cc1_SOURCES) $(cfa_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BACKEND_CC = @BACKEND_CC@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFA_BINDIR = @CFA_BINDIR@
+CFA_INCDIR = @CFA_INCDIR@
+CFA_LIBDIR = @CFA_LIBDIR@
+CFA_PREFIX = @CFA_PREFIX@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GCC_PATH = @GCC_PATH@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# applies to both programs
+AM_CXXFLAGS = -Wall
+cfa_SOURCES = cfa.cc
+
+# put into lib for now
+cc1libdir = ${libdir}
+cc1_SOURCES = cc1.cc
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cc .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/driver/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/driver/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	for p in $$list; do echo "$$p $$p"; done | \
+	sed 's/$(EXEEXT)$$//' | \
+	while read p p1; do if test -f $$p; \
+	  then echo "$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+	sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+	    else { print "f", $$3 "/" $$4, $$1; } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	    test -z "$$files" || { \
+	      echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	      $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	    } \
+	; done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+	      -e 's/$$/$(EXEEXT)/' `; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+install-cc1libPROGRAMS: $(cc1lib_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	test -z "$(cc1libdir)" || $(MKDIR_P) "$(DESTDIR)$(cc1libdir)"
+	@list='$(cc1lib_PROGRAMS)'; test -n "$(cc1libdir)" || list=; \
+	for p in $$list; do echo "$$p $$p"; done | \
+	sed 's/$(EXEEXT)$$//' | \
+	while read p p1; do if test -f $$p; \
+	  then echo "$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+	sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+	    else { print "f", $$3 "/" $$4, $$1; } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	    test -z "$$files" || { \
+	      echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(cc1libdir)$$dir'"; \
+	      $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(cc1libdir)$$dir" || exit $$?; \
+	    } \
+	; done
+
+uninstall-cc1libPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(cc1lib_PROGRAMS)'; test -n "$(cc1libdir)" || list=; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+	      -e 's/$$/$(EXEEXT)/' `; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(cc1libdir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(cc1libdir)" && rm -f $$files
+
+clean-cc1libPROGRAMS:
+	-test -z "$(cc1lib_PROGRAMS)" || rm -f $(cc1lib_PROGRAMS)
+cc1$(EXEEXT): $(cc1_OBJECTS) $(cc1_DEPENDENCIES) $(EXTRA_cc1_DEPENDENCIES) 
+	@rm -f cc1$(EXEEXT)
+	$(CXXLINK) $(cc1_OBJECTS) $(cc1_LDADD) $(LIBS)
+cfa$(EXEEXT): $(cfa_OBJECTS) $(cfa_DEPENDENCIES) $(EXTRA_cfa_DEPENDENCIES) 
+	@rm -f cfa$(EXEEXT)
+	$(CXXLINK) $(cfa_OBJECTS) $(cfa_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cc1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfa.Po@am__quote@
+
+.cc.o:
+@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(cc1libdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-cc1libPROGRAMS clean-generic \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-cc1libPROGRAMS
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-cc1libPROGRAMS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+	clean-cc1libPROGRAMS clean-generic ctags distclean \
+	distclean-compile distclean-generic distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-binPROGRAMS install-cc1libPROGRAMS install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am uninstall-binPROGRAMS uninstall-cc1libPROGRAMS
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: src/driver/cc1.cc
===================================================================
--- src/driver/cc1.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/driver/cc1.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,491 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// cc1.cc -- 
+//
+// Author           : Peter A. Buhr
+// Created On       : Fri Aug 26 14:23:51 2005
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat May 30 08:58:29 2015
+// Update Count     : 51
+//
+
+#include <iostream>
+using std::cerr;
+using std::endl;
+#include <string>
+using std::string;
+#include <cstdio>										// stderr, stdout, perror, fprintf
+#include <cstdlib>										// getenv, exit, mkstemp
+#include <unistd.h>										// execvp, fork, unlink
+#include <sys/wait.h>									// wait
+
+#include "config.h"										// configure info
+
+
+//#define __DEBUG_H__
+
+
+string compiler_name( GCC_PATH );						// path/name of C compiler
+
+string D__GCC_BPREFIX__( "-D__GCC_BPREFIX__=" );
+string D__CFA_FLAGPREFIX__( "-D__CFA_FLAG__=" );
+
+char tmpname[] = P_tmpdir "/CFAXXXXXX";
+int tmpfilefd = -1;
+
+
+bool prefix( string arg, string pre ) {
+	return arg.substr( 0, pre.size() ) == pre;
+} // prefix
+
+
+void checkEnv( const char *args[], int &nargs ) {
+	char *value;
+
+	value = getenv( "__COMPILER__" );
+	if ( value != NULL ) {
+		compiler_name = value;
+#ifdef __DEBUG_H__
+		cerr << "env arg:\"" << compiler_name << "\"" << endl;
+#endif // __DEBUG_H__
+	} // if
+
+	value = getenv( "__GCC_MACHINE__" );
+	if ( value != NULL ) {
+		args[nargs] = ( *new string( value ) ).c_str(); // pass the argument along
+#ifdef __DEBUG_H__
+		cerr << "env arg:\"" << args[nargs] << "\"" << endl;
+#endif // __DEBUG_H__
+		nargs += 1;
+	} // if
+
+	value = getenv( "__GCC_VERSION__" );
+	if ( value != NULL ) {
+		args[nargs] = ( *new string( value ) ).c_str(); // pass the argument along
+#ifdef __DEBUG_H__
+		cerr << "env arg:\"" << args[nargs] << "\"" << endl;
+#endif // __DEBUG_H__
+		nargs += 1;
+	} // if
+} // checkEnv
+
+
+void rmtmpfile() {
+	if ( unlink( tmpname ) == -1 ) {					// remove tmpname
+		perror ( "CFA Translator error: cpp failed" );
+		exit( EXIT_FAILURE );
+	} // if
+	tmpfilefd = -1;										// mark closed
+} // rmtmpfile
+
+
+void sigTermHandler( int signal ) {
+	if ( tmpfilefd != -1 ) {							// RACE, file created ?
+		rmtmpfile();									// remove
+		exit( EXIT_FAILURE );							// terminate 
+	} // if
+} // sigTermHandler
+
+
+void Stage1( const int argc, const char * const argv[] ) {
+	int code;
+	int i;
+
+	string arg;
+	string bprefix;
+
+	const char *cpp_in = NULL;
+	const char *cpp_out = NULL;
+
+	bool CFA_flag = false;
+	bool cpp_flag = false;
+	const char *o_name = NULL;
+
+	const char *args[argc + 100];						// leave space for 100 additional cpp command line values
+	int nargs = 1;										// number of arguments in args list; 0 => command name
+	const char *uargs[20];								// leave space for 20 additional cfa-cpp command line values
+	int nuargs = 1;										// 0 => command name
+
+	signal( SIGINT,  sigTermHandler );
+	signal( SIGTERM, sigTermHandler );
+
+	// process all the arguments
+
+	checkEnv( args, nargs );							// arguments passed via environment variables
+
+	for ( i = 1; i < argc; i += 1 ) {
+#ifdef __DEBUG_H__
+		cerr << "argv[" << i << "]:\"" << argv[i] << "\"" << endl;
+#endif // __DEBUG_H__
+		arg = argv[i];
+#ifdef __DEBUG_H__
+		cerr << "arg:\"" << arg << "\"" << endl;
+#endif // __DEBUG_H__
+		if ( prefix( arg, "-" ) ) {
+			// strip g++ flags that are inappropriate or cause duplicates in subsequent passes
+
+			if ( arg == "-quiet" ) {
+			} else if ( arg == "-imultilib" || arg == "-imultiarch" ) {
+				i += 1;									// and the argument
+			} else if ( prefix( arg, "-A" ) ) {
+			} else if ( prefix( arg, "-D__GNU" ) ) {
+				//********
+				// GCC 5.6.0 SEPARATED THE -D FROM THE ARGUMENT!
+				//********
+			} else if ( arg == "-D" && prefix( argv[i + 1], "__GNU" ) ) {
+				i += 1;									// and the argument
+
+				// strip flags controlling cpp step
+
+			} else if ( arg == "-D__CPP__" ) {
+				cpp_flag = true;
+			} else if ( arg == "-D" && string( argv[i + 1] ) == "__CPP__" ) {
+				i += 1;									// and the argument
+				cpp_flag = true;
+			} else if ( arg == "-D__CFA__" ) {
+				CFA_flag = true;
+			} else if ( arg == "-D" && string( argv[i + 1] ) == "__CFA__" ) {
+				i += 1;									// and the argument
+				CFA_flag = true;
+			} else if ( prefix( arg, D__CFA_FLAGPREFIX__ ) ) {
+				uargs[nuargs] = ( *new string( arg.substr( D__CFA_FLAGPREFIX__.size() ) ) ).c_str();
+				nuargs += 1;
+			} else if ( arg == "-D" && prefix( argv[i + 1], D__CFA_FLAGPREFIX__.substr(2) ) ) {
+				uargs[nuargs] = ( *new string( string( argv[i + 1] ).substr( D__CFA_FLAGPREFIX__.size() - 2 ) ) ).c_str();
+				nuargs += 1;
+				i += 1;									// and the argument
+			} else if ( prefix( arg, D__GCC_BPREFIX__ ) ) {
+				bprefix = arg.substr( D__GCC_BPREFIX__.size() );
+			} else if ( arg == "-D" && prefix( argv[i + 1], D__GCC_BPREFIX__.substr(2) ) ) {
+				bprefix = string( argv[i + 1] ).substr( D__GCC_BPREFIX__.size() - 2 );
+				i += 1;									// and the argument
+
+				// all other flags
+
+			} else if ( arg == "-o" ) {
+				i += 1;
+				o_name = argv[i];
+			} else {
+				args[nargs] = argv[i];					// pass the flag along
+				nargs += 1;
+				// CPP flags with an argument
+				if ( arg == "-D" || arg == "-I" || arg == "-MF" || arg == "-MT" || arg == "-MQ" ||
+					 arg == "-include" || arg == "-imacros" || arg == "-idirafter" || arg == "-iprefix" ||
+					 arg == "-iwithprefix" || arg == "-iwithprefixbefore" || arg == "-isystem" || arg == "-isysroot" ) {
+					i += 1;
+					args[nargs] = argv[i];				// pass the argument along
+					nargs += 1;
+#ifdef __DEBUG_H__
+					cerr << "argv[" << i << "]:\"" << argv[i] << "\"" << endl;
+#endif // __DEBUG_H__
+				} else if ( arg == "-MD" || arg == "-MMD" ) {
+					args[nargs] = "-MF";				// insert before file
+					nargs += 1;
+					i += 1;
+					args[nargs] = argv[i];				// pass the argument along
+					nargs += 1;
+#ifdef __DEBUG_H__
+					cerr << "argv[" << i << "]:\"" << argv[i] << "\"" << endl;
+#endif // __DEBUG_H__
+				} // if
+			} // if
+		} else {										// obtain input and possibly output files
+			if ( cpp_in == NULL ) {
+				cpp_in = argv[i];
+#ifdef __DEBUG_H__
+				cerr << "cpp_in:\"" << cpp_in << "\"" << endl;
+#endif // __DEBUG_H__
+			} else if ( cpp_out == NULL ) {
+				cpp_out = argv[i];
+#ifdef __DEBUG_H__
+				cerr << "cpp_out:\"" << cpp_out << "\""<< endl;
+#endif // __DEBUG_H__
+			} else {
+				cerr << "Usage: " << argv[0] << " input-file [output-file] [options]" << endl;
+				exit( EXIT_FAILURE );
+			} // if
+		} // if
+	} // for
+
+#ifdef __DEBUG_H__
+	cerr << "args:";
+	for ( i = 1; i < nargs; i += 1 ) {
+		cerr << " " << args[i];
+	} // for
+	if ( cpp_in != NULL ) cerr << " " << cpp_in;
+	if ( cpp_out != NULL ) cerr << " " << cpp_out;
+	cerr << endl;
+#endif // __DEBUG_H__
+
+	if ( cpp_in == NULL ) {
+		cerr << "Usage: " << argv[0] << " input-file [output-file] [options]" << endl;
+		exit( EXIT_FAILURE );
+	} // if
+
+	if ( cpp_flag ) {
+		// The -E flag is specified on the cfa command so only run the preprocessor and output is written to standard
+		// output or -o. The call to cfa has a -E so it does not have to be added to the argument list.
+
+		args[0] = compiler_name.c_str();
+		args[nargs] = cpp_in;
+		nargs += 1;
+		if ( o_name != NULL ) {							// location for output
+			args[nargs] = "-o";
+			nargs += 1;
+			args[nargs] = o_name;
+			nargs += 1;
+		} // if
+		args[nargs] = NULL;								// terminate argument list
+
+#ifdef __DEBUG_H__
+		cerr << "nargs: " << nargs << endl;
+		for ( i = 0; args[i] != NULL; i += 1 ) {
+			cerr << args[i] << " ";
+		} // for
+		cerr << endl;
+#endif // __DEBUG_H__
+
+		execvp( args[0], (char *const *)args );			// should not return
+		perror( "CFA Translator error: cpp level, execvp" );
+		exit( EXIT_FAILURE );
+	} // if
+
+	// Create a temporary file to store output of the C preprocessor.
+
+	tmpfilefd = mkstemp( tmpname );
+	if ( tmpfilefd == -1 ) {
+		perror( "CFA Translator error: cpp level, mkstemp" );
+		exit( EXIT_FAILURE );
+	} // if
+
+#ifdef __DEBUG_H__
+	cerr << "tmpname:" << tmpname << " tmpfilefd:" << tmpfilefd << endl;
+#endif // __DEBUG_H__
+
+	// Run the C preprocessor and save the output in tmpfile.
+
+	if ( fork() == 0 ) {								 // child process ?
+		// -o xxx.ii cannot be used to write the output file from cpp because no output file is created if cpp detects
+		// an error (e.g., cannot find include file). Whereas, output is always generated, even when there is an error,
+		// when cpp writes to stdout. Hence, stdout is redirected into the temporary file.
+		if ( freopen( tmpname, "w", stdout ) == NULL ) { // redirect stdout to tmpname
+			perror( "CFA Translator error: cpp level, freopen" );
+			exit( EXIT_FAILURE );
+		} // if
+
+		args[0] = compiler_name.c_str();
+		args[nargs] = cpp_in;							// input to cpp
+		nargs += 1;
+		args[nargs] = NULL;								// terminate argument list
+
+#ifdef __DEBUG_H__
+		cerr << "cpp nargs: " << nargs << endl;
+		for ( i = 0; args[i] != NULL; i += 1 ) {
+			cerr << args[i] << " ";
+		} // for
+		cerr << endl;
+#endif // __DEBUG_H__
+
+		execvp( args[0], (char *const *)args );			// should not return
+		perror( "CFA Translator error: cpp level, execvp" );
+		exit( EXIT_FAILURE );
+	} // if
+
+	wait( &code );										// wait for child to finish
+
+#ifdef __DEBUG_H__
+	cerr << "return code from cpp:" << WEXITSTATUS(code) << endl;
+#endif // __DEBUG_H__
+
+	if ( WIFSIGNALED(code) != 0 ) {						// child failed ?
+		rmtmpfile();									// remove tmpname
+		cerr << "CFA Translator error: cpp failed with signal " << WTERMSIG(code) << endl;
+		exit( EXIT_FAILURE );
+	} // if
+
+	if ( WEXITSTATUS(code) != 0 ) {						// child error ?
+		rmtmpfile();									// remove tmpname
+		exit( WEXITSTATUS( code ) );					// do not continue
+	} // if
+
+	// If -CFA flag specified, run the cfa-cpp preprocessor on the temporary file, and output is written to standard
+	// output.  Otherwise, run the cfa-cpp preprocessor on the temporary file and save the result into the output file.
+
+	if ( fork() == 0 ) {								// child runs CFA
+		uargs[0] = ( *new string( bprefix + "/cfa-cpp" ) ).c_str();
+
+		uargs[nuargs] = "-p";
+		nuargs += 1;
+
+		uargs[nuargs] = tmpname;
+		nuargs += 1;
+		if ( o_name != NULL ) {
+			uargs[nuargs] = o_name;
+			nuargs += 1;
+		} else if ( ! CFA_flag ) {						// run cfa-cpp ?
+			uargs[nuargs] = cpp_out;
+			nuargs += 1;
+		} // if
+		uargs[nuargs] = NULL;							// terminate argument list
+
+#ifdef __DEBUG_H__
+		cerr << "cfa-cpp nuargs: " << o_name << " " << CFA_flag << " " << nuargs << endl;
+		for ( i = 0; uargs[i] != NULL; i += 1 ) {
+			cerr << uargs[i] << " ";
+		} // for
+		cerr << endl;
+#endif // __DEBUG_H__
+
+		execvp( uargs[0], (char * const *)uargs );		// should not return
+		perror( "CFA Translator error: cpp level, execvp" );
+		exit( EXIT_FAILURE );
+	} // if
+
+	wait( &code );										// wait for child to finish
+
+#ifdef __DEBUG_H__
+	cerr << "return code from cfa-cpp:" << WEXITSTATUS(code) << endl;
+#endif // __DEBUG_H__
+
+	// Must unlink here because file must exist across execvp.
+	rmtmpfile();										// remove tmpname
+
+	if ( WIFSIGNALED(code) ) {							// child failed ?
+		cerr << "CFA Translator error: cfa-cpp failed with signal " << WTERMSIG(code) << endl;
+		exit( EXIT_FAILURE );
+	} // if
+
+	exit( WEXITSTATUS(code) );
+} // Stage1
+
+
+void Stage2( const int argc, const char * const * argv ) {
+	int i;
+
+	string arg;
+
+	const char *cpp_in = NULL;
+
+	const char *args[argc + 100];						// leave space for 100 additional cfa command line values
+	int nargs = 1;										// number of arguments in args list; 0 => command name
+
+	// process all the arguments
+
+	checkEnv( args, nargs );							// arguments passed via environment variables
+
+	for ( i = 1; i < argc; i += 1 ) {
+#ifdef __DEBUG_H__
+		cerr << "argv[" << i << "]:\"" << argv[i] << "\"" << endl;
+#endif // __DEBUG_H__
+		arg = argv[i];
+#ifdef __DEBUG_H__
+		cerr << "arg:\"" << arg << "\"" << endl;
+#endif // __DEBUG_H__
+		if ( prefix( arg, "-" ) ) {
+			// strip inappropriate flags
+
+			if ( arg == "-quiet" || arg == "-version" || arg == "-fpreprocessed" ||
+				 // Currently CFA does not suppose precompiled .h files.
+				 prefix( arg, "--output-pch" ) ) {
+
+				// strip inappropriate flags with an argument
+
+			} else if ( arg == "-auxbase" || arg == "-auxbase-strip" || arg == "-dumpbase" ) {
+				i += 1;
+#ifdef __DEBUG_H__
+				cerr << "arg:\"" << argv[i] << "\"" << endl;
+#endif // __DEBUG_H__
+
+				// all other flags
+
+			} else {
+				args[nargs] = argv[i];					// pass the flag along
+				nargs += 1;
+				if ( arg == "-o" ) {
+					i += 1;
+					args[nargs] = argv[i];				// pass the argument along
+					nargs += 1;
+#ifdef __DEBUG_H__
+					cerr << "arg:\"" << argv[i] << "\"" << endl;
+#endif // __DEBUG_H__
+				} // if
+			} // if
+		} else {										// obtain input and possibly output files
+			if ( cpp_in == NULL ) {
+				cpp_in = argv[i];
+#ifdef __DEBUG_H__
+				cerr << "cpp_in:\"" << cpp_in << "\"" << endl;
+#endif // __DEBUG_H__
+			} else {
+				cerr << "Usage: " << argv[0] << " input-file [output-file] [options]" << endl;
+				exit( EXIT_FAILURE );
+			} // if
+		} // if
+	} // for
+
+#ifdef __DEBUG_H__
+	cerr << "args:";
+	for ( i = 1; i < nargs; i += 1 ) {
+		cerr << " " << args[i];
+	} // for
+	cerr << endl;
+	if ( cpp_in != NULL ) cerr << " " << cpp_in;
+#endif // __DEBUG_H__
+
+	args[0] = compiler_name.c_str();
+	args[nargs] = "-S";									// only compile and put assembler output in specified file
+	nargs += 1;
+	args[nargs] = cpp_in;
+	nargs += 1;
+	args[nargs] = NULL;									// terminate argument list
+
+#ifdef __DEBUG_H__
+	cerr << "stage2 nargs: " << nargs << endl;
+	for ( i = 0; args[i] != NULL; i += 1 ) {
+		cerr << args[i] << " ";
+	} // for
+	cerr << endl;
+#endif // __DEBUG_H__
+
+	execvp( args[0], (char * const *)args );			// should not return
+	perror( "CFA Translator error: cpp level, execvp" );
+	exit( EXIT_FAILURE );								// tell gcc not to go any further
+} // Stage2
+
+
+int main( const int argc, const char * const argv[], const char * const env[] ) {
+#ifdef __DEBUG_H__
+	for ( int i = 0; env[i] != NULL; i += 1 ) {
+		cerr << env[i] << endl;
+	} // for
+#endif // __DEBUG_H__
+
+	string arg = argv[1];
+
+	// Currently, stage 1 starts with flag -E and stage 2 with flag -fpreprocessed.
+
+	if ( arg == "-E" ) {
+#ifdef __DEBUG_H__
+		cerr << "Stage1" << endl;
+#endif // __DEBUG_H__
+		Stage1( argc, argv );
+	} else if ( arg == "-fpreprocessed" ) {
+#ifdef __DEBUG_H__
+		cerr << "Stage2" << endl;
+#endif // __DEBUG_H__
+		Stage2( argc, argv );
+	} else {
+		cerr << "Usage: " << argv[0] << " input-file [output-file] [options]" << endl;
+		exit( EXIT_FAILURE );
+	} // if
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: src/driver/cfa.cc
===================================================================
--- src/driver/cfa.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/driver/cfa.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,368 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// cfa.cc -- 
+//
+// Author           : Peter A. Buhr
+// Created On       : Tue Aug 20 13:44:49 2002
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jun 23 17:47:03 2015
+// Update Count     : 119
+//
+
+#include <iostream>
+#include <cstdio>										// perror
+#include <cstdlib>										// putenv, exit
+#include <unistd.h>										// execvp
+#include <string>										// STL version
+
+#include "config.h"										// configure info
+
+using std::cerr;
+using std::endl;
+using std::string;
+
+
+//#define __DEBUG_H__
+
+
+bool prefix( string arg, string pre ) {
+	return arg.substr( 0, pre.size() ) == pre;
+} // prefix
+
+
+void shuffle( const char *args[], int S, int E, int N ) {
+	// S & E index 1 passed the end so adjust with -1
+#ifdef __DEBUG_H__
+	cerr << "shuffle:" << S << " " << E << " " << N << endl;
+#endif // __DEBUG_H__
+	for ( int j = E-1 + N; j > S-1 + N; j -=1 ) {
+#ifdef __DEBUG_H__
+		cerr << "\t" << j << " " << j-N << endl;
+#endif // __DEBUG_H__
+		args[j] = args[j-N];
+	} // for
+} // shuffle
+
+
+int main( int argc, char *argv[] ) {
+	string Version( VERSION );							// current version number from CONFIG
+	string Major( "0" ), Minor( "0" ), Patch( "0" );	// default version numbers
+	int posn1 = Version.find( "." );					// find the divider between major and minor version numbers
+	if ( posn1 == -1 ) {								// not there ?
+		Major = Version;
+	} else {
+		Major = Version.substr( 0, posn1 );
+		int posn2 = Version.find( ".", posn1 + 1 );		// find the divider between minor and patch numbers
+		if ( posn2 == -1 ) {							// not there ?
+			Minor = Version.substr( posn1 );
+		} else {
+			Minor = Version.substr( posn1 + 1, posn2 - posn1 - 1 );
+			Patch = Version.substr( posn2 + 1 );
+		} // if
+	} // if
+
+	string installincdir( CFA_INCDIR );					// fixed location of include files
+	string installlibdir( CFA_LIBDIR );					// fixed location of cc1 and cfa-cpp commands
+
+	string heading;										// banner printed at start of cfa compilation
+	string arg;											// current command-line argument during command-line parsing
+	string Bprefix;										// path where gcc looks for compiler command steps
+	string langstd;										// language standard
+
+	string compiler_path( GCC_PATH );					// path/name of C compiler
+	string compiler_name;								// name of C compiler
+
+	bool nonoptarg = false;								// indicates non-option argument specified
+	bool link = true;									// linking as well as compiling
+	bool verbose = false;								// -v flag
+	bool quiet = false;									// -quiet flag
+	bool debug = true;									// -debug flag
+	bool help = false;									// -help flag
+	bool CFA_flag = false;								// -CFA flag
+	bool cpp_flag = false;								// -E or -M flag, preprocessor only
+	bool std_flag = false;								// -std= flag
+	bool debugging = false;								// -g flag
+
+	const char *args[argc + 100];						// cfa command line values, plus some space for additional flags
+	int sargs = 1;										// starting location for arguments in args list
+	int nargs = sargs;									// number of arguments in args list; 0 => command name
+
+	const char *libs[argc + 20];						// non-user libraries must come separately, plus some added libraries and flags
+	int nlibs = 0;
+
+#ifdef __DEBUG_H__
+	cerr << "CFA:" << endl;
+#endif // __DEBUG_H__
+
+	// process command-line arguments
+
+	for ( int i = 1; i < argc; i += 1 ) {
+#ifdef __DEBUG_H__
+		cerr << "argv[" << i << "]:\"" << argv[i] << "\"" << endl;
+#endif // __DEBUG_H__
+		arg = argv[i];									// convert to string value
+#ifdef __DEBUG_H__
+		cerr << "arg:\"" << arg << "\"" << endl;
+#endif // __DEBUG_H__
+		if ( prefix( arg, "-" ) ) {
+			// pass through arguments
+
+			if ( arg == "-Xlinker" || arg == "-o" ) {
+				args[nargs] = argv[i];					// pass the argument along
+				nargs += 1;
+				i += 1;
+				if ( i == argc ) continue;				// next argument available ?
+				args[nargs] = argv[i];					// pass the argument along
+				nargs += 1;
+			} else if ( arg == "-XCFA" ) {				// CFA pass through
+				i += 1;
+				args[nargs] = ( *new string( string("-D__CFA_FLAG__=") + argv[i] ) ).c_str();
+				nargs += 1;
+
+				// CFA specific arguments
+
+			} else if ( arg == "-CFA" ) {
+				CFA_flag = true;						// strip the -CFA flag
+				link = false;
+				args[nargs] = "-E";						// replace the argument with -E
+				nargs += 1;
+			} else if ( arg == "-debug" ) {
+				debug = true;							// strip the debug flag
+			} else if ( arg == "-nodebug" ) {
+				debug = false;							// strip the nodebug flag
+			} else if ( arg == "-quiet" ) {
+				quiet = true;							// strip the quiet flag
+			} else if ( arg == "-noquiet" ) {
+				quiet = false;							// strip the noquiet flag
+			} else if ( arg == "-help" ) {
+				help = true;							// strip the help flag
+			} else if ( arg == "-nohelp" ) {
+				help = false;							// strip the nohelp flag
+			} else if ( arg == "-compiler" ) {
+				// use the user specified compiler
+				i += 1;
+				if ( i == argc ) continue;				// next argument available ?
+				compiler_path = argv[i];
+				if ( putenv( (char *)( *new string( string( "__U_COMPILER__=" ) + argv[i]) ).c_str() ) != 0 ) {
+					cerr << argv[0] << " error, cannot set environment variable." << endl;
+					exit( EXIT_FAILURE );
+				} // if
+
+				// C specific arguments
+
+			} else if ( arg == "-v" ) {
+				verbose = true;							// verbosity required
+				args[nargs] = argv[i];					// pass the argument along
+				nargs += 1;
+			} else if ( arg == "-g" ) {
+				debugging = true;						// symbolic debugging required
+				args[nargs] = argv[i];					// pass the argument along
+				nargs += 1;
+			} else if ( prefix( arg, "-std=" ) ) {
+				std_flag = true;						// std=XX provided
+				args[nargs] = argv[i];					// pass the argument along
+				nargs += 1;
+			} else if ( prefix( arg, "-B" ) ) {
+				Bprefix = arg.substr(2);				// strip the -B flag
+				args[nargs] = ( *new string( string("-D__GCC_BPREFIX__=") + Bprefix ) ).c_str();
+				nargs += 1;
+			} else if ( prefix( arg, "-b" ) ) {
+				if ( arg.length() == 2 ) {				// separate argument ?
+					i += 1;
+					if ( i == argc ) continue;			// next argument available ?
+					arg += argv[i];						// concatenate argument
+				} // if
+				// later versions of gcc require the -b option to appear at the start of the command line
+				shuffle( args, sargs, nargs, 1 );		// make room at front of argument list
+				args[sargs] = ( *new string( arg ) ).c_str(); // pass the argument along
+				if ( putenv( (char *)( *new string( string( "__GCC_MACHINE__=" ) + arg ) ).c_str() ) != 0 ) {
+					cerr << argv[0] << " error, cannot set environment variable." << endl;
+					exit( EXIT_FAILURE );
+				} // if
+				sargs += 1;
+				nargs += 1;
+			} else if ( prefix( arg, "-V" ) ) {
+				if ( arg.length() == 2 ) {				// separate argument ?
+					i += 1;
+					if ( i == argc ) continue;			// next argument available ?
+					arg += argv[i];						// concatenate argument
+				} // if
+				// later versions of gcc require the -V option to appear at the start of the command line
+				shuffle( args, sargs, nargs, 1 );		// make room at front of argument list
+				args[sargs] = ( *new string( arg ) ).c_str(); // pass the argument along
+				if ( putenv( (char *)( *new string( string( "__GCC_VERSION__=" ) + arg ) ).c_str() ) != 0 ) {
+					cerr << argv[0] << " error, cannot set environment variable." << endl;
+					exit( EXIT_FAILURE );
+				} // if
+				sargs += 1;
+				nargs += 1;
+			} else if ( arg == "-c" || arg == "-S" || arg == "-E" || arg == "-M" || arg == "-MM" ) {
+				args[nargs] = argv[i];					// pass the argument along
+				nargs += 1;
+				if ( arg == "-E" || arg == "-M" || arg == "-MM" ) {
+					cpp_flag = true;					// cpp only
+				} // if
+				link = false;                           // no linkage required
+			} else if ( arg[1] == 'l' ) {
+				// if the user specifies a library, load it after user code
+				libs[nlibs] = argv[i];
+				nlibs += 1;
+			} else {
+				// concatenate any other arguments
+				args[nargs] = argv[i];
+				nargs += 1;
+			} // if
+		} else {
+			// concatenate other arguments
+			args[nargs] = argv[i];
+			nargs += 1;
+			nonoptarg = true;
+		} // if
+	} // for
+
+#ifdef __DEBUG_H__
+	cerr << "args:";
+	for ( int i = 1; i < nargs; i += 1 ) {
+		cerr << " " << args[i];
+	} // for
+	cerr << endl;
+#endif // __DEBUG_H__
+
+	if ( cpp_flag && CFA_flag ) {
+		cerr << argv[0] << " error, cannot use -E and -CFA flags together." << endl;
+		exit( EXIT_FAILURE );
+	} // if
+
+	string d;
+	if ( debug ) {
+		d = "-d";
+	} // if
+
+	args[nargs] = "-I" CFA_INCDIR;
+	nargs += 1;
+
+	if ( link ) {
+		// include the cfa library in case it's needed
+		args[nargs] = "-L" CFA_LIBDIR;
+		nargs += 1;
+		args[nargs] = "-lcfa";
+		nargs += 1;
+	} // if
+
+	// add the correct set of flags based on the type of compile this is
+
+	args[nargs] = ( *new string( string("-D__CFA_MAJOR__=") + Major ) ).c_str();
+	nargs += 1;
+	args[nargs] = ( *new string( string("-D__CFA_MINOR__=") + Minor ) ).c_str();
+	nargs += 1;
+
+	if ( cpp_flag ) {
+		args[nargs] = "-D__CPP__";
+		nargs += 1;
+	} // if
+
+	if ( CFA_flag ) {
+		args[nargs] = "-D__CFA__";
+		nargs += 1;
+	} // if
+
+	if ( debug ) {
+		heading += " (debug)";
+		args[nargs] = "-D__CFA_DEBUG__";
+		nargs += 1;
+	} else {
+		heading += " (no debug)";
+	} // if
+
+	if ( Bprefix.length() == 0 ) {
+		Bprefix = installlibdir;
+		args[nargs] = ( *new string( string("-D__GCC_BPREFIX__=") + Bprefix ) ).c_str();
+		nargs += 1;
+	} // if
+
+	// execute the compilation command
+
+	args[0] = compiler_path.c_str();					// set compiler command for exec
+	// find actual name of the compiler independent of the path to it
+	int p = compiler_path.find_last_of( '/' );			// scan r -> l for first '/'
+	if ( p == -1 ) {
+		compiler_name = compiler_path;
+	} else {
+		compiler_name = *new string( compiler_path.substr( p + 1 ) );
+	} // if
+
+	if ( prefix( compiler_name, "gcc" ) ) {				// allow suffix on gcc name
+		args[nargs] = "-no-integrated-cpp";
+		nargs += 1;
+		args[nargs] = "-Wno-deprecated"; 
+		nargs += 1;
+		if ( ! std_flag ) {								// default c99, if none specified
+			args[nargs] = "-std=c99";
+			nargs += 1;
+		} // if
+		args[nargs] = ( *new string( string("-B") + Bprefix + "/" ) ).c_str();
+		nargs += 1;
+	} else {
+		cerr << argv[0] << " error, compiler " << compiler_name << " not supported." << endl;
+		exit( EXIT_FAILURE );
+	} // if
+
+	for ( int i = 0; i < nlibs; i += 1 ) {				// copy non-user libraries after all user libraries
+		args[nargs] = libs[i];
+		nargs += 1;
+	} // for
+
+	args[nargs] = NULL;									// terminate with NULL
+
+#ifdef __DEBUG_H__
+	cerr << "nargs: " << nargs << endl;
+	cerr << "args:" << endl;
+	for ( int i = 0; args[i] != NULL; i += 1 ) {
+		cerr << " \"" << args[i] << "\"" << endl;
+	} // for
+#endif // __DEBUG_H__
+
+	if ( ! quiet ) {
+		cerr << "CFA " << "Version " << Version << heading << endl;
+
+		if ( help ) {
+			cerr <<
+				"-debug\t\t\t: use cfa runtime with debug checking" << endl <<
+				"-help\t\t\t: print this help message" << endl <<
+				"-quiet\t\t\t: print no messages from the cfa command" << endl <<
+				"-CFA\t\t\t: run the cpp preprocessor and the cfa-cpp translator" << endl <<
+				"-XCFA -cfa-cpp-flag\t: pass next flag as-is to the cfa-cpp translator" << endl <<
+				"...\t\t\t: any other " << compiler_name << " flags" << endl;
+		} // if
+	} // if
+
+	if ( verbose ) {
+		if ( argc == 2 ) exit( EXIT_SUCCESS );			// if only the -v flag is specified, do not invoke gcc
+
+		for ( int i = 0; args[i] != NULL; i += 1 ) {
+			cerr << args[i] << " ";
+		} // for
+		cerr << endl;
+	} // if
+
+	if ( ! nonoptarg ) {
+		cerr << argv[0] << " error, no input files" << endl;
+		exit( EXIT_FAILURE );
+	} // if
+
+	// execute the command and return the result
+
+	execvp( args[0], (char *const *)args );				// should not return
+	perror( "CFA Translator error: cfa level, execvp" );
+	exit( EXIT_FAILURE );
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: src/examples/Makefile.am
===================================================================
--- src/examples/Makefile.am	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/examples/Makefile.am	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,23 @@
+######################## -*- Mode: Makefile-Automake -*- ######################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## Makefile.am -- 
+##
+## Author           : Peter A. Buhr
+## Created On       : Sun May 31 09:08:15 2015
+## Last Modified By : Peter A. Buhr
+## Last Modified On : Thu Jun  4 23:13:10 2015
+## Update Count     : 22
+###############################################################################
+
+# applies to both programs
+CFLAGS = -g -Wall -Wno-unused-function # TEMPORARY: does not build with -O2
+CC = @CFA_BINDIR@/cfa
+
+noinst_PROGRAMS = fstream_test vector_test
+fstream_test_SOURCES = iostream.c fstream.c fstream_test.c
+vector_test_SOURCES = vector_int.c fstream.c iostream.c array.c iterator.c vector_test.c
Index: src/examples/Makefile.in
===================================================================
--- src/examples/Makefile.in	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/Makefile.in	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,50 +1,455 @@
-######################### -*- Mode: Makefile-Gmake -*- ########################
-##
-## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-##
-## The contents of this file are covered under the licence agreement in the
-## file "LICENCE" distributed with Cforall.
-##
-## Makefile.in -- 
-##
-## Author           : Peter A. Buhr
-## Created On       : Sat May 16 11:34:24 2015
-## Last Modified By : Peter A. Buhr
-## Last Modified On : Sat May 16 11:35:25 2015
-## Update Count     : 2
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+######################## -*- Mode: Makefile-Automake -*- ######################
 ###############################################################################
 
-CC := @CFA_BINDIR@/cfa
-CFLAGS = -g -Wall -Wno-unused-function -MMD
-MAKEFILE_NAME = ${firstword ${MAKEFILE_LIST}}	# makefile name
-
-OBJECTS1 = iostream.o fstream.o fstream_test.o
-EXEC1 = fstream_test
-
-OBJECTS2 = vector_int.o fstream.o iostream.o array.o iterator.o vector_test.o
-EXEC2 = vector_test
-
-OBJECTS = ${OBJECTS1} ${OBJECTS2}		# all object files
-DEPENDS = ${OBJECTS:.o=.d}			# substitute ".o" with ".d"
-EXECS = ${EXEC1} ${EXEC2}			# all executables
-
-########## Targets ##########
-
-.PHONY : all clean				# not file names
-
-all : ${EXECS}					# build all executables
-
-${EXEC1} : ${OBJECTS1}				# link step 1st executable
-	${CC} ${CFLAGS} $^ -o $@		# additional object files before $^
-
-${EXEC2} : ${OBJECTS2}				# link step 2nd executable
-	${CC} ${CFLAGS} $^ -o $@		# additional object files before $^
-
-${OBJECTS} : ${MAKEFILE_NAME}			# OPTIONAL : changes to this file => recompile
-
--include ${DEPENDS}				# include *.d files containing program dependences
-
-clean :						# remove files that can be regenerated
-	rm -f ${DEPENDS} ${OBJECTS} ${EXECS} *.class
-
-distclean : clean
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+noinst_PROGRAMS = fstream_test$(EXEEXT) vector_test$(EXEEXT)
+subdir = src/examples
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+PROGRAMS = $(noinst_PROGRAMS)
+am_fstream_test_OBJECTS = iostream.$(OBJEXT) fstream.$(OBJEXT) \
+	fstream_test.$(OBJEXT)
+fstream_test_OBJECTS = $(am_fstream_test_OBJECTS)
+fstream_test_LDADD = $(LDADD)
+am_vector_test_OBJECTS = vector_int.$(OBJEXT) fstream.$(OBJEXT) \
+	iostream.$(OBJEXT) array.$(OBJEXT) iterator.$(OBJEXT) \
+	vector_test.$(OBJEXT)
+vector_test_OBJECTS = $(am_vector_test_OBJECTS)
+vector_test_LDADD = $(LDADD)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/automake/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(fstream_test_SOURCES) $(vector_test_SOURCES)
+DIST_SOURCES = $(fstream_test_SOURCES) $(vector_test_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BACKEND_CC = @BACKEND_CC@
+CC = @CFA_BINDIR@/cfa
+CCDEPMODE = @CCDEPMODE@
+CFA_BINDIR = @CFA_BINDIR@
+CFA_INCDIR = @CFA_INCDIR@
+CFA_LIBDIR = @CFA_LIBDIR@
+CFA_PREFIX = @CFA_PREFIX@
+
+# applies to both programs
+CFLAGS = -g -Wall -Wno-unused-function # TEMPORARY: does not build with -O2
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GCC_PATH = @GCC_PATH@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+fstream_test_SOURCES = iostream.c fstream.c fstream_test.c
+vector_test_SOURCES = vector_int.c fstream.c iostream.c array.c iterator.c vector_test.c
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/examples/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/examples/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstPROGRAMS:
+	-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+fstream_test$(EXEEXT): $(fstream_test_OBJECTS) $(fstream_test_DEPENDENCIES) $(EXTRA_fstream_test_DEPENDENCIES) 
+	@rm -f fstream_test$(EXEEXT)
+	$(LINK) $(fstream_test_OBJECTS) $(fstream_test_LDADD) $(LIBS)
+vector_test$(EXEEXT): $(vector_test_OBJECTS) $(vector_test_DEPENDENCIES) $(EXTRA_vector_test_DEPENDENCIES) 
+	@rm -f vector_test$(EXEEXT)
+	$(LINK) $(vector_test_OBJECTS) $(vector_test_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/array.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstream.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstream_test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iostream.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iterator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector_int.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector_test.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-noinstPROGRAMS ctags distclean distclean-compile \
+	distclean-generic distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: src/examples/abstype.c
===================================================================
--- src/examples/abstype.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/abstype.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,9 +1,22 @@
-// "cfa-cpp -nx Abstype.c"
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// abstype.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:10:01 2015
+// Update Count     : 4
+//
 
 type T | { T x( T ); };
 
 T y( T t ) {
-    T t_instance;
-    return x( t );
+	T t_instance;
+	return x( t );
 }
 
@@ -16,10 +29,15 @@
 
 U x( U u ) {
-    U u_instance = u;
-    (*u)++;
-    return u;
+	U u_instance = u;
+	(*u)++;
+	return u;
 }
 
 int *break_abstraction( U u ) {
-    return u;
+	return u;
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa abstype.c" //
+// End: //
Index: src/examples/array.c
===================================================================
--- src/examples/array.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/array.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,5 +1,16 @@
-// "cfa -c -o array.o array.c"
-// "cfa -CFA array.c > array_out.c"
-// "gcc32 array_out.c ../LibCfa/libcfa.a"
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// array.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:10:13 2015
+// Update Count     : 2
+//
 
 #include "array.h"
@@ -16,5 +27,5 @@
 forall( type array_type, type elt_type | bounded_array( array_type, elt_type ) )
 elt_type * begin( array_type array ) {
-    return &array[ 0 ];
+	return &array[ 0 ];
 }
 
@@ -22,4 +33,9 @@
 forall( type array_type, type elt_type | bounded_array( array_type, elt_type ) )
 elt_type * end( array_type array ) {
-    return &array[ last( array ) ] + 1;
+	return &array[ last( array ) ] + 1;
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa array.c" //
+// End: //
Index: src/examples/array.h
===================================================================
--- src/examples/array.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/array.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,2 +1,17 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// array.h -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:10:32 2015
+// Update Count     : 2
+//
+
 #ifndef ARRAY_H
 #define ARRAY_H
@@ -7,10 +22,10 @@
 // element has index 0.
 context array( type array_type, type elt_type ) {
-    lvalue elt_type ?[?]( array_type, int );
+	lvalue elt_type ?[?]( array_type, int );
 };
 
 // A bounded array is an array that carries its maximum index with it.
 context bounded_array( type array_type, type elt_type | array( array_type, elt_type ) ) {
-    int last( array_type );
+	int last( array_type );
 };
 
@@ -32,2 +47,7 @@
 
 #endif // ARRAY_H
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa array.c" //
+// End: //
Index: src/examples/assert.c
===================================================================
--- src/examples/assert.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/examples/assert.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,23 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// assert.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:10:43 2015
+// Update Count     : 2
+//
+
+void f() {
+	(1) ? (void)(0) : (void)(0);
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa assert.c" //
+// End: //
Index: src/examples/constants.c
===================================================================
--- src/examples/constants.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/constants.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,18 +1,64 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// constants.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Jun  8 20:44:48 2015
+// Update Count     : 75
+//
+
 int foo() {
-    1_234_Ul;
-    -0_177;
-    0x_ff_FF_ff_FF;
-    +9_223_372_036_854_775_807;
-    12.123_333_E_27;
-    0X_1.ff_ff_ff_ff_ff_fff_P_1023;
-    '\0';
-    '\1_2_3';
-    L_'\x_ff_ee';
-    L"a_bc\u_00_40xyz\xff_AA";
-    "a_bc\\
-  u_00_40xyz";
+	1_234_Ul;
+	-0_177;
+	017_777_777_777;
+	037_777_777_777;
+	0x_7f_FF_ff_FF;
+	0x_ff_FF_ff_FF;
+	2_147_483_647;
+	4_294_967_295;
+	4_294_967_296;
+	4_294_967_296U;
+	0_777_777_777_777_777_777_777;
+	01_777_777_777_777_777_777_777;
+	0;
+	0L;
+	0LL;
+	1;
+	1L;
+	1LL;
+	10;
+	10L;
+	10LL;
+	2U;
+	2UL;
+	2ULL;
+	2LU;
+	2LLU;
+	0x_7f_FF_ff_FF_ff_FF_ff_FF;
+	0x_ff_FF_ff_FF_ff_FF_ff_FF;
+	9_223_372_036_854_775_807;
+	18_446_744_073_709_551_615;
+	3.141_59f;
+	3.14159;
+	12.123_333_E_27L;
+	0X_1.ff_ff_ff_ff_ff_fff_P_1023;
+	'\0';
+	'\1_2_3';
+	L'\x_ff_ee';
+	L_"\x_ff_ee";
+	L"a_b\r\Qyc\u_00_40  x_y_z\xff_AA";
+	L_"a_b\r\Qyc\u_00_40\    
+  x_y_z\xff_AA";
+	"abc" "def" "ghi";
 }
 
 // Local Variables: //
-// compile-command: "../../bin/cfa -std=c99 constants.c" //
+// tab-width: 4 //
+// compile-command: "cfa constants.c" //
 // End: //
Index: src/examples/control_structures.c
===================================================================
--- src/examples/control_structures.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/control_structures.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,44 +1,60 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// control_structures.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jun  4 14:02:50 2015
+// Update Count     : 24
+//
+
 int main() {
-  L1: {
-      L2: switch ( 3_333_333 ) {	// underscores in constant
-	  case 1,2,3:			// 4~8, 4...8 not working
-	  L3: for ( ;; ) {
-	      L4: for ( ;; ) {
-		    break L1;		// labelled break
-		    break L2;
-		    break L3;
-		    break L4;
-#if 0
-		    continue L1;	// labelled continue
-		    continue L2;
-		    continue L3;
-		    continue L4;
-#endif
-		} // for
-	    } // for
-	    break;
-	  default:
-	    break L1;
-	} // switch
-	3;
-	int i, j;
-	choose ( 7 ) {
-	  case 1,2,3:
-	    i = 3;
-	    fallthru;
-	  case 4,5,6:
-	    j = 3;
-	  default: ;
-	} // choose
-    } // block
+	L1: {
+		L2:	switch ( 3_333_333 ) {						// underscores in constant
+		  case 1,2,3:									// CFA
+		  case 4~8:										// CFA
+		  case 9 ... 10:								// gcc, must have spaces
+				L3: for ( ;; ) {
+					L4: for ( ;; ) {
+						break L1;						// labelled break
+						break L2;
+						break L3;
+						break L4;
+						//continue L1;					// labelled continue - should be an error 
+						//continue L2;					// should be an error
+						continue L3;
+						continue L4;
+					} // for
+				} // for
+				break;
+			default:
+				break L1;
+		} // switch
+		3;
+		int i, j;
+		choose ( 7 ) {
+		  case 1,2,3:
+			i = 3;
+			4;
+			fallthru;
+		  case 4,5,6:
+			j = 3;
+		  default: ;
+		} // choose
+	} // block
 
 #if 0
-    try {
-	int i = 3;
-    } catch( int ) {
-    } catch( double ) {
-    } catch( ... ) {
-    } finally {
-    } // try
+	try {
+		int i = 3;
+	} catch( int ) {
+	} catch( double ) {
+	} catch( ... ) {
+	} finally {
+	} // try
 #endif
 
@@ -46,4 +62,5 @@
 
 // Local Variables: //
-// compile-command: "../../bin/cfa control_structures.c" //
+// tab-width: 4 //
+// compile-command: "cfa control_structures.c" //
 // End: //
Index: src/examples/ctxts.c
===================================================================
--- src/examples/ctxts.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/ctxts.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,9 +1,29 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// ctxts.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:11:19 2015
+// Update Count     : 2
+//
+
 context has_f( type T ) {
-    T f( T );
+	T f( T );
 };
 
 context has_g( type U | has_f( U ) ) {
-    U g( U );
+	U g( U );
 };
 
 forall( type V | has_g( V ) ) void h( V );
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa ctxts.c" //
+// End: //
Index: src/examples/esskaykay.c
===================================================================
--- src/examples/esskaykay.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/esskaykay.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,3 +1,16 @@
-// "./cfa-cpp -cn esskaykay.c"
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// esskaykay.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:11:45 2015
+// Update Count     : 2
+//
 
 // forall (type A, type B, type C) C ess (C (*f) (A,B), B (*g) (A), A x) { return f(x,g(x)); }
@@ -10,2 +23,7 @@
 
 forall (type A) A esskaykay (A x) { ess (kay, kay, x); }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa esskaykay.c" //
+// End: //
Index: src/examples/forward.c
===================================================================
--- src/examples/forward.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/forward.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,2 +1,17 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// forward.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:11:57 2015
+// Update Count     : 2
+//
+
 forall(type T) lvalue T *?( T* );
 int ?=?( int*, int );
@@ -6,8 +21,9 @@
 
 void f() {
-    *x;
+	*x;
 }
 
 // Local Variables: //
-// compile-command: "../../bin/cfa forward.c" //
+// tab-width: 4 //
+// compile-command: "cfa forward.c" //
 // End: //
Index: src/examples/fstream.c
===================================================================
--- src/examples/fstream.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/fstream.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,2 +1,17 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// fstream.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:12:33 2015
+// Update Count     : 2
+//
+
 #include "fstream.h"
 
@@ -7,101 +22,106 @@
 
 struct ofstream {
-    FILE *file;
-    int fail;
+	FILE *file;
+	int fail;
 };
 
 ofstream *write( ofstream *os, const char *data, streamsize_type size ) {
-    if ( ! os->fail ) {
-	fwrite( data, size, 1, os->file );
-	os->fail = ferror( os->file );
-    }
-    return os;
+	if ( ! os->fail ) {
+		fwrite( data, size, 1, os->file );
+		os->fail = ferror( os->file );
+	}
+	return os;
 }
 
 int fail( ofstream *os ) {
-    return os->fail;
+	return os->fail;
 }
 
 static ofstream *make_ofstream() {
-    ofstream *new_stream = malloc( sizeof( ofstream ) );
-    new_stream->fail = 0;
-    return new_stream;
+	ofstream *new_stream = malloc( sizeof( ofstream ) );
+	new_stream->fail = 0;
+	return new_stream;
 }
 
 ofstream *ofstream_stdout() {
-    ofstream *stdout_stream = make_ofstream();
-    stdout_stream->file = stdout;
-    return stdout_stream;
+	ofstream *stdout_stream = make_ofstream();
+	stdout_stream->file = stdout;
+	return stdout_stream;
 }
 
 ofstream *ofstream_stderr() {
-    ofstream *stderr_stream = make_ofstream();
-    stderr_stream->file = stderr;
-    return stderr_stream;
+	ofstream *stderr_stream = make_ofstream();
+	stderr_stream->file = stderr;
+	return stderr_stream;
 }
 
 ofstream *ofstream_fromfile( const char *name ) {
-    ofstream *file_stream = make_ofstream();
-    file_stream->file = fopen( name, "w" );
-    file_stream->fail = file_stream->file == 0;
-    return file_stream;
+	ofstream *file_stream = make_ofstream();
+	file_stream->file = fopen( name, "w" );
+	file_stream->fail = file_stream->file == 0;
+	return file_stream;
 }
 
 void ofstream_close( ofstream *os ) {
-    if ( os->file != stdout && os->file != stderr ) {
-	os->fail = fclose( os->file );
-    }
-    free( os );
+	if ( os->file != stdout && os->file != stderr ) {
+		os->fail = fclose( os->file );
+	}
+	free( os );
 }
 
 struct ifstream {
-    FILE *file;
-    int fail;
-    int eof;
+	FILE *file;
+	int fail;
+	int eof;
 };
 
 ifstream *read( ifstream *is, char *data, streamsize_type size ) {
-    if ( ! is->fail && ! is->eof ) {
-	fread( data, size, 1, is->file );
-	is->fail = ferror( is->file );
-	is->eof = feof( is->file );
-    }
-    return is;
+	if ( ! is->fail && ! is->eof ) {
+		fread( data, size, 1, is->file );
+		is->fail = ferror( is->file );
+		is->eof = feof( is->file );
+	}
+	return is;
 }
   
 ifstream *unread( ifstream *is, char c ) {
-    if ( ! is->fail ) {
-	if ( ! EOF == ungetc( c, is->file ) ) {
-	    is->fail = 1;
+	if ( ! is->fail ) {
+		if ( ! EOF == ungetc( c, is->file ) ) {
+			is->fail = 1;
+		}
 	}
-    }
-    return is;
+	return is;
 }
 
 int fail( ifstream *is ) {
-    return is->fail;
+	return is->fail;
 }
 
 int eof( ifstream *is ) {
-    return is->eof;
+	return is->eof;
 }
 
 static ifstream *make_ifstream() {
-    ifstream *new_stream = malloc( sizeof( ifstream ) );
-    new_stream->fail = 0;
-    new_stream->eof = 0;
-    return new_stream;
+	ifstream *new_stream = malloc( sizeof( ifstream ) );
+	new_stream->fail = 0;
+	new_stream->eof = 0;
+	return new_stream;
 }
 
 ifstream *ifstream_stdin() {
-    ifstream *stdin_stream = make_ifstream();
-    stdin_stream->file = stdin;
-    return stdin_stream;
+	ifstream *stdin_stream = make_ifstream();
+	stdin_stream->file = stdin;
+	return stdin_stream;
 }
 
 ifstream *ifstream_fromfile( const char *name ) {
-    ifstream *file_stream = make_ifstream();
-    file_stream->file = fopen( name, "r" );
-    file_stream->fail = file_stream->file == 0;
-    return file_stream;
+	ifstream *file_stream = make_ifstream();
+	file_stream->file = fopen( name, "r" );
+	file_stream->fail = file_stream->file == 0;
+	return file_stream;
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa fstream.c" //
+// End: //
Index: src/examples/fstream.h
===================================================================
--- src/examples/fstream.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/fstream.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,2 +1,17 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// fstream.h -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:13:08 2015
+// Update Count     : 1
+//
+
 #ifndef __FSTREAM_H__
 #define __FSTREAM_H__
@@ -27,2 +42,7 @@
 
 #endif // __FSTREAM_H__
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa fstream.c" //
+// End: //
Index: src/examples/fstream_test.c
===================================================================
--- src/examples/fstream_test.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/fstream_test.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,10 +1,30 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// fstream_test.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:13:43 2015
+// Update Count     : 2
+//
+
 #include "fstream.h"
 
 int main() {
-    ofstream *sout = ofstream_stdout();
-    ifstream *sin = ifstream_stdin();
-    int nombre;
-    sout << "Appuyez un nombre, s'il vous plâit:\n";
-    sin >> &nombre;
-    sout << "Vous avez appuyé: " << nombre << "\n";
+	ofstream *sout = ofstream_stdout();
+	ifstream *sin = ifstream_stdin();
+	int nombre;
+	sout << "Appuyez un nombre, s'il vous plâit:\n";
+	sin >> &nombre;
+	sout << "Vous avez appuyé: " << nombre << "\n";
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa fstream_test.c" //
+// End: //
Index: src/examples/fwrite.c
===================================================================
--- src/examples/fwrite.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/fwrite.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,7 +1,27 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// fwrite.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:14:12 2015
+// Update Count     : 1
+//
+
 extern "C" {
-    #include <stdio.h>
+	#include <stdio.h>
 }
 
 int main() {
-    fwrite( "test\n", 5, 1, stdout );
+	fwrite( "test\n", 5, 1, stdout );
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa fwrite.c" //
+// End: //
Index: src/examples/hello.c
===================================================================
--- src/examples/hello.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/hello.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,15 +1,31 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// hello.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:14:58 2015
+// Update Count     : 1
+//
+
 #include "fstream.h"
 
 int main() {
-    ofstream *sout = ofstream_stdout();
-    ifstream *sin = ifstream_stdin();
-    sout << "Bonjour au monde!\n";
-    sout << 3 << " " << 3.5 << " " << 'a' << " " << "abc" << "\n";
-    int i, j, k;
-    sin >> &i >> &j >> &k;
-    sout << "i:" << i << " j:" << j << " k:" << k << "\n";
+	ofstream *sout = ofstream_stdout();
+	ifstream *sin = ifstream_stdin();
+	sout << "Bonjour au monde!\n";
+	sout << 3 << " " << 3.5 << " " << 'a' << " " << "abc" << "\n";
+	int i, j, k;
+	sin >> &i >> &j >> &k;
+	sout << "i:" << i << " j:" << j << " k:" << k << "\n";
 }
 
 // Local Variables: //
-// compile-command: "../../bin/cfa hello.c fstream.o iostream.o" //
+// tab-width: 4 //
+// compile-command: "cfa hello.c fstream.o iostream.o" //
 // End: //
Index: src/examples/huge.c
===================================================================
--- src/examples/huge.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/huge.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,6 +1,26 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// huge.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:15:34 2015
+// Update Count     : 1
+//
+
 int huge( int n, forall( type T ) T (*f)( T ) ) {
-    if ( n <= 0 )
-	return f( 0 );
-    else
-	return huge( n - 1, f( f ) );
+	if ( n <= 0 )
+		return f( 0 );
+	else
+		return huge( n - 1, f( f ) );
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa huge.c" //
+// End: //
Index: src/examples/identity.c
===================================================================
--- src/examples/identity.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/identity.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,23 +1,39 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// identity.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:16:30 2015
+// Update Count     : 2
+//
+
 #include "fstream.h"
 
 forall( type T )
 T identity( T t ) {
-    return t;
+	return t;
 }
 
 int main() {
-    ofstream *sout = ofstream_stdout();
-    char c = 'a';
-    c = identity( c );
-    sout << c << ' ' << identity( c ) << '\n';
-    int i = 5;
-    i = identity( i );
-    sout << i << ' ' << identity( i ) << '\n';
-    double d = 3.2;
-    d = identity( d );
-    sout << d << ' ' << identity( d ) << '\n';
+	ofstream *sout = ofstream_stdout();
+	char c = 'a';
+	c = identity( c );
+	sout << c << ' ' << identity( c ) << '\n';
+	int i = 5;
+	i = identity( i );
+	sout << i << ' ' << identity( i ) << '\n';
+	double d = 3.2;
+	d = identity( d );
+	sout << d << ' ' << identity( d ) << '\n';
 }
 
 // Local Variables: //
-// compile-command: "../../bin/cfa identity.c fstream.o iostream.o" //
+// tab-width: 4 //
+// compile-command: "cfa identity.c fstream.o iostream.o" //
 // End: //
Index: src/examples/includes.c
===================================================================
--- src/examples/includes.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/includes.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,2 +1,17 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// includes.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Jun  8 15:54:17 2015
+// Update Count     : 7
+//
+
 #if 1
 //#include <aio.h>		// FAILS -- includes locale.h
@@ -34,8 +49,9 @@
 #include <curses.h>
 #else
-#include <time.h>		// FAILS -- includes locale.h
+#include <curses.h>
 #endif // 0
 
 // Local Variables: //
-// compile-command: "../../bin/cfa includes.c" //
+// tab-width: 4 //
+// compile-command: "cfa includes.c" //
 // End: //
Index: src/examples/index.h
===================================================================
--- src/examples/index.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/index.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,5 +1,25 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// index.h -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:17:31 2015
+// Update Count     : 1
+//
+
 context index( type T ) {
-    T ?+?( T, T );
-    T ?-?( T, T );
-    const T 0, 1;
+	T ?+?( T, T );
+	T ?-?( T, T );
+	const T 0, 1;
 };
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa index.c" //
+// End: //
Index: src/examples/iostream.c
===================================================================
--- src/examples/iostream.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/iostream.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,7 +1,16 @@
-// "cfa -c -o iostream.o iostream.c"
-// "cfa -v -E iostream.c > iostream_out.c"
-// "cfa -CFA iostream.c > iostream_out.c"
-// "cfa iostream_out.c"
-// "gcc32 iostream_out.c LibCfa/libcfa.a"
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// iostream.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:18:13 2015
+// Update Count     : 2
+//
 
 #include "iostream.h"
@@ -10,56 +19,61 @@
 //#include <string.h>
 //#include <ctype.h>
-typedef long unsigned int size_t;
-size_t strlen(const char *s);
+	typedef long unsigned int size_t;
+	size_t strlen(const char *s);
 }
 
 forall( dtype ostype | ostream( ostype ) )
 ostype * ?<<?( ostype *os, char c ) {
-    return write( os, &c, 1 );
+	return write( os, &c, 1 );
 }
 
 forall( dtype ostype | ostream( ostype ) )
 ostype * ?<<?( ostype *os, int i ) {
-    char buffer[20];      // larger than the largest integer
-    sprintf( buffer, "%d", i );
-    return write( os, buffer, strlen( buffer ) );
+	char buffer[20];      // larger than the largest integer
+	sprintf( buffer, "%d", i );
+	return write( os, buffer, strlen( buffer ) );
 }
 
 forall( dtype ostype | ostream( ostype ) )
 ostype * ?<<?( ostype *os, double d ) {
-    char buffer[32];      // larger than the largest double
-    sprintf( buffer, "%g", d );
-    return write( os, buffer, strlen( buffer ) );
+	char buffer[32];      // larger than the largest double
+	sprintf( buffer, "%g", d );
+	return write( os, buffer, strlen( buffer ) );
 }
 
 forall( dtype ostype | ostream( ostype ) )
 ostype * ?<<?( ostype *os, const char *cp ) {
-    return write( os, cp, strlen( cp ) );
+	return write( os, cp, strlen( cp ) );
 }
 
 forall( dtype istype | istream( istype ) )
 istype * ?>>?( istype *is, char *cp ) {
-    return read( is, cp, 1 );
+	return read( is, cp, 1 );
 }
 
 forall( dtype istype | istream( istype ) )
 istype * ?>>?( istype *is, int *ip ) {
-    char cur;
+	char cur;
   
-    // skip some whitespace
-    do {
-	is >> &cur;
-	if ( fail( is ) || eof( is ) ) return is;
-    } while ( !( cur >= '0' && cur <= '9' ) );
+	// skip some whitespace
+	do {
+		is >> &cur;
+		if ( fail( is ) || eof( is ) ) return is;
+	} while ( !( cur >= '0' && cur <= '9' ) );
   
-    // accumulate digits
-    *ip = 0;
-    while ( cur >= '0' && cur <= '9' ) {
-	*ip = *ip * 10 + ( cur - '0' );
-	is >> &cur;
-	if ( fail( is ) || eof( is ) ) return is;
-    }
+	// accumulate digits
+	*ip = 0;
+	while ( cur >= '0' && cur <= '9' ) {
+		*ip = *ip * 10 + ( cur - '0' );
+		is >> &cur;
+		if ( fail( is ) || eof( is ) ) return is;
+	}
   
-    unread( is, cur );
-    return is;
+	unread( is, cur );
+	return is;
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa iostream.c" //
+// End: //
Index: src/examples/iostream.h
===================================================================
--- src/examples/iostream.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/iostream.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,2 +1,17 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// iostream.h -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:18:46 2015
+// Update Count     : 1
+//
+
 #ifndef IOSTREAM_H
 #define IOSTREAM_H
@@ -5,10 +20,10 @@
 
 context ostream( dtype ostype ) {
-    ostype *write( ostype *, const char *, streamsize_type );
-    int fail( ostype * );
+	ostype *write( ostype *, const char *, streamsize_type );
+	int fail( ostype * );
 };
 
 context writeable( type T ) {
-    forall( dtype ostype | ostream( ostype ) ) ostype * ?<<?( ostype *, T );
+	forall( dtype ostype | ostream( ostype ) ) ostype * ?<<?( ostype *, T );
 };
 
@@ -22,12 +37,12 @@
 
 context istream( dtype istype ) {
-    istype *read( istype *, char *, streamsize_type );
-    istype *unread( istype *, char );
-    int fail( istype * );
-    int eof( istype * );
+	istype *read( istype *, char *, streamsize_type );
+	istype *unread( istype *, char );
+	int fail( istype * );
+	int eof( istype * );
 };
 
 context readable( type T ) {
-    forall( dtype istype | istream( istype ) ) istype * ?<<?( istype *, T );
+	forall( dtype istype | istream( istype ) ) istype * ?<<?( istype *, T );
 };
 
@@ -39,2 +54,7 @@
 
 #endif // IOSTREAM_H
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa iostream.c" //
+// End: //
Index: src/examples/it_out.c
===================================================================
--- src/examples/it_out.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/it_out.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,36 +1,27 @@
-# 1 "iterator.c"
-# 1 "<built-in>"
-# 1 "<command line>"
-# 1 "iterator.c"
-# 1 "iterator.h" 1
-
-
-
-# 1 "iostream.h" 1
-
-
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// it_out.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:41:23 2015
+// Update Count     : 4
+//
 
 typedef unsigned long streamsize_type;
 
-
-
-context ostream( dtype os_type )
-{
-
-    os_type *write( os_type *, const char *, streamsize_type );
-
-
-    int fail( os_type * );
+context ostream( dtype os_type ) {
+	os_type *write( os_type *, const char *, streamsize_type );
+	int fail( os_type * );
 };
 
-
-
-
-context writeable( type T )
-{
-    forall( dtype os_type | ostream( os_type ) ) os_type * ?<<?( os_type *, T );
+context writeable( type T ) {
+	forall( dtype os_type | ostream( os_type ) ) os_type * ?<<?( os_type *, T );
 };
-
-
 
 forall( dtype os_type | ostream( os_type ) ) os_type * ?<<?( os_type *, char );
@@ -38,65 +29,41 @@
 forall( dtype os_type | ostream( os_type ) ) os_type * ?<<?( os_type *, const char * );
 
-
-
-
-context istream( dtype is_type )
-{
-
-    is_type *read( is_type *, char *, streamsize_type );
-
-
-    is_type *unread( is_type *, char );
-
-
-    int fail( is_type * );
-
-
-    int eof( is_type * );
+context istream( dtype is_type ) {
+	is_type *read( is_type *, char *, streamsize_type );
+	is_type *unread( is_type *, char );
+	int fail( is_type * );
+	int eof( is_type * );
 };
 
-
-
-
-context readable( type T )
-{
-    forall( dtype is_type | istream( is_type ) ) is_type * ?<<?( is_type *, T );
+context readable( type T ) {
+	forall( dtype is_type | istream( is_type ) ) is_type * ?<<?( is_type *, T );
 };
-
-
 
 forall( dtype is_type | istream( is_type ) ) is_type * ?>>?( is_type *, char* );
 forall( dtype is_type | istream( is_type ) ) is_type * ?>>?( is_type *, int* );
-# 5 "iterator.h" 2
 
+context iterator( type iterator_type, type elt_type ) {
+	iterator_type ?++( iterator_type* );
+	iterator_type ++?( iterator_type* );
+	int ?==?( iterator_type, iterator_type );
+	int ?!=?( iterator_type, iterator_type );
 
-context iterator( type iterator_type, type elt_type )
-{
-
-    iterator_type ?++( iterator_type* );
-    iterator_type ++?( iterator_type* );
-
-
-    int ?==?( iterator_type, iterator_type );
-    int ?!=?( iterator_type, iterator_type );
-
-
-    lvalue elt_type *?( iterator_type );
+	lvalue elt_type *?( iterator_type );
 };
 
-
+forall( type elt_type | writeable( elt_type ),
+		type iterator_type | iterator( iterator_type, elt_type ),
+		dtype os_type | ostream( os_type ) )
+void write_all( iterator_type begin, iterator_type end, os_type *os );
 
 forall( type elt_type | writeable( elt_type ),
-        type iterator_type | iterator( iterator_type, elt_type ),
-        dtype os_type | ostream( os_type ) )
-void write_all( iterator_type begin, iterator_type end, os_type *os );
-# 2 "iterator.c" 2
+		type iterator_type | iterator( iterator_type, elt_type ),
+		dtype os_type | ostream( os_type ) )
+void write_all( elt_type begin, iterator_type end, os_type *os ) {
+	os << begin;
+}
 
-forall( type elt_type | writeable( elt_type ),
-        type iterator_type | iterator( iterator_type, elt_type ),
-        dtype os_type | ostream( os_type ) )
-void
-write_all( elt_type begin, iterator_type end, os_type *os )
-{
-    os << begin;
-}
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa it_out.c" //
+// End: //
Index: src/examples/iterator.c
===================================================================
--- src/examples/iterator.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/iterator.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,5 +1,16 @@
-// "cfa iterator.c"
-// "cfa -CFA iterator.c > iterator_out.c"
-// "gcc31 iterator_out.c ../LibCfa/libcfa.a"
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// iterator.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:41:41 2015
+// Update Count     : 3
+//
 
 #include "iterator.h"
@@ -11,27 +22,32 @@
 ///   iterator_type i;
 ///   for ( i = begin; i != end; ++i ) {
-///     func( *i );
+///	 func( *i );
 ///   }
 /// }
 
 forall( type elt_type | writeable( elt_type ),
-        type iterator_type | iterator( iterator_type, elt_type ),
-        dtype os_type | ostream( os_type ) )
+		type iterator_type | iterator( iterator_type, elt_type ),
+		dtype os_type | ostream( os_type ) )
 void write_all( iterator_type begin, iterator_type end, os_type *os ) {
-    iterator_type i;
-    for ( i = begin; i != end; ++i ) {
-	os << *i << ' ';
-    }
+	iterator_type i;
+	for ( i = begin; i != end; ++i ) {
+		os << *i << ' ';
+	}
 }
 
 forall( type elt_type | writeable( elt_type ),
-	type iterator_type | iterator( iterator_type, elt_type ),
-	dtype os_type | ostream( os_type ) )
+		type iterator_type | iterator( iterator_type, elt_type ),
+		dtype os_type | ostream( os_type ) )
 void write_reverse( iterator_type begin, iterator_type end, os_type *os ) {
-    iterator_type i; // "= end;" does not work
-    i = end;
-    do {
-	--i;
-	os << *i << ' ';
-    } while ( i != begin );
+	iterator_type i; // "= end;" does not work
+	i = end;
+	do {
+		--i;
+		os << *i << ' ';
+	} while ( i != begin );
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa iterator.c" //
+// End: //
Index: src/examples/iterator.h
===================================================================
--- src/examples/iterator.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/iterator.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,2 +1,17 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// iterator.h -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:41:57 2015
+// Update Count     : 3
+//
+
 #ifndef ITERATOR_H
 #define ITERATOR_H
@@ -6,21 +21,21 @@
 // An iterator can be used to traverse a data structure.
 context iterator( type iterator_type, type elt_type ) {
-    // point to the next element
-//    iterator_type ?++( iterator_type * );
-    iterator_type ++?( iterator_type * );
-    iterator_type --?( iterator_type * );
+	// point to the next element
+//	iterator_type ?++( iterator_type * );
+	iterator_type ++?( iterator_type * );
+	iterator_type --?( iterator_type * );
 
-    // can be tested for equality with other iterators
-    int ?==?( iterator_type, iterator_type );
-    int ?!=?( iterator_type, iterator_type );
+	// can be tested for equality with other iterators
+	int ?==?( iterator_type, iterator_type );
+	int ?!=?( iterator_type, iterator_type );
 
-    // dereference to get the pointed-at element
-    lvalue elt_type *?( iterator_type );
+	// dereference to get the pointed-at element
+	lvalue elt_type *?( iterator_type );
 };
 
 context iterator_for ( type iterator_type, type collection_type, type elt_type | iterator( iterator_type, elt_type ) ) {
-//    [ iterator_type begin, iterator_type end ] get_iterators( collection_type );
-    iterator_type begin( collection_type );
-    iterator_type end( collection_type );
+//	[ iterator_type begin, iterator_type end ] get_iterators( collection_type );
+	iterator_type begin( collection_type );
+	iterator_type end( collection_type );
 };
 
@@ -30,12 +45,17 @@
 // writes the range [begin, end) to the given stream
 forall( type elt_type | writeable( elt_type ),
-        type iterator_type | iterator( iterator_type, elt_type ),
-        dtype os_type | ostream( os_type ) )
+		type iterator_type | iterator( iterator_type, elt_type ),
+		dtype os_type | ostream( os_type ) )
 void write_all( iterator_type begin, iterator_type end, os_type *os );
 
 forall( type elt_type | writeable( elt_type ),
-	type iterator_type | iterator( iterator_type, elt_type ),
-	dtype os_type | ostream( os_type ) )
+		type iterator_type | iterator( iterator_type, elt_type ),
+		dtype os_type | ostream( os_type ) )
 void write_reverse( iterator_type begin, iterator_type end, os_type *os );
 
 #endif // ITERATOR_H
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa iterator.c" //
+// End: //
Index: src/examples/min.c
===================================================================
--- src/examples/min.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/min.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,4 +1,19 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// min.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:23:19 2015
+// Update Count     : 2
+//
+
 extern "C" {
-    int printf( const char *, ... );
+	int printf( const char *, ... );
 //#include <stdio.h>
 }
@@ -6,23 +21,24 @@
 forall( type T | { int ?<?( T, T ); } )
 T min( const T t1, const T t2 ) {
-    return t1 < t2 ? t1 : t2;
+	return t1 < t2 ? t1 : t2;
 }
 
 int main() {
-    char c;
-//    c = min( 'z', 'a' );
-//    printf( "minimum %d\n", c );
-    int i;
-    i = min( 4, 3 );
-    printf( "minimum %d\n", min( 4, 3 ) );
-    float f;
-    f = min( 4.0, 3.1 );
-    printf( "minimum %g\n", f );
-    double d;
-    d = min( 4.0, 3.2 );
-    printf( "minimum %g\n", d );
+	char c;
+//	c = min( 'z', 'a' );
+//	printf( "minimum %d\n", c );
+	int i;
+	i = min( 4, 3 );
+	printf( "minimum %d\n", min( 4, 3 ) );
+	float f;
+	f = min( 4.0, 3.1 );
+	printf( "minimum %g\n", f );
+	double d;
+	d = min( 4.0, 3.2 );
+	printf( "minimum %g\n", d );
 }
 
 // Local Variables: //
-// compile-command: "../../bin/cfa min.c" //
+// tab-width: 4 //
+// compile-command: "cfa min.c" //
 // End: //
Index: src/examples/new.c
===================================================================
--- src/examples/new.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/new.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,13 +1,33 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// new.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:23:55 2015
+// Update Count     : 1
+//
+
 forall( type T )
 void f( T *t ) {
-    t--;
-    *t;
-    ++t;
-    t += 2;
-    t + 2;
-    --t;
-    t -= 2;
-    t - 4;
-    t[7];
-    7[t];
+	t--;
+	*t;
+	++t;
+	t += 2;
+	t + 2;
+	--t;
+	t -= 2;
+	t - 4;
+	t[7];
+	7[t];
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa new.c" //
+// End: //
Index: src/examples/prolog.c
===================================================================
--- src/examples/prolog.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/prolog.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,3 +1,16 @@
-// "./cfa prolog.c"
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// prolog.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:25:52 2015
+// Update Count     : 1
+//
 
 extern "C" { extern int printf( const char *fmt, ... ); }
@@ -13,20 +26,25 @@
 
 context ArithmeticType( type T ) {
-    void is_arithmetic( T );
+	void is_arithmetic( T );
 };
 
 context IntegralType( type T | ArithmeticType( T ) ) {
-    void is_integer( T );
+	void is_integer( T );
 };
 
 forall( type T | IntegralType( T ) | { void printResult( T ); } )
 void hornclause( T param ) {
-    printResult( param );
+	printResult( param );
 }
 
 int main() {
-    int x;
-    double x;
-    char * x;
-    hornclause( x );
+	int x;
+	double x;
+	char * x;
+	hornclause( x );
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa prolog.c" //
+// End: //
Index: src/examples/quad.c
===================================================================
--- src/examples/quad.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/quad.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,22 +1,38 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// quad.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:26:36 2015
+// Update Count     : 2
+//
+
 extern "C" {
-    #include <stdio.h>
+#include <stdio.h>
 }
 
 forall( type T | { T ?*?( T, T ); } )
 T square( T t ) {
-    return t * t;
+	return t * t;
 }
 
 forall( type U | { U square( U ); } )
 U quad( U u ) {
-    return square( square( u ) );
+	return square( square( u ) );
 }
 
 int main() {
-    int N = 2;
-    printf( "result of quad of %d is %d\n", N, quad( N ) );
+	int N = 2;
+	printf( "result of quad of %d is %d\n", N, quad( N ) );
 }
 
 // Local Variables: //
-// compile-command: "../../bin/cfa quad.c" //
+// tab-width: 4 //
+// compile-command: "cfa quad.c" //
 // End: //
Index: src/examples/quoted_keyword.c
===================================================================
--- src/examples/quoted_keyword.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/quoted_keyword.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,8 +1,23 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// quoted_keyword.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:27:26 2015
+// Update Count     : 2
+//
+
 // test quoted keyword usage
 int `catch`;
 
 struct {
-    int `type`;
-    int `struct`;
+	int `type`;
+	int `struct`;
 } st;
 
@@ -11,5 +26,5 @@
 
 int foo() {
-    int w = `catch` + st.`type` + st.`struct` + `throw`;
+	int w = `catch` + st.`type` + st.`struct` + `throw`;
 }
 
@@ -17,4 +32,5 @@
 
 // Local Variables: //
-// compile-command: "../../bin/cfa quoted_keyword.c" //
+// tab-width: 4 //
+// compile-command: "cfa quoted_keyword.c" //
 // End: //
Index: c/examples/rodolfo1.c
===================================================================
--- src/examples/rodolfo1.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,7 +1,0 @@
-// "./cfa-cpp -c rodolfo1.c"
-
-void f() {
-	int a, b = 4, c = 5;
-	a = b + c;
-	int d = a + 7;
-}
Index: c/examples/rodolfo2.c
===================================================================
--- src/examples/rodolfo2.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,14 +1,0 @@
-// "./cfa-cpp -c rodolfo2.c"
-
-extern "C" {
-    #include <assert.h>
-}
-
-int a = 7;
-
-void f() {
-    int b;
-    b = a;
-    int a = 8;
-    assert( b == 7 );
-}
Index: src/examples/s.c
===================================================================
--- src/examples/s.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/s.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,8 +1,28 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// s.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:42:39 2015
+// Update Count     : 2
+//
+
 //int ?!=?( int, int );
 
 void f() {
-//    int a;
-//    a ? 4 : 5;
-    1 ? 4 : 5;
-    0 ? 4 : 5;
+//	int a;
+//	a ? 4 : 5;
+	1 ? 4 : 5;
+	0 ? 4 : 5;
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa s.c" //
+// End: //
Index: src/examples/simple.c
===================================================================
--- src/examples/simple.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/simple.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,21 +1,39 @@
-// './cfa square.c'
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// simple.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:30:27 2015
+// Update Count     : 3
+//
 
 extern "C" {
-    int printf( const char *fmt, ... );
+	int printf( const char *fmt, ... );
 }
 
 context has_star( type T ) {
-    T ?*?( T, T );
+	T ?*?( T, T );
 };
 
 int ?*?( int, int );
-int ?=?( int*, int );
+int ?=?( int *, int );
 
 forall( type T | has_star( T ) )
 T square( T t ) {
-    return t * t;
+	return t * t;
 }
 
 int main() {
-    printf( "result of square of 5 is %d\n", square( 5 ) );
+	printf( "result of square of 5 is %d\n", square( 5 ) );
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa simple.c" //
+// End: //
Index: src/examples/simplePoly.c
===================================================================
--- src/examples/simplePoly.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/simplePoly.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,8 +1,20 @@
-// './cfa-cpp -nc < simplePoly.c'
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// simplePoly.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:31:17 2015
+// Update Count     : 2
+//
 
 forall( type T, type U | { T f( T, U ); } )
-T q( T t, U u )
-{
-    return f( t, u );
+T q( T t, U u ) {
+	return f( t, u );
 //  return t;
 }
@@ -11,7 +23,12 @@
 
 void g( void ) {
-    int y;
-    double x;
+	int y;
+	double x;
 //  if ( y )
-    q( 3, &x );
+	q( 3, &x );
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa simplePoly.c" //
+// End: //
Index: src/examples/simpler.c
===================================================================
--- src/examples/simpler.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/simpler.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,7 +1,25 @@
-// "./cfa-cpp -c simpler.c"
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// simpler.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:31:48 2015
+// Update Count     : 1
+//
 
 forall( type T ) T id( T, T );
 
 int main() {
-    id( 0, 7 );
+	id( 0, 7 );
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa simpler.c" //
+// End: //
Index: src/examples/specialize.c
===================================================================
--- src/examples/specialize.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/specialize.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,5 +1,16 @@
-// "./cfa specialize.c"
-// "./cfa -g simple.c"
-// "./cfa -CFA simple.c > simple_out.c"
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// specialize.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:32:26 2015
+// Update Count     : 2
+//
 
 /// void f( const int * );
@@ -25,19 +36,24 @@
 
 extern "C" {
-  int printf( const char*, ... );
+	int printf( const char*, ... );
 }
 
 forall( type T ) T f( T t )
 {
-  printf( "in f; sizeof T is %d\n", sizeof( T ) );
-  return t;
+	printf( "in f; sizeof T is %d\n", sizeof( T ) );
+	return t;
 }
 
 void g( int (*p)(int) )
 {
-  printf( "g: f(7) returned %d\n", f(7) );
+	printf( "g: f(7) returned %d\n", f(7) );
 }
 
 int main() {
-  g( f );
+	g( f );
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa specialize.c" //
+// End: //
Index: src/examples/square.c
===================================================================
--- src/examples/square.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/square.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,13 +1,45 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// square.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:43:34 2015
+// Update Count     : 2
+//
+
 extern "C" {
 #include <stdio.h>
 }
 
-forall( type T | { T ?*?( T, T ); })
+forall( type T | { T ?*?( T, T ); } )
 T square( T t ) {
-    return t * t;
+	return t * t;
 }
 
+//char ?*?( char a1, char a2 ) {
+//	return (char)( (int)a1 * (int)a2 );
+//}
+
 int main() {
-    printf( "result of square of 5 is %d\n", square( 5 ) );
-    printf( "result of square of 5 is %f\n", square( 5.0 ) );
+	char c = 5;
+	short int s = 5;
+	int i = 5;
+	float f = 5.0;
+	double d = 5.0;
+//	printf( "result of square of 5 is %d\n", (char)square( c ) );
+	printf( "result of square of 5 is %d\n", square( s ) );
+	printf( "result of square of 5 is %d\n", square( i ) );
+	printf( "result of square of 5 is %f\n", square( f ) );
+	printf( "result of square of 5 is %f\n", square( d ) );
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa square.c" //
+// End: //
Index: c/examples/square.cf
===================================================================
--- src/examples/square.cf	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,20 +1,0 @@
-// './cfa square.c'
-
-#undef __cplusplus
-extern "C" {
-#include <stdio.h>
-}
-
-forall( type T | { T ?*?( T, T ); })
-T
-square( T t )
-{
-  return t * t;
-}
-
-int
-main()
-{
-  printf( "result of square of 5 is %d\n", square( 5 ) );
-  return 0;
-}
Index: src/examples/sum.c
===================================================================
--- src/examples/sum.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/sum.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,20 +1,35 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// sum.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Jun  1 20:46:35 2015
+// Update Count     : 18
+//
+
 extern "C" {
-    int printf( const char *, ... );
+	int printf( const char *, ... );
 }
 
 context sumable( type T ) {
-    const T 0;
-    T ?+?( T, T );
-    T ?++( T * );
-    T ?+=?( T *, T );
+	const T 0;
+	T ?+?( T, T );
+	T ?++( T * );
+	T ?+=?( T *, T );
 };
 
 forall( type T | sumable( T ) )
 T sum( int n, T a[] ) {
-    T total;				// instantiate T, select 0
-    total = 0;
-    for ( int i = 0; i < n; i += 1 )
-	total = total + a[i];		// select +
-    return total;
+	T total;											// instantiate T, select 0
+	total = 0;
+	for ( int i = 0; i < n; i += 1 )
+		total = total + a[i];							// select +
+	return total;
 }
 
@@ -27,30 +42,31 @@
 
 int main() {
-    const int size = 10, low = 0, High = 10;
-    int si = 0, ai[10]; // size
-    int i;
-    for ( i = low; i < High; i += 1 ) {
-	si += i;
-	ai[i] = i;
-    }
-    printf( "sum from %d to %d is %d, check %d\n",
-	    low, High, sum( size, ai ), si );
+	const int low = 5, High = 15, size = High - low;
+	int si = 0, ai[size];
+	int v = low;
+	for ( int i = 0; i < size; i += 1, v += 1 ) {
+		si += v;
+		ai[i] = v;
+	}
+	printf( "sum from %d to %d is %d, check %d\n",
+			low, High, sum( size, ai ), si );
 
-//    char ci[10];
-//    char c = sum( size, ci );
-//    float fi[10];
-//    float f = sum( size, fi );
+//	char ci[size];
+//	char c = sum( size, ci );
+//	float fi[size];
+//	float f = sum( size, fi );
 
-    double sd = 0.0, ad[10]; // size
-    for ( i = low; i < High; i += 1 ) {
-	double d = i / (double)size;
-	sd += d;
-	ad[i] = d;
-    }
-    printf( "sum from %g to %g is %g, check %g\n",
-	    low / (double)size, High / (double)size, sum( size, ad ), sd );
+	double sd = 0.0, ad[size];
+	double v = low / 10.0;
+	for ( int i = 0; i < size; i += 1, v += 0.1 ) {
+		sd += v;
+		ad[i] = v;
+	}
+	printf( "sum from %g to %g is %g, check %g\n",
+			low / 10.0, High / 10.0, sum( size, ad ), sd );
 }
 
 // Local Variables: //
-// compile-command: "../../bin/cfa sum.c" //
+// tab-width: 4 //
+// compile-command: "cfa sum.c" //
 // End: //
Index: src/examples/swap.c
===================================================================
--- src/examples/swap.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/swap.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,21 +1,37 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// swap.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:34:47 2015
+// Update Count     : 1
+//
+
 extern "C" {
-    int printf( const char *, ... );
+	int printf( const char *, ... );
 }
 
 forall( type T )
 void swap( T *left, T *right ) {
-    T temp = *left;
-    *left = *right;
-    *right = temp;
+	T temp = *left;
+	*left = *right;
+	*right = temp;
 }
 
 int main() {
-    int x = 1, y = 2;
-    printf( "%d %d\n", x, y );
-    swap( &x, &y );
-    printf( "%d %d\n", x, y );
+	int x = 1, y = 2;
+	printf( "%d %d\n", x, y );
+	swap( &x, &y );
+	printf( "%d %d\n", x, y );
 }
 
 // Local Variables: //
-// compile-command: "../../bin/cfa swap.c" //
+// tab-width: 4 //
+// compile-command: "cfa swap.c" //
 // End: //
Index: src/examples/twice.c
===================================================================
--- src/examples/twice.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/twice.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,15 +1,31 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// twice.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:37:23 2015
+// Update Count     : 1
+//
+
 #include "fstream.h"
 
 forall( type T | { T ?+?( T, T ); T ?++( T * ); [T] ?+=?( T *, T ); } )
 T twice( const T t ) {
-    return t + t;
+	return t + t;
 }
 
 int main() {
-    ofstream *sout = ofstream_stdout();
-    sout << twice( 1 ) << ' ' << twice( 3.2 ) << '\n';
+	ofstream *sout = ofstream_stdout();
+	sout << twice( 1 ) << ' ' << twice( 3.2 ) << '\n';
 }
 
 // Local Variables: //
-// compile-command: "../../bin/cfa twice.c fstream.o iostream.o" //
+// tab-width: 4 //
+// compile-command: "cfa twice.c fstream.o iostream.o" //
 // End: //
Index: src/examples/vector_int.c
===================================================================
--- src/examples/vector_int.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/vector_int.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,3 +1,16 @@
-// "cfa vector_int.c"
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// vector_int.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:38:05 2015
+// Update Count     : 3
+//
 
 #include "vector_int.h"
@@ -10,33 +23,33 @@
 
 vector_int vector_int_allocate() {
-    return vector_int_allocate( DEFAULT_CAPACITY );
+	return vector_int_allocate( DEFAULT_CAPACITY );
 }
 
 vector_int vector_int_allocate( int reserve ) {
-    vector_int new_vector;
-    new_vector.last = -1;
-    new_vector.capacity = reserve;
-    new_vector.data = malloc( sizeof( int ) * reserve );
-    return new_vector;
+	vector_int new_vector;
+	new_vector.last = -1;
+	new_vector.capacity = reserve;
+	new_vector.data = malloc( sizeof( int ) * reserve );
+	return new_vector;
 }
 
 void vector_int_deallocate( vector_int vec ) {
-    free( vec.data );
+	free( vec.data );
 }
 
 void reserve( vector_int *vec, int reserve ) {
-    if ( reserve > vec->capacity ) {
-	vec->data = realloc( vec->data, sizeof( int ) * reserve );
-	vec->capacity = reserve;
-    }
+	if ( reserve > vec->capacity ) {
+		vec->data = realloc( vec->data, sizeof( int ) * reserve );
+		vec->capacity = reserve;
+	}
 }
 
 void append( vector_int *vec, int element ) {
-    vec->last++;
-    if ( vec->last == vec->capacity ) {
-	vec->capacity *= 2;
-	vec->data = realloc( vec->data, sizeof( int ) * vec->capacity );
-    }
-    vec->data[ vec->last ] = element;
+	vec->last++;
+	if ( vec->last == vec->capacity ) {
+		vec->capacity *= 2;
+		vec->data = realloc( vec->data, sizeof( int ) * vec->capacity );
+	}
+	vec->data[ vec->last ] = element;
 }
 
@@ -44,9 +57,14 @@
 
 lvalue int ?[?]( vector_int vec, int index ) {
-    return vec.data[ index ];
+	return vec.data[ index ];
 }
 
 int last( vector_int vec ) {
-    return vec.last;
+	return vec.last;
 }
 
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa vector_int.c" //
+// End: //
Index: src/examples/vector_int.h
===================================================================
--- src/examples/vector_int.h	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/vector_int.h	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,2 +1,17 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// vector_int.h -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:39:05 2015
+// Update Count     : 2
+//
+
 #ifndef VECTOR_INT_H
 #define VECTOR_INT_H
@@ -5,20 +20,25 @@
 
 typedef struct vector_int {
-    int last;						// last used index
-    int capacity;					// last possible index before reallocation
-    int *data;						// array
+	int last;											// last used index
+	int capacity;										// last possible index before reallocation
+	int *data;											// array
 } vector_int;
 
-vector_int vector_int_allocate();			// allocate vector with default capacity
-vector_int vector_int_allocate( int reserve );		// allocate vector with specified capacity
-void vector_int_deallocate( vector_int );		// deallocate vector's storage
+vector_int vector_int_allocate();						// allocate vector with default capacity
+vector_int vector_int_allocate( int reserve );			// allocate vector with specified capacity
+void vector_int_deallocate( vector_int );				// deallocate vector's storage
 
-void reserve( vector_int *vec, int reserve );		// reserve more capacity
-void append( vector_int *vec, int element );		// add element to end of vector, resizing as necessary
+void reserve( vector_int *vec, int reserve );			// reserve more capacity
+void append( vector_int *vec, int element );			// add element to end of vector, resizing as necessary
 
 // implement bounded_array
 
-lvalue int ?[?]( vector_int vec, int index );		// access to arbitrary element (does not resize)
-int last( vector_int vec );				// return last element
+lvalue int ?[?]( vector_int vec, int index );			// access to arbitrary element (does not resize)
+int last( vector_int vec );								// return last element
 
 #endif // VECTOR_INT_H
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa vector_int.c" //
+// End: //
Index: src/examples/vector_test.c
===================================================================
--- src/examples/vector_test.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/examples/vector_test.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -1,2 +1,17 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// vector_test.c -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed May 27 18:42:55 2015
+// Update Count     : 2
+//
+
 #include "fstream.h"
 #include "vector_int.h"
@@ -5,32 +20,37 @@
 
 int main() {
-    ofstream *sout = ofstream_stdout();
-    ifstream *sin = ifstream_stdin();
-    vector_int vec = vector_int_allocate();
+	ofstream *sout = ofstream_stdout();
+	ifstream *sin = ifstream_stdin();
+	vector_int vec = vector_int_allocate();
 
-    // read in numbers until EOF or error
-    int num;
+	// read in numbers until EOF or error
+	int num;
 
-    sout << "enter N elements and C-d on a separate line:\n";
-    for ( ;; ) {
+	sout << "enter N elements and C-d on a separate line:\n";
+	for ( ;; ) {
 	sin >> &num;
-      if ( fail( sin ) || eof( sin ) ) break;
+	  if ( fail( sin ) || eof( sin ) ) break;
 	append( &vec, num );
-    }
-    // write out the numbers
+	}
+	// write out the numbers
 
-    sout << "Array elements:\n";
-//    write_all( begin( vec ), end( vec ), sout );
-//    sout << "\n";
-    for ( int index = 0; index <= last( vec ); index += 1 ) {
+	sout << "Array elements:\n";
+//	write_all( begin( vec ), end( vec ), sout );
+//	sout << "\n";
+	for ( int index = 0; index <= last( vec ); index += 1 ) {
 	sout << vec[ index ] << " ";
-    }
-    sout << "\n";
+	}
+	sout << "\n";
 #if 1
-    sout << "Array elements reversed:\n";
-    write_reverse( begin( vec ), end( vec ), sout );
-    sout << "\n";
+	sout << "Array elements reversed:\n";
+	write_reverse( begin( vec ), end( vec ), sout );
+	sout << "\n";
 #endif
 }
 
 // ../bin/cfa vector_test.c fstream.o iostream.o vector_int.o iterator.o array.o
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa vector_test.c fstream.o iostream.o vector_int.o iterator.o array.o" //
+// End: //
Index: src/libcfa/Makefile.am
===================================================================
--- src/libcfa/Makefile.am	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/libcfa/Makefile.am	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,49 @@
+######################## -*- Mode: Makefile-Automake -*- ######################
+##
+## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## Makefile.am -- 
+##
+## Author           : Peter A. Buhr
+## Created On       : Sun May 31 08:54:01 2015
+## Last Modified By : Peter A. Buhr
+## Last Modified On : Thu Jun  4 22:49:16 2015
+## Update Count     : 7
+###############################################################################
+
+libcfa_a_SOURCES = libcfa-prelude.c
+lib_LIBRARIES = libcfa.a
+
+# put into lib for now
+cfalibdir = ${libdir}
+cfalib_DATA = prelude.cf builtins.cf
+
+# create forward declarations for gcc builtins
+${libdir}/builtins.cf : ${libdir} ${srcdir}/builtins.cf
+	${INSTALL} ${srcdir}/builtins.cf ${libdir}
+	sed -i -e "s#typedef.*ptrdiff_t.*#`@BACKEND_CC@ -E ${srcdir}/ptrdiff_t.c | grep 'typedef.*ptrdiff_t'`#" ${srcdir}/prelude.cf
+
+builtins.cf : builtins.c
+	@if [ -e $< ] ; then \
+		@BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \
+	fi
+
+builtins.c : builtins.def prototypes.awk
+	@if [ -e $< ] ; then \
+		@BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \
+	fi
+
+builtins.def :
+
+prototypes.awk :
+
+MAINTAINERCLEANFILES = ${srcdir}/libcfa-prelude.c
+
+libcfa-prelude.c : ${srcdir}/prelude.cf
+	${libdir}/cfa-cpp -l ${srcdir}/prelude.cf $@
+
+libcfa-prelude.o : libcfa-prelude.c
+	${BACKEND_CC} -c -o $@ $<
Index: src/libcfa/Makefile.in
===================================================================
--- src/libcfa/Makefile.in	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/libcfa/Makefile.in	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,551 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+######################## -*- Mode: Makefile-Automake -*- ######################
+###############################################################################
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+subdir = src/libcfa
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cfalibdir)"
+LIBRARIES = $(lib_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+libcfa_a_AR = $(AR) $(ARFLAGS)
+libcfa_a_LIBADD =
+am_libcfa_a_OBJECTS = libcfa-prelude.$(OBJEXT)
+libcfa_a_OBJECTS = $(am_libcfa_a_OBJECTS)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/automake/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libcfa_a_SOURCES)
+DIST_SOURCES = $(libcfa_a_SOURCES)
+DATA = $(cfalib_DATA)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BACKEND_CC = @BACKEND_CC@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFA_BINDIR = @CFA_BINDIR@
+CFA_INCDIR = @CFA_INCDIR@
+CFA_LIBDIR = @CFA_LIBDIR@
+CFA_PREFIX = @CFA_PREFIX@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GCC_PATH = @GCC_PATH@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libcfa_a_SOURCES = libcfa-prelude.c
+lib_LIBRARIES = libcfa.a
+
+# put into lib for now
+cfalibdir = ${libdir}
+cfalib_DATA = prelude.cf builtins.cf
+MAINTAINERCLEANFILES = ${srcdir}/libcfa-prelude.c
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/libcfa/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/libcfa/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-libLIBRARIES: $(lib_LIBRARIES)
+	@$(NORMAL_INSTALL)
+	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
+	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \
+	  $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; }
+	@$(POST_INSTALL)
+	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	for p in $$list; do \
+	  if test -f $$p; then \
+	    $(am__strip_dir) \
+	    echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \
+	    ( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \
+	  else :; fi; \
+	done
+
+uninstall-libLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir)
+
+clean-libLIBRARIES:
+	-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
+libcfa.a: $(libcfa_a_OBJECTS) $(libcfa_a_DEPENDENCIES) $(EXTRA_libcfa_a_DEPENDENCIES) 
+	-rm -f libcfa.a
+	$(libcfa_a_AR) libcfa.a $(libcfa_a_OBJECTS) $(libcfa_a_LIBADD)
+	$(RANLIB) libcfa.a
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa-prelude.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+install-cfalibDATA: $(cfalib_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(cfalibdir)" || $(MKDIR_P) "$(DESTDIR)$(cfalibdir)"
+	@list='$(cfalib_DATA)'; test -n "$(cfalibdir)" || list=; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(cfalibdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(cfalibdir)" || exit $$?; \
+	done
+
+uninstall-cfalibDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(cfalib_DATA)'; test -n "$(cfalibdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(cfalibdir)'; $(am__uninstall_files_from_dir)
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES) $(DATA)
+installdirs:
+	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cfalibdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-cfalibDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-libLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-cfalibDATA uninstall-libLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libLIBRARIES ctags distclean distclean-compile \
+	distclean-generic distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-cfalibDATA \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-libLIBRARIES install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-cfalibDATA \
+	uninstall-libLIBRARIES
+
+
+# create forward declarations for gcc builtins
+${libdir}/builtins.cf : ${libdir} ${srcdir}/builtins.cf
+	${INSTALL} ${srcdir}/builtins.cf ${libdir}
+	sed -i -e "s#typedef.*ptrdiff_t.*#`@BACKEND_CC@ -E ${srcdir}/ptrdiff_t.c | grep 'typedef.*ptrdiff_t'`#" ${srcdir}/prelude.cf
+
+builtins.cf : builtins.c
+	@if [ -e $< ] ; then \
+		@BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \
+	fi
+
+builtins.c : builtins.def prototypes.awk
+	@if [ -e $< ] ; then \
+		@BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \
+	fi
+
+builtins.def :
+
+prototypes.awk :
+
+libcfa-prelude.c : ${srcdir}/prelude.cf
+	${libdir}/cfa-cpp -l ${srcdir}/prelude.cf $@
+
+libcfa-prelude.o : libcfa-prelude.c
+	${BACKEND_CC} -c -o $@ $<
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: src/libcfa/builtins.cf
===================================================================
--- src/libcfa/builtins.cf	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/libcfa/builtins.cf	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,587 @@
+
+double __builtin_acos(double);
+float __builtin_acosf(float);
+double __builtin_acosh(double);
+float __builtin_acoshf(float);
+long double __builtin_acoshl(long double);
+long double __builtin_acosl(long double);
+double __builtin_asin(double);
+float __builtin_asinf(float);
+double __builtin_asinh(double);
+float __builtin_asinhf(float);
+long double __builtin_asinhl(long double);
+long double __builtin_asinl(long double);
+double __builtin_atan(double);
+double __builtin_atan2(double, double);
+float __builtin_atan2f(float, float);
+long double __builtin_atan2l(long double, long double);
+float __builtin_atanf(float);
+double __builtin_atanh(double);
+float __builtin_atanhf(float);
+long double __builtin_atanhl(long double);
+long double __builtin_atanl(long double);
+double __builtin_cbrt(double);
+float __builtin_cbrtf(float);
+long double __builtin_cbrtl(long double);
+double __builtin_ceil(double);
+float __builtin_ceilf(float);
+long double __builtin_ceill(long double);
+double __builtin_copysign(double, double);
+float __builtin_copysignf(float, float);
+long double __builtin_copysignl(long double, long double);
+double __builtin_cos(double);
+float __builtin_cosf(float);
+double __builtin_cosh(double);
+float __builtin_coshf(float);
+long double __builtin_coshl(long double);
+long double __builtin_cosl(long double);
+double __builtin_drem(double, double);
+float __builtin_dremf(float, float);
+long double __builtin_dreml(long double, long double);
+double __builtin_erf(double);
+double __builtin_erfc(double);
+float __builtin_erfcf(float);
+long double __builtin_erfcl(long double);
+float __builtin_erff(float);
+long double __builtin_erfl(long double);
+double __builtin_exp(double);
+double __builtin_exp10(double);
+float __builtin_exp10f(float);
+long double __builtin_exp10l(long double);
+double __builtin_exp2(double);
+float __builtin_exp2f(float);
+long double __builtin_exp2l(long double);
+float __builtin_expf(float);
+long double __builtin_expl(long double);
+double __builtin_expm1(double);
+float __builtin_expm1f(float);
+long double __builtin_expm1l(long double);
+double __builtin_fabs(double);
+float __builtin_fabsf(float);
+long double __builtin_fabsl(long double);
+
+
+
+double __builtin_fdim(double, double);
+float __builtin_fdimf(float, float);
+long double __builtin_fdiml(long double, long double);
+double __builtin_floor(double);
+float __builtin_floorf(float);
+long double __builtin_floorl(long double);
+double __builtin_fma(double, double, double);
+float __builtin_fmaf(float, float, float);
+long double __builtin_fmal(long double, long double, long double);
+double __builtin_fmax(double, double);
+float __builtin_fmaxf(float, float);
+long double __builtin_fmaxl(long double, long double);
+double __builtin_fmin(double, double);
+float __builtin_fminf(float, float);
+long double __builtin_fminl(long double, long double);
+double __builtin_fmod(double, double);
+float __builtin_fmodf(float, float);
+long double __builtin_fmodl(long double, long double);
+double __builtin_frexp(double, int *);
+float __builtin_frexpf(float, int *);
+long double __builtin_frexpl(long double, int *);
+double __builtin_gamma(double);
+float __builtin_gammaf(float);
+long double __builtin_gammal(long double);
+double __builtin_gamma_r(double, int *);
+float __builtin_gammaf_r(float, int *);
+long double __builtin_gammal_r(long double, int *);
+double __builtin_huge_val();
+float __builtin_huge_valf();
+long double __builtin_huge_vall();
+double __builtin_hypot(double, double);
+float __builtin_hypotf(float, float);
+long double __builtin_hypotl(long double, long double);
+int __builtin_iceil(double);
+int __builtin_iceilf(float);
+int __builtin_iceill(long double);
+int __builtin_ifloor(double);
+int __builtin_ifloorf(float);
+int __builtin_ifloorl(long double);
+int __builtin_ilogb(double);
+int __builtin_ilogbf(float);
+int __builtin_ilogbl(long double);
+double __builtin_inf();
+float __builtin_inff();
+long double __builtin_infl();
+
+
+
+int __builtin_irint(double);
+int __builtin_irintf(float);
+int __builtin_irintl(long double);
+int __builtin_iround(double);
+int __builtin_iroundf(float);
+int __builtin_iroundl(long double);
+double __builtin_j0(double);
+float __builtin_j0f(float);
+long double __builtin_j0l(long double);
+double __builtin_j1(double);
+float __builtin_j1f(float);
+long double __builtin_j1l(long double);
+double __builtin_jn(int, double);
+float __builtin_jnf(int, float);
+long double __builtin_jnl(int, long double);
+long __builtin_lceil(double);
+long __builtin_lceilf(float);
+long __builtin_lceill(long double);
+double __builtin_ldexp(double, int);
+float __builtin_ldexpf(float, int);
+long double __builtin_ldexpl(long double, int);
+long __builtin_lfloor(double);
+long __builtin_lfloorf(float);
+long __builtin_lfloorl(long double);
+double __builtin_lgamma(double);
+float __builtin_lgammaf(float);
+long double __builtin_lgammal(long double);
+double __builtin_lgamma_r(double, int *);
+float __builtin_lgammaf_r(float, int *);
+long double __builtin_lgammal_r(long double, int *);
+long long __builtin_llceil(double);
+long long __builtin_llceilf(float);
+long long __builtin_llceill(long double);
+long long __builtin_llfloor(double);
+long long __builtin_llfloorf(float);
+long long __builtin_llfloorl(long double);
+long long __builtin_llrint(double);
+long long __builtin_llrintf(float);
+long long __builtin_llrintl(long double);
+long long __builtin_llround(double);
+long long __builtin_llroundf(float);
+long long __builtin_llroundl(long double);
+double __builtin_log(double);
+double __builtin_log10(double);
+float __builtin_log10f(float);
+long double __builtin_log10l(long double);
+double __builtin_log1p(double);
+float __builtin_log1pf(float);
+long double __builtin_log1pl(long double);
+double __builtin_log2(double);
+float __builtin_log2f(float);
+long double __builtin_log2l(long double);
+double __builtin_logb(double);
+float __builtin_logbf(float);
+long double __builtin_logbl(long double);
+float __builtin_logf(float);
+long double __builtin_logl(long double);
+long __builtin_lrint(double);
+long __builtin_lrintf(float);
+long __builtin_lrintl(long double);
+long __builtin_lround(double);
+long __builtin_lroundf(float);
+long __builtin_lroundl(long double);
+double __builtin_modf(double, double *);
+float __builtin_modff(float, float *);
+long double __builtin_modfl(long double, long double *);
+double __builtin_nan(const char *);
+float __builtin_nanf(const char *);
+long double __builtin_nanl(const char *);
+
+
+
+double __builtin_nans(const char *);
+float __builtin_nansf(const char *);
+long double __builtin_nansl(const char *);
+double __builtin_nearbyint(double);
+float __builtin_nearbyintf(float);
+long double __builtin_nearbyintl(long double);
+double __builtin_nextafter(double, double);
+float __builtin_nextafterf(float, float);
+long double __builtin_nextafterl(long double, long double);
+double __builtin_nexttoward(double, long double);
+float __builtin_nexttowardf(float, long double);
+long double __builtin_nexttowardl(long double, long double);
+double __builtin_pow(double, double);
+double __builtin_pow10(double);
+float __builtin_pow10f(float);
+long double __builtin_pow10l(long double);
+float __builtin_powf(float, float);
+double __builtin_powi(double, int);
+float __builtin_powif(float, int);
+long double __builtin_powil(long double, int);
+long double __builtin_powl(long double, long double);
+double __builtin_remainder(double, double);
+float __builtin_remainderf(float, float);
+long double __builtin_remainderl(long double, long double);
+double __builtin_remquo(double, double, int *);
+float __builtin_remquof(float, float, int *);
+long double __builtin_remquol(long double, long double, int *);
+double __builtin_rint(double);
+float __builtin_rintf(float);
+long double __builtin_rintl(long double);
+double __builtin_round(double);
+float __builtin_roundf(float);
+long double __builtin_roundl(long double);
+double __builtin_scalb(double, double);
+float __builtin_scalbf(float, float);
+long double __builtin_scalbl(long double, long double);
+double __builtin_scalbln(double, long);
+float __builtin_scalblnf(float, long);
+long double __builtin_scalblnl(long double, long);
+double __builtin_scalbn(double, int);
+float __builtin_scalbnf(float, int);
+long double __builtin_scalbnl(long double, int);
+int __builtin_signbit(double);
+int __builtin_signbitf(float);
+int __builtin_signbitl(long double);
+
+
+
+double __builtin_significand(double);
+float __builtin_significandf(float);
+long double __builtin_significandl(long double);
+double __builtin_sin(double);
+void __builtin_sincos(double, double *, double *);
+void __builtin_sincosf(float, float *, float *);
+void __builtin_sincosl(long double, long double *, long double *);
+float __builtin_sinf(float);
+double __builtin_sinh(double);
+float __builtin_sinhf(float);
+long double __builtin_sinhl(long double);
+long double __builtin_sinl(long double);
+double __builtin_sqrt(double);
+float __builtin_sqrtf(float);
+long double __builtin_sqrtl(long double);
+double __builtin_tan(double);
+float __builtin_tanf(float);
+double __builtin_tanh(double);
+float __builtin_tanhf(float);
+long double __builtin_tanhl(long double);
+long double __builtin_tanl(long double);
+double __builtin_tgamma(double);
+float __builtin_tgammaf(float);
+long double __builtin_tgammal(long double);
+double __builtin_trunc(double);
+float __builtin_truncf(float);
+long double __builtin_truncl(long double);
+double __builtin_y0(double);
+float __builtin_y0f(float);
+long double __builtin_y0l(long double);
+double __builtin_y1(double);
+float __builtin_y1f(float);
+long double __builtin_y1l(long double);
+double __builtin_yn(int, double);
+float __builtin_ynf(int, float);
+long double __builtin_ynl(int, long double);
+double __builtin_cabs(_Complex double);
+float __builtin_cabsf(_Complex float);
+long double __builtin_cabsl(_Complex long double);
+_Complex double __builtin_cacos(_Complex double);
+_Complex float __builtin_cacosf(_Complex float);
+_Complex double __builtin_cacosh(_Complex double);
+_Complex float __builtin_cacoshf(_Complex float);
+_Complex long double __builtin_cacoshl(_Complex long double);
+_Complex long double __builtin_cacosl(_Complex long double);
+double __builtin_carg(_Complex double);
+float __builtin_cargf(_Complex float);
+long double __builtin_cargl(_Complex long double);
+_Complex double __builtin_casin(_Complex double);
+_Complex float __builtin_casinf(_Complex float);
+_Complex double __builtin_casinh(_Complex double);
+_Complex float __builtin_casinhf(_Complex float);
+_Complex long double __builtin_casinhl(_Complex long double);
+_Complex long double __builtin_casinl(_Complex long double);
+_Complex double __builtin_catan(_Complex double);
+_Complex float __builtin_catanf(_Complex float);
+_Complex double __builtin_catanh(_Complex double);
+_Complex float __builtin_catanhf(_Complex float);
+_Complex long double __builtin_catanhl(_Complex long double);
+_Complex long double __builtin_catanl(_Complex long double);
+_Complex double __builtin_ccos(_Complex double);
+_Complex float __builtin_ccosf(_Complex float);
+_Complex double __builtin_ccosh(_Complex double);
+_Complex float __builtin_ccoshf(_Complex float);
+_Complex long double __builtin_ccoshl(_Complex long double);
+_Complex long double __builtin_ccosl(_Complex long double);
+_Complex double __builtin_cexp(_Complex double);
+_Complex float __builtin_cexpf(_Complex float);
+_Complex long double __builtin_cexpl(_Complex long double);
+_Complex double __builtin_cexpi(double);
+_Complex float __builtin_cexpif(float);
+_Complex long double __builtin_cexpil(long double);
+double __builtin_cimag(_Complex double);
+float __builtin_cimagf(_Complex float);
+long double __builtin_cimagl(_Complex long double);
+_Complex double __builtin_clog(_Complex double);
+_Complex float __builtin_clogf(_Complex float);
+_Complex long double __builtin_clogl(_Complex long double);
+_Complex double __builtin_clog10(_Complex double);
+_Complex float __builtin_clog10f(_Complex float);
+_Complex long double __builtin_clog10l(_Complex long double);
+_Complex double __builtin_conj(_Complex double);
+_Complex float __builtin_conjf(_Complex float);
+_Complex long double __builtin_conjl(_Complex long double);
+_Complex double __builtin_cpow(_Complex double, _Complex double);
+_Complex float __builtin_cpowf(_Complex float, _Complex float);
+_Complex long double __builtin_cpowl(_Complex long double, _Complex long double);
+_Complex double __builtin_cproj(_Complex double);
+_Complex float __builtin_cprojf(_Complex float);
+_Complex long double __builtin_cprojl(_Complex long double);
+double __builtin_creal(_Complex double);
+float __builtin_crealf(_Complex float);
+long double __builtin_creall(_Complex long double);
+_Complex double __builtin_csin(_Complex double);
+_Complex float __builtin_csinf(_Complex float);
+_Complex double __builtin_csinh(_Complex double);
+_Complex float __builtin_csinhf(_Complex float);
+_Complex long double __builtin_csinhl(_Complex long double);
+_Complex long double __builtin_csinl(_Complex long double);
+_Complex double __builtin_csqrt(_Complex double);
+_Complex float __builtin_csqrtf(_Complex float);
+_Complex long double __builtin_csqrtl(_Complex long double);
+_Complex double __builtin_ctan(_Complex double);
+_Complex float __builtin_ctanf(_Complex float);
+_Complex double __builtin_ctanh(_Complex double);
+_Complex float __builtin_ctanhf(_Complex float);
+_Complex long double __builtin_ctanhl(_Complex long double);
+_Complex long double __builtin_ctanl(_Complex long double);
+int __builtin_bcmp(const void *, const void *, unsigned long);
+void __builtin_bcopy(const void *, void *, unsigned long);
+void __builtin_bzero(void *, unsigned long);
+char * __builtin_index(const char *, int);
+void * __builtin_memchr(const void *, int, unsigned long);
+int __builtin_memcmp(const void *, const void *, unsigned long);
+void * __builtin_memcpy(void *, const void *, unsigned long);
+void * __builtin_memmove(void *, const void *, unsigned long);
+void * __builtin_mempcpy(void *, const void *, unsigned long);
+void * __builtin_memset(void *, int, unsigned long);
+char * __builtin_rindex(const char *, int);
+char * __builtin_stpcpy(char *, const char *);
+char * __builtin_stpncpy(char *, const char *, unsigned long);
+int __builtin_strcasecmp(const char *, const char *);
+char * __builtin_strcat(char *, const char *);
+char * __builtin_strchr(const char *, int);
+int __builtin_strcmp(const char *, const char *);
+char * __builtin_strcpy(char *, const char *);
+unsigned long __builtin_strcspn(const char *, const char *);
+char * __builtin_strdup(const char *);
+char * __builtin_strndup(const char *, unsigned long);
+unsigned long __builtin_strlen(const char *);
+int __builtin_strncasecmp(const char *, const char *, unsigned long);
+char * __builtin_strncat(char *, const char *, unsigned long);
+int __builtin_strncmp(const char *, const char *, unsigned long);
+char * __builtin_strncpy(char *, const char *, unsigned long);
+char * __builtin_strpbrk(const char *, const char *);
+char * __builtin_strrchr(const char *, int);
+unsigned long __builtin_strspn(const char *, const char *);
+char * __builtin_strstr(const char *, const char *);
+int __builtin_fprintf(struct _IO_FILE *, const char *, ...);
+int __builtin_fprintf_unlocked(struct _IO_FILE *, const char *, ...);
+int __builtin_putc(int, struct _IO_FILE *);
+int __builtin_putc_unlocked(int, struct _IO_FILE *);
+int __builtin_fputc(int, struct _IO_FILE *);
+int __builtin_fputc_unlocked(int, struct _IO_FILE *);
+int __builtin_fputs(const char *, struct _IO_FILE *);
+int __builtin_fputs_unlocked(const char *, struct _IO_FILE *);
+int __builtin_fscanf(struct _IO_FILE *, const char *, ...);
+unsigned long __builtin_fwrite(const void *, unsigned long, unsigned long, struct _IO_FILE *);
+unsigned long __builtin_fwrite_unlocked(const void *, unsigned long, unsigned long, struct _IO_FILE *);
+int __builtin_printf(const char *, ...);
+int __builtin_printf_unlocked(const char *, ...);
+int __builtin_putchar(int);
+int __builtin_putchar_unlocked(int);
+int __builtin_puts(const char *);
+int __builtin_puts_unlocked(const char *);
+int __builtin_scanf(const char *, ...);
+int __builtin_snprintf(char *, unsigned long, const char *, ...);
+int __builtin_sprintf(char *, const char *, ...);
+int __builtin_sscanf(const char *, const char *, ...);
+int __builtin_vfprintf(struct _IO_FILE *, const char *, void **);
+int __builtin_vfscanf(struct _IO_FILE *, const char *, void **);
+int __builtin_vprintf(const char *, void **);
+int __builtin_vscanf(const char *, void **);
+int __builtin_vsnprintf(char *, unsigned long, const char *, void **);
+int __builtin_vsprintf(char *, const char *, void **);
+int __builtin_vsscanf(const char *, const char *, void **);
+int __builtin_isalnum(int);
+int __builtin_isalpha(int);
+int __builtin_isascii(int);
+int __builtin_isblank(int);
+int __builtin_iscntrl(int);
+int __builtin_isdigit(int);
+int __builtin_isgraph(int);
+int __builtin_islower(int);
+int __builtin_isprint(int);
+int __builtin_ispunct(int);
+int __builtin_isspace(int);
+int __builtin_isupper(int);
+int __builtin_isxdigit(int);
+int __builtin_toascii(int);
+int __builtin_tolower(int);
+int __builtin_toupper(int);
+int __builtin_iswalnum(unsigned int);
+int __builtin_iswalpha(unsigned int);
+int __builtin_iswblank(unsigned int);
+int __builtin_iswcntrl(unsigned int);
+int __builtin_iswdigit(unsigned int);
+int __builtin_iswgraph(unsigned int);
+int __builtin_iswlower(unsigned int);
+int __builtin_iswprint(unsigned int);
+int __builtin_iswpunct(unsigned int);
+int __builtin_iswspace(unsigned int);
+int __builtin_iswupper(unsigned int);
+int __builtin_iswxdigit(unsigned int);
+unsigned int __builtin_towlower(unsigned int);
+unsigned int __builtin_towupper(unsigned int);
+void __builtin_abort();
+int __builtin_abs(int);
+void * __builtin_aggregate_incoming_address();
+void * __builtin_alloca(unsigned long);
+void * __builtin_apply();
+void * __builtin_apply_args();
+short int __builtin_bswap16(short int);
+int __builtin_bswap32(int);
+long long int __builtin_bswap64(long long int);
+void __builtin___clear_cache(void *, void *);
+void * __builtin_calloc(unsigned long, unsigned long);
+int __builtin_classify_type();
+int __builtin_clz(unsigned int);
+int __builtin_clzimax(unsigned long int);
+int __builtin_clzl(unsigned long);
+int __builtin_clzll(unsigned long long);
+int __builtin_constant_p();
+int __builtin_ctz(unsigned int);
+int __builtin_ctzimax(unsigned long int);
+int __builtin_ctzl(unsigned long);
+int __builtin_ctzll(unsigned long long);
+int __builtin_clrsb(int);
+int __builtin_clrsbimax(long int);
+int __builtin_clrsbl(long);
+int __builtin_clrsbll(long long);
+char * __builtin_dcgettext(const char *, const char *, int);
+char * __builtin_dgettext(const char *, const char *);
+void * __builtin_dwarf_cfa();
+unsigned int __builtin_dwarf_sp_column();
+void __builtin_eh_return();
+int __builtin_eh_return_data_regno(int);
+int __builtin_execl(const char *, const char *, ...);
+int __builtin_execlp(const char *, const char *, ...);
+int __builtin_execle(const char *, const char *, ...);
+int __builtin_execv(const char *, char *const);
+int __builtin_execvp(const char *, char *const);
+int __builtin_execve(const char *, char *const, char *const);
+void __builtin_exit(int);
+long __builtin_expect(long, long);
+void * __builtin_assume_aligned(const void *, unsigned long, ...);
+void * __builtin_extend_pointer(void *);
+void * __builtin_extract_return_addr(void *);
+int __builtin_ffs(int);
+int __builtin_ffsimax(long int);
+int __builtin_ffsl(long);
+int __builtin_ffsll(long long);
+int __builtin_fork();
+void * __builtin_frame_address(unsigned int);
+void __builtin_free(void *);
+void * __builtin_frob_return_addr(void *);
+char * __builtin_gettext(const char *);
+long int __builtin_imaxabs(long int);
+void __builtin_init_dwarf_reg_size_table(void *);
+int __builtin_finite(double);
+int __builtin_finitef(float);
+int __builtin_finitel(long double);
+
+
+
+int __builtin_fpclassify(int, int, int, int, int, ...);
+int __builtin_isfinite();
+int __builtin_isinf_sign();
+int __builtin_isinf();
+int __builtin_isinff(float);
+int __builtin_isinfl(long double);
+
+
+
+int __builtin_isnan();
+int __builtin_isnanf(float);
+int __builtin_isnanl(long double);
+
+
+
+int __builtin_isnormal();
+int __builtin_isgreater();
+int __builtin_isgreaterequal();
+int __builtin_isless();
+int __builtin_islessequal();
+int __builtin_islessgreater();
+int __builtin_isunordered();
+long __builtin_labs(long);
+long long __builtin_llabs(long long);
+void __builtin_longjmp(void *, int);
+void * __builtin_malloc(unsigned long);
+void * __builtin_next_arg();
+int __builtin_parity(unsigned int);
+int __builtin_parityimax(unsigned long int);
+int __builtin_parityl(unsigned long);
+int __builtin_parityll(unsigned long long);
+int __builtin_popcount(unsigned int);
+int __builtin_popcountimax(unsigned long int);
+int __builtin_popcountl(unsigned long);
+int __builtin_popcountll(unsigned long long);
+int __builtin_posix_memalign(void **, unsigned long, unsigned long);
+void __builtin_prefetch(const void *, ...);
+void * __builtin_realloc(void *, unsigned long);
+void __builtin_return(void *);
+void * __builtin_return_address(unsigned int);
+void * __builtin_saveregs();
+int __builtin_setjmp(void *);
+long int __builtin_strfmon(char *, unsigned long, const char *, ...);
+unsigned long __builtin_strftime(char *, unsigned long, const char *, const void *);
+void __builtin_trap();
+void __builtin_unreachable();
+void __builtin_unwind_init();
+void __builtin_update_setjmp_buf(void *, int);
+void __builtin_va_copy(void **, void **);
+void __builtin_va_end(void **);
+void __builtin_va_start(void **, ...);
+int __builtin_va_arg_pack();
+int __builtin_va_arg_pack_len();
+void __builtin__exit(int);
+void __builtin__Exit(int);
+void __builtin_init_trampoline();
+void __builtin_init_heap_trampoline();
+void __builtin_adjust_trampoline();
+void __builtin_nonlocal_goto();
+void __builtin_setjmp_setup();
+void __builtin_setjmp_receiver();
+void __builtin_stack_save();
+void __builtin_stack_restore();
+void __builtin_alloca_with_align();
+unsigned long __builtin_object_size(const void *, int);
+void * __builtin___memcpy_chk(void *, const void *, unsigned long, unsigned long);
+void * __builtin___memmove_chk(void *, const void *, unsigned long, unsigned long);
+void * __builtin___mempcpy_chk(void *, const void *, unsigned long, unsigned long);
+void * __builtin___memset_chk(void *, int, unsigned long, unsigned long);
+char * __builtin___stpcpy_chk(char *, const char *, unsigned long);
+char * __builtin___stpncpy_chk(char *, const char *, unsigned long, unsigned long);
+char * __builtin___strcat_chk(char *, const char *, unsigned long);
+char * __builtin___strcpy_chk(char *, const char *, unsigned long);
+char * __builtin___strncat_chk(char *, const char *, unsigned long, unsigned long);
+char * __builtin___strncpy_chk(char *, const char *, unsigned long, unsigned long);
+int __builtin___snprintf_chk(char *, unsigned long, int, unsigned long, const char *, ...);
+int __builtin___sprintf_chk(char *, int, unsigned long, const char *, ...);
+int __builtin___vsnprintf_chk(char *, unsigned long, int, unsigned long, const char *, void **);
+int __builtin___vsprintf_chk(char *, int, unsigned long, const char *, void **);
+int __builtin___fprintf_chk(struct _IO_FILE *, int, const char *, ...);
+int __builtin___printf_chk(int, const char *, ...);
+int __builtin___vfprintf_chk(struct _IO_FILE *, int, const char *, void **);
+int __builtin___vprintf_chk(int, const char *, void **);
+void __cyg_profile_func_enter(void *, void *);
+void __cyg_profile_func_exit(void *, void *);
+void * __builtin_thread_pointer();
+void __builtin_set_thread_pointer(void *);
+
+
+void __builtin_unwind_resume();
+void __builtin_cxa_end_cleanup();
+void __builtin_eh_pointer();
+void __builtin_eh_filter();
+void __builtin_eh_copy_values();
+const char * __builtin_FILE();
+const char * __builtin_FUNCTION();
+int __builtin_LINE();
+typedef void ** __builtin_va_list;
+extern const char *__PRETTY_FUNCTION__;
+typedef int wchar_t;
Index: src/libcfa/prelude.cf
===================================================================
--- src/libcfa/prelude.cf	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/libcfa/prelude.cf	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,615 @@
+//                               -*- Mode: C -*- 
+// 
+// Copyright (C) Glen Ditchfield 1994, 1999
+// 
+// prelude.cf -- Standard Cforall Preample for C99
+// 
+// Author           : Glen Ditchfield
+// Created On       : Sat Nov 29 07:23:41 2014
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jun  9 14:43:47 2015
+// Update Count     : 75
+//
+
+// Following line added from stddef.h by build
+
+typedef long int ptrdiff_t;
+
+// Section numbers from: http://plg.uwaterloo.ca/~cforall/refrat.pdf
+
+// ------------------------------------------------------------
+//
+// Section 4.1 Primary Expressions
+//
+// ------------------------------------------------------------
+
+const int 0, 1;
+
+forall ( dtype DT ) const DT * const	0;
+forall ( ftype FT ) FT * const		0;
+
+// ------------------------------------------------------------
+//
+// Section 4.2 Postfix Operators
+//
+// ------------------------------------------------------------
+
+_Bool			?++( _Bool * ),				?++( volatile _Bool * );
+_Bool			?--( _Bool * ),				?--( volatile _Bool * );
+unsigned char		?++( unsigned char * ),			?++( volatile unsigned char * );
+signed int		?++( signed int * ),			?++( volatile signed int * );
+signed int		?--( signed int * ),			?--( volatile signed int * );
+unsigned int		?++( unsigned int * ),			?++( volatile unsigned int * );
+unsigned int		?--( unsigned int * ),			?--( volatile unsigned int * );
+signed long int		?++( signed long int * ),		?++( volatile signed long int * );
+signed long int		?--( signed long int * ),		?--( volatile signed long int * );
+unsigned long int	?++( unsigned long int * ),		?++( volatile unsigned long int * );
+unsigned long int	?--( unsigned long int * ),		?--( volatile unsigned long int * );
+signed long long int	?++( signed long long int * ),		?++( volatile signed long long int * );
+signed long long int	?--( signed long long int * ),		?--( volatile signed long long int * );
+unsigned long long int	?++( unsigned long long int * ),	?++( volatile unsigned long long int * );
+unsigned long long int	?--( unsigned long long int * ),	?--( volatile unsigned long long int * );
+float			?++( float * ),				?++( volatile float * );
+float			?--( float * ),				?--( volatile float * );
+double			?++( double * ),			?++( volatile double * );
+double			?--( double * ),			?--( volatile double * );
+long double		?++( long double * ),			?++( volatile long double * );
+long double		?--( long double * ),			?--( volatile long double * );
+float _Complex		?++( float _Complex * ),		?++( volatile float _Complex * );
+float _Complex		?--( float _Complex * ),		?--( volatile float _Complex * );
+double _Complex		?++( double _Complex * ),		?++( volatile double _Complex * );
+double _Complex		?--( double _Complex * ),		?--( volatile double _Complex * );
+long double _Complex	?++( long double _Complex * ),		?++( volatile long double _Complex * );
+long double _Complex	?--( long double _Complex * ),		?--( volatile long double _Complex * );
+
+forall( type T ) T *			 ?++(		     T ** );
+forall( type T ) const T *		 ?++( const	     T ** );
+forall( type T ) volatile T *		 ?++(	    volatile T ** );
+forall( type T ) const volatile T *	 ?++( const volatile T ** );
+forall( type T ) T *			 ?--(		     T ** );
+forall( type T ) const T *		 ?--( const	     T ** );
+forall( type T ) volatile T *		 ?--(	    volatile T ** );
+forall( type T ) const volatile T *	 ?--( const volatile T ** );
+
+forall( type T ) lvalue T		 ?[?](		      T *,	    ptrdiff_t );
+forall( type T ) const lvalue T		 ?[?]( const	      T *,	    ptrdiff_t );
+forall( type T ) volatile lvalue T	 ?[?](       volatile T *,	    ptrdiff_t );
+forall( type T ) const volatile lvalue T ?[?]( const volatile T *,	    ptrdiff_t );
+forall( type T ) lvalue T		 ?[?](		ptrdiff_t,		  T * );
+forall( type T ) const lvalue T		 ?[?](		ptrdiff_t, const	  T * );
+forall( type T ) volatile lvalue T	 ?[?](		ptrdiff_t,	 volatile T * );
+forall( type T ) const volatile lvalue T ?[?](		ptrdiff_t, const volatile T * );
+
+// ------------------------------------------------------------
+//
+// Section 4.3 Unary Operators
+//
+// ------------------------------------------------------------
+
+_Bool			++?( _Bool * ),				--?( _Bool * );
+signed int		++?( signed int * ),			--?( signed int * );
+unsigned int		++?( unsigned int * ),			--?( unsigned int * );
+signed long int		++?( signed long int * ),		--?( signed long int * );
+unsigned long int	++?( unsigned long int * ),		--?( unsigned long int * );
+signed long long int	++?( signed long long int * ),		--?( signed long long int * );
+unsigned long long int	++?( unsigned long long int * ),	--?( unsigned long long int * );
+float			++?( float * ),				--?( float * );
+double			++?( double * ),			--?( double * );
+long double		++?( long double * ),			--?( long double * );
+float _Complex		++?( float _Complex * ),		--?( float _Complex * );
+double _Complex		++?( double _Complex * ),		--?( double _Complex * );
+long double _Complex	++?( long double _Complex * ),		--?( long double _Complex * );
+
+forall( type T ) T *			 ++?(		     T ** );
+forall( type T ) const T *		 ++?( const	     T ** );
+forall( type T ) volatile T *		 ++?(	    volatile T ** );
+forall( type T ) const volatile T *	 ++?( const volatile T ** );
+forall( type T ) T *			 --?(		     T ** );
+forall( type T ) const T *		 --?( const	     T ** );
+forall( type T ) volatile T *		 --?(	    volatile T ** );
+forall( type T ) const volatile T *	 --?( const volatile T ** );
+
+forall( type T ) lvalue T		 *?(		     T * );
+forall( type T ) const lvalue T		 *?( const	     T * );
+forall( type T ) volatile lvalue T	 *?(       volatile  T * );
+forall( type T ) const volatile lvalue T *?( const volatile  T * );
+forall( ftype FT ) lvalue FT		 *?( FT * );
+
+_Bool			+?( _Bool ),			-?( _Bool ),			~?( _Bool );	     
+signed int		+?( signed int ),		-?( signed int ),		~?( signed int );	     
+unsigned int		+?( unsigned int ),		-?( unsigned int ),		~?( unsigned int );	     
+signed long int		+?( signed long int ),		-?( signed long int ),		~?( signed long int );	     
+unsigned long int	+?( unsigned long int ),	-?( unsigned long int ),	~?( unsigned long int );	     
+signed long long int	+?( signed long long int ),	-?( signed long long int ),	~?( signed long long int );    
+unsigned long long int	+?( unsigned long long int ),	-?( unsigned long long int ),	~?( unsigned long long int );  
+float			+?( float ),			-?( float );
+double			+?( double ),			-?( double );
+long double		+?( long double ),		-?( long double );
+float _Complex		+?( float _Complex ),		-?( float _Complex );
+double _Complex		+?( double _Complex ),		-?( double _Complex );
+long double _Complex	+?( long double _Complex ),	-?( long double _Complex );
+
+signed int	!?( signed int ),		!?( unsigned int ),
+		!?( long int ),			!?( unsigned long int ),
+		!?( long long int ),		!?( unsigned long long int ),
+		!?( float ),			!?( double ),			!?( long double ),
+		!?( float _Complex ),		!?( double _Complex ),		!?( long double _Complex );
+
+forall ( dtype DT ) int !?( const volatile DT * );
+forall ( ftype FT ) int !?( FT * );
+
+// ------------------------------------------------------------
+//
+// Section 4.5 Multiplicative Operators
+//
+// ------------------------------------------------------------
+
+_Bool			?*?( _Bool, _Bool ),					?/?( _Bool, _Bool ),				?%?( _Bool, _Bool );
+signed int		?*?( signed int, signed int ),				?/?( signed int, signed int ),			?%?( signed int, signed int );
+unsigned int		?*?( unsigned int, unsigned int ),			?/?( unsigned int, unsigned int ),		?%?( unsigned int, unsigned int );
+signed long int		?*?( signed long int, signed long int ),		?/?( signed long int, signed long int ),	?%?( signed long int, signed long int );
+unsigned long int	?*?( unsigned long int, unsigned long int ),		?/?( unsigned long int, long unsigned ),	?%?( long unsigned, long unsigned );
+signed long long int	?*?( signed long long int, signed long long int ),	?/?( signed long long int, signed long long int ), ?%?( signed long long int, signed long long int );
+unsigned long long int	?*?( unsigned long long int, unsigned long long int ),	?/?( unsigned long long int, long long unsigned ), ?%?( long long unsigned, long long unsigned );
+float			?*?( float, float ),					?/?( float, float );
+double			?*?( double, double ),					?/?( double, double );
+long double		?*?( long double, long double ),			?/?( long double, long double );
+// gcc does not support _Imaginary
+//float _Imaginary	?*?( float _Imaginary, float _Imaginary),		?/?( float _Imaginary, float _Imaginary );
+//double _Imaginary	?*?( double _Imaginary, double _Imaginary),		?/?( double _Imaginary, double _Imaginary );
+//long double _Imaginary	?*?( long double _Imaginary, long double _Imaginary),	?/?( long double _Imaginary, long double _Imaginary );
+float _Complex		?*?( float _Complex, float _Complex ),			?/?( float _Complex, float _Complex );
+double _Complex		?*?( double _Complex, double _Complex ),		?/?( double _Complex, double _Complex );
+long double _Complex	?*?( long double _Complex, long double _Complex ),	?/?( long double _Complex, long double _Complex );
+
+// ------------------------------------------------------------
+//
+// Section 4.6 Additive Operators
+//
+// ------------------------------------------------------------
+
+_Bool			?+?( _Bool, _Bool ),					?-?( _Bool, _Bool );
+signed int		?+?( signed int, signed int ),				?-?( signed int, signed int );
+unsigned int		?+?( unsigned int, unsigned int ),			?-?( unsigned int, unsigned int );
+signed long int		?+?( signed long int, signed long int ),		?-?( signed long int, signed long int );
+unsigned long int	?+?( unsigned long int, unsigned long int ),		?-?( unsigned long int, long unsigned );
+signed long long int	?+?( signed long long int, long long int  signed),	?-?( signed long long int, signed long long int );
+unsigned long long int	?+?( unsigned long long int, unsigned long long int ),	?-?( unsigned long long int, long long unsigned );
+float			?+?( float, float ),					?-?( float, float );
+double			?+?( double, double ),					?-?( double, double );
+long double		?+?( long double, long double ),			?-?( long double, long double );
+float _Complex		?+?( float _Complex, float _Complex ),			?-?( float _Complex, float _Complex );
+double _Complex		?+?( double _Complex, double _Complex ),		?-?( double _Complex, double _Complex );
+long double _Complex	?+?( long double _Complex, long double _Complex ),	?-?( long double _Complex, long double _Complex );
+
+forall( type T ) T *			?+?(		    T *,	  ptrdiff_t );
+forall( type T ) T *			?+?(	      ptrdiff_t,		T * );
+forall( type T ) const T *		?+?( const	    T *,	  ptrdiff_t );
+forall( type T ) const T *		?+?(	      ptrdiff_t, const		T * );
+forall( type T ) volatile T *		?+?(	   volatile T *,	  ptrdiff_t );
+forall( type T ) volatile T *		?+?(	      ptrdiff_t,       volatile T * );
+forall( type T ) const volatile T *	?+?( const volatile T *,	  ptrdiff_t );
+forall( type T ) const volatile T *	?+?(	      ptrdiff_t, const volatile T * );
+forall( type T ) T *			?-?(		    T *,	  ptrdiff_t );
+forall( type T ) const T *		?-?( const	    T *,	  ptrdiff_t );
+forall( type T ) volatile T *		?-?(	   volatile T *,	  ptrdiff_t );
+forall( type T ) const volatile T *	?-?( const volatile T *,	  ptrdiff_t );
+forall( type T ) ptrdiff_t		?-?( const volatile T *, const volatile T * );
+
+// ------------------------------------------------------------
+//
+// Section 4.7 Bitwise Shift Operators
+//
+// ------------------------------------------------------------
+
+_Bool			?<<?( _Bool, _Bool ),				?>>?( _Bool, _Bool );
+signed int		?<<?( signed int, signed int ),			?>>?( signed int, signed int );
+unsigned int		?<<?( unsigned int, unsigned int ),		?>>?( unsigned int, unsigned int );
+signed long int		?<<?( signed long int, signed long int ),	?>>?( signed long int, signed long int );
+unsigned long int	?<<?( unsigned long int, long unsigned ),	?>>?( unsigned long int, unsigned long int );
+
+// ------------------------------------------------------------
+//
+// Section 4.8 Relational Operators
+//
+// ------------------------------------------------------------
+
+signed int ?<?( _Bool, _Bool ),				?<=?( _Bool, _Bool ),
+	   ?>?( _Bool, _Bool ),				?>=?( _Bool, _Bool );
+signed int ?<?( unsigned char, unsigned char ),		?<=?( unsigned char, unsigned char ),
+	   ?>?( unsigned char, unsigned char ),		?>=?( unsigned char, unsigned char );
+signed int ?<?( signed int, signed int ),		?<=?( signed int, signed int ),
+	   ?>?( signed int, signed int ),		?>=?( signed int, signed int );
+signed int ?<?( unsigned int, unsigned int ),		?<=?( unsigned int, unsigned int ),
+	   ?>?( unsigned int, unsigned int ),		?>=?( unsigned int, unsigned int );
+signed int ?<?( signed long int, signed long int ),	?<=?( signed long int, signed long int ),
+	   ?>?( signed long int, signed long int ),	?>=?( signed long int, signed long int );
+signed int ?<?( unsigned long int, unsigned long int ),	?<=?( unsigned long int, unsigned long int ),
+	   ?>?( unsigned long int, unsigned long int ),	?>=?( unsigned long int, unsigned long int );
+signed int ?<?( float, float ),				?<=?( float, float ),
+	   ?>?( float, float ),				?>=?( float, float );
+signed int ?<?( double, double ),			?<=?( double, double ),
+	   ?>?( double, double ),			?>=?( double, double );
+signed int ?<?( long double, long double ),		?<=?( long double, long double ),
+	   ?>?( long double, long double ),		?>=?( long double, long double );
+
+forall( dtype DT ) signed int ?<?(  const volatile DT *, const volatile DT * );
+forall( dtype DT ) signed int ?>?(  const volatile DT *, const volatile DT * );
+forall( dtype DT ) signed int ?<=?( const volatile DT *, const volatile DT * );
+forall( dtype DT ) signed int ?>=?( const volatile DT *, const volatile DT * );
+
+// ------------------------------------------------------------
+//
+// Section 4.9 Equality Operators
+//
+// ------------------------------------------------------------
+
+signed int ?==?( _Bool, _Bool ),				?!=?( _Bool, _Bool );
+signed int ?==?( signed int, signed int ),			?!=?( signed int, signed int );
+signed int ?==?( unsigned int, unsigned int ),			?!=?( unsigned int, unsigned int );
+signed int ?==?( signed long int, signed long int ),		?!=?( signed long int, signed long int );
+signed int ?==?( unsigned long int, unsigned long int ),	?!=?( unsigned long int, long unsigned );
+signed int ?==?( signed long long int, long long int  signed),	?!=?( signed long long int, signed long long int );
+signed int ?==?( unsigned long long int, unsigned long long int ), ?!=?( unsigned long long int, long long unsigned );
+signed int ?==?( float, float ),				?!=?( float, float );
+signed int ?==?( double, double ),				?!=?( double, double );
+signed int ?==?( long double, long double ),			?!=?( long double, long double );
+signed int ?==?( float _Complex, float _Complex ),		?!=?( float _Complex, float _Complex );
+signed int ?==?( double _Complex, double _Complex ),		?!=?( double _Complex, double _Complex );
+signed int ?==?( long double _Complex, long double _Complex ),	?!=?( long double _Complex, long double _Complex );
+
+forall( dtype DT ) signed int ?==?(		   DT *,		DT * );
+forall( dtype DT ) signed int ?==?( const	   DT *, const		DT * );
+forall( dtype DT ) signed int ?==?(       volatile DT *,       volatile DT * );
+forall( dtype DT ) signed int ?==?( const volatile DT *, const volatile DT * );
+forall( ftype FT ) signed int ?==?( FT *, FT * );
+forall( dtype DT ) signed int ?!=?(		   DT *,		DT * );
+forall( dtype DT ) signed int ?!=?( const	   DT *, const		DT * );
+forall( dtype DT ) signed int ?!=?(       volatile DT *,       volatile DT * );
+forall( dtype DT ) signed int ?!=?( const volatile DT *, const volatile DT * );
+forall( ftype FT ) signed int ?!=?( FT *, FT * );
+
+forall( dtype DT ) signed int ?==?( const volatile DT   *, const volatile void * );
+forall( dtype DT ) signed int ?==?( const volatile void *, const volatile DT * );
+forall( dtype DT ) signed int ?!=?( const volatile DT   *, const volatile void * );
+forall( dtype DT ) signed int ?!=?( const volatile void *, const volatile DT * );
+
+forall( dtype DT ) signed int ?==?( const volatile DT *, forall( dtype DT2 )const DT2 * );
+forall( dtype DT ) signed int ?==?( forall( dtype DT2 )const DT2 *, const volatile DT * );
+forall( ftype FT ) signed int ?==?( FT *, forall( ftype FT2 )FT2 * );
+forall( ftype FT ) signed int ?==?( forall( ftype FT2 )FT2 *, FT * );
+forall( dtype DT ) signed int ?!=?( const volatile DT *, forall( dtype DT2 )const DT2 * );
+forall( dtype DT ) signed int ?!=?( forall( dtype DT2 )const DT2 *, const volatile DT * );
+forall( ftype FT ) signed int ?!=?( FT *, forall( ftype FT2 )FT2 * );
+forall( ftype FT ) signed int ?!=?( forall( ftype FT2 )FT2 *, FT * );
+
+// ------------------------------------------------------------
+//
+// Section 4.10 Bitwise AND Operators
+//
+// ------------------------------------------------------------
+
+_Bool			?&?( _Bool, _Bool );
+signed int		?&?( signed int, signed int );
+unsigned int		?&?( unsigned int, unsigned int );
+signed long int		?&?( signed long int, signed long int );
+unsigned long int	?&?( unsigned long int, unsigned long int );
+
+// ------------------------------------------------------------
+//
+// Section 4.11 Bitwise XOR Operators
+//
+// ------------------------------------------------------------
+
+_Bool			?^?( _Bool, _Bool );
+signed int		?^?( signed int, signed int );
+unsigned int		?^?( unsigned int, unsigned int );
+signed long int		?^?( signed long int, signed long int );
+unsigned long int	?^?( unsigned long int, unsigned long int );
+
+// ------------------------------------------------------------
+//
+// Section 4.12 Bitwise OR Operators
+//
+// ------------------------------------------------------------
+
+_Bool			?|?( _Bool, _Bool );
+signed int		?|?( signed int, signed int );
+unsigned int		?|?( unsigned int, unsigned int );
+signed long int		?|?( signed long int, signed long int );
+unsigned long int	?|?( unsigned long int, unsigned long int );
+
+// ------------------------------------------------------------
+//
+// Section 4.16 Assignment Operator
+//
+// ------------------------------------------------------------
+
+forall( ftype FT ) FT *			?=?( FT **, FT * );
+forall( ftype FT ) FT *			?=?( FT * volatile *, FT * );
+
+forall( dtype DT ) DT *			?=?(		     DT *	   *,			DT * );
+forall( dtype DT ) DT *			?=?(		     DT * volatile *,			DT * );
+forall( dtype DT ) const DT *		?=?( const	     DT *	   *,			DT * );
+forall( dtype DT ) const DT *		?=?( const	     DT * volatile *,			DT * );
+forall( dtype DT ) const DT *		?=?( const	     DT *	   *, const		DT * );
+forall( dtype DT ) const DT *		?=?( const	     DT * volatile *, const		DT * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   *,			DT * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile *,			DT * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   *,	    volatile	DT * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile *,	    volatile	DT * );
+
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *,			DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,			DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   *, const		DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const		DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   *,	    volatile	DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *,	    volatile	DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   *, const volatile	DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile *, const volatile	DT * );
+
+forall( dtype DT ) DT *			?=?(		     DT *	   *,			void * );
+forall( dtype DT ) DT *			?=?(		     DT * volatile *,			void * );
+forall( dtype DT ) const DT *		?=?( const	     DT *	   *,			void * );
+forall( dtype DT ) const DT *		?=?( const	     DT * volatile *,			void * );
+forall( dtype DT ) const DT *		?=?( const	     DT *	   *, const		void * );
+forall( dtype DT ) const DT *		?=?( const	     DT * volatile *, const		void * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   *,			void * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile *,			void * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   *,	    volatile	void * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile *,	    volatile	void * );
+
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *,			void * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile *,			void * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *, const		void * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile *, const		void * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *,	    volatile	void * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile *,	    volatile	void * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *, const volatile	void * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile *, const volatile	void * );
+
+forall( dtype DT ) void *		 ?=?(		     void *	     *,			DT * );
+forall( dtype DT ) void *		 ?=?(		     void * volatile *,			DT * );
+forall( dtype DT ) const void *		 ?=?( const	     void *	     *,			DT * );
+forall( dtype DT ) const void *		 ?=?( const	     void * volatile *,			DT * );
+forall( dtype DT ) const void *		 ?=?( const	     void *	     *, const		DT * );
+forall( dtype DT ) const void *		 ?=?( const	     void * volatile *, const		DT * );
+forall( dtype DT ) volatile void *	 ?=?(	    volatile void *	     *,			DT * );
+forall( dtype DT ) volatile void *	 ?=?(	    volatile void * volatile *,			DT * );
+forall( dtype DT ) volatile void *	 ?=?(	    volatile void *	     *,	      volatile	DT * );
+forall( dtype DT ) volatile void *	 ?=?(	    volatile void * volatile *,	      volatile	DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void *	     *,			DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *,			DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void *	     *, const		DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *, const		DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void *	     *,	      volatile	DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *,	      volatile	DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void *	     *, const volatile	DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile *, const volatile	DT * );
+
+void *			?=?(		    void *	    *,		      void * );
+void *			?=?(		    void * volatile *,		      void * );
+const void *		?=?( const	    void *	    *,		      void * );
+const void *		?=?( const	    void * volatile *,		      void * );
+const void *		?=?( const	    void *	    *, const	      void * );
+const void *		?=?( const	    void * volatile *, const	      void * );
+volatile void *		?=?(	   volatile void *	    *,		      void * );
+volatile void *		?=?(	   volatile void * volatile *,		      void * );
+volatile void *		?=?(	   volatile void *	    *,	     volatile void * );
+volatile void *		?=?(	   volatile void * volatile *,	     volatile void * );
+const volatile void *	?=?( const volatile void *	    *,		      void * );
+const volatile void *	?=?( const volatile void * volatile *,		      void * );
+const volatile void *	?=?( const volatile void *	    *, const	      void * );
+const volatile void *	?=?( const volatile void * volatile *, const	      void * );
+const volatile void *	?=?( const volatile void *	    *,	     volatile void * );
+const volatile void *	?=?( const volatile void * volatile *,	     volatile void * );
+const volatile void *	?=?( const volatile void *	    *, const volatile void * );
+const volatile void *	?=?( const volatile void * volatile *, const volatile void * );
+
+//forall( dtype DT ) DT *			?=?(		    DT *	  *, forall( dtype DT2 ) const DT2 * );
+//forall( dtype DT ) DT *			?=?(		    DT * volatile *, forall( dtype DT2 ) const DT2 * );
+forall( dtype DT ) const DT *		?=?( const	    DT *	  *, forall( dtype DT2 ) const DT2 * );
+forall( dtype DT ) const DT *		?=?( const	    DT * volatile *, forall( dtype DT2 ) const DT2 * );
+//forall( dtype DT ) volatile DT *	?=?( volatile	    DT *	  *, forall( dtype DT2 ) const DT2 * );
+//forall( dtype DT ) volatile DT *	?=?( volatile	    DT * volatile *, forall( dtype DT2 ) const DT2 * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile DT *	  *, forall( dtype DT2 ) const DT2 * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile DT * volatile *, forall( dtype DT2 ) const DT2 * );
+
+forall( ftype FT ) FT *			?=?( FT *	   *, forall( ftype FT2 ) FT2 * );
+forall( ftype FT ) FT *			?=?( FT * volatile *, forall( ftype FT2 ) FT2 * );
+
+forall( type T ) T *			?+=?(		     T *	  *, ptrdiff_t );
+forall( type T ) T *			?+=?(		     T * volatile *, ptrdiff_t );
+forall( type T ) const T *		?+=?( const	     T *	  *, ptrdiff_t );
+forall( type T ) const T *		?+=?( const	     T * volatile *, ptrdiff_t );
+forall( type T ) volatile T *		?+=?(	    volatile T *	  *, ptrdiff_t );
+forall( type T ) volatile T *		?+=?(	    volatile T * volatile *, ptrdiff_t );
+forall( type T ) const volatile T *	?+=?( const volatile T *	  *, ptrdiff_t );
+forall( type T ) const volatile T *	?+=?( const volatile T * volatile *, ptrdiff_t );
+forall( type T ) T *			?-=?(		     T *	  *, ptrdiff_t );
+forall( type T ) T *			?-=?(		     T * volatile *, ptrdiff_t );
+forall( type T ) const T *		?-=?( const	     T *	  *, ptrdiff_t );
+forall( type T ) const T *		?-=?( const	     T * volatile *, ptrdiff_t );
+forall( type T ) volatile T *		?-=?(	    volatile T *	  *, ptrdiff_t );
+forall( type T ) volatile T *		?-=?(	    volatile T * volatile *, ptrdiff_t );
+forall( type T ) const volatile T *	?-=?( const volatile T *	  *, ptrdiff_t );
+forall( type T ) const volatile T *	?-=?( const volatile T * volatile *, ptrdiff_t );
+
+_Bool			?=?( _Bool *, _Bool ),					?=?( volatile _Bool *, _Bool );
+char			?=?( char *, char ),					?=?( volatile char *, char );
+char signed		?=?( char signed *, char signed ),			?=?( volatile char signed *, char signed );
+char unsigned		?=?( char unsigned *, char unsigned ),			?=?( volatile char unsigned *, char unsigned );
+int short		?=?( int short *, int short ),				?=?( volatile int short *, int short );
+int short unsigned	?=?( int short unsigned *, int short unsigned ),	?=?( volatile int short unsigned *, int short unsigned );
+signed int		?=?( signed int *, signed int ),			?=?( volatile signed int *, signed int );
+unsigned int		?=?( unsigned *, unsigned ),				?=?( volatile unsigned *, unsigned );
+signed long int		?=?( signed long int *, signed long int ),		?=?( volatile signed long int *, signed long int );
+unsigned long int	?=?( unsigned long int *, unsigned long int ),		?=?( volatile unsigned long int *, unsigned long int );
+signed long long int	?=?( signed long long int *, signed long long int ),	?=?( volatile signed long long int *, signed long long int );
+unsigned long long int	?=?( unsigned long long int *, unsigned long long int ), ?=?( volatile unsigned long long int *, unsigned long long int );
+
+_Bool			?*=?( _Bool *, _Bool ),					?*=?( volatile _Bool *, _Bool );
+char			?*=?( char *, char ),					?*=?( volatile char *, char );
+char signed		?*=?( char signed *, char signed ),			?*=?( volatile char signed *, char signed );
+char unsigned		?*=?( char unsigned *, char unsigned ),			?*=?( volatile char unsigned *, char unsigned );
+int short		?*=?( int short *, int short ),				?*=?( volatile int short *, int short );
+int short unsigned	?*=?( int short unsigned *, int short unsigned ),	?*=?( volatile int short unsigned *, int short unsigned );
+signed int		?*=?( signed int *, signed int ),			?*=?( volatile signed int *, signed int );
+unsigned int		?*=?( unsigned *, unsigned ),				?*=?( volatile unsigned *, unsigned );
+signed long int		?*=?( signed long int *, signed long int ),		?*=?( volatile signed long int *, signed long int );
+unsigned long int	?*=?( unsigned long int *, unsigned long int ),		?*=?( volatile unsigned long int *, unsigned long int );
+signed long long int	?*=?( signed long long int *, signed long long int ),	?*=?( volatile signed long long int *, signed long long int );
+unsigned long long int	?*=?( unsigned long long int *, unsigned long long int ), ?*=?( volatile unsigned long long int *, unsigned long long int );
+
+_Bool			?/=?( _Bool *, _Bool ),					?/=?( volatile _Bool *, _Bool );
+char			?/=?( char *, char ),					?/=?( volatile char *, char );
+char signed		?/=?( char signed *, char signed ),			?/=?( volatile char signed *, char signed );
+char unsigned		?/=?( char unsigned *, char unsigned ),			?/=?( volatile char unsigned *, char unsigned );
+int short		?/=?( int short *, int short ),				?/=?( volatile int short *, int short );
+int short unsigned	?/=?( int short unsigned *, int short unsigned ),	?/=?( volatile int short unsigned *, int short unsigned );
+signed int		?/=?( signed int *, signed int ),			?/=?( volatile signed int *, signed int );
+unsigned int		?/=?( unsigned *, unsigned ),				?/=?( volatile unsigned *, unsigned );
+signed long int		?/=?( signed long int *, signed long int ),		?/=?( volatile signed long int *, signed long int );
+unsigned long int	?/=?( unsigned long int *, unsigned long int ),		?/=?( volatile unsigned long int *, unsigned long int );
+signed long long int	?/=?( signed long long int *, signed long long int ),	?/=?( volatile signed long long int *, signed long long int );
+unsigned long long int	?/=?( unsigned long long int *, unsigned long long int ), ?/=?( volatile unsigned long long int *, unsigned long long int );
+
+_Bool			?%=?( _Bool *, _Bool ),					?%=?( volatile _Bool *, _Bool );
+char			?%=?( char *, char ),					?%=?( volatile char *, char );
+char signed		?%=?( char signed *, char signed ),			?%=?( volatile char signed *, char signed );
+char unsigned		?%=?( char unsigned *, char unsigned ),			?%=?( volatile char unsigned *, char unsigned );
+int short		?%=?( int short *, int short ),				?%=?( volatile int short *, int short );
+int short unsigned	?%=?( int short unsigned *, int short unsigned ),	?%=?( volatile int short unsigned *, int short unsigned );
+signed int		?%=?( signed int *, signed int ),			?%=?( volatile signed int *, signed int );
+unsigned int		?%=?( unsigned *, unsigned ),				?%=?( volatile unsigned *, unsigned );
+signed long int		?%=?( signed long int *, signed long int ),		?%=?( volatile signed long int *, signed long int );
+unsigned long int	?%=?( unsigned long int *, unsigned long int ),		?%=?( volatile unsigned long int *, unsigned long int );
+signed long long int	?%=?( signed long long int *, signed long long int ),	?%=?( volatile signed long long int *, signed long long int );
+unsigned long long int	?%=?( unsigned long long int *, unsigned long long int ), ?%=?( volatile unsigned long long int *, unsigned long long int );
+
+_Bool			?+=?( _Bool *, _Bool ),					?+=?( volatile _Bool *, _Bool );
+char			?+=?( char *, char ),					?+=?( volatile char *, char );
+char signed		?+=?( char signed *, char signed ),			?+=?( volatile char signed *, char signed );
+char unsigned		?+=?( char unsigned *, char unsigned ),			?+=?( volatile char unsigned *, char unsigned );
+int short		?+=?( int short *, int short ),				?+=?( volatile int short *, int short );
+int short unsigned	?+=?( int short unsigned *, int short unsigned ),	?+=?( volatile int short unsigned *, int short unsigned );
+signed int		?+=?( signed int *, signed int ),			?+=?( volatile signed int *, signed int );
+unsigned int		?+=?( unsigned *, unsigned ),				?+=?( volatile unsigned *, unsigned );
+signed long int		?+=?( signed long int *, signed long int ),		?+=?( volatile signed long int *, signed long int );
+unsigned long int	?+=?( unsigned long int *, unsigned long int ),		?+=?( volatile unsigned long int *, unsigned long int );
+signed long long int	?+=?( signed long long int *, signed long long int ),	?+=?( volatile signed long long int *, signed long long int );
+unsigned long long int	?+=?( unsigned long long int *, unsigned long long int ), ?+=?( volatile unsigned long long int *, unsigned long long int );
+
+_Bool			?-=?( _Bool *, _Bool ),					?-=?( volatile _Bool *, _Bool );
+char			?-=?( char *, char ),					?-=?( volatile char *, char );
+char signed		?-=?( char signed *, char signed ),			?-=?( volatile char signed *, char signed );
+char unsigned		?-=?( char unsigned *, char unsigned ),			?-=?( volatile char unsigned *, char unsigned );
+int short		?-=?( int short *, int short ),				?-=?( volatile int short *, int short );
+int short unsigned	?-=?( int short unsigned *, int short unsigned ),	?-=?( volatile int short unsigned *, int short unsigned );
+signed int		?-=?( signed int *, signed int ),			?-=?( volatile signed int *, signed int );
+unsigned int		?-=?( unsigned *, unsigned ),				?-=?( volatile unsigned *, unsigned );
+signed long int		?-=?( signed long int *, signed long int ),		?-=?( volatile signed long int *, signed long int );
+unsigned long int	?-=?( unsigned long int *, unsigned long int ),		?-=?( volatile unsigned long int *, unsigned long int );
+signed long long int	?-=?( signed long long int *, signed long long int ),	?-=?( volatile signed long long int *, signed long long int );
+unsigned long long int	?-=?( unsigned long long int *, unsigned long long int ), ?-=?( volatile unsigned long long int *, unsigned long long int );
+
+_Bool			?<<=?( _Bool *, _Bool ),				?<<=?( volatile _Bool *, _Bool );
+char			?<<=?( char *, char ),					?<<=?( volatile char *, char );
+char signed		?<<=?( char signed *, char signed ),			?<<=?( volatile char signed *, char signed );
+char unsigned		?<<=?( char unsigned *, char unsigned ),		?<<=?( volatile char unsigned *, char unsigned );
+int short		?<<=?( int short *, int short ),			?<<=?( volatile int short *, int short );
+int short unsigned	?<<=?( int short unsigned *, int short unsigned ),	?<<=?( volatile int short unsigned *, int short unsigned );
+signed int		?<<=?( signed int *, signed int ),			?<<=?( volatile signed int *, signed int );
+unsigned int		?<<=?( unsigned *, unsigned ),				?<<=?( volatile unsigned *, unsigned );
+signed long int		?<<=?( signed long int *, signed long int ),		?<<=?( volatile signed long int *, signed long int );
+unsigned long int	?<<=?( unsigned long int *, unsigned long int ),	?<<=?( volatile unsigned long int *, unsigned long int );
+signed long long int	?<<=?( signed long long int *, signed long long int ),	?<<=?( volatile signed long long int *, signed long long int );
+unsigned long long int	?<<=?( unsigned long long int *, unsigned long long int ), ?<<=?( volatile unsigned long long int *, unsigned long long int );
+
+_Bool			?>>=?( _Bool *, _Bool ),				?>>=?( volatile _Bool *, _Bool );
+char			?>>=?( char *, char ),					?>>=?( volatile char *, char );
+char signed		?>>=?( char signed *, char signed ),			?>>=?( volatile char signed *, char signed );
+char unsigned		?>>=?( char unsigned *, char unsigned ),		?>>=?( volatile char unsigned *, char unsigned );
+int short		?>>=?( int short *, int short ),			?>>=?( volatile int short *, int short );
+int short unsigned	?>>=?( int short unsigned *, int short unsigned ),	?>>=?( volatile int short unsigned *, int short unsigned );
+signed int		?>>=?( signed int *, signed int ),			?>>=?( volatile signed int *, signed int );
+unsigned int		?>>=?( unsigned *, unsigned ),				?>>=?( volatile unsigned *, unsigned );
+signed long int		?>>=?( signed long int *, signed long int ),		?>>=?( volatile signed long int *, signed long int );
+unsigned long int	?>>=?( unsigned long int *, unsigned long int ),	?>>=?( volatile unsigned long int *, unsigned long int );
+signed long long int	?>>=?( signed long long int *, signed long long int ),	?>>=?( volatile signed long long int *, signed long long int );
+unsigned long long int	?>>=?( unsigned long long int *, unsigned long long int ), ?>>=?( volatile unsigned long long int *, unsigned long long int );
+
+_Bool			?&=?( _Bool *, _Bool ),					?&=?( volatile _Bool *, _Bool );
+char			?&=?( char *, char ),					?&=?( volatile char *, char );
+char signed		?&=?( char signed *, char signed ),			?&=?( volatile char signed *, char signed );
+char unsigned		?&=?( char unsigned *, char unsigned ),			?&=?( volatile char unsigned *, char unsigned );
+int short		?&=?( int short *, int short ),				?&=?( volatile int short *, int short );
+int short unsigned	?&=?( int short unsigned *, int short unsigned ),	?&=?( volatile int short unsigned *, int short unsigned );
+signed int		?&=?( signed int *, signed int ),			?&=?( volatile signed int *, signed int );
+unsigned int		?&=?( unsigned *, unsigned ),				?&=?( volatile unsigned *, unsigned );
+signed long int		?&=?( signed long int *, signed long int ),		?&=?( volatile signed long int *, signed long int );
+unsigned long int	?&=?( unsigned long int *, unsigned long int ),		?&=?( volatile unsigned long int *, unsigned long int );
+signed long long int	?&=?( signed long long int *, signed long long int ),	?&=?( volatile signed long long int *, signed long long int );
+unsigned long long int	?&=?( unsigned long long int *, unsigned long long int ), ?&=?( volatile unsigned long long int *, unsigned long long int );
+
+_Bool			?|=?( _Bool *, _Bool ),					?|=?( volatile _Bool *, _Bool );
+char			?|=?( char *, char ),					?|=?( volatile char *, char );
+char signed		?|=?( char signed *, char signed ),			?|=?( volatile char signed *, char signed );
+char unsigned		?|=?( char unsigned *, char unsigned ),			?|=?( volatile char unsigned *, char unsigned );
+int short		?|=?( int short *, int short ),				?|=?( volatile int short *, int short );
+int short unsigned	?|=?( int short unsigned *, int short unsigned ),	?|=?( volatile int short unsigned *, int short unsigned );
+signed int		?|=?( signed int *, signed int ),			?|=?( volatile signed int *, signed int );
+unsigned int		?|=?( unsigned *, unsigned ),				?|=?( volatile unsigned *, unsigned );
+signed long int		?|=?( signed long int *, signed long int ),		?|=?( volatile signed long int *, signed long int );
+unsigned long int	?|=?( unsigned long int *, unsigned long int ),		?|=?( volatile unsigned long int *, unsigned long int );
+signed long long int	?|=?( signed long long int *, signed long long int ),	?|=?( volatile signed long long int *, signed long long int );
+unsigned long long int	?|=?( unsigned long long int *, unsigned long long int ), ?|=?( volatile unsigned long long int *, unsigned long long int );
+
+_Bool			?^=?( _Bool *, _Bool ),					?^=?( volatile _Bool *, _Bool );
+char			?^=?( char *, char ),					?^=?( volatile char *, char );
+char signed		?^=?( char signed *, char signed ),			?^=?( volatile char signed *, char signed );
+char unsigned		?^=?( char unsigned *, char unsigned ),			?^=?( volatile char unsigned *, char unsigned );
+int short		?^=?( int short *, int short ),				?^=?( volatile int short *, int short );
+int short unsigned	?^=?( int short unsigned *, int short unsigned ),	?^=?( volatile int short unsigned *, int short unsigned );
+signed int		?^=?( signed int *, signed int ),			?^=?( volatile signed int *, signed int );
+unsigned int		?^=?( unsigned *, unsigned ),				?^=?( volatile unsigned *, unsigned );
+signed long int		?^=?( signed long int *, signed long int ),		?^=?( volatile signed long int *, signed long int );
+unsigned long int	?^=?( unsigned long int *, unsigned long int ),		?^=?( volatile unsigned long int *, unsigned long int );
+signed long long int	?^=?( signed long long int *, signed long long int ),	?^=?( volatile signed long long int *, signed long long int );
+unsigned long long int	?^=?( unsigned long long int *, unsigned long long int ), ?^=?( volatile unsigned long long int *, unsigned long long int );
+
+float			?=?(  float *, float ), ?=?(  volatile float *, float ),
+			?*=?( float *, float ), ?*=?( volatile float *, float ),
+			?/=?( float *, float ), ?/=?( volatile float *, float ),
+			?+=?( float *, float ), ?+=?( volatile float *, float ),
+			?-=?( float *, float ), ?-=?( volatile float *, float );
+
+double			?=?(  double *, double ), ?=?(  volatile double *, double ),
+			?*=?( double *, double ), ?*=?( volatile double *, double ),
+			?/=?( double *, double ), ?/=?( volatile double *, double ),
+			?+=?( double *, double ), ?+=?( volatile double *, double ),
+			?-=?( double *, double ), ?-=?( volatile double *, double );
+
+long double		?=?(  long double *, long double ), ?=?(  volatile long double *, long double ),
+			?*=?( long double *, long double ), ?*=?( volatile long double *, long double ),
+			?/=?( long double *, long double ), ?/=?( volatile long double *, long double ),
+			?+=?( long double *, long double ), ?+=?( volatile long double *, long double ),
+			?-=?( long double *, long double ), ?-=?( volatile long double *, long double );
+
+float _Complex		?=?(  float _Complex *, float _Complex ), ?=?(  volatile float _Complex *, float _Complex ),
+			?*=?( float _Complex *, float _Complex ), ?*=?( volatile float _Complex *, float _Complex ),
+			?/=?( float _Complex *, float _Complex ), ?/=?( volatile float _Complex *, float _Complex ),
+			?+=?( float _Complex *, float _Complex ), ?+=?( volatile float _Complex *, float _Complex ),
+			?-=?( float _Complex *, float _Complex ), ?-=?( volatile float _Complex *, float _Complex );
+
+double _Complex		?=?(  double _Complex *, double _Complex ), ?=?(  volatile double _Complex *, double _Complex ),
+			?*=?( double _Complex *, double _Complex ), ?*=?( volatile double _Complex *, double _Complex ),
+			?/=?( double _Complex *, double _Complex ), ?/=?( volatile double _Complex *, double _Complex ),
+			?+=?( double _Complex *, double _Complex ), ?+=?( volatile double _Complex *, double _Complex ),
+			?-=?( double _Complex *, double _Complex ), ?-=?( volatile double _Complex *, double _Complex );
+
+long double _Complex	?=?(  long double _Complex *, long double _Complex ), ?=?(  volatile long double _Complex *, long double _Complex ),
+			?*=?( long double _Complex *, long double _Complex ), ?*=?( volatile long double _Complex *, long double _Complex ),
+			?/=?( long double _Complex *, long double _Complex ), ?/=?( volatile long double _Complex *, long double _Complex ),
+			?+=?( long double _Complex *, long double _Complex ), ?+=?( volatile long double _Complex *, long double _Complex ),
+			?-=?( long double _Complex *, long double _Complex ), ?-=?( volatile long double _Complex *, long double _Complex );
Index: src/libcfa/ptrdiff_t.c
===================================================================
--- src/libcfa/ptrdiff_t.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
+++ src/libcfa/ptrdiff_t.c	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -0,0 +1,1 @@
+#include <stddef.h>
Index: src/main.cc
===================================================================
--- src/main.cc	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ src/main.cc	(revision 937e51d79693364ccc3aec416b5db0894464e624)
@@ -10,6 +10,6 @@
 // Created On       : Fri May 15 23:12:02 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu May 21 21:15:54 2015
-// Update Count     : 9
+// Last Modified On : Mon Jun 22 17:02:11 2015
+// Update Count     : 73
 //
 
@@ -51,23 +51,30 @@
 using namespace std;
 
+#define OPTPRINT(x) \
+	if ( errorp ) std::cerr << x << std::endl;
+
+void parse( FILE * input, LinkageSpec::Type t, bool shouldExit = false );
+
 bool
 	astp = false,
+	bresolvep = false,
 	exprp = false,
 	expraltp = false,
 	grammarp = false,
 	libcfap = false,
+	nopreludep = false,
+	protop = false,
+	parsep = false,
 	resolvep = false,									// used in AlternativeFinder
 	symtabp = false,
-	parsep = false,
 	validp = false,
-	preludep = true,
-	protop = false,
-	codegenp = false,
-	errorp = false;
-
-enum { Ast, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Prototypes, Resolver, Symbol, Parse, };
+	errorp = false,
+	codegenp = false;
+
+enum { Ast, Bresolver, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Validate, };
 
 static struct option long_opts[] = {
 	{ "ast", no_argument, 0, Ast },
+	{ "before-resolver", no_argument, 0, Bresolver },
 	{ "expr", no_argument, 0, Expr },
 	{ "expralt", no_argument, 0, ExprAlt },
@@ -75,8 +82,9 @@
 	{ "libcfa", no_argument, 0, LibCFA },
 	{ "nopreamble", no_argument, 0, Nopreamble },
+	{ "parse", no_argument, 0, Parse },
 	{ "prototypes", no_argument, 0, Prototypes },
 	{ "resolver", no_argument, 0, Resolver },
 	{ "symbol", no_argument, 0, Symbol },
-	{ "parse", no_argument, 0, Parse },
+	{ "validate", no_argument, 0, Validate },
 	{ 0, 0, 0, 0 }
 };
@@ -91,5 +99,5 @@
 	
 	int c;
-	while ( (c = getopt_long( argc, argv, "aefglnpqrsxyzD:", long_opts, &long_index )) != -1 ) {
+	while ( (c = getopt_long( argc, argv, "abefglnpqrsvyzD:", long_opts, &long_index )) != -1 ) {
 		switch ( c ) {
 		  case Ast:
@@ -97,4 +105,8 @@
 			astp = true;
 			break;
+		  case Bresolver:
+		  case 'b':										// print before resolver steps
+			bresolvep = true;
+			break;
 		  case Expr:
 		  case 'e':										// dump AST after expression analysis
@@ -115,5 +127,5 @@
 		  case Nopreamble:
 		  case 'n':										// do not read preamble
-			preludep = false;
+			nopreludep = true;
 			break;
 		  case Prototypes:
@@ -133,5 +145,5 @@
 			symtabp = true;
 			break;
-		  case 'x':										// dump AST after decl validation pass
+		  case 'v':										// dump AST after decl validation pass
 			validp = true;
 			break;
@@ -153,4 +165,5 @@
 
 	try {
+		// choose to read the program from a file or stdin
 		if ( optind < argc ) {
 			input = fopen( argv[ optind ], "r" );
@@ -169,64 +182,32 @@
 	
 		Parser::get_parser().set_debug( grammarp );
-	
-		if ( preludep ) {								// include gcc builtins
-			FILE *builtins = fopen( CFA_LIBDIR "/builtins.cf", "r" );
+
+		// read in the builtins and the prelude
+		if ( ! nopreludep ) {							// include gcc builtins
+			FILE * builtins = fopen( CFA_LIBDIR "/builtins.cf", "r" );
 			if ( builtins == NULL ) {
-				std::cout << "Error: can't open builtins" << std::endl;
+				std::cerr << "Error: can't open builtins" << std::endl;
 				exit( 1 );
 			} // if
-	  
-			Parser::get_parser().set_linkage( LinkageSpec::Compiler );
-			Parser::get_parser().parse( builtins );
-	
-			if ( Parser::get_parser().get_parseStatus() != 0 ) {
-				return Parser::get_parser().get_parseStatus();
+
+			parse( builtins, LinkageSpec::Compiler );
+
+			if ( ! libcfap ) {
+				// read the prelude in, if we're not generating the cfa library
+				FILE * prelude = fopen( CFA_LIBDIR "/prelude.cf", "r" );
+				if ( prelude == NULL ) {
+					std::cerr << "Error: can't open prelude" << std::endl;
+					exit( 1 );
+				} // if
+		    
+		    parse( prelude, LinkageSpec::Intrinsic );
 			} // if
-			fclose( builtins );
-
-			FILE *prelude;
-			if ( libcfap ) {							// include cfa prelude
-				prelude = input;
-			} else {
-				prelude = fopen( CFA_LIBDIR "/prelude.cf", "r" );
-			} // if
-			if ( prelude == NULL ) {
-				std::cout << "Error: can't open prelude" << std::endl;
-				exit( 1 );
-			} // if
-	  
-			Parser::get_parser().set_linkage( LinkageSpec::Intrinsic );
-			Parser::get_parser().parse( prelude );
-	
-			if ( Parser::get_parser().get_parseStatus() != 0 ) {
-				return Parser::get_parser().get_parseStatus();
-			} // if
-			fclose( prelude );
-		} // if
-	
+		} // if
+
 		if ( libcfap ) {
-			std::list< Declaration* > translationUnit;
-			buildList( Parser::get_parser().get_parseTree(), translationUnit );
-			Parser::get_parser().freeTree();
-			SymTab::validate( translationUnit, false );
-			CodeGen::fixNames( translationUnit );
-			LibCfa::makeLibCfa( translationUnit );
-			ResolvExpr::resolve( translationUnit );
-			GenPoly::convertLvalue( translationUnit );
-			GenPoly::box( translationUnit );
-			CodeGen::generate( translationUnit, *output, true );
-			if ( output != &std::cout ) {
-				delete output;
-			} // if
-			return 0;
-		} // if
-	
-		Parser::get_parser().set_linkage( LinkageSpec::Cforall );
-  
-		Parser::get_parser().parse( input );
-		if ( grammarp || Parser::get_parser().get_parseStatus() != 0 ) {
-			return Parser::get_parser().get_parseStatus();
-		} // if
-		fclose( input );
+			parse( input, LinkageSpec::Intrinsic );	
+		} else {
+			parse( input, LinkageSpec::Cforall, grammarp );	
+		}
   
 		if ( parsep ) {
@@ -244,6 +225,15 @@
 		} // if
 
+		// add the assignment statement after the 
+		// initialization of a type parameter
+		OPTPRINT( "tweak" )
+		InitTweak::tweak( translationUnit );
+		OPTPRINT( "validate" )
+		SymTab::validate( translationUnit, symtabp );
+		if ( symtabp ) {
+			return 0;
+		} // if
+
 		if ( expraltp ) {
-			SymTab::validate( translationUnit, false );
 			ResolvExpr::AlternativePrinter printer( std::cout );
 			acceptAll( translationUnit, printer );
@@ -251,78 +241,45 @@
 		} // if
 
-		if ( symtabp ) {
-			SymTab::validate( translationUnit, true );
-			return 0;
-		} // if
-
 		if ( validp ) {
-			SymTab::validate( translationUnit, false );
-			printAll( translationUnit, std::cout );
-			return 0;
-		} // if
-
+			printAll( translationUnit, std::cout );
+			return 0;
+		} // if
+
+		OPTPRINT( "mutate" )
+		ControlStruct::mutate( translationUnit );
+		OPTPRINT( "fixNames" ) 
+		CodeGen::fixNames( translationUnit );
+
+		if ( libcfap ) {
+			protop = true;
+			// generate the bodies of cfa library functions
+			LibCfa::makeLibCfa( translationUnit );
+		} // if
+
+		if ( bresolvep ) {
+			printAll( translationUnit, std::cout );
+			return 0;
+		} // if
+
+		OPTPRINT( "resolve" )
+		ResolvExpr::resolve( translationUnit );
 		if ( exprp ) {
-			InitTweak::tweak( translationUnit );
-			SymTab::validate( translationUnit, false );
-			ControlStruct::mutate( translationUnit );
-			CodeGen::fixNames( translationUnit );
-			ResolvExpr::resolve( translationUnit );
-			printAll( translationUnit, std::cout );
-			return 0;
-		} // if
-
+			printAll( translationUnit, std::cout );
+		}
+
+		OPTPRINT( "copyParams" );
+		GenPoly::copyParams( translationUnit );
+		OPTPRINT( "convertSpecializations" )
+		GenPoly::convertSpecializations( translationUnit );		
+		OPTPRINT( "convertLvalue" )
+		GenPoly::convertLvalue( translationUnit );
+		OPTPRINT( "box" )
+		GenPoly::box( translationUnit );
+
+    // print the tree right before code generation
 		if ( codegenp ) {
-			// print the tree right before code generation
-			cerr << "tweak" << endl;
-			InitTweak::tweak( translationUnit );
-			cerr << "validate" << endl;
-			SymTab::validate( translationUnit, false );
-			cerr << "mutate" << endl;
-			ControlStruct::mutate( translationUnit );
-			cerr << "fixNames" << endl;
-			CodeGen::fixNames( translationUnit );
-			cerr << "resolve" << endl;
-			ResolvExpr::resolve( translationUnit );
-			cerr << "copyParams" << endl;
-			GenPoly::copyParams( translationUnit );
-			cerr << "convertSpecializations" << endl;
-			GenPoly::convertSpecializations( translationUnit );
-			cerr << "convertLvalue" << endl;
-			GenPoly::convertLvalue( translationUnit );
-			cerr << "box" << endl;
-			GenPoly::box( translationUnit );
-			if ( errorp ) {
-				printAll( translationUnit, std::cout );
-			}
-			return 0;
-		} // if
-
-		// add the assignment statement after the 
-		// initialization of a type parameter
-		InitTweak::tweak( translationUnit );
-
-		//std::cerr << "before validate" << std::endl;
-		SymTab::validate( translationUnit, false );
-		//Try::visit( translationUnit );
-		//Tuples::mutate( translationUnit );
-		//InitTweak::mutate( translationUnit );
-		//std::cerr << "before mutate" << std::endl;
-		ControlStruct::mutate( translationUnit );
-		//std::cerr << "before fixNames" << std::endl;
-		CodeGen::fixNames( translationUnit );
-		//std::cerr << "before resolve" << std::endl;
-		ResolvExpr::resolve( translationUnit );
-		//Tuples::checkFunctions( translationUnit );
-		//	  std::cerr << "Finished tuple checkfunctions" << std::endl;
-		//printAll( translationUnit, std::cerr );
-		//std::cerr << "before copyParams" << std::endl;
-		GenPoly::copyParams( translationUnit );
-		//std::cerr << "before convertSpecializations" << std::endl;
-		GenPoly::convertSpecializations( translationUnit );
-		//std::cerr << "before convertLvalue" << std::endl;
-		GenPoly::convertLvalue( translationUnit );
-		//std::cerr << "before box" << std::endl;
-		GenPoly::box( translationUnit );
-		//Tuples::mutate( translationUnit );
+			printAll( translationUnit, std::cout );
+			return 0;
+		} // if
 
 		CodeGen::generate( translationUnit, *output, protop );
@@ -331,10 +288,9 @@
 			delete output;
 		} // if
-
 	} catch ( SemanticError &e ) {
 		if ( errorp ) {
-			printAll( translationUnit, std::cout );
+			printAll( translationUnit, std::cerr );
 		}
-		e.print( cout );
+		e.print( std::cerr );
 		if ( output != &std::cout ) {
 			delete output;
@@ -359,4 +315,14 @@
 } // main
 
+void parse( FILE * input, LinkageSpec::Type linkage, bool shouldExit ) {
+	Parser::get_parser().set_linkage( linkage );
+	Parser::get_parser().parse( input );
+
+	fclose( input );
+	if ( shouldExit || Parser::get_parser().get_parseStatus() != 0 ) {
+		exit( Parser::get_parser().get_parseStatus() );
+	} // if
+}
+
 // Local Variables: //
 // tab-width: 4 //
Index: c/preludesrc.c
===================================================================
--- src/preludesrc.c	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,3117 +1,0 @@
-typedef long int _ptrdiff_t;
-const int 0;
-const int 1;
-const DT *const 0;
-FT *const 0;
-int ?++(int *);
-int ?--(int *);
-unsigned int ?++(unsigned int *);
-unsigned int ?--(unsigned int *);
-long int ?++(long int *);
-long int ?--(long int *);
-long unsigned int ?++(long unsigned int *);
-long unsigned int ?--(long unsigned int *);
-float ?++(float *);
-float ?--(float *);
-double ?++(double *);
-double ?--(double *);
-long double ?++(long double *);
-long double ?--(long double *);
-T * ?++(T **);
-T * ?--(T **);
-const T * ?++(const T **);
-const T * ?--(const T **);
-volatile T * ?++(volatile T **);
-volatile T * ?--(volatile T **);
-volatile const T * ?++(volatile const T **);
-volatile const T * ?--(volatile const T **);
-T ?[?](T *, _ptrdiff_t );
-const T ?[?](const T *, _ptrdiff_t );
-volatile T ?[?](volatile T *, _ptrdiff_t );
-volatile const T ?[?](volatile const T *, _ptrdiff_t );
-T ?[?](_ptrdiff_t , T *);
-const T ?[?](_ptrdiff_t , const T *);
-volatile T ?[?](_ptrdiff_t , volatile T *);
-volatile const T ?[?](_ptrdiff_t , volatile const T *);
-int ++?(int *);
-int --?(int *);
-unsigned int ++?(unsigned int *);
-unsigned int --?(unsigned int *);
-long int ++?(long int *);
-long int --?(long int *);
-long unsigned int ++?(long unsigned int *);
-long unsigned int --?(long unsigned int *);
-float ++?(float *);
-float --?(float *);
-double ++?(double *);
-double --?(double *);
-long double ++?(long double *);
-long double --?(long double *);
-T *++?(T **);
-T *--?(T **);
-const T *++?(const T **);
-const T *--?(const T **);
-volatile T *++?(volatile T **);
-volatile T *--?(volatile T **);
-volatile const T *++?(volatile const T **);
-volatile const T *--?(volatile const T **);
-T (*?)(T *);
-const T (*?)(const T *);
-volatile T (*?)(volatile T *);
-volatile const T (*?)(volatile const T *);
-FT (*?)(FT *);
-int +?(int );
-int -?(int );
-int ~?(int );
-unsigned int +?(unsigned int );
-unsigned int -?(unsigned int );
-unsigned int ~?(unsigned int );
-long unsigned int +?(long unsigned int );
-long unsigned int -?(long unsigned int );
-long unsigned int ~?(long unsigned int );
-long int +?(long int );
-long int -?(long int );
-long int ~?(long int );
-float +?(float );
-float -?(float );
-double +?(double );
-double -?(double );
-long double +?(long double );
-long double -?(long double );
-int !?(int );
-int !?(unsigned int );
-int !?(long int );
-int !?(long unsigned int );
-int !?(float );
-int !?(double );
-int !?(volatile const DT *);
-int !?(FT *);
-int ?*?(int , int );
-int ?/?(int , int );
-int ?%?(int , int );
-unsigned int ?*?(unsigned int , unsigned int );
-unsigned int ?/?(unsigned int , unsigned int );
-unsigned int ?%?(unsigned int , unsigned int );
-long unsigned int ?*?(long unsigned int , long unsigned int );
-long unsigned int ?/?(long unsigned int , long unsigned int );
-long unsigned int ?%?(long unsigned int , long unsigned int );
-long int ?*?(long int , long int );
-long int ?/?(long int , long int );
-long int ?%?(long int , long int );
-float ?*?(float , float );
-float ?/?(float , float );
-double ?*?(double , double );
-double ?/?(double , double );
-long double ?*?(long double , long double );
-long double ?/?(long double , long double );
-int ?+?(int , int );
-int ?-?(int , int );
-long int ?+?(long int , long int );
-long int ?-?(long int , long int );
-unsigned int ?+?(unsigned int , unsigned int );
-unsigned int ?-?(unsigned int , unsigned int );
-long unsigned int ?+?(long unsigned int , long unsigned int );
-long unsigned int ?-?(long unsigned int , long unsigned int );
-float ?+?(float , float );
-float ?-?(float , float );
-double ?+?(double , double );
-double ?-?(double , double );
-long double ?+?(long double , long double );
-long double ?-?(long double , long double );
-T * ?+?(T *, _ptrdiff_t );
-T * ?+?(_ptrdiff_t , T *);
-T * ?-?(T *, _ptrdiff_t );
-const T * ?+?(const T *, _ptrdiff_t );
-const T * ?+?(_ptrdiff_t , const T *);
-const T * ?-?(const T *, _ptrdiff_t );
-volatile T * ?+?(volatile T *, _ptrdiff_t );
-volatile T * ?+?(_ptrdiff_t , volatile T *);
-volatile T * ?-?(volatile T *, _ptrdiff_t );
-volatile const T * ?+?(volatile const T *, _ptrdiff_t );
-volatile const T * ?+?(_ptrdiff_t , volatile const T *);
-volatile const T * ?-?(volatile const T *, _ptrdiff_t );
-_ptrdiff_t ?-?(volatile const T *, volatile const T *);
-int ?<<?(int , int );
-int ?>>?(int , int );
-long int ?<<?(long int , long int );
-long int ?>>?(long int , long int );
-unsigned int ?<<?(unsigned int , unsigned int );
-unsigned int ?>>?(unsigned int , unsigned int );
-long unsigned int ?<<?(long unsigned int , long unsigned int );
-long unsigned int ?>>?(long unsigned int , long unsigned int );
-int ?<?(int , int );
-int ?<=?(int , int );
-int ?>?(int , int );
-int ?>=?(int , int );
-int ?<?(long int , long int );
-int ?<=?(long int , long int );
-int ?>?(long int , long int );
-int ?>=?(long int , long int );
-int ?<?(unsigned int , unsigned int );
-int ?<=?(unsigned int , unsigned int );
-int ?>?(unsigned int , unsigned int );
-int ?>=?(unsigned int , unsigned int );
-int ?<?(long unsigned int , long unsigned int );
-int ?<=?(long unsigned int , long unsigned int );
-int ?>?(long unsigned int , long unsigned int );
-int ?>=?(long unsigned int , long unsigned int );
-int ?<?(float , float );
-int ?<=?(float , float );
-int ?>?(float , float );
-int ?>=?(float , float );
-int ?<?(double , double );
-int ?<=?(double , double );
-int ?>?(double , double );
-int ?>=?(double , double );
-int ?<?(long double , long double );
-int ?<=?(long double , long double );
-int ?>?(long double , long double );
-int ?>=?(long double , long double );
-int ?<?(volatile const DT *, volatile const DT *);
-int ?>?(volatile const DT *, volatile const DT *);
-int ?<=?(volatile const DT *, volatile const DT *);
-int ?>=?(volatile const DT *, volatile const DT *);
-int ?==?(int , int );
-int ?!=?(int , int );
-int ?==?(long int , long int );
-int ?!=?(long int , long int );
-int ?==?(unsigned int , unsigned int );
-int ?!=?(unsigned int , unsigned int );
-int ?==?(long unsigned int , long unsigned int );
-int ?!=?(long unsigned int , long unsigned int );
-int ?==?(float , float );
-int ?!=?(float , float );
-int ?==?(double , double );
-int ?!=?(double , double );
-int ?==?(long double , long double );
-int ?!=?(long double , long double );
-int ?==?(volatile const DT *, volatile const DT *);
-int ?!=?(volatile const DT *, volatile const DT *);
-int ?==?(FT *, FT *);
-int ?!=?(FT *, FT *);
-int ?==?(volatile const DT *, volatile const void *);
-int ?!=?(volatile const DT *, volatile const void *);
-int ?==?(volatile const void *, volatile const DT *);
-int ?!=?(volatile const void *, volatile const DT *);
-int ?==?(volatile const DT *, const DT2 *);
-int ?!=?(volatile const DT *, const DT2 *);
-int ?==?(const DT2 *, volatile const DT *);
-int ?!=?(const DT2 *, volatile const DT *);
-int ?==?(FT *, FT2 *);
-int ?!=?(FT *, FT2 *);
-int ?==?(FT2 *, FT *);
-int ?!=?(FT2 *, FT *);
-int ?&?(int , int );
-long int ?&?(long int , long int );
-unsigned int ?&?(unsigned int , unsigned int );
-long unsigned int ?&?(long unsigned int , long unsigned int );
-int ?^?(int , int );
-long int ?^?(long int , long int );
-unsigned int ?^?(unsigned int , unsigned int );
-long unsigned int ?^?(long unsigned int , long unsigned int );
-int ?|?(int , int );
-long int ?|?(long int , long int );
-unsigned int ?|?(unsigned int , unsigned int );
-long unsigned int ?|?(long unsigned int , long unsigned int );
-FT * ?=?(FT **, FT *);
-FT * ?=?(FT *volatile *, FT *);
-DT * ?=?(DT **, DT *);
-DT * ?=?(DT *volatile *, DT *);
-const DT * ?=?(const DT **, DT *);
-const DT * ?=?(const DT *volatile *, DT *);
-volatile DT * ?=?(volatile DT **, DT *);
-volatile DT * ?=?(volatile DT *volatile *, DT *);
-volatile const DT * ?=?(volatile const DT **, DT *);
-volatile const DT * ?=?(volatile const DT *volatile *, DT *);
-volatile const DT * ?=?(volatile const DT **, volatile DT *);
-volatile const DT * ?=?(volatile const DT *volatile *, volatile DT *);
-volatile const DT * ?=?(volatile const DT **, const DT *);
-volatile const DT * ?=?(volatile const DT *volatile *, const DT *);
-DT * ?=?(DT **, void *);
-DT * ?=?(DT *volatile *, void *);
-const DT * ?=?(const DT **, void *);
-const DT * ?=?(const DT *volatile *, void *);
-const DT * ?=?(const DT **, const void *);
-const DT * ?=?(const DT *volatile *, const void *);
-volatile DT * ?=?(volatile DT **, void *);
-volatile DT * ?=?(volatile DT *volatile *, void *);
-volatile DT * ?=?(volatile DT **, volatile void *);
-volatile DT * ?=?(volatile DT *volatile *, volatile void *);
-volatile const DT * ?=?(volatile const DT **, void *);
-volatile const DT * ?=?(volatile const DT *volatile *, void *);
-volatile const DT * ?=?(volatile const DT **, const void *);
-volatile const DT * ?=?(volatile const DT *volatile *, const void *);
-volatile const DT * ?=?(volatile const DT **, volatile void *);
-volatile const DT * ?=?(volatile const DT *volatile *, volatile void *);
-volatile const DT * ?=?(volatile const DT **, volatile const void *);
-volatile const DT * ?=?(volatile const DT *volatile *, volatile const void *);
-void * ?=?(void **, DT *);
-void * ?=?(void *volatile *, DT *);
-const void * ?=?(const void **, DT *);
-const void * ?=?(const void *volatile *, DT *);
-const void * ?=?(const void **, const DT *);
-const void * ?=?(const void *volatile *, const DT *);
-volatile void * ?=?(volatile const void **, DT *);
-volatile void * ?=?(volatile const void *volatile *, DT *);
-volatile void * ?=?(volatile const void **, const DT *);
-volatile void * ?=?(volatile const void *volatile *, const DT *);
-volatile void * ?=?(volatile const void **, volatile DT *);
-volatile void * ?=?(volatile const void *volatile *, volatile DT *);
-volatile void * ?=?(volatile const void **, volatile const DT *);
-volatile void * ?=?(volatile const void *volatile *, volatile const DT *);
-DT * ?=?(DT **, const DT2 *);
-DT * ?=?(DT *volatile *, const DT2 *);
-const DT * ?=?(const DT **, const DT2 *);
-const DT * ?=?(const DT *volatile *, const DT2 *);
-volatile DT * ?=?(volatile DT **, const DT2 *);
-volatile DT * ?=?(volatile DT *volatile *, const DT2 *);
-volatile const DT * ?=?(volatile const DT **, const DT2 *);
-volatile const DT * ?=?(volatile const DT *volatile *, const DT2 *);
-FT * ?=?(FT **, FT2 *);
-FT * ?=?(FT *volatile *, FT2 *);
-T * ?+=?(T **, _ptrdiff_t );
-T * ?+=?(T *volatile *, _ptrdiff_t );
-T * ?-=?(T **, _ptrdiff_t );
-T * ?-=?(T *volatile *, _ptrdiff_t );
-const T * ?+=?(const T **, _ptrdiff_t );
-const T * ?+=?(const T *volatile *, _ptrdiff_t );
-const T * ?-=?(const T **, _ptrdiff_t );
-const T * ?-=?(const T *volatile *, _ptrdiff_t );
-volatile T * ?+=?(volatile T **, _ptrdiff_t );
-volatile T * ?+=?(volatile T *volatile *, _ptrdiff_t );
-volatile T * ?-=?(volatile T **, _ptrdiff_t );
-volatile T * ?-=?(volatile T *volatile *, _ptrdiff_t );
-volatile const T * ?+=?(volatile const T **, _ptrdiff_t );
-volatile const T * ?+=?(volatile const T *volatile *, _ptrdiff_t );
-volatile const T * ?-=?(volatile const T **, _ptrdiff_t );
-volatile const T * ?-=?(volatile const T *volatile *, _ptrdiff_t );
-char ?=?(char *, char );
-char ?=?(volatile char *, char );
-unsigned char ?=?(unsigned char *, unsigned char );
-unsigned char ?=?(volatile unsigned char *, unsigned char );
-int ?=?(int *, int );
-int ?=?(volatile int *, int );
-unsigned int ?=?(unsigned int *, unsigned int );
-unsigned int ?=?(volatile unsigned int *, unsigned int );
-long int ?=?(long int *, long int );
-long int ?=?(volatile long int *, long int );
-long unsigned int ?=?(long unsigned int *, long unsigned int );
-long unsigned int ?=?(volatile long unsigned int *, long unsigned int );
-char ?*=?(char *, char );
-char ?*=?(volatile char *, char );
-unsigned char ?*=?(unsigned char *, unsigned char );
-unsigned char ?*=?(volatile unsigned char *, unsigned char );
-int ?*=?(int *, int );
-int ?*=?(volatile int *, int );
-unsigned int ?*=?(unsigned int *, unsigned int );
-unsigned int ?*=?(volatile unsigned int *, unsigned int );
-long int ?*=?(long int *, long int );
-long int ?*=?(volatile long int *, long int );
-long unsigned int ?*=?(long unsigned int *, long unsigned int );
-long unsigned int ?*=?(volatile long unsigned int *, long unsigned int );
-char ?/=?(char *, char );
-char ?/=?(volatile char *, char );
-unsigned char ?/=?(unsigned char *, unsigned char );
-unsigned char ?/=?(volatile unsigned char *, unsigned char );
-int ?/=?(int *, int );
-int ?/=?(volatile int *, int );
-unsigned int ?/=?(unsigned int *, unsigned int );
-unsigned int ?/=?(volatile unsigned int *, unsigned int );
-long int ?/=?(long int *, long int );
-long int ?/=?(volatile long int *, long int );
-long unsigned int ?/=?(long unsigned int *, long unsigned int );
-long unsigned int ?/=?(volatile long unsigned int *, long unsigned int );
-char ?%=?(char *, char );
-char ?%=?(volatile char *, char );
-unsigned char ?%=?(unsigned char *, unsigned char );
-unsigned char ?%=?(volatile unsigned char *, unsigned char );
-int ?%=?(int *, int );
-int ?%=?(volatile int *, int );
-unsigned int ?%=?(unsigned int *, unsigned int );
-unsigned int ?%=?(volatile unsigned int *, unsigned int );
-long int ?%=?(long int *, long int );
-long int ?%=?(volatile long int *, long int );
-long unsigned int ?%=?(long unsigned int *, long unsigned int );
-long unsigned int ?%=?(volatile long unsigned int *, long unsigned int );
-char ?+=?(char *, char );
-char ?+=?(volatile char *, char );
-unsigned char ?+=?(unsigned char *, unsigned char );
-unsigned char ?+=?(volatile unsigned char *, unsigned char );
-int ?+=?(int *, int );
-int ?+=?(volatile int *, int );
-unsigned int ?+=?(unsigned int *, unsigned int );
-unsigned int ?+=?(volatile unsigned int *, unsigned int );
-long int ?+=?(long int *, long int );
-long int ?+=?(volatile long int *, long int );
-long unsigned int ?+=?(long unsigned int *, long unsigned int );
-long unsigned int ?+=?(volatile long unsigned int *, long unsigned int );
-char ?-=?(char *, char );
-char ?-=?(volatile char *, char );
-unsigned char ?-=?(unsigned char *, unsigned char );
-unsigned char ?-=?(volatile unsigned char *, unsigned char );
-int ?-=?(int *, int );
-int ?-=?(volatile int *, int );
-unsigned int ?-=?(unsigned int *, unsigned int );
-unsigned int ?-=?(volatile unsigned int *, unsigned int );
-long int ?-=?(long int *, long int );
-long int ?-=?(volatile long int *, long int );
-long unsigned int ?-=?(long unsigned int *, long unsigned int );
-long unsigned int ?-=?(volatile long unsigned int *, long unsigned int );
-char ?<<=?(char *, char );
-char ?<<=?(volatile char *, char );
-unsigned char ?<<=?(unsigned char *, unsigned char );
-unsigned char ?<<=?(volatile unsigned char *, unsigned char );
-int ?<<=?(int *, int );
-int ?<<=?(volatile int *, int );
-unsigned int ?<<=?(unsigned int *, unsigned int );
-unsigned int ?<<=?(volatile unsigned int *, unsigned int );
-long int ?<<=?(long int *, long int );
-long int ?<<=?(volatile long int *, long int );
-long unsigned int ?<<=?(long unsigned int *, long unsigned int );
-long unsigned int ?<<=?(volatile long unsigned int *, long unsigned int );
-char ?>>=?(char *, char );
-char ?>>=?(volatile char *, char );
-unsigned char ?>>=?(unsigned char *, unsigned char );
-unsigned char ?>>=?(volatile unsigned char *, unsigned char );
-int ?>>=?(int *, int );
-int ?>>=?(volatile int *, int );
-unsigned int ?>>=?(unsigned int *, unsigned int );
-unsigned int ?>>=?(volatile unsigned int *, unsigned int );
-long int ?>>=?(long int *, long int );
-long int ?>>=?(volatile long int *, long int );
-long unsigned int ?>>=?(long unsigned int *, long unsigned int );
-long unsigned int ?>>=?(volatile long unsigned int *, long unsigned int );
-char ?&=?(char *, char );
-char ?&=?(volatile char *, char );
-unsigned char ?&=?(unsigned char *, unsigned char );
-unsigned char ?&=?(volatile unsigned char *, unsigned char );
-int ?&=?(int *, int );
-int ?&=?(volatile int *, int );
-unsigned int ?&=?(unsigned int *, unsigned int );
-unsigned int ?&=?(volatile unsigned int *, unsigned int );
-long int ?&=?(long int *, long int );
-long int ?&=?(volatile long int *, long int );
-long unsigned int ?&=?(long unsigned int *, long unsigned int );
-long unsigned int ?&=?(volatile long unsigned int *, long unsigned int );
-char ?|=?(char *, char );
-char ?|=?(volatile char *, char );
-unsigned char ?|=?(unsigned char *, unsigned char );
-unsigned char ?|=?(volatile unsigned char *, unsigned char );
-int ?|=?(int *, int );
-int ?|=?(volatile int *, int );
-unsigned int ?|=?(unsigned int *, unsigned int );
-unsigned int ?|=?(volatile unsigned int *, unsigned int );
-long int ?|=?(long int *, long int );
-long int ?|=?(volatile long int *, long int );
-long unsigned int ?|=?(long unsigned int *, long unsigned int );
-long unsigned int ?|=?(volatile long unsigned int *, long unsigned int );
-char ?^=?(char *, char );
-char ?^=?(volatile char *, char );
-unsigned char ?^=?(unsigned char *, unsigned char );
-unsigned char ?^=?(volatile unsigned char *, unsigned char );
-int ?^=?(int *, int );
-int ?^=?(volatile int *, int );
-unsigned int ?^=?(unsigned int *, unsigned int );
-unsigned int ?^=?(volatile unsigned int *, unsigned int );
-long int ?^=?(long int *, long int );
-long int ?^=?(volatile long int *, long int );
-long unsigned int ?^=?(long unsigned int *, long unsigned int );
-long unsigned int ?^=?(volatile long unsigned int *, long unsigned int );
-float ?=?(float *, float );
-float ?=?(volatile float *, float );
-float ?*=?(float *, float );
-float ?*=?(volatile float *, float );
-float ?/=?(float *, float );
-float ?/=?(volatile float *, float );
-float ?+=?(float *, float );
-float ?+=?(volatile float *, float );
-float ?-=?(float *, float );
-float ?-=?(volatile float *, float );
-double ?=?(double *, double );
-double ?=?(volatile double *, double );
-double ?*=?(double *, double );
-double ?*=?(volatile double *, double );
-double ?/=?(double *, double );
-double ?/=?(volatile double *, double );
-double ?+=?(double *, double );
-double ?+=?(volatile double *, double );
-double ?-=?(double *, double );
-double ?-=?(volatile double *, double );
-long double ?=?(long double *, long double );
-long double ?=?(volatile long double *, long double );
-long double ?*=?(long double *, long double );
-long double ?*=?(volatile long double *, long double );
-long double ?/=?(long double *, long double );
-long double ?/=?(volatile long double *, long double );
-long double ?+=?(long double *, long double );
-long double ?+=?(volatile long double *, long double );
-long double ?-=?(long double *, long double );
-long double ?-=?(volatile long double *, long double );
-const int 0;
-const int 1;
-const DT *const 0;
-FT *const 0;
-int ?++(int *_p0)
-{
-        return (*_p0)++;
-
-}
-
-int ?--(int *_p0)
-{
-        return (*_p0)--;
-
-}
-
-unsigned int ?++(unsigned int *_p0)
-{
-        return (*_p0)++;
-
-}
-
-unsigned int ?--(unsigned int *_p0)
-{
-        return (*_p0)--;
-
-}
-
-long int ?++(long int *_p0)
-{
-        return (*_p0)++;
-
-}
-
-long int ?--(long int *_p0)
-{
-        return (*_p0)--;
-
-}
-
-long unsigned int ?++(long unsigned int *_p0)
-{
-        return (*_p0)++;
-
-}
-
-long unsigned int ?--(long unsigned int *_p0)
-{
-        return (*_p0)--;
-
-}
-
-float ?++(float *_p0)
-{
-        return (*_p0)++;
-
-}
-
-float ?--(float *_p0)
-{
-        return (*_p0)--;
-
-}
-
-double ?++(double *_p0)
-{
-        return (*_p0)++;
-
-}
-
-double ?--(double *_p0)
-{
-        return (*_p0)--;
-
-}
-
-long double ?++(long double *_p0)
-{
-        return (*_p0)++;
-
-}
-
-long double ?--(long double *_p0)
-{
-        return (*_p0)--;
-
-}
-
-T * ?++(T **_p0)
-{
-        return (*_p0)++;
-
-}
-
-T * ?--(T **_p0)
-{
-        return (*_p0)--;
-
-}
-
-const T * ?++(const T **_p0)
-{
-        return (*_p0)++;
-
-}
-
-const T * ?--(const T **_p0)
-{
-        return (*_p0)--;
-
-}
-
-volatile T * ?++(volatile T **_p0)
-{
-        return (*_p0)++;
-
-}
-
-volatile T * ?--(volatile T **_p0)
-{
-        return (*_p0)--;
-
-}
-
-volatile const T * ?++(volatile const T **_p0)
-{
-        return (*_p0)++;
-
-}
-
-volatile const T * ?--(volatile const T **_p0)
-{
-        return (*_p0)--;
-
-}
-
-T ?[?](T *_p0, _ptrdiff_t _p1)
-{
-        return _p0[_p1];
-
-}
-
-const T ?[?](const T *_p0, _ptrdiff_t _p1)
-{
-        return _p0[_p1];
-
-}
-
-volatile T ?[?](volatile T *_p0, _ptrdiff_t _p1)
-{
-        return _p0[_p1];
-
-}
-
-volatile const T ?[?](volatile const T *_p0, _ptrdiff_t _p1)
-{
-        return _p0[_p1];
-
-}
-
-T ?[?](_ptrdiff_t _p0, T *_p1)
-{
-        return _p0[_p1];
-
-}
-
-const T ?[?](_ptrdiff_t _p0, const T *_p1)
-{
-        return _p0[_p1];
-
-}
-
-volatile T ?[?](_ptrdiff_t _p0, volatile T *_p1)
-{
-        return _p0[_p1];
-
-}
-
-volatile const T ?[?](_ptrdiff_t _p0, volatile const T *_p1)
-{
-        return _p0[_p1];
-
-}
-
-int ++?(int *_p0)
-{
-        return (++(*_p0));
-
-}
-
-int --?(int *_p0)
-{
-        return (--(*_p0));
-
-}
-
-unsigned int ++?(unsigned int *_p0)
-{
-        return (++(*_p0));
-
-}
-
-unsigned int --?(unsigned int *_p0)
-{
-        return (--(*_p0));
-
-}
-
-long int ++?(long int *_p0)
-{
-        return (++(*_p0));
-
-}
-
-long int --?(long int *_p0)
-{
-        return (--(*_p0));
-
-}
-
-long unsigned int ++?(long unsigned int *_p0)
-{
-        return (++(*_p0));
-
-}
-
-long unsigned int --?(long unsigned int *_p0)
-{
-        return (--(*_p0));
-
-}
-
-float ++?(float *_p0)
-{
-        return (++(*_p0));
-
-}
-
-float --?(float *_p0)
-{
-        return (--(*_p0));
-
-}
-
-double ++?(double *_p0)
-{
-        return (++(*_p0));
-
-}
-
-double --?(double *_p0)
-{
-        return (--(*_p0));
-
-}
-
-long double ++?(long double *_p0)
-{
-        return (++(*_p0));
-
-}
-
-long double --?(long double *_p0)
-{
-        return (--(*_p0));
-
-}
-
-T *++?(T **_p0)
-{
-        return (++(*_p0));
-
-}
-
-T *--?(T **_p0)
-{
-        return (--(*_p0));
-
-}
-
-const T *++?(const T **_p0)
-{
-        return (++(*_p0));
-
-}
-
-const T *--?(const T **_p0)
-{
-        return (--(*_p0));
-
-}
-
-volatile T *++?(volatile T **_p0)
-{
-        return (++(*_p0));
-
-}
-
-volatile T *--?(volatile T **_p0)
-{
-        return (--(*_p0));
-
-}
-
-volatile const T *++?(volatile const T **_p0)
-{
-        return (++(*_p0));
-
-}
-
-volatile const T *--?(volatile const T **_p0)
-{
-        return (--(*_p0));
-
-}
-
-T (*?)(T *_p0)
-{
-        return (*_p0);
-
-}
-
-const T (*?)(const T *_p0)
-{
-        return (*_p0);
-
-}
-
-volatile T (*?)(volatile T *_p0)
-{
-        return (*_p0);
-
-}
-
-volatile const T (*?)(volatile const T *_p0)
-{
-        return (*_p0);
-
-}
-
-FT (*?)(FT *_p0)
-{
-        return (*_p0);
-
-}
-
-int +?(int _p0)
-{
-        return (+_p0);
-
-}
-
-int -?(int _p0)
-{
-        return (-_p0);
-
-}
-
-int ~?(int _p0)
-{
-        return (~_p0);
-
-}
-
-unsigned int +?(unsigned int _p0)
-{
-        return (+_p0);
-
-}
-
-unsigned int -?(unsigned int _p0)
-{
-        return (-_p0);
-
-}
-
-unsigned int ~?(unsigned int _p0)
-{
-        return (~_p0);
-
-}
-
-long unsigned int +?(long unsigned int _p0)
-{
-        return (+_p0);
-
-}
-
-long unsigned int -?(long unsigned int _p0)
-{
-        return (-_p0);
-
-}
-
-long unsigned int ~?(long unsigned int _p0)
-{
-        return (~_p0);
-
-}
-
-long int +?(long int _p0)
-{
-        return (+_p0);
-
-}
-
-long int -?(long int _p0)
-{
-        return (-_p0);
-
-}
-
-long int ~?(long int _p0)
-{
-        return (~_p0);
-
-}
-
-float +?(float _p0)
-{
-        return (+_p0);
-
-}
-
-float -?(float _p0)
-{
-        return (-_p0);
-
-}
-
-double +?(double _p0)
-{
-        return (+_p0);
-
-}
-
-double -?(double _p0)
-{
-        return (-_p0);
-
-}
-
-long double +?(long double _p0)
-{
-        return (+_p0);
-
-}
-
-long double -?(long double _p0)
-{
-        return (-_p0);
-
-}
-
-int !?(int _p0)
-{
-        return (!_p0);
-
-}
-
-int !?(unsigned int _p0)
-{
-        return (!_p0);
-
-}
-
-int !?(long int _p0)
-{
-        return (!_p0);
-
-}
-
-int !?(long unsigned int _p0)
-{
-        return (!_p0);
-
-}
-
-int !?(float _p0)
-{
-        return (!_p0);
-
-}
-
-int !?(double _p0)
-{
-        return (!_p0);
-
-}
-
-int !?(volatile const DT *_p0)
-{
-        return (!_p0);
-
-}
-
-int !?(FT *_p0)
-{
-        return (!_p0);
-
-}
-
-int ?*?(int _p0, int _p1)
-{
-        return (_p0*_p1);
-
-}
-
-int ?/?(int _p0, int _p1)
-{
-        return (_p0/_p1);
-
-}
-
-int ?%?(int _p0, int _p1)
-{
-        return (_p0%_p1);
-
-}
-
-unsigned int ?*?(unsigned int _p0, unsigned int _p1)
-{
-        return (_p0*_p1);
-
-}
-
-unsigned int ?/?(unsigned int _p0, unsigned int _p1)
-{
-        return (_p0/_p1);
-
-}
-
-unsigned int ?%?(unsigned int _p0, unsigned int _p1)
-{
-        return (_p0%_p1);
-
-}
-
-long unsigned int ?*?(long unsigned int _p0, long unsigned int _p1)
-{
-        return (_p0*_p1);
-
-}
-
-long unsigned int ?/?(long unsigned int _p0, long unsigned int _p1)
-{
-        return (_p0/_p1);
-
-}
-
-long unsigned int ?%?(long unsigned int _p0, long unsigned int _p1)
-{
-        return (_p0%_p1);
-
-}
-
-long int ?*?(long int _p0, long int _p1)
-{
-        return (_p0*_p1);
-
-}
-
-long int ?/?(long int _p0, long int _p1)
-{
-        return (_p0/_p1);
-
-}
-
-long int ?%?(long int _p0, long int _p1)
-{
-        return (_p0%_p1);
-
-}
-
-float ?*?(float _p0, float _p1)
-{
-        return (_p0*_p1);
-
-}
-
-float ?/?(float _p0, float _p1)
-{
-        return (_p0/_p1);
-
-}
-
-double ?*?(double _p0, double _p1)
-{
-        return (_p0*_p1);
-
-}
-
-double ?/?(double _p0, double _p1)
-{
-        return (_p0/_p1);
-
-}
-
-long double ?*?(long double _p0, long double _p1)
-{
-        return (_p0*_p1);
-
-}
-
-long double ?/?(long double _p0, long double _p1)
-{
-        return (_p0/_p1);
-
-}
-
-int ?+?(int _p0, int _p1)
-{
-        return (_p0+_p1);
-
-}
-
-int ?-?(int _p0, int _p1)
-{
-        return (_p0-_p1);
-
-}
-
-long int ?+?(long int _p0, long int _p1)
-{
-        return (_p0+_p1);
-
-}
-
-long int ?-?(long int _p0, long int _p1)
-{
-        return (_p0-_p1);
-
-}
-
-unsigned int ?+?(unsigned int _p0, unsigned int _p1)
-{
-        return (_p0+_p1);
-
-}
-
-unsigned int ?-?(unsigned int _p0, unsigned int _p1)
-{
-        return (_p0-_p1);
-
-}
-
-long unsigned int ?+?(long unsigned int _p0, long unsigned int _p1)
-{
-        return (_p0+_p1);
-
-}
-
-long unsigned int ?-?(long unsigned int _p0, long unsigned int _p1)
-{
-        return (_p0-_p1);
-
-}
-
-float ?+?(float _p0, float _p1)
-{
-        return (_p0+_p1);
-
-}
-
-float ?-?(float _p0, float _p1)
-{
-        return (_p0-_p1);
-
-}
-
-double ?+?(double _p0, double _p1)
-{
-        return (_p0+_p1);
-
-}
-
-double ?-?(double _p0, double _p1)
-{
-        return (_p0-_p1);
-
-}
-
-long double ?+?(long double _p0, long double _p1)
-{
-        return (_p0+_p1);
-
-}
-
-long double ?-?(long double _p0, long double _p1)
-{
-        return (_p0-_p1);
-
-}
-
-T * ?+?(T *_p0, _ptrdiff_t _p1)
-{
-        return (_p0+_p1);
-
-}
-
-T * ?+?(_ptrdiff_t _p0, T *_p1)
-{
-        return (_p0+_p1);
-
-}
-
-T * ?-?(T *_p0, _ptrdiff_t _p1)
-{
-        return (_p0-_p1);
-
-}
-
-const T * ?+?(const T *_p0, _ptrdiff_t _p1)
-{
-        return (_p0+_p1);
-
-}
-
-const T * ?+?(_ptrdiff_t _p0, const T *_p1)
-{
-        return (_p0+_p1);
-
-}
-
-const T * ?-?(const T *_p0, _ptrdiff_t _p1)
-{
-        return (_p0-_p1);
-
-}
-
-volatile T * ?+?(volatile T *_p0, _ptrdiff_t _p1)
-{
-        return (_p0+_p1);
-
-}
-
-volatile T * ?+?(_ptrdiff_t _p0, volatile T *_p1)
-{
-        return (_p0+_p1);
-
-}
-
-volatile T * ?-?(volatile T *_p0, _ptrdiff_t _p1)
-{
-        return (_p0-_p1);
-
-}
-
-volatile const T * ?+?(volatile const T *_p0, _ptrdiff_t _p1)
-{
-        return (_p0+_p1);
-
-}
-
-volatile const T * ?+?(_ptrdiff_t _p0, volatile const T *_p1)
-{
-        return (_p0+_p1);
-
-}
-
-volatile const T * ?-?(volatile const T *_p0, _ptrdiff_t _p1)
-{
-        return (_p0-_p1);
-
-}
-
-_ptrdiff_t ?-?(volatile const T *_p0, volatile const T *_p1)
-{
-        return (_p0-_p1);
-
-}
-
-int ?<<?(int _p0, int _p1)
-{
-        return (_p0<<_p1);
-
-}
-
-int ?>>?(int _p0, int _p1)
-{
-        return (_p0>>_p1);
-
-}
-
-long int ?<<?(long int _p0, long int _p1)
-{
-        return (_p0<<_p1);
-
-}
-
-long int ?>>?(long int _p0, long int _p1)
-{
-        return (_p0>>_p1);
-
-}
-
-unsigned int ?<<?(unsigned int _p0, unsigned int _p1)
-{
-        return (_p0<<_p1);
-
-}
-
-unsigned int ?>>?(unsigned int _p0, unsigned int _p1)
-{
-        return (_p0>>_p1);
-
-}
-
-long unsigned int ?<<?(long unsigned int _p0, long unsigned int _p1)
-{
-        return (_p0<<_p1);
-
-}
-
-long unsigned int ?>>?(long unsigned int _p0, long unsigned int _p1)
-{
-        return (_p0>>_p1);
-
-}
-
-int ?<?(int _p0, int _p1)
-{
-        return (_p0<_p1);
-
-}
-
-int ?<=?(int _p0, int _p1)
-{
-        return (_p0<=_p1);
-
-}
-
-int ?>?(int _p0, int _p1)
-{
-        return (_p0>_p1);
-
-}
-
-int ?>=?(int _p0, int _p1)
-{
-        return (_p0>=_p1);
-
-}
-
-int ?<?(long int _p0, long int _p1)
-{
-        return (_p0<_p1);
-
-}
-
-int ?<=?(long int _p0, long int _p1)
-{
-        return (_p0<=_p1);
-
-}
-
-int ?>?(long int _p0, long int _p1)
-{
-        return (_p0>_p1);
-
-}
-
-int ?>=?(long int _p0, long int _p1)
-{
-        return (_p0>=_p1);
-
-}
-
-int ?<?(unsigned int _p0, unsigned int _p1)
-{
-        return (_p0<_p1);
-
-}
-
-int ?<=?(unsigned int _p0, unsigned int _p1)
-{
-        return (_p0<=_p1);
-
-}
-
-int ?>?(unsigned int _p0, unsigned int _p1)
-{
-        return (_p0>_p1);
-
-}
-
-int ?>=?(unsigned int _p0, unsigned int _p1)
-{
-        return (_p0>=_p1);
-
-}
-
-int ?<?(long unsigned int _p0, long unsigned int _p1)
-{
-        return (_p0<_p1);
-
-}
-
-int ?<=?(long unsigned int _p0, long unsigned int _p1)
-{
-        return (_p0<=_p1);
-
-}
-
-int ?>?(long unsigned int _p0, long unsigned int _p1)
-{
-        return (_p0>_p1);
-
-}
-
-int ?>=?(long unsigned int _p0, long unsigned int _p1)
-{
-        return (_p0>=_p1);
-
-}
-
-int ?<?(float _p0, float _p1)
-{
-        return (_p0<_p1);
-
-}
-
-int ?<=?(float _p0, float _p1)
-{
-        return (_p0<=_p1);
-
-}
-
-int ?>?(float _p0, float _p1)
-{
-        return (_p0>_p1);
-
-}
-
-int ?>=?(float _p0, float _p1)
-{
-        return (_p0>=_p1);
-
-}
-
-int ?<?(double _p0, double _p1)
-{
-        return (_p0<_p1);
-
-}
-
-int ?<=?(double _p0, double _p1)
-{
-        return (_p0<=_p1);
-
-}
-
-int ?>?(double _p0, double _p1)
-{
-        return (_p0>_p1);
-
-}
-
-int ?>=?(double _p0, double _p1)
-{
-        return (_p0>=_p1);
-
-}
-
-int ?<?(long double _p0, long double _p1)
-{
-        return (_p0<_p1);
-
-}
-
-int ?<=?(long double _p0, long double _p1)
-{
-        return (_p0<=_p1);
-
-}
-
-int ?>?(long double _p0, long double _p1)
-{
-        return (_p0>_p1);
-
-}
-
-int ?>=?(long double _p0, long double _p1)
-{
-        return (_p0>=_p1);
-
-}
-
-int ?<?(volatile const DT *_p0, volatile const DT *_p1)
-{
-        return (_p0<_p1);
-
-}
-
-int ?>?(volatile const DT *_p0, volatile const DT *_p1)
-{
-        return (_p0>_p1);
-
-}
-
-int ?<=?(volatile const DT *_p0, volatile const DT *_p1)
-{
-        return (_p0<=_p1);
-
-}
-
-int ?>=?(volatile const DT *_p0, volatile const DT *_p1)
-{
-        return (_p0>=_p1);
-
-}
-
-int ?==?(int _p0, int _p1)
-{
-        return (_p0==_p1);
-
-}
-
-int ?!=?(int _p0, int _p1)
-{
-        return (_p0!=_p1);
-
-}
-
-int ?==?(long int _p0, long int _p1)
-{
-        return (_p0==_p1);
-
-}
-
-int ?!=?(long int _p0, long int _p1)
-{
-        return (_p0!=_p1);
-
-}
-
-int ?==?(unsigned int _p0, unsigned int _p1)
-{
-        return (_p0==_p1);
-
-}
-
-int ?!=?(unsigned int _p0, unsigned int _p1)
-{
-        return (_p0!=_p1);
-
-}
-
-int ?==?(long unsigned int _p0, long unsigned int _p1)
-{
-        return (_p0==_p1);
-
-}
-
-int ?!=?(long unsigned int _p0, long unsigned int _p1)
-{
-        return (_p0!=_p1);
-
-}
-
-int ?==?(float _p0, float _p1)
-{
-        return (_p0==_p1);
-
-}
-
-int ?!=?(float _p0, float _p1)
-{
-        return (_p0!=_p1);
-
-}
-
-int ?==?(double _p0, double _p1)
-{
-        return (_p0==_p1);
-
-}
-
-int ?!=?(double _p0, double _p1)
-{
-        return (_p0!=_p1);
-
-}
-
-int ?==?(long double _p0, long double _p1)
-{
-        return (_p0==_p1);
-
-}
-
-int ?!=?(long double _p0, long double _p1)
-{
-        return (_p0!=_p1);
-
-}
-
-int ?==?(volatile const DT *_p0, volatile const DT *_p1)
-{
-        return (_p0==_p1);
-
-}
-
-int ?!=?(volatile const DT *_p0, volatile const DT *_p1)
-{
-        return (_p0!=_p1);
-
-}
-
-int ?==?(FT *_p0, FT *_p1)
-{
-        return (_p0==_p1);
-
-}
-
-int ?!=?(FT *_p0, FT *_p1)
-{
-        return (_p0!=_p1);
-
-}
-
-int ?==?(volatile const DT *_p0, volatile const void *_p1)
-{
-        return (_p0==_p1);
-
-}
-
-int ?!=?(volatile const DT *_p0, volatile const void *_p1)
-{
-        return (_p0!=_p1);
-
-}
-
-int ?==?(volatile const void *_p0, volatile const DT *_p1)
-{
-        return (_p0==_p1);
-
-}
-
-int ?!=?(volatile const void *_p0, volatile const DT *_p1)
-{
-        return (_p0!=_p1);
-
-}
-
-int ?==?(volatile const DT *_p0, const DT2 *_p1)
-{
-        return (_p0==_p1);
-
-}
-
-int ?!=?(volatile const DT *_p0, const DT2 *_p1)
-{
-        return (_p0!=_p1);
-
-}
-
-int ?==?(const DT2 *_p0, volatile const DT *_p1)
-{
-        return (_p0==_p1);
-
-}
-
-int ?!=?(const DT2 *_p0, volatile const DT *_p1)
-{
-        return (_p0!=_p1);
-
-}
-
-int ?==?(FT *_p0, FT2 *_p1)
-{
-        return (_p0==_p1);
-
-}
-
-int ?!=?(FT *_p0, FT2 *_p1)
-{
-        return (_p0!=_p1);
-
-}
-
-int ?==?(FT2 *_p0, FT *_p1)
-{
-        return (_p0==_p1);
-
-}
-
-int ?!=?(FT2 *_p0, FT *_p1)
-{
-        return (_p0!=_p1);
-
-}
-
-int ?&?(int _p0, int _p1)
-{
-        return (_p0&_p1);
-
-}
-
-long int ?&?(long int _p0, long int _p1)
-{
-        return (_p0&_p1);
-
-}
-
-unsigned int ?&?(unsigned int _p0, unsigned int _p1)
-{
-        return (_p0&_p1);
-
-}
-
-long unsigned int ?&?(long unsigned int _p0, long unsigned int _p1)
-{
-        return (_p0&_p1);
-
-}
-
-int ?^?(int _p0, int _p1)
-{
-        return (_p0^_p1);
-
-}
-
-long int ?^?(long int _p0, long int _p1)
-{
-        return (_p0^_p1);
-
-}
-
-unsigned int ?^?(unsigned int _p0, unsigned int _p1)
-{
-        return (_p0^_p1);
-
-}
-
-long unsigned int ?^?(long unsigned int _p0, long unsigned int _p1)
-{
-        return (_p0^_p1);
-
-}
-
-int ?|?(int _p0, int _p1)
-{
-        return (_p0|_p1);
-
-}
-
-long int ?|?(long int _p0, long int _p1)
-{
-        return (_p0|_p1);
-
-}
-
-unsigned int ?|?(unsigned int _p0, unsigned int _p1)
-{
-        return (_p0|_p1);
-
-}
-
-long unsigned int ?|?(long unsigned int _p0, long unsigned int _p1)
-{
-        return (_p0|_p1);
-
-}
-
-FT * ?=?(FT **_p0, FT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-FT * ?=?(FT *volatile *_p0, FT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-DT * ?=?(DT **_p0, DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-DT * ?=?(DT *volatile *_p0, DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-const DT * ?=?(const DT **_p0, DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-const DT * ?=?(const DT *volatile *_p0, DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile DT * ?=?(volatile DT **_p0, DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile DT * ?=?(volatile DT *volatile *_p0, DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile const DT * ?=?(volatile const DT **_p0, DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile const DT * ?=?(volatile const DT *volatile *_p0, DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile const DT * ?=?(volatile const DT **_p0, volatile DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile const DT * ?=?(volatile const DT *volatile *_p0, volatile DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile const DT * ?=?(volatile const DT **_p0, const DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile const DT * ?=?(volatile const DT *volatile *_p0, const DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-DT * ?=?(DT **_p0, void *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-DT * ?=?(DT *volatile *_p0, void *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-const DT * ?=?(const DT **_p0, void *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-const DT * ?=?(const DT *volatile *_p0, void *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-const DT * ?=?(const DT **_p0, const void *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-const DT * ?=?(const DT *volatile *_p0, const void *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile DT * ?=?(volatile DT **_p0, void *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile DT * ?=?(volatile DT *volatile *_p0, void *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile DT * ?=?(volatile DT **_p0, volatile void *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile DT * ?=?(volatile DT *volatile *_p0, volatile void *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile const DT * ?=?(volatile const DT **_p0, void *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile const DT * ?=?(volatile const DT *volatile *_p0, void *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile const DT * ?=?(volatile const DT **_p0, const void *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile const DT * ?=?(volatile const DT *volatile *_p0, const void *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile const DT * ?=?(volatile const DT **_p0, volatile void *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile const DT * ?=?(volatile const DT *volatile *_p0, volatile void *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile const DT * ?=?(volatile const DT **_p0, volatile const void *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile const DT * ?=?(volatile const DT *volatile *_p0, volatile const void *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-void * ?=?(void **_p0, DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-void * ?=?(void *volatile *_p0, DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-const void * ?=?(const void **_p0, DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-const void * ?=?(const void *volatile *_p0, DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-const void * ?=?(const void **_p0, const DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-const void * ?=?(const void *volatile *_p0, const DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile void * ?=?(volatile const void **_p0, DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile void * ?=?(volatile const void *volatile *_p0, DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile void * ?=?(volatile const void **_p0, const DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile void * ?=?(volatile const void *volatile *_p0, const DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile void * ?=?(volatile const void **_p0, volatile DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile void * ?=?(volatile const void *volatile *_p0, volatile DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile void * ?=?(volatile const void **_p0, volatile const DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile void * ?=?(volatile const void *volatile *_p0, volatile const DT *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-DT * ?=?(DT **_p0, const DT2 *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-DT * ?=?(DT *volatile *_p0, const DT2 *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-const DT * ?=?(const DT **_p0, const DT2 *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-const DT * ?=?(const DT *volatile *_p0, const DT2 *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile DT * ?=?(volatile DT **_p0, const DT2 *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile DT * ?=?(volatile DT *volatile *_p0, const DT2 *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile const DT * ?=?(volatile const DT **_p0, const DT2 *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-volatile const DT * ?=?(volatile const DT *volatile *_p0, const DT2 *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-FT * ?=?(FT **_p0, FT2 *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-FT * ?=?(FT *volatile *_p0, FT2 *_p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-T * ?+=?(T **_p0, _ptrdiff_t _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-T * ?+=?(T *volatile *_p0, _ptrdiff_t _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-T * ?-=?(T **_p0, _ptrdiff_t _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-T * ?-=?(T *volatile *_p0, _ptrdiff_t _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-const T * ?+=?(const T **_p0, _ptrdiff_t _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-const T * ?+=?(const T *volatile *_p0, _ptrdiff_t _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-const T * ?-=?(const T **_p0, _ptrdiff_t _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-const T * ?-=?(const T *volatile *_p0, _ptrdiff_t _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-volatile T * ?+=?(volatile T **_p0, _ptrdiff_t _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-volatile T * ?+=?(volatile T *volatile *_p0, _ptrdiff_t _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-volatile T * ?-=?(volatile T **_p0, _ptrdiff_t _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-volatile T * ?-=?(volatile T *volatile *_p0, _ptrdiff_t _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-volatile const T * ?+=?(volatile const T **_p0, _ptrdiff_t _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-volatile const T * ?+=?(volatile const T *volatile *_p0, _ptrdiff_t _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-volatile const T * ?-=?(volatile const T **_p0, _ptrdiff_t _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-volatile const T * ?-=?(volatile const T *volatile *_p0, _ptrdiff_t _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-char ?=?(char *_p0, char _p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-char ?=?(volatile char *_p0, char _p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-unsigned char ?=?(unsigned char *_p0, unsigned char _p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-unsigned char ?=?(volatile unsigned char *_p0, unsigned char _p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-int ?=?(int *_p0, int _p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-int ?=?(volatile int *_p0, int _p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-unsigned int ?=?(unsigned int *_p0, unsigned int _p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-unsigned int ?=?(volatile unsigned int *_p0, unsigned int _p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-long int ?=?(long int *_p0, long int _p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-long int ?=?(volatile long int *_p0, long int _p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-long unsigned int ?=?(long unsigned int *_p0, long unsigned int _p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-long unsigned int ?=?(volatile long unsigned int *_p0, long unsigned int _p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-char ?*=?(char *_p0, char _p1)
-{
-        return ((*_p0)*=_p1);
-
-}
-
-char ?*=?(volatile char *_p0, char _p1)
-{
-        return ((*_p0)*=_p1);
-
-}
-
-unsigned char ?*=?(unsigned char *_p0, unsigned char _p1)
-{
-        return ((*_p0)*=_p1);
-
-}
-
-unsigned char ?*=?(volatile unsigned char *_p0, unsigned char _p1)
-{
-        return ((*_p0)*=_p1);
-
-}
-
-int ?*=?(int *_p0, int _p1)
-{
-        return ((*_p0)*=_p1);
-
-}
-
-int ?*=?(volatile int *_p0, int _p1)
-{
-        return ((*_p0)*=_p1);
-
-}
-
-unsigned int ?*=?(unsigned int *_p0, unsigned int _p1)
-{
-        return ((*_p0)*=_p1);
-
-}
-
-unsigned int ?*=?(volatile unsigned int *_p0, unsigned int _p1)
-{
-        return ((*_p0)*=_p1);
-
-}
-
-long int ?*=?(long int *_p0, long int _p1)
-{
-        return ((*_p0)*=_p1);
-
-}
-
-long int ?*=?(volatile long int *_p0, long int _p1)
-{
-        return ((*_p0)*=_p1);
-
-}
-
-long unsigned int ?*=?(long unsigned int *_p0, long unsigned int _p1)
-{
-        return ((*_p0)*=_p1);
-
-}
-
-long unsigned int ?*=?(volatile long unsigned int *_p0, long unsigned int _p1)
-{
-        return ((*_p0)*=_p1);
-
-}
-
-char ?/=?(char *_p0, char _p1)
-{
-        return ((*_p0)/=_p1);
-
-}
-
-char ?/=?(volatile char *_p0, char _p1)
-{
-        return ((*_p0)/=_p1);
-
-}
-
-unsigned char ?/=?(unsigned char *_p0, unsigned char _p1)
-{
-        return ((*_p0)/=_p1);
-
-}
-
-unsigned char ?/=?(volatile unsigned char *_p0, unsigned char _p1)
-{
-        return ((*_p0)/=_p1);
-
-}
-
-int ?/=?(int *_p0, int _p1)
-{
-        return ((*_p0)/=_p1);
-
-}
-
-int ?/=?(volatile int *_p0, int _p1)
-{
-        return ((*_p0)/=_p1);
-
-}
-
-unsigned int ?/=?(unsigned int *_p0, unsigned int _p1)
-{
-        return ((*_p0)/=_p1);
-
-}
-
-unsigned int ?/=?(volatile unsigned int *_p0, unsigned int _p1)
-{
-        return ((*_p0)/=_p1);
-
-}
-
-long int ?/=?(long int *_p0, long int _p1)
-{
-        return ((*_p0)/=_p1);
-
-}
-
-long int ?/=?(volatile long int *_p0, long int _p1)
-{
-        return ((*_p0)/=_p1);
-
-}
-
-long unsigned int ?/=?(long unsigned int *_p0, long unsigned int _p1)
-{
-        return ((*_p0)/=_p1);
-
-}
-
-long unsigned int ?/=?(volatile long unsigned int *_p0, long unsigned int _p1)
-{
-        return ((*_p0)/=_p1);
-
-}
-
-char ?%=?(char *_p0, char _p1)
-{
-        return ((*_p0)%=_p1);
-
-}
-
-char ?%=?(volatile char *_p0, char _p1)
-{
-        return ((*_p0)%=_p1);
-
-}
-
-unsigned char ?%=?(unsigned char *_p0, unsigned char _p1)
-{
-        return ((*_p0)%=_p1);
-
-}
-
-unsigned char ?%=?(volatile unsigned char *_p0, unsigned char _p1)
-{
-        return ((*_p0)%=_p1);
-
-}
-
-int ?%=?(int *_p0, int _p1)
-{
-        return ((*_p0)%=_p1);
-
-}
-
-int ?%=?(volatile int *_p0, int _p1)
-{
-        return ((*_p0)%=_p1);
-
-}
-
-unsigned int ?%=?(unsigned int *_p0, unsigned int _p1)
-{
-        return ((*_p0)%=_p1);
-
-}
-
-unsigned int ?%=?(volatile unsigned int *_p0, unsigned int _p1)
-{
-        return ((*_p0)%=_p1);
-
-}
-
-long int ?%=?(long int *_p0, long int _p1)
-{
-        return ((*_p0)%=_p1);
-
-}
-
-long int ?%=?(volatile long int *_p0, long int _p1)
-{
-        return ((*_p0)%=_p1);
-
-}
-
-long unsigned int ?%=?(long unsigned int *_p0, long unsigned int _p1)
-{
-        return ((*_p0)%=_p1);
-
-}
-
-long unsigned int ?%=?(volatile long unsigned int *_p0, long unsigned int _p1)
-{
-        return ((*_p0)%=_p1);
-
-}
-
-char ?+=?(char *_p0, char _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-char ?+=?(volatile char *_p0, char _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-unsigned char ?+=?(unsigned char *_p0, unsigned char _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-unsigned char ?+=?(volatile unsigned char *_p0, unsigned char _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-int ?+=?(int *_p0, int _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-int ?+=?(volatile int *_p0, int _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-unsigned int ?+=?(unsigned int *_p0, unsigned int _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-unsigned int ?+=?(volatile unsigned int *_p0, unsigned int _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-long int ?+=?(long int *_p0, long int _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-long int ?+=?(volatile long int *_p0, long int _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-long unsigned int ?+=?(long unsigned int *_p0, long unsigned int _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-long unsigned int ?+=?(volatile long unsigned int *_p0, long unsigned int _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-char ?-=?(char *_p0, char _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-char ?-=?(volatile char *_p0, char _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-unsigned char ?-=?(unsigned char *_p0, unsigned char _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-unsigned char ?-=?(volatile unsigned char *_p0, unsigned char _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-int ?-=?(int *_p0, int _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-int ?-=?(volatile int *_p0, int _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-unsigned int ?-=?(unsigned int *_p0, unsigned int _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-unsigned int ?-=?(volatile unsigned int *_p0, unsigned int _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-long int ?-=?(long int *_p0, long int _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-long int ?-=?(volatile long int *_p0, long int _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-long unsigned int ?-=?(long unsigned int *_p0, long unsigned int _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-long unsigned int ?-=?(volatile long unsigned int *_p0, long unsigned int _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-char ?<<=?(char *_p0, char _p1)
-{
-        return ((*_p0)<<=_p1);
-
-}
-
-char ?<<=?(volatile char *_p0, char _p1)
-{
-        return ((*_p0)<<=_p1);
-
-}
-
-unsigned char ?<<=?(unsigned char *_p0, unsigned char _p1)
-{
-        return ((*_p0)<<=_p1);
-
-}
-
-unsigned char ?<<=?(volatile unsigned char *_p0, unsigned char _p1)
-{
-        return ((*_p0)<<=_p1);
-
-}
-
-int ?<<=?(int *_p0, int _p1)
-{
-        return ((*_p0)<<=_p1);
-
-}
-
-int ?<<=?(volatile int *_p0, int _p1)
-{
-        return ((*_p0)<<=_p1);
-
-}
-
-unsigned int ?<<=?(unsigned int *_p0, unsigned int _p1)
-{
-        return ((*_p0)<<=_p1);
-
-}
-
-unsigned int ?<<=?(volatile unsigned int *_p0, unsigned int _p1)
-{
-        return ((*_p0)<<=_p1);
-
-}
-
-long int ?<<=?(long int *_p0, long int _p1)
-{
-        return ((*_p0)<<=_p1);
-
-}
-
-long int ?<<=?(volatile long int *_p0, long int _p1)
-{
-        return ((*_p0)<<=_p1);
-
-}
-
-long unsigned int ?<<=?(long unsigned int *_p0, long unsigned int _p1)
-{
-        return ((*_p0)<<=_p1);
-
-}
-
-long unsigned int ?<<=?(volatile long unsigned int *_p0, long unsigned int _p1)
-{
-        return ((*_p0)<<=_p1);
-
-}
-
-char ?>>=?(char *_p0, char _p1)
-{
-        return ((*_p0)>>=_p1);
-
-}
-
-char ?>>=?(volatile char *_p0, char _p1)
-{
-        return ((*_p0)>>=_p1);
-
-}
-
-unsigned char ?>>=?(unsigned char *_p0, unsigned char _p1)
-{
-        return ((*_p0)>>=_p1);
-
-}
-
-unsigned char ?>>=?(volatile unsigned char *_p0, unsigned char _p1)
-{
-        return ((*_p0)>>=_p1);
-
-}
-
-int ?>>=?(int *_p0, int _p1)
-{
-        return ((*_p0)>>=_p1);
-
-}
-
-int ?>>=?(volatile int *_p0, int _p1)
-{
-        return ((*_p0)>>=_p1);
-
-}
-
-unsigned int ?>>=?(unsigned int *_p0, unsigned int _p1)
-{
-        return ((*_p0)>>=_p1);
-
-}
-
-unsigned int ?>>=?(volatile unsigned int *_p0, unsigned int _p1)
-{
-        return ((*_p0)>>=_p1);
-
-}
-
-long int ?>>=?(long int *_p0, long int _p1)
-{
-        return ((*_p0)>>=_p1);
-
-}
-
-long int ?>>=?(volatile long int *_p0, long int _p1)
-{
-        return ((*_p0)>>=_p1);
-
-}
-
-long unsigned int ?>>=?(long unsigned int *_p0, long unsigned int _p1)
-{
-        return ((*_p0)>>=_p1);
-
-}
-
-long unsigned int ?>>=?(volatile long unsigned int *_p0, long unsigned int _p1)
-{
-        return ((*_p0)>>=_p1);
-
-}
-
-char ?&=?(char *_p0, char _p1)
-{
-        return ((*_p0)&=_p1);
-
-}
-
-char ?&=?(volatile char *_p0, char _p1)
-{
-        return ((*_p0)&=_p1);
-
-}
-
-unsigned char ?&=?(unsigned char *_p0, unsigned char _p1)
-{
-        return ((*_p0)&=_p1);
-
-}
-
-unsigned char ?&=?(volatile unsigned char *_p0, unsigned char _p1)
-{
-        return ((*_p0)&=_p1);
-
-}
-
-int ?&=?(int *_p0, int _p1)
-{
-        return ((*_p0)&=_p1);
-
-}
-
-int ?&=?(volatile int *_p0, int _p1)
-{
-        return ((*_p0)&=_p1);
-
-}
-
-unsigned int ?&=?(unsigned int *_p0, unsigned int _p1)
-{
-        return ((*_p0)&=_p1);
-
-}
-
-unsigned int ?&=?(volatile unsigned int *_p0, unsigned int _p1)
-{
-        return ((*_p0)&=_p1);
-
-}
-
-long int ?&=?(long int *_p0, long int _p1)
-{
-        return ((*_p0)&=_p1);
-
-}
-
-long int ?&=?(volatile long int *_p0, long int _p1)
-{
-        return ((*_p0)&=_p1);
-
-}
-
-long unsigned int ?&=?(long unsigned int *_p0, long unsigned int _p1)
-{
-        return ((*_p0)&=_p1);
-
-}
-
-long unsigned int ?&=?(volatile long unsigned int *_p0, long unsigned int _p1)
-{
-        return ((*_p0)&=_p1);
-
-}
-
-char ?|=?(char *_p0, char _p1)
-{
-        return ((*_p0)|=_p1);
-
-}
-
-char ?|=?(volatile char *_p0, char _p1)
-{
-        return ((*_p0)|=_p1);
-
-}
-
-unsigned char ?|=?(unsigned char *_p0, unsigned char _p1)
-{
-        return ((*_p0)|=_p1);
-
-}
-
-unsigned char ?|=?(volatile unsigned char *_p0, unsigned char _p1)
-{
-        return ((*_p0)|=_p1);
-
-}
-
-int ?|=?(int *_p0, int _p1)
-{
-        return ((*_p0)|=_p1);
-
-}
-
-int ?|=?(volatile int *_p0, int _p1)
-{
-        return ((*_p0)|=_p1);
-
-}
-
-unsigned int ?|=?(unsigned int *_p0, unsigned int _p1)
-{
-        return ((*_p0)|=_p1);
-
-}
-
-unsigned int ?|=?(volatile unsigned int *_p0, unsigned int _p1)
-{
-        return ((*_p0)|=_p1);
-
-}
-
-long int ?|=?(long int *_p0, long int _p1)
-{
-        return ((*_p0)|=_p1);
-
-}
-
-long int ?|=?(volatile long int *_p0, long int _p1)
-{
-        return ((*_p0)|=_p1);
-
-}
-
-long unsigned int ?|=?(long unsigned int *_p0, long unsigned int _p1)
-{
-        return ((*_p0)|=_p1);
-
-}
-
-long unsigned int ?|=?(volatile long unsigned int *_p0, long unsigned int _p1)
-{
-        return ((*_p0)|=_p1);
-
-}
-
-char ?^=?(char *_p0, char _p1)
-{
-        return ((*_p0)^=_p1);
-
-}
-
-char ?^=?(volatile char *_p0, char _p1)
-{
-        return ((*_p0)^=_p1);
-
-}
-
-unsigned char ?^=?(unsigned char *_p0, unsigned char _p1)
-{
-        return ((*_p0)^=_p1);
-
-}
-
-unsigned char ?^=?(volatile unsigned char *_p0, unsigned char _p1)
-{
-        return ((*_p0)^=_p1);
-
-}
-
-int ?^=?(int *_p0, int _p1)
-{
-        return ((*_p0)^=_p1);
-
-}
-
-int ?^=?(volatile int *_p0, int _p1)
-{
-        return ((*_p0)^=_p1);
-
-}
-
-unsigned int ?^=?(unsigned int *_p0, unsigned int _p1)
-{
-        return ((*_p0)^=_p1);
-
-}
-
-unsigned int ?^=?(volatile unsigned int *_p0, unsigned int _p1)
-{
-        return ((*_p0)^=_p1);
-
-}
-
-long int ?^=?(long int *_p0, long int _p1)
-{
-        return ((*_p0)^=_p1);
-
-}
-
-long int ?^=?(volatile long int *_p0, long int _p1)
-{
-        return ((*_p0)^=_p1);
-
-}
-
-long unsigned int ?^=?(long unsigned int *_p0, long unsigned int _p1)
-{
-        return ((*_p0)^=_p1);
-
-}
-
-long unsigned int ?^=?(volatile long unsigned int *_p0, long unsigned int _p1)
-{
-        return ((*_p0)^=_p1);
-
-}
-
-float ?=?(float *_p0, float _p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-float ?=?(volatile float *_p0, float _p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-float ?*=?(float *_p0, float _p1)
-{
-        return ((*_p0)*=_p1);
-
-}
-
-float ?*=?(volatile float *_p0, float _p1)
-{
-        return ((*_p0)*=_p1);
-
-}
-
-float ?/=?(float *_p0, float _p1)
-{
-        return ((*_p0)/=_p1);
-
-}
-
-float ?/=?(volatile float *_p0, float _p1)
-{
-        return ((*_p0)/=_p1);
-
-}
-
-float ?+=?(float *_p0, float _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-float ?+=?(volatile float *_p0, float _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-float ?-=?(float *_p0, float _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-float ?-=?(volatile float *_p0, float _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-double ?=?(double *_p0, double _p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-double ?=?(volatile double *_p0, double _p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-double ?*=?(double *_p0, double _p1)
-{
-        return ((*_p0)*=_p1);
-
-}
-
-double ?*=?(volatile double *_p0, double _p1)
-{
-        return ((*_p0)*=_p1);
-
-}
-
-double ?/=?(double *_p0, double _p1)
-{
-        return ((*_p0)/=_p1);
-
-}
-
-double ?/=?(volatile double *_p0, double _p1)
-{
-        return ((*_p0)/=_p1);
-
-}
-
-double ?+=?(double *_p0, double _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-double ?+=?(volatile double *_p0, double _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-double ?-=?(double *_p0, double _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-double ?-=?(volatile double *_p0, double _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-long double ?=?(long double *_p0, long double _p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-long double ?=?(volatile long double *_p0, long double _p1)
-{
-        return ((*_p0)=_p1);
-
-}
-
-long double ?*=?(long double *_p0, long double _p1)
-{
-        return ((*_p0)*=_p1);
-
-}
-
-long double ?*=?(volatile long double *_p0, long double _p1)
-{
-        return ((*_p0)*=_p1);
-
-}
-
-long double ?/=?(long double *_p0, long double _p1)
-{
-        return ((*_p0)/=_p1);
-
-}
-
-long double ?/=?(volatile long double *_p0, long double _p1)
-{
-        return ((*_p0)/=_p1);
-
-}
-
-long double ?+=?(long double *_p0, long double _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-long double ?+=?(volatile long double *_p0, long double _p1)
-{
-        return ((*_p0)+=_p1);
-
-}
-
-long double ?-=?(long double *_p0, long double _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
-long double ?-=?(volatile long double *_p0, long double _p1)
-{
-        return ((*_p0)-=_p1);
-
-}
-
Index: c/spectest
===================================================================
--- src/spectest	(revision eb50842f528b3e34cf566df4d08aa8c6d4b077a8)
+++ 	(revision )
@@ -1,4 +1,0 @@
-.cf:
-cpp %p %i -o %g.if
-/u/rcbilson/opt/lib/cfa-cpp -cp %{v} %g.if %g.i
-gcc %1 -o %b.o -c %g.i dummy
