Index: src/Tests/Expect-r/Attributes.txt
===================================================================
--- src/Tests/Expect-r/Attributes.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-r/Attributes.txt	(revision 68cd1ce1134527e1c664cfdf84df37a7025de8a7)
@@ -1,1 +1,1 @@
-Error at line 8 reading token "*"
+Error at line 58 reading token "*"
Index: src/Tests/Expect-r/Function.txt
===================================================================
--- src/Tests/Expect-r/Function.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-r/Function.txt	(revision 68cd1ce1134527e1c664cfdf84df37a7025de8a7)
@@ -4954,4 +4954,4 @@
 there are 1 alternatives before elimination
 there are 1 alternatives after elimination
-cfa-cpp: GenPoly/Box.cc:398: void GenPoly::{anonymous}::Pass1::boxParams(ApplicationExpr*, FunctionType*, std::list<Expression*>::iterator&, const TyVarMap&): Assertion `arg != appExpr->get_args().end()' failed.
+cfa-cpp: GenPoly/Box.cc:401: void GenPoly::{anonymous}::Pass1::boxParams(ApplicationExpr*, FunctionType*, std::list<Expression*>::iterator&, const TyVarMap&): Assertion `arg != appExpr->get_args().end()' failed.
 Aborted (core dumped)
Index: src/Tests/Expect-r/TypeGenerator.txt
===================================================================
--- src/Tests/Expect-r/TypeGenerator.txt	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-r/TypeGenerator.txt	(revision 68cd1ce1134527e1c664cfdf84df37a7025de8a7)
@@ -610,8 +610,8 @@
 decl is ?=?: automatically generated inline static function
   with parameters
-    _dst: pointer to instance of struct S1 
-    _src: instance of struct S1 
+    _dst: pointer to instance of struct S2 
+    _src: instance of struct S2 
   returning 
-    instance of struct S1 
+    instance of struct S2 
   with body 
     CompoundStmt
@@ -627,11 +627,11 @@
                       Name: *?
                   ...to: 
-                      Variable Expression: _dst: pointer to instance of struct S1 
+                      Variable Expression: _dst: pointer to instance of struct S2 
               Member Expression, with field: 
                 i: instance of type T (not function type) 
               from aggregate: 
-                Variable Expression: _src: instance of struct S1 
-
-              Return Statement, returning: Variable Expression: _src: instance of struct S1 
+                Variable Expression: _src: instance of struct S2 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S2 
 
 
@@ -639,8 +639,8 @@
 newExpr is Variable Expression: ?=?: inline static function
     with parameters
-      _dst: pointer to instance of struct S1 
-      _src: instance of struct S1 
-    returning 
-      instance of struct S1 
+      _dst: pointer to instance of struct S2 
+      _src: instance of struct S2 
+    returning 
+      instance of struct S2 
 
 
@@ -698,16 +698,16 @@
 Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
     with parameters
-      _dst: pointer to instance of struct S1 
-      _src: instance of struct S1 
-    returning 
-      instance of struct S1 
+      _dst: pointer to instance of struct S2 
+      _src: instance of struct S2 
+    returning 
+      instance of struct S2 
 
 (types:
     pointer to function
         with parameters
-          _dst: pointer to instance of struct S1 
-          _src: instance of struct S1 
+          _dst: pointer to instance of struct S2 
+          _src: instance of struct S2 
         returning 
-          instance of struct S1 
+          instance of struct S2 
 
 )
@@ -741,5 +741,5 @@
       Name: *?
   ...to: 
-      Variable Expression: _dst: pointer to instance of struct S1 
+      Variable Expression: _dst: pointer to instance of struct S2 
 (types:
     lvalue instance of type T (not function type) 
@@ -757,5 +757,5 @@
         Name: *?
     ...to: 
-        Variable Expression: _dst: pointer to instance of struct S1 
+        Variable Expression: _dst: pointer to instance of struct S2 
 (types:
     pointer to instance of type T (not function type) 
@@ -773,5 +773,5 @@
         Name: *?
     ...to: 
-        Variable Expression: _dst: pointer to instance of struct S1 
+        Variable Expression: _dst: pointer to instance of struct S2 
 (types:
     pointer to instance of type T (not function type) 
@@ -783,5 +783,5 @@
   i: instance of type T (not function type) 
 from aggregate: 
-  Variable Expression: _src: instance of struct S1 
+  Variable Expression: _src: instance of struct S2 
 (types:
     lvalue instance of type T (not function type) 
@@ -795,5 +795,5 @@
   i: instance of type T (not function type) 
 from aggregate: 
-  Variable Expression: _src: instance of struct S1 
+  Variable Expression: _src: instance of struct S2 
 (types:
     lvalue instance of type T (not function type) 
@@ -824,20 +824,20 @@
         Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
             with parameters
-              _dst: pointer to instance of struct S1 
-              _src: instance of struct S1 
+              _dst: pointer to instance of struct S2 
+              _src: instance of struct S2 
             returning 
-              instance of struct S1 
+              instance of struct S2 
 
 (types:
             pointer to function
                 with parameters
-                  _dst: pointer to instance of struct S1 
-                  _src: instance of struct S1 
+                  _dst: pointer to instance of struct S2 
+                  _src: instance of struct S2 
                 returning 
-                  instance of struct S1 
+                  instance of struct S2 
 
 )
         Environment: 
-formal type is pointer to instance of struct S1 
+formal type is pointer to instance of struct S2 
 actual type is pointer to instance of type T (not function type) 
 working on alternative: 
@@ -862,7 +862,7 @@
 actual type is pointer to instance of type T (not function type) 
 alternatives before prune:
-Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct S1 
-(types:
-    lvalue instance of struct S1 
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct S2 
+(types:
+    lvalue instance of struct S2 
 )
 Environment: 
@@ -872,10 +872,10 @@
 alternatives before prune:
 Cost ( 0, 0, 0 ): Cast of:
-  Variable Expression: _src: instance of struct S1 
+  Variable Expression: _src: instance of struct S2 
 
 to:
-  instance of struct S1 
-(types:
-    instance of struct S1 
+  instance of struct S2 
+(types:
+    instance of struct S2 
 )
 Environment: 
@@ -953,48 +953,4 @@
 decl is ?=?: automatically generated inline static function
   with parameters
-    _dst: pointer to instance of struct S1 
-    _src: instance of struct S1 
-  returning 
-    instance of struct S1 
-  with body 
-    CompoundStmt
-              Expression Statement:
-          Applying untyped: 
-              Name: ?=?
-          ...to: 
-              Address of:
-                Member Expression, with field: 
-                  i: instance of type T (not function type) 
-                from aggregate: 
-                  Applying untyped: 
-                      Name: *?
-                  ...to: 
-                      Variable Expression: _dst: pointer to instance of struct S1 
-              Member Expression, with field: 
-                i: instance of type T (not function type) 
-              from aggregate: 
-                Variable Expression: _src: instance of struct S1 
-
-              Return Statement, returning: Cast of:
-  Variable Expression: _src: instance of struct S1 
-
-to:
-  instance of struct S1 
-with environment:
-  Types:
-  Non-types:
-
-
-
-newExpr is Variable Expression: ?=?: inline static function
-    with parameters
-      _dst: pointer to instance of struct S1 
-      _src: instance of struct S1 
-    returning 
-      instance of struct S1 
-
-
-decl is ?=?: automatically generated inline static function
-  with parameters
     _dst: pointer to instance of struct S2 
     _src: instance of struct S2 
@@ -1020,5 +976,12 @@
                 Variable Expression: _src: instance of struct S2 
 
-              Return Statement, returning: Variable Expression: _src: instance of struct S2 
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct S2 
+
+to:
+  instance of struct S2 
+with environment:
+  Types:
+  Non-types:
 
 
@@ -1030,4 +993,41 @@
     returning 
       instance of struct S2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S24 
+    _src: instance of struct S24 
+  returning 
+    instance of struct S24 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S24 
+              Member Expression, with field: 
+                i: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S24 
+
+              Return Statement, returning: Variable Expression: _src: instance of struct S24 
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S24 
+      _src: instance of struct S24 
+    returning 
+      instance of struct S24 
 
 
@@ -1085,22 +1085,4 @@
 Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
     with parameters
-      _dst: pointer to instance of struct S1 
-      _src: instance of struct S1 
-    returning 
-      instance of struct S1 
-
-(types:
-    pointer to function
-        with parameters
-          _dst: pointer to instance of struct S1 
-          _src: instance of struct S1 
-        returning 
-          instance of struct S1 
-
-)
-Environment: 
-
-Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
-    with parameters
       _dst: pointer to instance of struct S2 
       _src: instance of struct S2 
@@ -1115,4 +1097,22 @@
         returning 
           instance of struct S2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S24 
+      _src: instance of struct S24 
+    returning 
+      instance of struct S24 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S24 
+          _src: instance of struct S24 
+        returning 
+          instance of struct S24 
 
 )
@@ -1146,5 +1146,5 @@
       Name: *?
   ...to: 
-      Variable Expression: _dst: pointer to instance of struct S2 
+      Variable Expression: _dst: pointer to instance of struct S24 
 (types:
     lvalue instance of type T (not function type) 
@@ -1162,5 +1162,5 @@
         Name: *?
     ...to: 
-        Variable Expression: _dst: pointer to instance of struct S2 
+        Variable Expression: _dst: pointer to instance of struct S24 
 (types:
     pointer to instance of type T (not function type) 
@@ -1178,5 +1178,5 @@
         Name: *?
     ...to: 
-        Variable Expression: _dst: pointer to instance of struct S2 
+        Variable Expression: _dst: pointer to instance of struct S24 
 (types:
     pointer to instance of type T (not function type) 
@@ -1188,5 +1188,5 @@
   i: instance of type T (not function type) 
 from aggregate: 
-  Variable Expression: _src: instance of struct S2 
+  Variable Expression: _src: instance of struct S24 
 (types:
     lvalue instance of type T (not function type) 
@@ -1200,5 +1200,5 @@
   i: instance of type T (not function type) 
 from aggregate: 
-  Variable Expression: _src: instance of struct S2 
+  Variable Expression: _src: instance of struct S24 
 (types:
     lvalue instance of type T (not function type) 
@@ -1225,4 +1225,24 @@
         Environment: 
 formal type is pointer to instance of type List1 (not function type) 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
+              _dst: pointer to instance of struct S24 
+              _src: instance of struct S24 
+            returning 
+              instance of struct S24 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S24 
+                  _src: instance of struct S24 
+                returning 
+                  instance of struct S24 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S24 
 actual type is pointer to instance of type T (not function type) 
 working on alternative: 
@@ -1249,24 +1269,4 @@
         Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
             with parameters
-              _dst: pointer to instance of struct S1 
-              _src: instance of struct S1 
-            returning 
-              instance of struct S1 
-
-(types:
-            pointer to function
-                with parameters
-                  _dst: pointer to instance of struct S1 
-                  _src: instance of struct S1 
-                returning 
-                  instance of struct S1 
-
-)
-        Environment: 
-formal type is pointer to instance of struct S1 
-actual type is pointer to instance of type T (not function type) 
-working on alternative: 
-        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
-            with parameters
               _dst: pointer to instance of struct __anonymous0 
               _src: instance of struct __anonymous0 
@@ -1287,7 +1287,7 @@
 actual type is pointer to instance of type T (not function type) 
 alternatives before prune:
-Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct S2 
-(types:
-    lvalue instance of struct S2 
+Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct S24 
+(types:
+    lvalue instance of struct S24 
 )
 Environment: 
@@ -1297,10 +1297,10 @@
 alternatives before prune:
 Cost ( 0, 0, 0 ): Cast of:
-  Variable Expression: _src: instance of struct S2 
+  Variable Expression: _src: instance of struct S24 
 
 to:
-  instance of struct S2 
-(types:
-    instance of struct S2 
+  instance of struct S24 
+(types:
+    instance of struct S24 
 )
 Environment: 
@@ -1415,48 +1415,4 @@
 decl is ?=?: automatically generated inline static function
   with parameters
-    _dst: pointer to instance of struct S1 
-    _src: instance of struct S1 
-  returning 
-    instance of struct S1 
-  with body 
-    CompoundStmt
-              Expression Statement:
-          Applying untyped: 
-              Name: ?=?
-          ...to: 
-              Address of:
-                Member Expression, with field: 
-                  i: instance of type T (not function type) 
-                from aggregate: 
-                  Applying untyped: 
-                      Name: *?
-                  ...to: 
-                      Variable Expression: _dst: pointer to instance of struct S1 
-              Member Expression, with field: 
-                i: instance of type T (not function type) 
-              from aggregate: 
-                Variable Expression: _src: instance of struct S1 
-
-              Return Statement, returning: Cast of:
-  Variable Expression: _src: instance of struct S1 
-
-to:
-  instance of struct S1 
-with environment:
-  Types:
-  Non-types:
-
-
-
-newExpr is Variable Expression: ?=?: inline static function
-    with parameters
-      _dst: pointer to instance of struct S1 
-      _src: instance of struct S1 
-    returning 
-      instance of struct S1 
-
-
-decl is ?=?: automatically generated inline static function
-  with parameters
     _dst: pointer to instance of struct S2 
     _src: instance of struct S2 
@@ -1499,4 +1455,48 @@
     returning 
       instance of struct S2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S24 
+    _src: instance of struct S24 
+  returning 
+    instance of struct S24 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S24 
+              Member Expression, with field: 
+                i: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S24 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct S24 
+
+to:
+  instance of struct S24 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S24 
+      _src: instance of struct S24 
+    returning 
+      instance of struct S24 
 
 
@@ -1572,22 +1572,4 @@
 Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
     with parameters
-      _dst: pointer to instance of struct S1 
-      _src: instance of struct S1 
-    returning 
-      instance of struct S1 
-
-(types:
-    pointer to function
-        with parameters
-          _dst: pointer to instance of struct S1 
-          _src: instance of struct S1 
-        returning 
-          instance of struct S1 
-
-)
-Environment: 
-
-Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
-    with parameters
       _dst: pointer to instance of struct S2 
       _src: instance of struct S2 
@@ -1602,4 +1584,22 @@
         returning 
           instance of struct S2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S24 
+      _src: instance of struct S24 
+    returning 
+      instance of struct S24 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S24 
+          _src: instance of struct S24 
+        returning 
+          instance of struct S24 
 
 )
@@ -1716,4 +1716,24 @@
         Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
             with parameters
+              _dst: pointer to instance of struct S24 
+              _src: instance of struct S24 
+            returning 
+              instance of struct S24 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S24 
+                  _src: instance of struct S24 
+                returning 
+                  instance of struct S24 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S24 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
               _dst: pointer to instance of struct S2 
               _src: instance of struct S2 
@@ -1732,24 +1752,4 @@
         Environment: 
 formal type is pointer to instance of struct S2 
-actual type is pointer to instance of type T (not function type) 
-working on alternative: 
-        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
-            with parameters
-              _dst: pointer to instance of struct S1 
-              _src: instance of struct S1 
-            returning 
-              instance of struct S1 
-
-(types:
-            pointer to function
-                with parameters
-                  _dst: pointer to instance of struct S1 
-                  _src: instance of struct S1 
-                returning 
-                  instance of struct S1 
-
-)
-        Environment: 
-formal type is pointer to instance of struct S1 
 actual type is pointer to instance of type T (not function type) 
 working on alternative: 
@@ -1929,48 +1929,4 @@
 decl is ?=?: automatically generated inline static function
   with parameters
-    _dst: pointer to instance of struct S1 
-    _src: instance of struct S1 
-  returning 
-    instance of struct S1 
-  with body 
-    CompoundStmt
-              Expression Statement:
-          Applying untyped: 
-              Name: ?=?
-          ...to: 
-              Address of:
-                Member Expression, with field: 
-                  i: instance of type T (not function type) 
-                from aggregate: 
-                  Applying untyped: 
-                      Name: *?
-                  ...to: 
-                      Variable Expression: _dst: pointer to instance of struct S1 
-              Member Expression, with field: 
-                i: instance of type T (not function type) 
-              from aggregate: 
-                Variable Expression: _src: instance of struct S1 
-
-              Return Statement, returning: Cast of:
-  Variable Expression: _src: instance of struct S1 
-
-to:
-  instance of struct S1 
-with environment:
-  Types:
-  Non-types:
-
-
-
-newExpr is Variable Expression: ?=?: inline static function
-    with parameters
-      _dst: pointer to instance of struct S1 
-      _src: instance of struct S1 
-    returning 
-      instance of struct S1 
-
-
-decl is ?=?: automatically generated inline static function
-  with parameters
     _dst: pointer to instance of struct S2 
     _src: instance of struct S2 
@@ -2013,4 +1969,48 @@
     returning 
       instance of struct S2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S24 
+    _src: instance of struct S24 
+  returning 
+    instance of struct S24 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S24 
+              Member Expression, with field: 
+                i: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S24 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct S24 
+
+to:
+  instance of struct S24 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S24 
+      _src: instance of struct S24 
+    returning 
+      instance of struct S24 
 
 
@@ -2146,22 +2146,4 @@
 Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
     with parameters
-      _dst: pointer to instance of struct S1 
-      _src: instance of struct S1 
-    returning 
-      instance of struct S1 
-
-(types:
-    pointer to function
-        with parameters
-          _dst: pointer to instance of struct S1 
-          _src: instance of struct S1 
-        returning 
-          instance of struct S1 
-
-)
-Environment: 
-
-Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
-    with parameters
       _dst: pointer to instance of struct S2 
       _src: instance of struct S2 
@@ -2176,4 +2158,22 @@
         returning 
           instance of struct S2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S24 
+      _src: instance of struct S24 
+    returning 
+      instance of struct S24 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S24 
+          _src: instance of struct S24 
+        returning 
+          instance of struct S24 
 
 )
@@ -2328,4 +2328,24 @@
         Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
             with parameters
+              _dst: pointer to instance of struct S24 
+              _src: instance of struct S24 
+            returning 
+              instance of struct S24 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S24 
+                  _src: instance of struct S24 
+                returning 
+                  instance of struct S24 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S24 
+actual type is pointer to instance of type T (not function type) 
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
               _dst: pointer to instance of struct S2 
               _src: instance of struct S2 
@@ -2344,24 +2364,4 @@
         Environment: 
 formal type is pointer to instance of struct S2 
-actual type is pointer to instance of type T (not function type) 
-working on alternative: 
-        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
-            with parameters
-              _dst: pointer to instance of struct S1 
-              _src: instance of struct S1 
-            returning 
-              instance of struct S1 
-
-(types:
-            pointer to function
-                with parameters
-                  _dst: pointer to instance of struct S1 
-                  _src: instance of struct S1 
-                returning 
-                  instance of struct S1 
-
-)
-        Environment: 
-formal type is pointer to instance of struct S1 
 actual type is pointer to instance of type T (not function type) 
 working on alternative: 
@@ -2519,48 +2519,4 @@
 decl is ?=?: automatically generated inline static function
   with parameters
-    _dst: pointer to instance of struct S1 
-    _src: instance of struct S1 
-  returning 
-    instance of struct S1 
-  with body 
-    CompoundStmt
-              Expression Statement:
-          Applying untyped: 
-              Name: ?=?
-          ...to: 
-              Address of:
-                Member Expression, with field: 
-                  i: instance of type T (not function type) 
-                from aggregate: 
-                  Applying untyped: 
-                      Name: *?
-                  ...to: 
-                      Variable Expression: _dst: pointer to instance of struct S1 
-              Member Expression, with field: 
-                i: instance of type T (not function type) 
-              from aggregate: 
-                Variable Expression: _src: instance of struct S1 
-
-              Return Statement, returning: Cast of:
-  Variable Expression: _src: instance of struct S1 
-
-to:
-  instance of struct S1 
-with environment:
-  Types:
-  Non-types:
-
-
-
-newExpr is Variable Expression: ?=?: inline static function
-    with parameters
-      _dst: pointer to instance of struct S1 
-      _src: instance of struct S1 
-    returning 
-      instance of struct S1 
-
-
-decl is ?=?: automatically generated inline static function
-  with parameters
     _dst: pointer to instance of struct S2 
     _src: instance of struct S2 
@@ -2603,4 +2559,48 @@
     returning 
       instance of struct S2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S24 
+    _src: instance of struct S24 
+  returning 
+    instance of struct S24 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S24 
+              Member Expression, with field: 
+                i: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S24 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct S24 
+
+to:
+  instance of struct S24 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S24 
+      _src: instance of struct S24 
+    returning 
+      instance of struct S24 
 
 
@@ -2736,22 +2736,4 @@
 Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
     with parameters
-      _dst: pointer to instance of struct S1 
-      _src: instance of struct S1 
-    returning 
-      instance of struct S1 
-
-(types:
-    pointer to function
-        with parameters
-          _dst: pointer to instance of struct S1 
-          _src: instance of struct S1 
-        returning 
-          instance of struct S1 
-
-)
-Environment: 
-
-Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
-    with parameters
       _dst: pointer to instance of struct S2 
       _src: instance of struct S2 
@@ -2766,4 +2748,22 @@
         returning 
           instance of struct S2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S24 
+      _src: instance of struct S24 
+    returning 
+      instance of struct S24 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S24 
+          _src: instance of struct S24 
+        returning 
+          instance of struct S24 
 
 )
@@ -2954,4 +2954,27 @@
         Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
             with parameters
+              _dst: pointer to instance of struct S24 
+              _src: instance of struct S24 
+            returning 
+              instance of struct S24 
+
+(types:
+            pointer to function
+                with parameters
+                  _dst: pointer to instance of struct S24 
+                  _src: instance of struct S24 
+                returning 
+                  instance of struct S24 
+
+)
+        Environment: 
+formal type is pointer to instance of struct S24 
+actual type is pointer to pointer to instance of struct node 
+with parameters
+  instance of type T (not function type) 
+
+working on alternative: 
+        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
+            with parameters
               _dst: pointer to instance of struct S2 
               _src: instance of struct S2 
@@ -2970,27 +2993,4 @@
         Environment: 
 formal type is pointer to instance of struct S2 
-actual type is pointer to pointer to instance of struct node 
-with parameters
-  instance of type T (not function type) 
-
-working on alternative: 
-        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
-            with parameters
-              _dst: pointer to instance of struct S1 
-              _src: instance of struct S1 
-            returning 
-              instance of struct S1 
-
-(types:
-            pointer to function
-                with parameters
-                  _dst: pointer to instance of struct S1 
-                  _src: instance of struct S1 
-                returning 
-                  instance of struct S1 
-
-)
-        Environment: 
-formal type is pointer to instance of struct S1 
 actual type is pointer to pointer to instance of struct node 
 with parameters
@@ -3179,48 +3179,4 @@
 decl is ?=?: automatically generated inline static function
   with parameters
-    _dst: pointer to instance of struct S1 
-    _src: instance of struct S1 
-  returning 
-    instance of struct S1 
-  with body 
-    CompoundStmt
-              Expression Statement:
-          Applying untyped: 
-              Name: ?=?
-          ...to: 
-              Address of:
-                Member Expression, with field: 
-                  i: instance of type T (not function type) 
-                from aggregate: 
-                  Applying untyped: 
-                      Name: *?
-                  ...to: 
-                      Variable Expression: _dst: pointer to instance of struct S1 
-              Member Expression, with field: 
-                i: instance of type T (not function type) 
-              from aggregate: 
-                Variable Expression: _src: instance of struct S1 
-
-              Return Statement, returning: Cast of:
-  Variable Expression: _src: instance of struct S1 
-
-to:
-  instance of struct S1 
-with environment:
-  Types:
-  Non-types:
-
-
-
-newExpr is Variable Expression: ?=?: inline static function
-    with parameters
-      _dst: pointer to instance of struct S1 
-      _src: instance of struct S1 
-    returning 
-      instance of struct S1 
-
-
-decl is ?=?: automatically generated inline static function
-  with parameters
     _dst: pointer to instance of struct S2 
     _src: instance of struct S2 
@@ -3263,4 +3219,48 @@
     returning 
       instance of struct S2 
+
+
+decl is ?=?: automatically generated inline static function
+  with parameters
+    _dst: pointer to instance of struct S24 
+    _src: instance of struct S24 
+  returning 
+    instance of struct S24 
+  with body 
+    CompoundStmt
+              Expression Statement:
+          Applying untyped: 
+              Name: ?=?
+          ...to: 
+              Address of:
+                Member Expression, with field: 
+                  i: instance of type T (not function type) 
+                from aggregate: 
+                  Applying untyped: 
+                      Name: *?
+                  ...to: 
+                      Variable Expression: _dst: pointer to instance of struct S24 
+              Member Expression, with field: 
+                i: instance of type T (not function type) 
+              from aggregate: 
+                Variable Expression: _src: instance of struct S24 
+
+              Return Statement, returning: Cast of:
+  Variable Expression: _src: instance of struct S24 
+
+to:
+  instance of struct S24 
+with environment:
+  Types:
+  Non-types:
+
+
+
+newExpr is Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S24 
+      _src: instance of struct S24 
+    returning 
+      instance of struct S24 
 
 
@@ -3441,22 +3441,4 @@
 Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
     with parameters
-      _dst: pointer to instance of struct S1 
-      _src: instance of struct S1 
-    returning 
-      instance of struct S1 
-
-(types:
-    pointer to function
-        with parameters
-          _dst: pointer to instance of struct S1 
-          _src: instance of struct S1 
-        returning 
-          instance of struct S1 
-
-)
-Environment: 
-
-Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
-    with parameters
       _dst: pointer to instance of struct S2 
       _src: instance of struct S2 
@@ -3471,4 +3453,22 @@
         returning 
           instance of struct S2 
+
+)
+Environment: 
+
+Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
+    with parameters
+      _dst: pointer to instance of struct S24 
+      _src: instance of struct S24 
+    returning 
+      instance of struct S24 
+
+(types:
+    pointer to function
+        with parameters
+          _dst: pointer to instance of struct S24 
+          _src: instance of struct S24 
+        returning 
+          instance of struct S24 
 
 )
@@ -3619,9 +3619,9 @@
             Name: *?
         ...to: 
-            Variable Expression: _dst: pointer to instance of struct S1 
+            Variable Expression: _dst: pointer to instance of struct S2 
     Member Expression, with field: 
       i: instance of type T (not function type) 
     from aggregate: 
-      Variable Expression: _src: instance of struct S1 
+      Variable Expression: _src: instance of struct S2 
 
 Error: No reasonable alternatives for expression Applying untyped: 
@@ -3635,9 +3635,9 @@
             Name: *?
         ...to: 
-            Variable Expression: _dst: pointer to instance of struct S2 
+            Variable Expression: _dst: pointer to instance of struct S24 
     Member Expression, with field: 
       i: instance of type T (not function type) 
     from aggregate: 
-      Variable Expression: _src: instance of struct S2 
+      Variable Expression: _src: instance of struct S24 
 
 Error: No reasonable alternatives for expression Applying untyped: 
Index: src/Tests/Expect-r/report
===================================================================
--- src/Tests/Expect-r/report	(revision b1d6dd544a60d22c07bdaaac6bc78180bf2015ad)
+++ src/Tests/Expect-r/report	(revision 68cd1ce1134527e1c664cfdf84df37a7025de8a7)
@@ -16,4 +16,8 @@
 ---Forall.txt---
 ---Function.txt---
+4956c4956
+< cfa-cpp: GenPoly/Box.cc:398: void GenPoly::{anonymous}::Pass1::boxParams(ApplicationExpr*, FunctionType*, std::list<Expression*>::iterator&, const TyVarMap&): Assertion `arg != appExpr->get_args().end()' failed.
+---
+> cfa-cpp: GenPoly/Box.cc:401: void GenPoly::{anonymous}::Pass1::boxParams(ApplicationExpr*, FunctionType*, std::list<Expression*>::iterator&, const TyVarMap&): Assertion `arg != appExpr->get_args().end()' failed.
 ---Functions.txt---
 ---GccExtensions.txt---
