Index: src/Tests/Expect-a/Abstype.txt
===================================================================
--- src/Tests/Expect-a/Abstype.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Abstype.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Array.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/AsmName.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -0,0 +1,11 @@
+x: auto 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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Attributes.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -0,0 +1,1 @@
+Error at line 8 reading token "*"
Index: src/Tests/Expect-a/Cast.txt
===================================================================
--- src/Tests/Expect-a/Cast.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Cast.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/CastError.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/CharStringConstants.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/CommentMisc.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Constant0-1.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Context.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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: auto type
+        Declaration of y: auto 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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/DeclarationErrors.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/DeclarationSpecifier.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Enum.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Exception.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Expression.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Forall.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Function.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Functions.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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: auto function
+    with parameters
+      i: signed int 
+    returning 
+      signed int 
+    with body 
+      CompoundStmt
+
+fII4: auto 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: auto function
+      accepting unspecified arguments
+    returning 
+      signed int 
+    with parameter names
+      i
+    with parameter declarations
+      i: signed int 
+    with body 
+      CompoundStmt
+
+fO5: auto 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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/GccExtensions.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/IdentFuncDeclarator.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/IdentFuncParamDeclarator.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/InferParam.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Initialization.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Initialization2.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/LabelledExit.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Members.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Misc.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/MiscError.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/NamedParmArg.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/NumericConstants.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/OccursError.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Operators.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Quad.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Rank2.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Scope.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/ScopeErrors.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/ShortCircuit.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Statement.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/StructMember.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Subrange.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Switch.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Tuple.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/TypeGenerator.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -0,0 +1,157 @@
+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) 
+
+
+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) 
+
+
+
+  with assertions
+    instance of context addable 
+      with parameters
+        instance of type T (not function type) 
+
+
+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 S1
+    with parameters
+      T: type
+
+struct S1
+    with parameters
+      T: type
+
+    with members
+      i: instance of type T (not function type) 
+
+v1: instance of struct S1 
+  with parameters
+    signed int 
+
+p: pointer to instance of struct S1 
+  with parameters
+    signed int 
+
+struct S2
+    with parameters
+      T: type
+
+    with members
+      i: instance of type T (not function type) 
+
+v2: instance of struct S2 
+  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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Typedef.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/TypedefDeclarator.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/TypedefParamDeclarator.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/Typeof.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/VariableDeclarator.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/gcc900407-1.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/gcc900516-1.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/gcc920301-1.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/gcc920409-1.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/gcc920409-2.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/gcc920410-2.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/gcc920501-1.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/gcc920501-11.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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 b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/gcc920501-19.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -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-a/report
===================================================================
--- src/Tests/Expect-a/report	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-a/report	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
@@ -0,0 +1,57 @@
+---Abstype.txt---
+---Array.txt---
+---AsmName.txt---
+---Attributes.txt---
+---Cast.txt---
+---CastError.txt---
+---CharStringConstants.txt---
+---CommentMisc.txt---
+---Constant0-1.txt---
+---Context.txt---
+---DeclarationErrors.txt---
+---DeclarationSpecifier.txt---
+---Enum.txt---
+---Exception.txt---
+---Expression.txt---
+---Forall.txt---
+---Function.txt---
+---Functions.txt---
+---GccExtensions.txt---
+---IdentFuncDeclarator.txt---
+---IdentFuncParamDeclarator.txt---
+---InferParam.txt---
+---Initialization.txt---
+---Initialization2.txt---
+---LabelledExit.txt---
+---Members.txt---
+---Misc.txt---
+---MiscError.txt---
+---NamedParmArg.txt---
+---NumericConstants.txt---
+---OccursError.txt---
+---Operators.txt---
+---Quad.txt---
+---Rank2.txt---
+---Scope.txt---
+---ScopeErrors.txt---
+---ShortCircuit.txt---
+---Statement.txt---
+---StructMember.txt---
+---Subrange.txt---
+---Switch.txt---
+---Tuple.txt---
+---TypeGenerator.txt---
+---Typedef.txt---
+---TypedefDeclarator.txt---
+---TypedefParamDeclarator.txt---
+---Typeof.txt---
+---VariableDeclarator.txt---
+---gcc900407-1.txt---
+---gcc900516-1.txt---
+---gcc920301-1.txt---
+---gcc920409-1.txt---
+---gcc920409-2.txt---
+---gcc920410-2.txt---
+---gcc920501-1.txt---
+---gcc920501-11.txt---
+---gcc920501-19.txt---
