Index: libcfa/src/bits/collection.hfa
===================================================================
--- libcfa/src/bits/collection.hfa	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ libcfa/src/bits/collection.hfa	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -13,5 +13,5 @@
 	// return true iff *this is an element of a collection
 	bool listed( Colable & co ) with( co ) {			// pre: this != 0
-		return next != 0;
+		return next != 0p;
 	}
 
@@ -23,5 +23,16 @@
 		return cp->next;
 	}
+
+	forall( dtype T ) {
+		T *& Next( T * n ) {
+			return (T *)Next( (Colable *)n );
+		}
+
+		bool listed( T * n ) {
+			return Next( (Colable *)n ) != 0p;
+		}
+	} // distribution
 } // distribution
+
 
 struct Collection {
@@ -41,4 +52,5 @@
 		return root == 0p;
 	}
+
 	void * head( Collection & collection ) with( collection ) {
 		return root;
@@ -55,3 +67,9 @@
 		curr = 0p;
 	} // post: elts = null
+
+	forall( dtype T ) {
+		T * Curr( ColIter & ci ) with( ci ) {
+			return (T *)curr;
+		}
+	} // distribution
 } // distribution
Index: libcfa/src/bits/queue.hfa
===================================================================
--- libcfa/src/bits/queue.hfa	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ libcfa/src/bits/queue.hfa	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -14,20 +14,4 @@
 			return (T *)head( (Collection &)q );
 		} // post: empty() & head() == 0 | !empty() & head() in *q
-
-		bool empty( Queue(T) & q ) with( q ) {			// 0 <=> *q contains no elements
-			return empty( (Collection &)q );
-		}
-
-		bool listed( T * n ) {
-			return Next( (Colable *)n ) != 0;
-		}
-
-		T *& Next( T * n ) {
-			return (T *)Next( (Colable *)n );
-		}
-
-		T * Root( Queue(T) & q ) with( q ) {
-			return (T *)root;
-		}
 
 		void ?{}( Queue(T) &, const Queue(T) & ) = void; // no copy
@@ -55,5 +39,5 @@
 #endif // __CFA_DEBUG__
 			if ( last ) {
-				Next( n ) = Root( q );
+				Next( n ) = head( q );
 				q.root = n;
 			} else {
@@ -81,5 +65,5 @@
 			if ( root ) {
 				root = Next( root );
-				if ( Root( q ) == t ) {
+				if ( head( q ) == t ) {
 					root = last = 0p;					// only one element
 				}
@@ -132,5 +116,5 @@
 				root = from.root;
 			} else {									// "to" list not empty
-				Next( last ) = Root( from );
+				Next( last ) = head( from );
 			}
 			last = from.last;
@@ -148,5 +132,5 @@
 			to.last = n;								// end of "to" list
 			from.root = Next( n );						// start of "from" list
-			if ( n == Root( from ) ) {					// last node in list ?
+			if ( n == head( from ) ) {					// last node in list ?
 				from.root = from.last = 0p;				// mark "from" list empty
 			} else {
@@ -164,9 +148,4 @@
 
 	inline {
-		// wrappers to make ColIter have T
-		T * Curr( QueueIter(T) & qi ) with( qi ) {
-			return (T *)curr;
-		}
-
 		void ?{}( QueueIter(T) & qi ) with( qi ) {
 			((ColIter &)qi){};
@@ -187,11 +166,11 @@
 		} // post: curr = {e in q}
 
-		bool ?>>?( QueueIter(T) & qi, T *& tp ) with( qi ) {
+		bool ?>>?( QueueIter(T) & qi, T && tp ) with( qi ) {
 			if ( curr ) {
-				tp = Curr( qi );
+				&tp = Curr( qi );
 				T * n = Next( Curr( qi ) );
 				curr = (n == Curr( qi ) ) ? 0p : n;
-			} else tp = 0p;
-			return tp != 0p;
+			} else &tp = 0p;
+			return &tp != 0p;
 		}
 		// post: elts == null & !operator>>(tp) | elts != null & *tp' in elts & elts' == elts - *tp & operator>>(tp)
Index: libcfa/src/bits/queue_example.cfa
===================================================================
--- libcfa/src/bits/queue_example.cfa	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ libcfa/src/bits/queue_example.cfa	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -17,42 +17,41 @@
 	Queue(Fred) fred;
 	QueueIter(Fred) fredIter = { fred };
-	Fred * f;
-	int i;
+	Fred & f;
 
 	sout | nlOff;										// turn off auto newline
 
 	for ( ; fredIter >> f; ) {							// empty list
-		sout | f->i | ' ';
+		sout | f.i | ' ';
 	}
 	sout | "empty" | nl;
 	
-	for ( i = 0; i < 10; i += 1 ) {
+	for ( i; 10 ) {
 		add( fred, new( 2 * i ) );
 	}
 
-	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f->i | ' ';
+	for ( QueueIter(Fred) iter = { fred }; iter >> f; ) {
+		sout | f.i | ' ';
 	}
 	sout | nl;
 
-	for ( i = 0; i < 9; i += 1 ) {
+	for ( i; 9 ) {
 		delete( drop( fred ) );
 	}
 
 	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f->i | ' ';
+		sout | f.i | ' ';
 	}
 	sout | nl;
 	
-	for ( i = 0; i < 10; i += 1 ) {
+	for ( i; 10 ) {
 		add( fred, new( 2 * i + 1 ) );
 	}
 	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f->i | ' ';
+		sout | f.i | ' ';
 	}
 	sout | nl;
 
 	for ( over( fredIter, fred ); fredIter >> f; ) {
-		delete( f );
+		delete( &f );
 	}
 
@@ -71,39 +70,39 @@
 	Queue(Mary) mary;
 	QueueIter(Mary) maryIter = { mary };
-	Mary * m;
+	Mary & m;
 
 	for ( ; maryIter >> m; ) {							// empty list
-		sout | m->i | m->j | ' ';
+		sout | m.i | m.j | ' ';
 	}
 	sout | "empty" | nl;
 	
-	for ( i = 0; i < 10; i += 1 ) {
+	for ( i; 10 ) {
 		add( mary, new( 2 * i ) );
 	}
 
-	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m->i | m->j | ' ';
+	for ( QueueIter(Mary) iter = { mary }; iter >> m; ) {
+		sout | m.i | m.j | ' ';
 	}
 	sout | nl;
 	
-	for ( i = 0; i < 9; i += 1 ) {
+	for ( i; 9 ) {
 		delete( drop( mary ) );
 	}
 
 	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m->i | m->j | ' ';
+		sout | m.i | m.j | ' ';
 	}
 	sout | nl;
 	
-	for ( i = 0; i < 10; i += 1 ) {
+	for ( i; 10 ) {
 		add( mary, new( 2 * i + 1 ) );
 	}
 	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m->i | m->j | ' ';
+		sout | m.i | m.j | ' ';
 	}
 	sout | nl;
 
 	for ( over( maryIter, mary ); maryIter >> m; ) {
-		delete( m );
+		delete( &m );
 	}
 }
Index: libcfa/src/bits/sequence.hfa
===================================================================
--- libcfa/src/bits/sequence.hfa	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ libcfa/src/bits/sequence.hfa	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -10,5 +10,5 @@
 inline {
 	void ?{}( Seqable & sq ) with( sq ) {
-		((Colable & ) sq){};
+		((Colable &) sq){};
 		back = 0p;
 	} // post: ! listed()
@@ -34,22 +34,6 @@
 		} // post: empty() & head() == 0 | !empty() & head() in *s
 
-		bool empty( Sequence(T) & s ) with( s ) {		// 0 <=> *s contains no elements
-			return empty( (Collection &)s );
-		}
-
-		bool listed( T * n ) {
-			return Next( (Colable *)n ) != 0;
-		}
-
-		T *& Next( T * n ) {
-			return (T *)Next( (Colable *)n );
-		}
-
 		T *& Back( T * n ) {
 			return (T *)Back( (Seqable *)n );
-		}
-
-		T * Root( Sequence(T) & s ) with( s ) {
-			return (T *)root;
 		}
 
@@ -62,6 +46,6 @@
 
 		// Return a pointer to the last sequence element, without removing it.	
-		T * tail( Sequence(T) & s ) with( s ) {
-			return root ? (T *)Back( Root( s ) ) : 0p;	// needs cast?
+		T & tail( Sequence(T) & s ) with( s ) {
+			return root ? (T &)Back( head( s ) ) : *0p;	// needs cast?
 		}	// post: empty() & tail() == 0 | !empty() & tail() in *s
 
@@ -71,5 +55,5 @@
 			if ( ! listed( n ) ) abort( "(Sequence &)%p.succ( %p ) : Node is not on a list.", &s, n );
 #endif // __CFA_DEBUG__
-			return Next( n ) == Root( s ) ? 0p : Next( n );
+			return Next( n ) == head( s ) ? 0p : Next( n );
 		}	// post: n == tail() & succ(n) == 0 | n != tail() & *succ(n) in *s
 
@@ -79,36 +63,36 @@
 			if ( ! listed( n ) ) abort( "(Sequence &)%p.pred( %p ) : Node is not on a list.", &s, n );
 #endif // __CFA_DEBUG__
-			return n == Root( s ) ? 0p : Back( n );
+			return n == head( s ) ? 0p : Back( n );
 		}	// post: n == head() & head(n) == 0 | n != head() & *pred(n) in *s
 
 
 		// Insert *n into the sequence before *bef, or at the end if bef == 0.
-		void insertBef( Sequence(T) & s, T * n, T * bef ) with( s ) { // pre: !n->listed() & *bef in *s
-#ifdef __CFA_DEBUG__
-			if ( listed( n ) ) abort( "(Sequence &)%p.insertBef( %p, %p ) : Node is already on another list.", &s, n, bef );
-#endif // __CFA_DEBUG__
-			if ( bef == Root( s ) ) {					// must change root
+		void insertBef( Sequence(T) & s, T & n, T & bef ) with( s ) { // pre: !n->listed() & *bef in *s
+#ifdef __CFA_DEBUG__
+			if ( listed( &n ) ) abort( "(Sequence &)%p.insertBef( %p, %p ) : Node is already on another list.", &s, n, &bef );
+#endif // __CFA_DEBUG__
+			if ( &bef == head( s ) ) {					// must change root
 				if ( root ) {
-					Next( n ) = Root( s );
-					Back( n ) = Back( Root( s ) );
+					Next( &n ) = head( s );
+					Back( &n ) = Back( head( s ) );
 					// inserted node must be consistent before it is seen
 					asm( "" : : : "memory" );			// prevent code movement across barrier
-					Back( Root( s ) ) = n;
-					Next( Back( n ) ) = n;
+					Back( head( s ) ) = &n;
+					Next( Back( &n ) ) = &n;
 				} else {
-					Next( n ) = n;
-					Back( n ) = n;
+					Next( &n ) = &n;
+					Back( &n ) = &n;
 				} // if
 				// inserted node must be consistent before it is seen
 				asm( "" : : : "memory" );				// prevent code movement across barrier
-				root = n;
+				root = &n;
 			} else {
-				if ( ! bef ) bef = Root( s );
-				Next( n ) = bef;
-				Back( n ) = Back( bef );
+				if ( ! &bef ) &bef = head( s );
+				Next( &n ) = &bef;
+				Back( &n ) = Back( &bef );
 				// inserted node must be consistent before it is seen
 				asm( "" : : : "memory" );				// prevent code movement across barrier
-				Back( bef ) = n;
-				Next( Back( n ) ) = n;
+				Back( &bef ) = &n;
+				Next( Back( &n ) ) = &n;
 			} // if
 		}	// post: n->listed() & *n in *s & succ(n) == bef
@@ -116,71 +100,71 @@
 
 		// Insert *n into the sequence after *aft, or at the beginning if aft == 0.
-		void insertAft( Sequence(T) & s, T *aft, T *n ) with( s ) {	// pre: !n->listed() & *aft in *s
-#ifdef __CFA_DEBUG__
-			if ( listed( n ) ) abort( "(Sequence &)%p.insertAft( %p, %p ) : Node is already on another list.", &s, aft, n );
-#endif // __CFA_DEBUG__
-			if ( ! aft ) {								// must change root
+		void insertAft( Sequence(T) & s, T & aft, T & n ) with( s ) {	// pre: !n->listed() & *aft in *s
+#ifdef __CFA_DEBUG__
+			if ( listed( &n ) ) abort( "(Sequence &)%p.insertAft( %p, %p ) : Node is already on another list.", &s, &aft, &n );
+#endif // __CFA_DEBUG__
+			if ( ! &aft ) {								// must change root
 				if ( root ) {
-					Next( n ) = Root( s );
-					Back( n ) = Back( Root( s ) );
+					Next( &n ) = head( s );
+					Back( &n ) = Back( head( s ) );
 					// inserted node must be consistent before it is seen
 					asm( "" : : : "memory" );			// prevent code movement across barrier
-					Back( Root( s ) ) = n;
-					Next( Back( n ) ) = n;
+					Back( head( s ) ) = &n;
+					Next( Back( &n ) ) = &n;
 				} else {
-					Next( n ) = n;
-					Back( n ) = n;
+					Next( &n ) = &n;
+					Back( &n ) = &n;
 				} // if
 				asm( "" : : : "memory" );				// prevent code movement across barrier
-				root = n;
+				root = &n;
 			} else {
-				Next( n ) = Next( aft );
-				Back( n ) = aft;
+				Next( &n ) = Next( &aft );
+				Back( &n ) = &aft;
 				// inserted node must be consistent before it is seen
 				asm( "" : : : "memory" );				// prevent code movement across barrier
-				Back( Next( n ) ) = n;
-				Next( aft ) = n;
+				Back( Next( &n ) ) = &n;
+				Next( &aft ) = &n;
 			} // if
 		}	  // post: n->listed() & *n in *s & succ(n) == bef
 		
 		// pre: n->listed() & *n in *s
-		void remove( Sequence(T) & s, T *n ) with( s ) { // O(1)
-#ifdef __CFA_DEBUG__
-			if ( ! listed( n ) ) abort( "(Sequence &)%p.remove( %p ) : Node is not on a list.", &s, n );
-#endif // __CFA_DEBUG__
-			if ( n == Root( s ) ) {
-				if ( Next( Root( s ) ) == Root( s ) ) root = 0p;
-				else root = Next( Root(s ) );
-			} // if
-			Back( Next( n ) ) = Back( n );
-			Next( Back( n ) ) = Next( n );
-			Next( n ) = Back( n ) = 0p;
+		void remove( Sequence(T) & s, T & n ) with( s ) { // O(1)
+#ifdef __CFA_DEBUG__
+			if ( ! listed( &n ) ) abort( "(Sequence &)%p.remove( %p ) : Node is not on a list.", &s, &n );
+#endif // __CFA_DEBUG__
+			if ( &n == head( s ) ) {
+				if ( Next( head( s ) ) == head( s ) ) root = 0p;
+				else root = Next( head(s ) );
+			} // if
+			Back( Next( &n ) ) = Back( &n );
+			Next( Back( &n ) ) = Next( &n );
+			Next( &n ) = Back( &n ) = 0p;
 		}							// post: !n->listed().
 
 		// Add an element to the head of the sequence.
-		void addHead( Sequence(T) & s, T *n ) {			// pre: !n->listed(); post: n->listed() & head() == n
-			insertAft( s, 0, n );
+		void addHead( Sequence(T) & s, T & n ) {		// pre: !n->listed(); post: n->listed() & head() == n
+			insertAft( s, *0p, n );
 		}
 		// Add an element to the tail of the sequence.
-		void addTail( Sequence(T) & s, T *n ) {			// pre: !n->listed(); post: n->listed() & head() == n
-			insertBef( s, n, 0 );
+		void addTail( Sequence(T) & s, T & n ) {		// pre: !n->listed(); post: n->listed() & head() == n
+			insertBef( s, n, *0p );
 		}
 		// Add an element to the tail of the sequence.
-		void add( Sequence(T) & s, T *n ) {				// pre: !n->listed(); post: n->listed() & head() == n
+		void add( Sequence(T) & s, T & n ) {			// pre: !n->listed(); post: n->listed() & head() == n
 			addTail( s, n );
 		}
 		// Remove and return the head element in the sequence.
-		T * dropHead( Sequence(T) & s ) {
+		T & dropHead( Sequence(T) & s ) {
 			T * n = head( s );
-			return n ? remove( s, n ), n : 0p;
+			return n ? remove( s, *n ), *n : *0p;
 		}
 		// Remove and return the head element in the sequence.
-		T * drop( Sequence(T) & s ) {
+		T & drop( Sequence(T) & s ) {
 			return dropHead( s );
 		}
 		// Remove and return the tail element in the sequence.
-		T * dropTail( Sequence(T) & s ) {
-			T * n = tail( s );
-			return n ? remove( s, n ), n : 0p;
+		T & dropTail( Sequence(T) & s ) {
+			T & n = tail( s );
+			return &n ? remove( s, n ), n : *0p;
 		}
 
@@ -191,10 +175,10 @@
 				root = from.root;
 			} else {									// "to" list not empty
-				T * toEnd = Back( Root( s ) );
-				T * fromEnd = Back( Root( from ) );
+				T * toEnd = Back( head( s ) );
+				T * fromEnd = Back( head( from ) );
 				Back( root ) = fromEnd;
-				Next( fromEnd ) = Root( s );
+				Next( fromEnd ) = head( s );
 				Back( from.root ) = toEnd;
-				Next( toEnd ) = Root( from );
+				Next( toEnd ) = head( from );
 			} // if
 			from.root = 0p;								// mark "from" list empty
@@ -213,8 +197,8 @@
 				from.root = 0p;							// mark "from" list empty
 			} else {
-				Back( Root( from ) ) = Back( Root( to ) ); // fix "from" list
-		 		Next( Back( Root( to ) ) ) = Root( from );
-				Next( n ) = Root( to );					// fix "to" list
-				Back( Root( to ) ) = n;
+				Back( head( from ) ) = Back( head( to ) ); // fix "from" list
+		 		Next( Back( head( to ) ) ) = head( from );
+				Next( n ) = head( to );					// fix "to" list
+				Back( head( to ) ) = n;
 			} // if
 			transfer( s, to );
@@ -231,11 +215,6 @@
 
 	inline {
-		// wrappers to make ColIter have T
-		T * Curr( SeqIter(T) & si ) with( si ) {
-			return (T *)curr;
-		}
-
-		void ?{}( SeqIter(T) & si ) with( si ) {	
-			((ColIter &) si){};
+		void ?{}( SeqIter(T) & si ) with( si ) {
+			((ColIter &)si){};
 			seq = 0p;
 		} // post: elts = null.
@@ -244,4 +223,5 @@
 			((ColIter &) si){};
 			seq = &s;
+			curr = head( s );
 		} // post: elts = null.
 		
@@ -251,11 +231,11 @@
 		} // post: elts = {e in s}.
 
-		bool ?>>?( SeqIter(T) & si, T *& tp ) with( si ) {
+		bool ?>>?( SeqIter(T) & si, T && tp ) with( si ) {
 			if ( curr ) {
-				tp = Curr( si );
-				T *n = succ( *seq, Curr( si ) );
+				&tp = Curr( si );
+				T * n = succ( *seq, Curr( si ) );
 				curr = n == head( *seq ) ? 0p : n;
-			} else tp = 0p;
-			return tp != 0p;
+			} else &tp = 0p;
+			return &tp != 0p;
 		}
 	} // distribution
@@ -269,9 +249,4 @@
 
 	inline {
-		// wrappers to make ColIter have T
-		T * Curr( SeqIterRev(T) & si ) with( si ) {
-			return (T *)curr;
-		}
-
 		void ?{}( SeqIterRev(T) & si ) with( si ) {	
 			((ColIter &) si){};
@@ -282,18 +257,19 @@
 			((ColIter &) si){};
 			seq = &s;
+			curr = &tail( s );
 		} // post: elts = null.
 		
 		void over( SeqIterRev(T) & si, Sequence(T) & s ) with( si ) {
 			seq = &s;
-			curr = tail( s );
+			curr = &tail( s );
 		} // post: elts = {e in s}.
 
-		bool ?>>?( SeqIterRev(T) & si, T *&tp ) with( si ) {
+		bool ?>>?( SeqIterRev(T) & si, T && tp ) with( si ) {
 			if ( curr ) {
-				tp = Curr( si );
-				T *n = pred( *seq, Curr( si ) );
-				curr = n == tail( *seq ) ? 0p : n;
-			} else tp = 0p;
-			return tp != 0p;
+				&tp = Curr( si );
+				T * n = pred( *seq, Curr( si ) );
+				curr = n == &tail( *seq ) ? 0p : n;
+			} else &tp = 0p;
+			return &tp != 0p;
 		}
 	} // distribution
Index: libcfa/src/bits/sequence_example.cfa
===================================================================
--- libcfa/src/bits/sequence_example.cfa	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ libcfa/src/bits/sequence_example.cfa	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -17,50 +17,49 @@
 	Sequence(Fred) fred;
 	SeqIter(Fred) fredIter = { fred };
-	Fred * f;
-	int i;
+	Fred & f;
 
 	sout | nlOff;										// turn off auto newline
 
 	for ( ; fredIter >> f; ) {							// empty list
-		sout | f->i | ' ';
+		sout | f.i | ' ';
 	}
 	sout | "empty" | nl;
 	
-	for ( i = 0; i < 10; i += 1 ) {
-		add( fred, new( 2 * i ) );
+	for ( i; 10 ) {
+		add( fred, *new( 2 * i ) );
+	}
+
+	for ( SeqIter(Fred) iter = { fred }; iter >> f; ) {
+		sout | f.i | ' ';
+	}
+	sout | nl;
+
+	for ( i; 9 ) {
+		delete( &dropHead( fred ) );
 	}
 
 	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f->i | ' ';
+		sout | f.i | ' ';
+	}
+	sout | nl;
+	
+	for ( i; 10 ) {
+		addTail( fred, *new( 2 * i + 1 ) );
+	}
+	for ( over( fredIter, fred ); fredIter >> f; ) {
+		sout | f.i | ' ';
 	}
 	sout | nl;
 
-	for ( i = 0; i < 9; i += 1 ) {
-		delete( dropHead( fred ) );
-	}
-
-	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f->i | ' ';
-	}
-	sout | nl;
-	
-	for ( i = 0; i < 10; i += 1 ) {
-		addTail( fred, new( 2 * i + 1 ) );
+	for ( i; 9 ) {
+		delete( &dropTail( fred ) );
 	}
 	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f->i | ' ';
-	}
-	sout | nl;
-
-	for ( i = 0; i < 9; i += 1 ) {
-		delete( dropTail( fred ) );
-	}
-	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f->i | ' ';
+		sout | f.i | ' ';
 	}
 	sout | nl;
 
 	for ( over( fredIter, fred ); fredIter >> f; ) {
-		delete( f );
+		delete( &f );
 	}
 
@@ -80,43 +79,43 @@
 	Sequence(Mary) baz;
 	SeqIter(Mary) maryIter = { mary };
-	Mary * m;
+	Mary & m;
 
 	for ( ; maryIter >> m; ) {							// empty list
-		sout | m->i | m->j | ' ';
+		sout | m.i | m.j | ' ';
 	}
 	sout | "empty" | nl;
 	
-	for ( i = 0; i < 10; i += 1 ) {
-		add( mary, new( 2 * i ) );
-		add( baz, new( 2 * i ) );
+	for ( i; 10 ) {
+		add( mary, *new( 2 * i ) );
+		add( baz, *new( 2 * i ) );
+	}
+
+	for ( SeqIter(Mary) iter = { mary }; iter >> m; ) {
+		sout | m.i | m.j | ' ';
+	}
+	sout | nl;
+	
+	for ( i; 9 ) {
+		delete( &dropHead( mary ) );
 	}
 
 	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m->i | m->j | ' ';
+		sout | m.i | m.j | ' ';
 	}
 	sout | nl;
 	
-	for ( i = 0; i < 9; i += 1 ) {
-		delete( dropHead( mary ) );
-	}
-
-	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m->i | m->j | ' ';
-	}
-	sout | nl;
-	
-	for ( i = 0; i < 10; i += 1 ) {
-		addTail( mary, new( 2 * i + 1 ) );
+	for ( i; 10 ) {
+		addTail( mary, *new( 2 * i + 1 ) );
 	}
 	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m->i | m->j | ' ';
+		sout | m.i | m.j | ' ';
 	}
 	sout | nl;
 
-	for ( i = 0; i < 9; i += 1 ) {
-		delete( dropTail( mary ) );
+	for ( i; 9 ) {
+		delete( &dropTail( mary ) );
 	}
 	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m->i | m->j | ' ';
+		sout | m.i | m.j | ' ';
 	}
 	sout | nl;
@@ -125,19 +124,19 @@
 
 	for ( over( maryIter, baz ); maryIter >> m; ) {
-		sout | m->i | m->j | ' ';
+		sout | m.i | m.j | ' ';
 	}
 	sout | "empty" | nl;
 
 	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m->i | m->j | ' ';
+		sout | m.i | m.j | ' ';
 	}
 	sout | nl;
 
 	for ( over( maryIter, mary ); maryIter >> m; ) {
-		delete( m );
+		delete( &m );
 	}
 }
 
 // Local Variables: //
-// compile-command: "cfa sequence_example.cc" //
+// compile-command: "cfa sequence_example.cfa" //
 // End: //
Index: libcfa/src/bits/stack.hfa
===================================================================
--- libcfa/src/bits/stack.hfa	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ libcfa/src/bits/stack.hfa	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -14,16 +14,4 @@
 		} // post: empty() & head() == 0 | !empty() & head() in *this
 
-		bool empty( Stack(T) & s ) with( s ) {			// 0 <=> *this contains no elements
-			return empty( (Collection &)s );
-		}
-
-		T *& Next( T * n ) {
-			return (T *)Next( (Colable *)n );
-		}
-
-		T * Root( Stack(T) & s ) with( s ) {
-			return (T *)root;
-		}
-
 		void ?{}( Stack(T) &, const Stack(T) & ) = void; // no copy
 		Stack(T) & ?=?( const Stack(T) & ) = void;		// no assignment
@@ -33,35 +21,35 @@
 		} // post: empty()
 
-		T * top( Stack(T) & s ) with( s ) {
-			return head( s );
+		T & top( Stack(T) & s ) with( s ) {
+			return *head( s );
 		}
 
-		void addHead( Stack(T) & s, T * n ) with( s ) {
+		void addHead( Stack(T) & s, T & n ) with( s ) {
 #ifdef __CFA_DEBUG__
-			if ( listed( (Colable &)(*n) ) ) abort( "(Stack &)%p.addHead( %p ) : Node is already on another list.", &s, n );
+			if ( listed( (Colable &)(n) ) ) abort( "(Stack &)%p.addHead( %p ) : Node is already on another list.", &s, n );
 #endif // __CFA_DEBUG__
-			Next( n ) = Root( s ) ? Root( s ) : n;
-			root = n;
+			Next( &n ) = head( s ) ? head( s ) : &n;
+			root = &n;
 		}
 
-		void add( Stack(T) & s, T * n ) with( s ) {
+		void add( Stack(T) & s, T & n ) with( s ) {
 			addHead( s, n );
 		}
 
-		void push( Stack(T) & s, T * n ) with( s ) {
+		void push( Stack(T) & s, T & n ) with( s ) {
 			addHead( s, n );
 		}
 
-		T * drop( Stack(T) & s ) with( s ) {
-			T * t = head( s );
+		T & drop( Stack(T) & s ) with( s ) {
+			T & t = *head( s );
 			if ( root ) {
 				root = ( T *)Next(root);
-				if ( Root( s ) == t ) root = 0p;		// only one element ?
-				Next( t ) = 0p;
+				if ( head( s ) == &t ) root = 0p;		// only one element ?
+				Next( &t ) = 0p;
 			} // if
 			return t;
 		}
 
-		T * pop( Stack(T) & s ) with( s ) {
+		T & pop( Stack(T) & s ) with( s ) {
 			return drop( s );
 		}
@@ -76,9 +64,4 @@
 
 	inline {
-		// wrappers to make ColIter have T
-		T * Curr( StackIter(T) & si ) with( si ) {
-			return (T *)curr;
-		}
-
 		void ?{}( StackIter(T) & si ) with( si ) {
 			((ColIter &)si){};
@@ -90,6 +73,6 @@
 		} // post: curr = {e in s}
 
-		void ?{}( StackIter(T) & si, T * start ) with( si ) {
-			curr = start;
+		void ?{}( StackIter(T) & si, T & start ) with( si ) {
+			curr = &start;
 		} // post: curr = {e in s}
 
@@ -99,11 +82,11 @@
 		} // post: curr = {e in s}
 
-		bool ?>>?( StackIter(T) & si, T *& tp ) with( si ) {
+		bool ?>>?( StackIter(T) & si, T && tp ) with( si ) {
 			if ( curr ) {
-				tp = Curr( si );
+				&tp = Curr( si );
 				T * n = Next( Curr( si ) );
-				curr = (n == Curr( si ) ) ? 0p : n;
-			} else tp = 0p;
-			return tp != 0p;
+				curr = n == Curr( si ) ? 0p : n;
+			} else &tp = 0p;
+			return &tp != 0p;
 		}
 	} // distribution
Index: libcfa/src/bits/stack_example.cfa
===================================================================
--- libcfa/src/bits/stack_example.cfa	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ libcfa/src/bits/stack_example.cfa	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -17,42 +17,41 @@
 	Stack(Fred) fred;
 	StackIter(Fred) fredIter = { fred };
-	Fred * f;
-	int i;
+	Fred & f;
 
 	sout | nlOff;										// turn off auto newline
 
 	for ( ; fredIter >> f; ) {							// empty list
-		sout | f->i | ' ';
+		sout | f.i | ' ';
 	}
 	sout | "empty" | nl;
 	
-	for ( i = 0; i < 10; i += 1 ) {
-		push( fred, new( 2 * i ) );
+	for ( i; 10 ) {
+		push( fred, *new( 2 * i ) );
+	}
+
+	for ( StackIter(Fred) iter = { fred }; iter >> f; ) {
+		sout | f.i | ' ';
+	}
+	sout | nl;
+	
+	for ( i; 9 ) {
+		delete( &pop( fred ) );
 	}
 
 	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f->i | ' ';
+		sout | f.i | ' ';
 	}
 	sout | nl;
 	
-	for ( i = 0; i < 9; i += 1 ) {
-		delete( pop( fred ) );
-	}
-
-	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f->i | ' ';
-	}
-	sout | nl;
-	
-	for ( i = 0; i < 10; i += 1 ) {
-		push( fred, new( 2 * i + 1 ) );
+	for ( i; 10 ) {
+		push( fred, *new( 2 * i + 1 ) );
 	}
 	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f->i | ' ';
+		sout | f.i | ' ';
 	}
 	sout | nl;
 
 	for ( over( fredIter, fred ); fredIter >> f; ) {
-		delete( f );
+		delete( &f );
 	}
 
@@ -71,39 +70,39 @@
 	Stack(Mary) mary;
 	StackIter(Mary) maryIter = { mary };
-	Mary * m;
+	Mary & m;
 
 	for ( ; maryIter >> m; ) {							// empty list
-		sout | m->i | m->j | ' ';
+		sout | m.i | m.j | ' ';
 	}
 	sout | "empty" | nl;
 	
-	for ( i = 0; i < 10; i += 1 ) {
-		push( mary, new( 2 * i ) );
+	for ( i; 10 ) {
+		push( mary, *new( 2 * i ) );
+	}
+
+	for ( StackIter(Mary) iter = { mary }; iter >> m; ) {
+		sout | m.i | m.j | ' ';
+	}
+	sout | nl;
+	
+	for ( i; 9 ) {
+		delete( &pop( mary ) );
 	}
 
 	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m->i | m->j | ' ';
+		sout | m.i | m.j | ' ';
 	}
 	sout | nl;
 	
-	for ( i = 0; i < 9; i += 1 ) {
-		delete( pop( mary ) );
-	}
-
-	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m->i | m->j | ' ';
-	}
-	sout | nl;
-	
-	for ( i = 0; i < 10; i += 1 ) {
-		push( mary, new( 2 * i + 1 ) );
+	for ( i; 10 ) {
+		push( mary, *new( 2 * i + 1 ) );
 	}
 	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m->i | m->j | ' ';
+		sout | m.i | m.j | ' ';
 	}
 	sout | nl;
 
 	for ( over( maryIter, mary ); maryIter >> m; ) {
-		delete( m );
+		delete( &m );
 	}
 }
Index: src/AST/Print.cpp
===================================================================
--- src/AST/Print.cpp	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ src/AST/Print.cpp	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -205,5 +205,8 @@
 
 	void preprint( const ast::NamedTypeDecl * node ) {
-		if ( ! node->name.empty() ) os << node->name << ": ";
+		if ( ! node->name.empty() ) {
+			if( deterministic_output && isUnboundType(node->name) ) os << "[unbound]:";
+			else os << node->name << ": ";
+		}
 
 		if ( ! short_mode && node->linkage != Linkage::Cforall ) {
@@ -240,11 +243,9 @@
 
 		if ( node->result ) {
-			if (!deterministic_output) {
-				os << endl << indent << "... with resolved type:" << endl;
-				++indent;
-				os << indent;
-				node->result->accept( *this );
-				--indent;
-			}
+			os << endl << indent << "... with resolved type:" << endl;
+			++indent;
+			os << indent;
+			node->result->accept( *this );
+			--indent;
 		}
 
@@ -1382,5 +1383,6 @@
 	virtual const ast::Type * visit( const ast::TypeInstType * node ) override final {
 		preprint( node );
-		os << "instance of type " << node->name
+		const auto & _name = deterministic_output && isUnboundType(node) ? "[unbound]" : node->name;
+		os << "instance of type " << _name
 		   << " (" << (node->kind == ast::TypeDecl::Ftype ? "" : "not ") << "function type)";
 		print( node->params );
Index: src/AST/Type.cpp
===================================================================
--- src/AST/Type.cpp	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ src/AST/Type.cpp	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -133,5 +133,5 @@
 
 BaseInstType::BaseInstType( const BaseInstType & o )
-: ParameterizedType( o.qualifiers, copy( o.attributes ) ), params(), name( o.name ), 
+: ParameterizedType( o.qualifiers, copy( o.attributes ) ), params(), name( o.name ),
   hoistType( o.hoistType ) {
 	Pass< ForallSubstitutor > sub;
@@ -222,7 +222,16 @@
 		// TODO: once TypeInstType representation is updated, it should properly check
 		// if the context id is filled. this is a temporary hack for now
-		if (std::count(typeInst->name.begin(), typeInst->name.end(), '_') >= 3) {
-			return true;
-		}
+		return isUnboundType(typeInst->name);
+	}
+	return false;
+}
+
+bool isUnboundType(const std::string & tname) {
+	// xxx - look for a type name produced by renameTyVars.
+
+	// TODO: once TypeInstType representation is updated, it should properly check
+	// if the context id is filled. this is a temporary hack for now
+	if (std::count(tname.begin(), tname.end(), '_') >= 3) {
+		return true;
 	}
 	return false;
Index: src/AST/Type.hpp
===================================================================
--- src/AST/Type.hpp	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ src/AST/Type.hpp	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -536,4 +536,5 @@
 
 bool isUnboundType(const Type * type);
+bool isUnboundType(const std::string & tname);
 
 }
Index: src/AST/TypeEnvironment.cpp
===================================================================
--- src/AST/TypeEnvironment.cpp	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ src/AST/TypeEnvironment.cpp	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -34,4 +34,5 @@
 #include "ResolvExpr/Unify.h"      // for unifyInexact
 #include "Tuples/Tuples.h"         // for isTtype
+#include "CompilationState.h"
 
 using ResolvExpr::WidenMode;
@@ -56,6 +57,12 @@
 
 void print( std::ostream & out, const EqvClass & clz, Indenter indent ) {
-	out << "( ";
-	std::copy( clz.vars.begin(), clz.vars.end(), std::ostream_iterator< std::string >( out, " " ) );
+	out << "(";
+	bool first = true;
+	for(const auto & var : clz.vars) {
+		if(first) first = false;
+		else out << " ";
+		if( deterministic_output && isUnboundType(var) ) out << "[unbound]";
+		else out << var;
+	}
 	out << ")";
 
Index: src/Common/CodeLocation.h
===================================================================
--- src/Common/CodeLocation.h	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ src/Common/CodeLocation.h	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -42,14 +42,25 @@
 	}
 
-	bool followedBy( CodeLocation const & other, int seperation ) {
+	bool startsBefore( CodeLocation const & other ) const {
+		if( filename < other.filename ) return true;
+		if( filename > other.filename ) return false;
+
+		if( first_line < other.first_line ) return true;
+		if( first_line > other.first_line ) return false;
+
+		if( last_line < other.last_line ) return true;
+		return false;
+	}
+
+	bool followedBy( CodeLocation const & other, int seperation ) const {
 		return (first_line + seperation == other.first_line &&
 		        filename == other.filename);
 	}
 
-	bool operator==( CodeLocation const & other ) {
+	bool operator==( CodeLocation const & other ) const {
 		return followedBy( other, 0 );
 	}
 
-	bool operator!=( CodeLocation const & other ) {
+	bool operator!=( CodeLocation const & other ) const {
 		return !(*this == other);
 	}
Index: src/Common/SemanticError.cc
===================================================================
--- src/Common/SemanticError.cc	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ src/Common/SemanticError.cc	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -90,4 +90,12 @@
 void SemanticErrorException::print() {
 	using std::to_string;
+
+	errors.sort([](const error & lhs, const error & rhs) -> bool {
+		if(lhs.location.startsBefore(rhs.location)) return true;
+		if(rhs.location.startsBefore(lhs.location)) return false;
+
+		return lhs.description < rhs.description;
+	});
+
 	for( auto err : errors ) {
 		std::cerr << ErrorHelpers::bold() << err.location << ErrorHelpers::error_str() << ErrorHelpers::reset_font() << err.description << std::endl;
Index: src/ResolvExpr/AlternativeFinder.cc
===================================================================
--- src/ResolvExpr/AlternativeFinder.cc	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ src/ResolvExpr/AlternativeFinder.cc	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -132,4 +132,27 @@
 	void printAlts( const AltList &list, std::ostream &os, unsigned int indentAmt ) {
 		Indenter indent = { indentAmt };
+
+		std::vector<int> idx;
+		idx.reserve(list.size());
+		for(int i = 0; i < list.size(); i++) { idx.push_back(i); }
+
+		std::sort(idx.begin(), idx.end(), [&list](int lhs_idx, int rhs_idx) -> bool {
+			const auto & lhs = list.at(lhs_idx);
+			const auto & rhs = list.at(rhs_idx);
+			if(lhs.expr->location.startsBefore(rhs.expr->location)) return true;
+			if(rhs.expr->location.startsBefore(lhs.expr->location)) return false;
+
+			if(lhs.env.size() < rhs.env.size()) return true;
+			if(lhs.env.size() > rhs.env.size()) return false;
+
+			if(lhs.openVars.size() < rhs.openVars.size()) return true;
+			if(lhs.openVars.size() > rhs.openVars.size()) return false;
+
+			if(lhs.need.size() < rhs.need.size()) return true;
+			if(lhs.need.size() > rhs.need.size()) return false;
+
+			return false;
+		});
+
 		for ( AltList::const_iterator i = list.begin(); i != list.end(); ++i ) {
 			i->print( os, indent );
@@ -1718,5 +1741,5 @@
 					std::cerr << std::endl;
 				)
-				
+
 				if ( thisCost != Cost::infinity ) {
 					// count one safe conversion for each value that is thrown away
Index: src/ResolvExpr/TypeEnvironment.cc
===================================================================
--- src/ResolvExpr/TypeEnvironment.cc	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ src/ResolvExpr/TypeEnvironment.cc	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -107,9 +107,13 @@
 
 	void EqvClass::print( std::ostream &os, Indenter indent ) const {
-		if( !deterministic_output ) {
-			os << "( ";
-			std::copy( vars.begin(), vars.end(), std::ostream_iterator< std::string >( os, " " ) );
-			os << ")";
-		}
+		os << "(";
+		bool first = true;
+		for(const auto & var : vars) {
+			if(first) first = false;
+			else os << " ";
+			if( deterministic_output && isUnboundType(var) ) os << "[unbound]";
+			else os << var;
+		}
+		os << ")";
 		if ( type ) {
 			os << " -> ";
Index: src/ResolvExpr/TypeEnvironment.h
===================================================================
--- src/ResolvExpr/TypeEnvironment.h	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ src/ResolvExpr/TypeEnvironment.h	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -149,4 +149,6 @@
 		iterator end() const { return env.end(); }
 
+		auto size() const { return env.size(); }
+
 	  private:
 		ClassList env;
Index: src/SynTree/Expression.cc
===================================================================
--- src/SynTree/Expression.cc	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ src/SynTree/Expression.cc	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -72,9 +72,7 @@
 
 	if ( result ) {
-		if (!deterministic_output) {
-			os << std::endl << indent << "with resolved type:" << std::endl;
-			os << (indent+1);
-			result->print( os, indent+1 );
-		}
+		os << std::endl << indent << "with resolved type:" << std::endl;
+		os << (indent+1);
+		result->print( os, indent+1 );
 	}
 
Index: src/SynTree/NamedTypeDecl.cc
===================================================================
--- src/SynTree/NamedTypeDecl.cc	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ src/SynTree/NamedTypeDecl.cc	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -22,4 +22,5 @@
 #include "LinkageSpec.h"         // for Spec, Cforall, linkageName
 #include "Type.h"                // for Type, Type::StorageClasses
+#include "CompilationState.h"
 
 NamedTypeDecl::NamedTypeDecl( const std::string &name, Type::StorageClasses scs, Type *base )
@@ -41,5 +42,8 @@
 	using namespace std;
 
-	if ( name != "" ) os << name << ": ";
+	if ( ! name.empty() ) {
+		if( deterministic_output && isUnboundType(name) ) os << "[unbound]:";
+		else os << name << ": ";
+	}
 
 	if ( linkage != LinkageSpec::Cforall ) {
Index: src/SynTree/ReferenceToType.cc
===================================================================
--- src/SynTree/ReferenceToType.cc	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ src/SynTree/ReferenceToType.cc	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -24,4 +24,5 @@
 #include "Type.h"             // for TypeInstType, StructInstType, UnionInstType
 #include "TypeSubstitution.h" // for TypeSubstitution
+#include "CompilationState.h"
 
 class Attribute;
@@ -205,5 +206,9 @@
 
 	Type::print( os, indent );
-	os << "instance of " << typeString() << " " << get_name() << " (" << ( isFtype ? "" : "not" ) << " function type)";
+	os << "instance of " << typeString() << " ";
+	const auto & name_ = get_name();
+	if( deterministic_output && isUnboundType(name) ) os << "[unbound]";
+	else os << name;
+	os << " (" << ( isFtype ? "" : "not" ) << " function type)";
 	if ( ! parameters.empty() ) {
 		os << endl << indent << "... with parameters" << endl;
Index: src/SynTree/Type.cc
===================================================================
--- src/SynTree/Type.cc	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ src/SynTree/Type.cc	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -156,4 +156,26 @@
 const Type::Qualifiers noQualifiers;
 
+bool isUnboundType(const Type * type) {
+	if (auto typeInst = dynamic_cast<const TypeInstType *>(type)) {
+		// xxx - look for a type name produced by renameTyVars.
+
+		// TODO: once TypeInstType representation is updated, it should properly check
+		// if the context id is filled. this is a temporary hack for now
+		return isUnboundType(typeInst->name);
+	}
+	return false;
+}
+
+bool isUnboundType(const std::string & tname) {
+	// xxx - look for a type name produced by renameTyVars.
+
+	// TODO: once TypeInstType representation is updated, it should properly check
+	// if the context id is filled. this is a temporary hack for now
+	if (std::count(tname.begin(), tname.end(), '_') >= 3) {
+		return true;
+	}
+	return false;
+}
+
 // Local Variables: //
 // tab-width: 4 //
Index: src/SynTree/Type.h
===================================================================
--- src/SynTree/Type.h	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ src/SynTree/Type.h	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -733,4 +733,8 @@
 };
 
+
+bool isUnboundType(const Type * type);
+bool isUnboundType(const std::string & tname);
+
 // Local Variables: //
 // tab-width: 4 //
Index: sts/.expect/KRfunctions.arm64.txt
===================================================================
--- tests/.expect/KRfunctions.arm64.txt	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ 	(revision )
@@ -1,116 +1,0 @@
-signed int _X2f0Fi_iPKii__1(signed int _X1ai_1, const signed int *_X1bPKi_1, signed int _X1ci_1){
-    __attribute__ ((unused)) signed int _X10_retval_f0i_1;
-}
-signed int _X2f1Fi_PiiPi__1(signed int *_X1aPi_1, __attribute__ ((unused)) signed int _X1bi_1, signed int *_X1cPi_1){
-    __attribute__ ((unused)) signed int _X10_retval_f1i_1;
-}
-signed int _X2f2Fi_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1){
-    __attribute__ ((unused)) signed int _X10_retval_f2i_1;
-}
-struct S {
-    signed int _X1ii_1;
-};
-static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
-static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
-static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
-static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
-static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ii_1);
-static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
-    {
-        ((void)((*_X4_dstS1S_1)._X1ii_1) /* ?{} */);
-    }
-
-}
-static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
-    {
-        ((void)((*_X4_dstS1S_1)._X1ii_1=_X4_srcS1S_1._X1ii_1) /* ?{} */);
-    }
-
-}
-static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
-    {
-        ((void)((*_X4_dstS1S_1)._X1ii_1) /* ^?{} */);
-    }
-
-}
-static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
-    struct S _X4_retS1S_1;
-    {
-        ((void)((*_X4_dstS1S_1)._X1ii_1=_X4_srcS1S_1._X1ii_1));
-    }
-
-    {
-        ((void)_X12_constructorFv_S1SS1S_autogen___1((&_X4_retS1S_1), (*_X4_dstS1S_1)));
-    }
-
-    return _X4_retS1S_1;
-}
-static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ii_1){
-    {
-        ((void)((*_X4_dstS1S_1)._X1ii_1=_X1ii_1) /* ?{} */);
-    }
-
-}
-signed int _X2f3Fi_S1SS1SPi__1(struct S _X1aS1S_1, struct S _X1bS1S_1, signed int *_X1cPi_1){
-    __attribute__ ((unused)) signed int _X10_retval_f3i_1;
-    struct S _X1sS1S_2;
-}
-signed int _X2f4Fi_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1){
-    __attribute__ ((unused)) signed int _X10_retval_f4i_1;
-}
-signed int _X2f5Fi_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1){
-    __attribute__ ((unused)) signed int _X10_retval_f5i_1;
-}
-signed int (*_X2f6FFi_i__iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))(__attribute__ ((unused)) signed int __anonymous_object0){
-    __attribute__ ((unused)) signed int (*_X10_retval_f6Fi_i__1)(signed int __anonymous_object1);
-}
-signed int (*_X2f7FFi_ii__iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))(signed int _X1ai_1, signed int _X1bi_1){
-    __attribute__ ((unused)) signed int (*_X10_retval_f7Fi_ii__1)(signed int _X1ai_1, signed int _X1bi_1);
-}
-signed int *_X2f8FPi_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1){
-    __attribute__ ((unused)) signed int *_X10_retval_f8Pi_1;
-}
-signed int *const _X2f9FPi_PiiPi__1(signed int *_X1aPi_1, signed int _X1bi_1, signed int *_X1cPi_1){
-    __attribute__ ((unused)) signed int *const _X10_retval_f9KPi_1;
-}
-signed int *(*_X3f10FFPi_ii__iPiPid__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1, double _X1yd_1))(signed int _X1xi_1, signed int _X1yi_1){
-    __attribute__ ((unused)) signed int *(*_X11_retval_f10FPi_ii__1)(signed int _X1xi_1, signed int _X1yi_1);
-    signed int *_X1xFPi_ii__2(signed int __anonymous_object2, signed int __anonymous_object3);
-    {
-        ((void)(_X11_retval_f10FPi_ii__1=_X1xFPi_ii__2) /* ?{} */);
-    }
-
-    return _X11_retval_f10FPi_ii__1;
-}
-signed int (*_X3f11FPA0i_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))[]{
-    __attribute__ ((unused)) signed int (*_X11_retval_f11PA0i_1)[];
-}
-signed int (*_X3f12FPA0A0i_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))[][((unsigned long int )10)]{
-    __attribute__ ((unused)) signed int (*_X11_retval_f12PA0A0i_1)[][((unsigned long int )10)];
-}
-signed int (*_X3f13FPA0A0i_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))[][((unsigned long int )10)]{
-    __attribute__ ((unused)) signed int (*_X11_retval_f13PA0A0i_1)[][((unsigned long int )10)];
-}
-signed int (*_X3f14FPA0A0i_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))[][((unsigned long int )10)]{
-    __attribute__ ((unused)) signed int (*_X11_retval_f14PA0A0i_1)[][((unsigned long int )10)];
-}
-signed int _X3f15Fi_iii__1(signed int _X1ai_1, signed int _X1bi_1, signed int _X1ci_1){
-    __attribute__ ((unused)) signed int _X11_retval_f15i_1;
-}
-const signed int _X4fredFi___1(){
-    __attribute__ ((unused)) const signed int _X12_retval_fredKi_1;
-    signed int *(*_X1xFPi_ii__2)(signed int __anonymous_object4, signed int __anonymous_object5);
-    signed int _X1ai_2;
-    signed int _X1bi_2;
-    {
-        signed int *(*_tmp_cp_ret4)(signed int _X1xi_1, signed int _X1yi_1);
-        ((void)(_X1xFPi_ii__2=(((void)(_tmp_cp_ret4=_X3f10FFPi_ii__iPiPid__1(3, (&_X1ai_2), (&_X1bi_2), 3.5))) , _tmp_cp_ret4)));
-    }
-
-    const signed int _X2f1Fi_iPiPi__2(signed int _X1ai_2, signed int *_X1bPi_2, signed int *_X1cPi_2){
-        __attribute__ ((unused)) const signed int _X10_retval_f1Ki_2;
-    }
-    const signed int _X2f2Fi_iii__2(signed int _X1ai_2, signed int _X1bi_2, signed int _X1ci_2){
-        __attribute__ ((unused)) const signed int _X10_retval_f2Ki_2;
-    }
-}
Index: tests/.expect/KRfunctions.nast.arm64.txt
===================================================================
--- tests/.expect/KRfunctions.nast.arm64.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
+++ tests/.expect/KRfunctions.nast.arm64.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -0,0 +1,116 @@
+signed int _X2f0Fi_iPKii__1(signed int _X1ai_1, const signed int *_X1bPKi_1, signed int _X1ci_1){
+    __attribute__ ((unused)) signed int _X10_retval_f0i_1;
+}
+signed int _X2f1Fi_PiiPi__1(signed int *_X1aPi_1, __attribute__ ((unused)) signed int _X1bi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int _X10_retval_f1i_1;
+}
+signed int _X2f2Fi_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int _X10_retval_f2i_1;
+}
+struct S {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
+static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
+static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
+static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
+static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
+    {
+        ((void)((*_X4_dstS1S_1)._X1ii_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
+    {
+        ((void)((*_X4_dstS1S_1)._X1ii_1=_X4_srcS1S_1._X1ii_1) /* ?{} */);
+    }
+
+}
+static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
+    {
+        ((void)((*_X4_dstS1S_1)._X1ii_1) /* ^?{} */);
+    }
+
+}
+static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
+    struct S _X4_retS1S_1;
+    {
+        ((void)((*_X4_dstS1S_1)._X1ii_1=_X4_srcS1S_1._X1ii_1));
+    }
+
+    {
+        ((void)_X12_constructorFv_S1SS1S_autogen___1((&_X4_retS1S_1), (*_X4_dstS1S_1)));
+    }
+
+    return _X4_retS1S_1;
+}
+static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ii_1){
+    {
+        ((void)((*_X4_dstS1S_1)._X1ii_1=_X1ii_1) /* ?{} */);
+    }
+
+}
+signed int _X2f3Fi_S1SS1SPi__1(struct S _X1aS1S_1, struct S _X1bS1S_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int _X10_retval_f3i_1;
+    struct S _X1sS1S_2;
+}
+signed int _X2f4Fi_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int _X10_retval_f4i_1;
+}
+signed int _X2f5Fi_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int _X10_retval_f5i_1;
+}
+signed int (*_X2f6FFi_i__iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))(signed int __param_0){
+    __attribute__ ((unused)) signed int (*_X10_retval_f6Fi_i__1)(signed int __param_0);
+}
+signed int (*_X2f7FFi_ii__iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))(signed int __param_0, signed int __param_1){
+    __attribute__ ((unused)) signed int (*_X10_retval_f7Fi_ii__1)(signed int __param_0, signed int __param_1);
+}
+signed int *_X2f8FPi_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int *_X10_retval_f8Pi_1;
+}
+signed int *const _X2f9FPi_PiiPi__1(signed int *_X1aPi_1, signed int _X1bi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int *const _X10_retval_f9KPi_1;
+}
+signed int *(*_X3f10FFPi_ii__iPiPid__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1, double _X1yd_1))(signed int __param_0, signed int __param_1){
+    __attribute__ ((unused)) signed int *(*_X11_retval_f10FPi_ii__1)(signed int __param_0, signed int __param_1);
+    signed int *_X1xFPi_ii__2(signed int __anonymous_object0, signed int __anonymous_object1);
+    {
+        ((void)(_X11_retval_f10FPi_ii__1=_X1xFPi_ii__2) /* ?{} */);
+    }
+
+    return _X11_retval_f10FPi_ii__1;
+}
+signed int (*_X3f11FPA0i_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))[]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f11PA0i_1)[];
+}
+signed int (*_X3f12FPA0A0i_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))[][((unsigned long int )10)]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f12PA0A0i_1)[][((unsigned long int )10)];
+}
+signed int (*_X3f13FPA0A0i_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))[][((unsigned long int )10)]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f13PA0A0i_1)[][((unsigned long int )10)];
+}
+signed int (*_X3f14FPA0A0i_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))[][((unsigned long int )10)]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f14PA0A0i_1)[][((unsigned long int )10)];
+}
+signed int _X3f15Fi_iii__1(signed int _X1ai_1, signed int _X1bi_1, signed int _X1ci_1){
+    __attribute__ ((unused)) signed int _X11_retval_f15i_1;
+}
+const signed int _X4fredFi___1(){
+    __attribute__ ((unused)) const signed int _X12_retval_fredKi_1;
+    signed int *(*_X1xFPi_ii__2)(signed int __param_0, signed int __param_1);
+    signed int _X1ai_2;
+    signed int _X1bi_2;
+    {
+        signed int *(*_tmp_cp_ret4)(signed int __param_0, signed int __param_1);
+        ((void)(_X1xFPi_ii__2=(((void)(_tmp_cp_ret4=_X3f10FFPi_ii__iPiPid__1(3, (&_X1ai_2), (&_X1bi_2), 3.5))) , _tmp_cp_ret4)));
+    }
+
+    const signed int _X2f1Fi_iPiPi__2(signed int _X1ai_2, signed int *_X1bPi_2, signed int *_X1cPi_2){
+        __attribute__ ((unused)) const signed int _X10_retval_f1Ki_2;
+    }
+    const signed int _X2f2Fi_iii__2(signed int _X1ai_2, signed int _X1bi_2, signed int _X1ci_2){
+        __attribute__ ((unused)) const signed int _X10_retval_f2Ki_2;
+    }
+}
Index: tests/.expect/KRfunctions.oast.arm64.txt
===================================================================
--- tests/.expect/KRfunctions.oast.arm64.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
+++ tests/.expect/KRfunctions.oast.arm64.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -0,0 +1,116 @@
+signed int _X2f0Fi_iPKii__1(signed int _X1ai_1, const signed int *_X1bPKi_1, signed int _X1ci_1){
+    __attribute__ ((unused)) signed int _X10_retval_f0i_1;
+}
+signed int _X2f1Fi_PiiPi__1(signed int *_X1aPi_1, __attribute__ ((unused)) signed int _X1bi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int _X10_retval_f1i_1;
+}
+signed int _X2f2Fi_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int _X10_retval_f2i_1;
+}
+struct S {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
+static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
+static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
+static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
+static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
+    {
+        ((void)((*_X4_dstS1S_1)._X1ii_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
+    {
+        ((void)((*_X4_dstS1S_1)._X1ii_1=_X4_srcS1S_1._X1ii_1) /* ?{} */);
+    }
+
+}
+static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
+    {
+        ((void)((*_X4_dstS1S_1)._X1ii_1) /* ^?{} */);
+    }
+
+}
+static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
+    struct S _X4_retS1S_1;
+    {
+        ((void)((*_X4_dstS1S_1)._X1ii_1=_X4_srcS1S_1._X1ii_1));
+    }
+
+    {
+        ((void)_X12_constructorFv_S1SS1S_autogen___1((&_X4_retS1S_1), (*_X4_dstS1S_1)));
+    }
+
+    return _X4_retS1S_1;
+}
+static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ii_1){
+    {
+        ((void)((*_X4_dstS1S_1)._X1ii_1=_X1ii_1) /* ?{} */);
+    }
+
+}
+signed int _X2f3Fi_S1SS1SPi__1(struct S _X1aS1S_1, struct S _X1bS1S_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int _X10_retval_f3i_1;
+    struct S _X1sS1S_2;
+}
+signed int _X2f4Fi_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int _X10_retval_f4i_1;
+}
+signed int _X2f5Fi_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int _X10_retval_f5i_1;
+}
+signed int (*_X2f6FFi_i__iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))(__attribute__ ((unused)) signed int __anonymous_object0){
+    __attribute__ ((unused)) signed int (*_X10_retval_f6Fi_i__1)(signed int __anonymous_object1);
+}
+signed int (*_X2f7FFi_ii__iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))(signed int _X1ai_1, signed int _X1bi_1){
+    __attribute__ ((unused)) signed int (*_X10_retval_f7Fi_ii__1)(signed int _X1ai_1, signed int _X1bi_1);
+}
+signed int *_X2f8FPi_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int *_X10_retval_f8Pi_1;
+}
+signed int *const _X2f9FPi_PiiPi__1(signed int *_X1aPi_1, signed int _X1bi_1, signed int *_X1cPi_1){
+    __attribute__ ((unused)) signed int *const _X10_retval_f9KPi_1;
+}
+signed int *(*_X3f10FFPi_ii__iPiPid__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1, double _X1yd_1))(signed int _X1xi_1, signed int _X1yi_1){
+    __attribute__ ((unused)) signed int *(*_X11_retval_f10FPi_ii__1)(signed int _X1xi_1, signed int _X1yi_1);
+    signed int *_X1xFPi_ii__2(signed int __anonymous_object2, signed int __anonymous_object3);
+    {
+        ((void)(_X11_retval_f10FPi_ii__1=_X1xFPi_ii__2) /* ?{} */);
+    }
+
+    return _X11_retval_f10FPi_ii__1;
+}
+signed int (*_X3f11FPA0i_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))[]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f11PA0i_1)[];
+}
+signed int (*_X3f12FPA0A0i_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))[][((unsigned long int )10)]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f12PA0A0i_1)[][((unsigned long int )10)];
+}
+signed int (*_X3f13FPA0A0i_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))[][((unsigned long int )10)]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f13PA0A0i_1)[][((unsigned long int )10)];
+}
+signed int (*_X3f14FPA0A0i_iPiPi__1(signed int _X1ai_1, signed int *_X1bPi_1, signed int *_X1cPi_1))[][((unsigned long int )10)]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f14PA0A0i_1)[][((unsigned long int )10)];
+}
+signed int _X3f15Fi_iii__1(signed int _X1ai_1, signed int _X1bi_1, signed int _X1ci_1){
+    __attribute__ ((unused)) signed int _X11_retval_f15i_1;
+}
+const signed int _X4fredFi___1(){
+    __attribute__ ((unused)) const signed int _X12_retval_fredKi_1;
+    signed int *(*_X1xFPi_ii__2)(signed int __anonymous_object4, signed int __anonymous_object5);
+    signed int _X1ai_2;
+    signed int _X1bi_2;
+    {
+        signed int *(*_tmp_cp_ret4)(signed int _X1xi_1, signed int _X1yi_1);
+        ((void)(_X1xFPi_ii__2=(((void)(_tmp_cp_ret4=_X3f10FFPi_ii__iPiPid__1(3, (&_X1ai_2), (&_X1bi_2), 3.5))) , _tmp_cp_ret4)));
+    }
+
+    const signed int _X2f1Fi_iPiPi__2(signed int _X1ai_2, signed int *_X1bPi_2, signed int *_X1cPi_2){
+        __attribute__ ((unused)) const signed int _X10_retval_f1Ki_2;
+    }
+    const signed int _X2f2Fi_iii__2(signed int _X1ai_2, signed int _X1bi_2, signed int _X1ci_2){
+        __attribute__ ((unused)) const signed int _X10_retval_f2Ki_2;
+    }
+}
Index: tests/.expect/alloc-ERROR.nast.txt
===================================================================
--- tests/.expect/alloc-ERROR.nast.txt	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ tests/.expect/alloc-ERROR.nast.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -16,4 +16,6 @@
           Name: stp
 
+      ... with resolved type:
+        unsigned long int
 
 
@@ -28,4 +30,6 @@
     Name: stp
     Constant Expression (10: signed int)
+    ... with resolved type:
+      signed int
 
 
Index: tests/.expect/alloc-ERROR.oast.txt
===================================================================
--- tests/.expect/alloc-ERROR.oast.txt	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ tests/.expect/alloc-ERROR.oast.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -16,4 +16,6 @@
           Name: stp
 
+      with resolved type:
+        unsigned long int
 
 
@@ -28,4 +30,6 @@
     Name: stp
     constant expression (10 10: signed int)
+    with resolved type:
+      signed int
 
 
Index: sts/.expect/attributes.arm64.txt
===================================================================
--- tests/.expect/attributes.arm64.txt	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ 	(revision )
@@ -1,807 +1,0 @@
-signed int _X2laFi___1(){
-    __attribute__ ((unused)) signed int _X10_retval_lai_1;
-    {
-        L: __attribute__ ((unused)) ((void)1);
-    }
-
-}
-struct __attribute__ ((unused)) __anonymous0 {
-};
-static inline void _X12_constructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1);
-static inline void _X12_constructorFv_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1);
-static inline void _X11_destructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1);
-static inline struct __anonymous0 _X16_operator_assignFS12__anonymous0_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1);
-static inline void _X12_constructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1){
-}
-static inline void _X12_constructorFv_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1){
-}
-static inline void _X11_destructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1){
-}
-static inline struct __anonymous0 _X16_operator_assignFS12__anonymous0_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1){
-    struct __anonymous0 _X4_retS12__anonymous0_1;
-    {
-        ((void)_X12_constructorFv_S12__anonymous0S12__anonymous0_autogen___1((&_X4_retS12__anonymous0_1), (*_X4_dstS12__anonymous0_1)));
-    }
-
-    return _X4_retS12__anonymous0_1;
-}
-struct __attribute__ ((unused)) Agn1;
-struct __attribute__ ((unused)) Agn2 {
-};
-static inline void _X12_constructorFv_S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1);
-static inline void _X12_constructorFv_S4Agn2S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1, struct Agn2 _X4_srcS4Agn2_1);
-static inline void _X11_destructorFv_S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1);
-static inline struct Agn2 _X16_operator_assignFS4Agn2_S4Agn2S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1, struct Agn2 _X4_srcS4Agn2_1);
-static inline void _X12_constructorFv_S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1){
-}
-static inline void _X12_constructorFv_S4Agn2S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1, struct Agn2 _X4_srcS4Agn2_1){
-}
-static inline void _X11_destructorFv_S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1){
-}
-static inline struct Agn2 _X16_operator_assignFS4Agn2_S4Agn2S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1, struct Agn2 _X4_srcS4Agn2_1){
-    struct Agn2 _X4_retS4Agn2_1;
-    {
-        ((void)_X12_constructorFv_S4Agn2S4Agn2_autogen___1((&_X4_retS4Agn2_1), (*_X4_dstS4Agn2_1)));
-    }
-
-    return _X4_retS4Agn2_1;
-}
-enum __attribute__ ((unused)) __anonymous1 {
-    _X2E1KM12__anonymous1_1,
-};
-enum __attribute__ ((unused)) Agn3;
-enum __attribute__ ((packed)) Agn3 {
-    _X2E2KM4Agn3_1,
-};
-struct __attribute__ ((unused)) __anonymous2 {
-};
-static inline void _X12_constructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1);
-static inline void _X12_constructorFv_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1);
-static inline void _X11_destructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1);
-static inline struct __anonymous2 _X16_operator_assignFS12__anonymous2_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1);
-static inline void _X12_constructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1){
-}
-static inline void _X12_constructorFv_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1){
-}
-static inline void _X11_destructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1){
-}
-static inline struct __anonymous2 _X16_operator_assignFS12__anonymous2_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1){
-    struct __anonymous2 _X4_retS12__anonymous2_1;
-    {
-        ((void)_X12_constructorFv_S12__anonymous2S12__anonymous2_autogen___1((&_X4_retS12__anonymous2_1), (*_X4_dstS12__anonymous2_1)));
-    }
-
-    return _X4_retS12__anonymous2_1;
-}
-struct __attribute__ ((unused)) Agn4 {
-};
-static inline void _X12_constructorFv_S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1);
-static inline void _X12_constructorFv_S4Agn4S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1, struct Agn4 _X4_srcS4Agn4_1);
-static inline void _X11_destructorFv_S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1);
-static inline struct Agn4 _X16_operator_assignFS4Agn4_S4Agn4S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1, struct Agn4 _X4_srcS4Agn4_1);
-static inline void _X12_constructorFv_S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1){
-}
-static inline void _X12_constructorFv_S4Agn4S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1, struct Agn4 _X4_srcS4Agn4_1){
-}
-static inline void _X11_destructorFv_S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1){
-}
-static inline struct Agn4 _X16_operator_assignFS4Agn4_S4Agn4S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1, struct Agn4 _X4_srcS4Agn4_1){
-    struct Agn4 _X4_retS4Agn4_1;
-    {
-        ((void)_X12_constructorFv_S4Agn4S4Agn4_autogen___1((&_X4_retS4Agn4_1), (*_X4_dstS4Agn4_1)));
-    }
-
-    return _X4_retS4Agn4_1;
-}
-struct Fdl {
-    __attribute__ ((unused)) signed int _X2f1i_1;
-    __attribute__ ((unused)) signed int _X2f2i_1;
-    __attribute__ ((unused,unused)) signed int _X2f3i_1;
-    __attribute__ ((unused)) signed int _X2f4i_1;
-    __attribute__ ((unused,unused)) signed int _X2f5i_1;
-    __attribute__ ((used,packed)) signed int _X2f6i_1;
-    __attribute__ ((used,unused,unused)) signed int _X2f7i_1;
-    __attribute__ ((used,used,unused)) signed int _X2f8i_1;
-    __attribute__ ((unused,unused)) signed int *_X2f9Pi_1;
-};
-static inline void _X12_constructorFv_S3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1);
-static inline void _X12_constructorFv_S3FdlS3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1, struct Fdl _X4_srcS3Fdl_1);
-static inline void _X11_destructorFv_S3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1);
-static inline struct Fdl _X16_operator_assignFS3Fdl_S3FdlS3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1, struct Fdl _X4_srcS3Fdl_1);
-static inline void _X12_constructorFv_S3Fdli_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1);
-static inline void _X12_constructorFv_S3Fdlii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1);
-static inline void _X12_constructorFv_S3Fdliii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1);
-static inline void _X12_constructorFv_S3Fdliiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1);
-static inline void _X12_constructorFv_S3Fdliiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1);
-static inline void _X12_constructorFv_S3Fdliiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1);
-static inline void _X12_constructorFv_S3Fdliiiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1);
-static inline void _X12_constructorFv_S3Fdliiiiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1);
-static inline void _X12_constructorFv_S3FdliiiiiiiiPi_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1, __attribute__ ((unused,unused)) signed int *_X2f9Pi_1);
-static inline void _X12_constructorFv_S3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1){
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
-    }
-
-}
-static inline void _X12_constructorFv_S3FdlS3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1, struct Fdl _X4_srcS3Fdl_1){
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X4_srcS3Fdl_1._X2f1i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X4_srcS3Fdl_1._X2f2i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X4_srcS3Fdl_1._X2f3i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X4_srcS3Fdl_1._X2f4i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X4_srcS3Fdl_1._X2f5i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X4_srcS3Fdl_1._X2f6i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X4_srcS3Fdl_1._X2f7i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1=_X4_srcS3Fdl_1._X2f8i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1=_X4_srcS3Fdl_1._X2f9Pi_1) /* ?{} */);
-    }
-
-}
-static inline void _X11_destructorFv_S3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1){
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ^?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ^?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ^?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ^?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ^?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ^?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1) /* ^?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1) /* ^?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1) /* ^?{} */);
-    }
-
-}
-static inline struct Fdl _X16_operator_assignFS3Fdl_S3FdlS3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1, struct Fdl _X4_srcS3Fdl_1){
-    struct Fdl _X4_retS3Fdl_1;
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X4_srcS3Fdl_1._X2f1i_1));
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X4_srcS3Fdl_1._X2f2i_1));
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X4_srcS3Fdl_1._X2f3i_1));
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X4_srcS3Fdl_1._X2f4i_1));
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X4_srcS3Fdl_1._X2f5i_1));
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X4_srcS3Fdl_1._X2f6i_1));
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X4_srcS3Fdl_1._X2f7i_1));
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1=_X4_srcS3Fdl_1._X2f8i_1));
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1=_X4_srcS3Fdl_1._X2f9Pi_1));
-    }
-
-    {
-        ((void)_X12_constructorFv_S3FdlS3Fdl_autogen___1((&_X4_retS3Fdl_1), (*_X4_dstS3Fdl_1)));
-    }
-
-    return _X4_retS3Fdl_1;
-}
-static inline void _X12_constructorFv_S3Fdli_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1){
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
-    }
-
-}
-static inline void _X12_constructorFv_S3Fdlii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1){
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
-    }
-
-}
-static inline void _X12_constructorFv_S3Fdliii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1){
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
-    }
-
-}
-static inline void _X12_constructorFv_S3Fdliiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1){
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
-    }
-
-}
-static inline void _X12_constructorFv_S3Fdliiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1){
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
-    }
-
-}
-static inline void _X12_constructorFv_S3Fdliiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1){
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X2f6i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
-    }
-
-}
-static inline void _X12_constructorFv_S3Fdliiiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1){
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X2f6i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X2f7i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
-    }
-
-}
-static inline void _X12_constructorFv_S3Fdliiiiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1){
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X2f6i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X2f7i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1=_X2f8i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
-    }
-
-}
-static inline void _X12_constructorFv_S3FdliiiiiiiiPi_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1, __attribute__ ((unused,unused)) signed int *_X2f9Pi_1){
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X2f6i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X2f7i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1=_X2f8i_1) /* ?{} */);
-    }
-
-    {
-        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1=_X2f9Pi_1) /* ?{} */);
-    }
-
-}
-__attribute__ ((unused)) signed int _X1fFi___1() asm ( "xyz" );
-__attribute__ ((used,used)) const signed int _X3vd1Ki_1;
-__attribute__ ((used,unused)) const signed int _X3vd2Ki_1;
-__attribute__ ((used,used,used,used)) const signed int *_X3vd3PKi_1;
-__attribute__ ((used,used,unused,used,unused)) const signed int *_X3vd4PKi_1;
-__attribute__ ((used,used,used)) const signed int _X3vd5A0Ki_1[((unsigned long int )5)];
-__attribute__ ((used,used,unused,used)) const signed int _X3vd6A0Ki_1[((unsigned long int )5)];
-__attribute__ ((used,used,used,used)) const signed int (*_X3vd7Fi___1)();
-__attribute__ ((used,used,unused,used,used)) const signed int (*_X3vd8Fi___1)();
-__attribute__ ((unused,used)) signed int _X2f1Fi___1();
-__attribute__ ((unused)) signed int _X2f1Fi___1(){
-    __attribute__ ((unused)) signed int _X10_retval_f1i_1;
-}
-__attribute__ ((unused,unused,unused,used)) signed int **const _X2f2FPPi___1();
-__attribute__ ((unused,unused,unused)) signed int **const _X2f2FPPi___1(){
-    __attribute__ ((unused)) signed int **const _X10_retval_f2KPPi_1;
-}
-__attribute__ ((unused,used,unused)) signed int (*_X2f3FPA0i_i__1(signed int __anonymous_object0))[];
-__attribute__ ((unused,unused)) signed int (*_X2f3FPA0i_i__1(signed int _X1pi_1))[]{
-    __attribute__ ((unused)) signed int (*_X10_retval_f3PA0i_1)[];
-}
-__attribute__ ((unused,used,unused)) signed int (*_X2f4FFi_i____1())(signed int __anonymous_object1);
-__attribute__ ((unused,unused)) signed int (*_X2f4FFi_i____1())(__attribute__ ((unused)) signed int __anonymous_object2){
-    __attribute__ ((unused)) signed int (*_X10_retval_f4Fi_i__1)(signed int __anonymous_object3);
-}
-signed int _X3vtrFi___1(){
-    __attribute__ ((unused)) signed int _X11_retval_vtri_1;
-    __attribute__ ((unused,unused,used)) signed int _X2t1i_2;
-    __attribute__ ((unused,unused,unused,unused,unused)) signed int **_X2t2PPi_2;
-    __attribute__ ((unused,unused,unused)) signed int _X2t3A0i_2[((unsigned long int )5)];
-    __attribute__ ((unused,unused,unused,unused,unused)) signed int **_X2t4A0PPi_2[((unsigned long int )5)];
-    __attribute__ ((unused,unused,unused)) signed int _X2t5Fi___2();
-    __attribute__ ((unused,unused,unused,unused)) signed int *_X2t6FPi___2();
-}
-signed int _X4ipd1Fi_ii__1(__attribute__ ((unused,unused,unused)) signed int _X1pi_1, __attribute__ ((unused,unused,unused)) signed int _X1qi_1);
-signed int _X4ipd1Fi_ii__1(__attribute__ ((unused,unused,unused)) signed int _X1pi_1, __attribute__ ((unused,unused,unused)) signed int _X1qi_1){
-    __attribute__ ((unused)) signed int _X12_retval_ipd1i_1;
-}
-signed int _X4ipd2Fi_PiPi__1(__attribute__ ((unused,unused,unused,unused)) signed int *_X1pPi_1, __attribute__ ((unused,unused,unused)) signed int *_X1qPi_1);
-signed int _X4ipd2Fi_PiPi__1(__attribute__ ((unused,unused,unused,unused)) signed int *_X1pPi_1, __attribute__ ((unused,unused,unused)) signed int *_X1qPi_1){
-    __attribute__ ((unused)) signed int _X12_retval_ipd2i_1;
-}
-signed int _X4ipd3Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *_X1pPi_1, __attribute__ ((unused,unused,unused)) signed int *_X1qPi_1);
-signed int _X4ipd3Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *_X1pPi_1, __attribute__ ((unused,unused,unused)) signed int *_X1qPi_1){
-    __attribute__ ((unused)) signed int _X12_retval_ipd3i_1;
-}
-signed int _X4ipd4Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*_X1pFi___1)(), __attribute__ ((unused,unused,unused)) signed int (*_X1qFi___1)());
-signed int _X4ipd4Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*_X1pFi___1)(), __attribute__ ((unused,unused,unused)) signed int (*_X1qFi___1)()){
-    __attribute__ ((unused)) signed int _X12_retval_ipd4i_1;
-}
-signed int _X4tpr1Fi_i__1(__attribute__ ((unused,unused,unused)) signed int _X3Fooi_1);
-signed int _X4tpr2Fi_PPi__1(__attribute__ ((unused,unused,unused,unused,unused,unused)) signed int **_X3FooPPi_1);
-signed int _X4tpr3Fi_Pi__1(__attribute__ ((unused,unused,unused)) signed int *_X3FooPi_1);
-signed int _X4tpr4Fi_Fi_Pi___1(__attribute__ ((unused,unused)) signed int (*__anonymous_object4)(__attribute__ ((unused,unused)) signed int __anonymous_object5[((unsigned long int )5)]));
-signed int _X4tpr5Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*_X3FooFi___1)());
-signed int _X4tpr6Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*_X3FooFi___1)());
-signed int _X4tpr7Fi_Fi_Fi_i____1(__attribute__ ((unused,unused)) signed int (*__anonymous_object6)(__attribute__ ((unused)) signed int (*__anonymous_object7)(__attribute__ ((unused,unused)) signed int __anonymous_object8)));
-signed int _X2adFi___1(){
-    __attribute__ ((unused)) signed int _X10_retval_adi_1;
-    __attribute__ ((used,unused)) signed int _X3ad1i_2;
-    __attribute__ ((unused,unused,unused)) signed int *_X3ad2Pi_2;
-    __attribute__ ((unused,unused,unused)) signed int _X3ad3A0i_2[((unsigned long int )5)];
-    __attribute__ ((unused,unused,unused,unused,unused)) signed int (*_X3ad4PA0i_2)[((unsigned long int )10)];
-    __attribute__ ((unused,unused,unused,unused,used)) signed int _X3ad5i_2;
-    __attribute__ ((unused,unused,unused,unused,unused)) signed int _X3ad6Fi___2();
-    {
-        ((void)sizeof(__attribute__ ((unused,unused)) signed int ));
-    }
-
-    {
-        ((void)sizeof(__attribute__ ((unused,unused,unused,unused)) signed int **));
-    }
-
-    {
-        ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int [((unsigned long int )5)]));
-    }
-
-    {
-        ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int (*)[((unsigned long int )10)]));
-    }
-
-    {
-        ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int ()));
-    }
-
-    struct __attribute__ ((unused)) __anonymous3 {
-        signed int _X1ii_2;
-    };
-    inline void _X12_constructorFv_S12__anonymous3_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2){
-        {
-            ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2) /* ?{} */);
-        }
-
-    }
-    inline void _X12_constructorFv_S12__anonymous3S12__anonymous3_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2, struct __anonymous3 _X4_srcS12__anonymous3_2){
-        {
-            ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2=_X4_srcS12__anonymous3_2._X1ii_2) /* ?{} */);
-        }
-
-    }
-    inline void _X11_destructorFv_S12__anonymous3_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2){
-        {
-            ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2) /* ^?{} */);
-        }
-
-    }
-    inline struct __anonymous3 _X16_operator_assignFS12__anonymous3_S12__anonymous3S12__anonymous3_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2, struct __anonymous3 _X4_srcS12__anonymous3_2){
-        struct __anonymous3 _X4_retS12__anonymous3_2;
-        {
-            ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2=_X4_srcS12__anonymous3_2._X1ii_2));
-        }
-
-        {
-            ((void)_X12_constructorFv_S12__anonymous3S12__anonymous3_autogen___2((&_X4_retS12__anonymous3_2), (*_X4_dstS12__anonymous3_2)));
-        }
-
-        return _X4_retS12__anonymous3_2;
-    }
-    inline void _X12_constructorFv_S12__anonymous3i_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2, signed int _X1ii_2){
-        {
-            ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2=_X1ii_2) /* ?{} */);
-        }
-
-    }
-    {
-        ((void)sizeof(struct __anonymous3 ));
-    }
-
-    enum __attribute__ ((unused)) __anonymous4 {
-        _X1RKM12__anonymous4_2,
-    };
-    inline void _X12_constructorFv_M12__anonymous4_intrinsic___2(__attribute__ ((unused)) enum __anonymous4 *_X4_dstM12__anonymous4_2){
-    }
-    inline void _X12_constructorFv_M12__anonymous4M12__anonymous4_intrinsic___2(enum __anonymous4 *_X4_dstM12__anonymous4_2, enum __anonymous4 _X4_srcM12__anonymous4_2){
-        {
-            ((void)((*_X4_dstM12__anonymous4_2)=_X4_srcM12__anonymous4_2) /* ?{} */);
-        }
-
-    }
-    inline void _X11_destructorFv_M12__anonymous4_intrinsic___2(__attribute__ ((unused)) enum __anonymous4 *_X4_dstM12__anonymous4_2){
-    }
-    inline enum __anonymous4 _X16_operator_assignFM12__anonymous4_M12__anonymous4M12__anonymous4_intrinsic___2(enum __anonymous4 *_X4_dstM12__anonymous4_2, enum __anonymous4 _X4_srcM12__anonymous4_2){
-        enum __anonymous4 _X4_retM12__anonymous4_2;
-        {
-            ((void)((*_X4_dstM12__anonymous4_2)=_X4_srcM12__anonymous4_2));
-        }
-
-        {
-            ((void)(_X4_retM12__anonymous4_2=(*_X4_dstM12__anonymous4_2)) /* ?{} */);
-        }
-
-        return _X4_retM12__anonymous4_2;
-    }
-    {
-        ((void)sizeof(enum __anonymous4 ));
-    }
-
-}
-signed int _X4apd1Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object9, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object10);
-signed int _X4apd2Fi_PPiPPi__1(__attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object11, __attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object12);
-signed int _X4apd3Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object13, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object14);
-signed int _X4apd4Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object15)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object16)());
-signed int _X4apd5Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object17)(__attribute__ ((unused)) signed int __anonymous_object18), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object19)(__attribute__ ((unused)) signed int __anonymous_object20));
-signed int _X4apd6Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object21)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object22)());
-signed int _X4apd7Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object23)(__attribute__ ((unused)) signed int __anonymous_object24), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object25)(__attribute__ ((unused)) signed int __anonymous_object26));
-struct Vad {
-    __attribute__ ((unused)) signed int :4;
-    __attribute__ ((unused)) signed int :4;
-    __attribute__ ((unused,unused)) signed int :6;
-};
-static inline void _X12_constructorFv_S3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1);
-static inline void _X12_constructorFv_S3VadS3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1, struct Vad _X4_srcS3Vad_1);
-static inline void _X11_destructorFv_S3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1);
-static inline struct Vad _X16_operator_assignFS3Vad_S3VadS3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1, struct Vad _X4_srcS3Vad_1);
-static inline void _X12_constructorFv_S3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1){
-}
-static inline void _X12_constructorFv_S3VadS3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1, struct Vad _X4_srcS3Vad_1){
-}
-static inline void _X11_destructorFv_S3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1){
-}
-static inline struct Vad _X16_operator_assignFS3Vad_S3VadS3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1, struct Vad _X4_srcS3Vad_1){
-    struct Vad _X4_retS3Vad_1;
-    {
-        ((void)_X12_constructorFv_S3VadS3Vad_autogen___1((&_X4_retS3Vad_1), (*_X4_dstS3Vad_1)));
-    }
-
-    return _X4_retS3Vad_1;
-}
Index: tests/.expect/attributes.nast.arm64.txt
===================================================================
--- tests/.expect/attributes.nast.arm64.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
+++ tests/.expect/attributes.nast.arm64.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -0,0 +1,807 @@
+signed int _X2laFi___1(){
+    __attribute__ ((unused)) signed int _X10_retval_lai_1;
+    {
+        L: __attribute__ ((unused)) ((void)1);
+    }
+
+}
+struct __attribute__ ((unused)) __anonymous0 {
+};
+static inline void _X12_constructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1);
+static inline void _X12_constructorFv_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1);
+static inline void _X11_destructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1);
+static inline struct __anonymous0 _X16_operator_assignFS12__anonymous0_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1);
+static inline void _X12_constructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1){
+}
+static inline void _X12_constructorFv_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1){
+}
+static inline void _X11_destructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1){
+}
+static inline struct __anonymous0 _X16_operator_assignFS12__anonymous0_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1){
+    struct __anonymous0 _X4_retS12__anonymous0_1;
+    {
+        ((void)_X12_constructorFv_S12__anonymous0S12__anonymous0_autogen___1((&_X4_retS12__anonymous0_1), (*_X4_dstS12__anonymous0_1)));
+    }
+
+    return _X4_retS12__anonymous0_1;
+}
+struct __attribute__ ((unused)) Agn1;
+struct __attribute__ ((unused)) Agn2 {
+};
+static inline void _X12_constructorFv_S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1);
+static inline void _X12_constructorFv_S4Agn2S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1, struct Agn2 _X4_srcS4Agn2_1);
+static inline void _X11_destructorFv_S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1);
+static inline struct Agn2 _X16_operator_assignFS4Agn2_S4Agn2S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1, struct Agn2 _X4_srcS4Agn2_1);
+static inline void _X12_constructorFv_S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1){
+}
+static inline void _X12_constructorFv_S4Agn2S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1, struct Agn2 _X4_srcS4Agn2_1){
+}
+static inline void _X11_destructorFv_S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1){
+}
+static inline struct Agn2 _X16_operator_assignFS4Agn2_S4Agn2S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1, struct Agn2 _X4_srcS4Agn2_1){
+    struct Agn2 _X4_retS4Agn2_1;
+    {
+        ((void)_X12_constructorFv_S4Agn2S4Agn2_autogen___1((&_X4_retS4Agn2_1), (*_X4_dstS4Agn2_1)));
+    }
+
+    return _X4_retS4Agn2_1;
+}
+enum __attribute__ ((unused)) __anonymous1 {
+    _X2E1KM12__anonymous1_1,
+};
+enum __attribute__ ((unused)) Agn3;
+enum __attribute__ ((packed)) Agn3 {
+    _X2E2KM4Agn3_1,
+};
+struct __attribute__ ((unused)) __anonymous2 {
+};
+static inline void _X12_constructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1);
+static inline void _X12_constructorFv_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1);
+static inline void _X11_destructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1);
+static inline struct __anonymous2 _X16_operator_assignFS12__anonymous2_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1);
+static inline void _X12_constructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1){
+}
+static inline void _X12_constructorFv_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1){
+}
+static inline void _X11_destructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1){
+}
+static inline struct __anonymous2 _X16_operator_assignFS12__anonymous2_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1){
+    struct __anonymous2 _X4_retS12__anonymous2_1;
+    {
+        ((void)_X12_constructorFv_S12__anonymous2S12__anonymous2_autogen___1((&_X4_retS12__anonymous2_1), (*_X4_dstS12__anonymous2_1)));
+    }
+
+    return _X4_retS12__anonymous2_1;
+}
+struct __attribute__ ((unused)) Agn4 {
+};
+static inline void _X12_constructorFv_S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1);
+static inline void _X12_constructorFv_S4Agn4S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1, struct Agn4 _X4_srcS4Agn4_1);
+static inline void _X11_destructorFv_S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1);
+static inline struct Agn4 _X16_operator_assignFS4Agn4_S4Agn4S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1, struct Agn4 _X4_srcS4Agn4_1);
+static inline void _X12_constructorFv_S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1){
+}
+static inline void _X12_constructorFv_S4Agn4S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1, struct Agn4 _X4_srcS4Agn4_1){
+}
+static inline void _X11_destructorFv_S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1){
+}
+static inline struct Agn4 _X16_operator_assignFS4Agn4_S4Agn4S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1, struct Agn4 _X4_srcS4Agn4_1){
+    struct Agn4 _X4_retS4Agn4_1;
+    {
+        ((void)_X12_constructorFv_S4Agn4S4Agn4_autogen___1((&_X4_retS4Agn4_1), (*_X4_dstS4Agn4_1)));
+    }
+
+    return _X4_retS4Agn4_1;
+}
+struct Fdl {
+    __attribute__ ((unused)) signed int _X2f1i_1;
+    __attribute__ ((unused)) signed int _X2f2i_1;
+    __attribute__ ((unused,unused)) signed int _X2f3i_1;
+    __attribute__ ((unused)) signed int _X2f4i_1;
+    __attribute__ ((unused,unused)) signed int _X2f5i_1;
+    __attribute__ ((used,packed)) signed int _X2f6i_1;
+    __attribute__ ((used,unused,unused)) signed int _X2f7i_1;
+    __attribute__ ((used,used,unused)) signed int _X2f8i_1;
+    __attribute__ ((unused,unused)) signed int *_X2f9Pi_1;
+};
+static inline void _X12_constructorFv_S3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1);
+static inline void _X12_constructorFv_S3FdlS3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1, struct Fdl _X4_srcS3Fdl_1);
+static inline void _X11_destructorFv_S3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1);
+static inline struct Fdl _X16_operator_assignFS3Fdl_S3FdlS3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1, struct Fdl _X4_srcS3Fdl_1);
+static inline void _X12_constructorFv_S3Fdli_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1);
+static inline void _X12_constructorFv_S3Fdlii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1);
+static inline void _X12_constructorFv_S3Fdliii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1);
+static inline void _X12_constructorFv_S3Fdliiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1);
+static inline void _X12_constructorFv_S3Fdliiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1);
+static inline void _X12_constructorFv_S3Fdliiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1);
+static inline void _X12_constructorFv_S3Fdliiiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1);
+static inline void _X12_constructorFv_S3Fdliiiiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1);
+static inline void _X12_constructorFv_S3FdliiiiiiiiPi_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1, __attribute__ ((unused,unused)) signed int *_X2f9Pi_1);
+static inline void _X12_constructorFv_S3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S3FdlS3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1, struct Fdl _X4_srcS3Fdl_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X4_srcS3Fdl_1._X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X4_srcS3Fdl_1._X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X4_srcS3Fdl_1._X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X4_srcS3Fdl_1._X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X4_srcS3Fdl_1._X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X4_srcS3Fdl_1._X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X4_srcS3Fdl_1._X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1=_X4_srcS3Fdl_1._X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1=_X4_srcS3Fdl_1._X2f9Pi_1) /* ?{} */);
+    }
+
+}
+static inline void _X11_destructorFv_S3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ^?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ^?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ^?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ^?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ^?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ^?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1) /* ^?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1) /* ^?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1) /* ^?{} */);
+    }
+
+}
+static inline struct Fdl _X16_operator_assignFS3Fdl_S3FdlS3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1, struct Fdl _X4_srcS3Fdl_1){
+    struct Fdl _X4_retS3Fdl_1;
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X4_srcS3Fdl_1._X2f1i_1));
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X4_srcS3Fdl_1._X2f2i_1));
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X4_srcS3Fdl_1._X2f3i_1));
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X4_srcS3Fdl_1._X2f4i_1));
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X4_srcS3Fdl_1._X2f5i_1));
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X4_srcS3Fdl_1._X2f6i_1));
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X4_srcS3Fdl_1._X2f7i_1));
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1=_X4_srcS3Fdl_1._X2f8i_1));
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1=_X4_srcS3Fdl_1._X2f9Pi_1));
+    }
+
+    {
+        ((void)_X12_constructorFv_S3FdlS3Fdl_autogen___1((&_X4_retS3Fdl_1), (*_X4_dstS3Fdl_1)));
+    }
+
+    return _X4_retS3Fdl_1;
+}
+static inline void _X12_constructorFv_S3Fdli_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S3Fdlii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S3Fdliii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S3Fdliiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S3Fdliiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S3Fdliiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S3Fdliiiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S3Fdliiiiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1=_X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S3FdliiiiiiiiPi_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1, __attribute__ ((unused,unused)) signed int *_X2f9Pi_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1=_X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1=_X2f9Pi_1) /* ?{} */);
+    }
+
+}
+__attribute__ ((unused)) signed int _X1fFi___1() asm ( "xyz" );
+__attribute__ ((used,used)) const signed int _X3vd1Ki_1;
+__attribute__ ((used,unused)) const signed int _X3vd2Ki_1;
+__attribute__ ((used,used,used,used)) const signed int *_X3vd3PKi_1;
+__attribute__ ((used,used,unused,used,unused)) const signed int *_X3vd4PKi_1;
+__attribute__ ((used,used,used)) const signed int _X3vd5A0Ki_1[((unsigned long int )5)];
+__attribute__ ((used,used,unused,used)) const signed int _X3vd6A0Ki_1[((unsigned long int )5)];
+__attribute__ ((used,used,used,used)) const signed int (*_X3vd7Fi___1)();
+__attribute__ ((used,used,unused,used,used)) const signed int (*_X3vd8Fi___1)();
+__attribute__ ((unused,used)) signed int _X2f1Fi___1();
+__attribute__ ((unused)) signed int _X2f1Fi___1(){
+    __attribute__ ((unused)) signed int _X10_retval_f1i_1;
+}
+__attribute__ ((unused,unused,unused,used)) signed int **const _X2f2FPPi___1();
+__attribute__ ((unused,unused,unused)) signed int **const _X2f2FPPi___1(){
+    __attribute__ ((unused)) signed int **const _X10_retval_f2KPPi_1;
+}
+__attribute__ ((unused,used,unused)) signed int (*_X2f3FPA0i_i__1(signed int __anonymous_object0))[];
+__attribute__ ((unused,unused)) signed int (*_X2f3FPA0i_i__1(signed int _X1pi_1))[]{
+    __attribute__ ((unused)) signed int (*_X10_retval_f3PA0i_1)[];
+}
+__attribute__ ((unused,used,unused)) signed int (*_X2f4FFi_i____1())(signed int __param_0);
+__attribute__ ((unused,unused)) signed int (*_X2f4FFi_i____1())(signed int __param_0){
+    __attribute__ ((unused)) signed int (*_X10_retval_f4Fi_i__1)(signed int __param_0);
+}
+signed int _X3vtrFi___1(){
+    __attribute__ ((unused)) signed int _X11_retval_vtri_1;
+    __attribute__ ((unused,unused,used)) signed int _X2t1i_2;
+    __attribute__ ((unused,unused,unused,unused,unused)) signed int **_X2t2PPi_2;
+    __attribute__ ((unused,unused,unused)) signed int _X2t3A0i_2[((unsigned long int )5)];
+    __attribute__ ((unused,unused,unused,unused,unused)) signed int **_X2t4A0PPi_2[((unsigned long int )5)];
+    __attribute__ ((unused,unused,unused)) signed int _X2t5Fi___2();
+    __attribute__ ((unused,unused,unused,unused)) signed int *_X2t6FPi___2();
+}
+signed int _X4ipd1Fi_ii__1(__attribute__ ((unused,unused,unused)) signed int _X1pi_1, __attribute__ ((unused,unused,unused)) signed int _X1qi_1);
+signed int _X4ipd1Fi_ii__1(__attribute__ ((unused,unused,unused)) signed int _X1pi_1, __attribute__ ((unused,unused,unused)) signed int _X1qi_1){
+    __attribute__ ((unused)) signed int _X12_retval_ipd1i_1;
+}
+signed int _X4ipd2Fi_PiPi__1(__attribute__ ((unused,unused,unused,unused)) signed int *_X1pPi_1, __attribute__ ((unused,unused,unused)) signed int *_X1qPi_1);
+signed int _X4ipd2Fi_PiPi__1(__attribute__ ((unused,unused,unused,unused)) signed int *_X1pPi_1, __attribute__ ((unused,unused,unused)) signed int *_X1qPi_1){
+    __attribute__ ((unused)) signed int _X12_retval_ipd2i_1;
+}
+signed int _X4ipd3Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *_X1pPi_1, __attribute__ ((unused,unused,unused)) signed int *_X1qPi_1);
+signed int _X4ipd3Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *_X1pPi_1, __attribute__ ((unused,unused,unused)) signed int *_X1qPi_1){
+    __attribute__ ((unused)) signed int _X12_retval_ipd3i_1;
+}
+signed int _X4ipd4Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*_X1pFi___1)(), __attribute__ ((unused,unused,unused)) signed int (*_X1qFi___1)());
+signed int _X4ipd4Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*_X1pFi___1)(), __attribute__ ((unused,unused,unused)) signed int (*_X1qFi___1)()){
+    __attribute__ ((unused)) signed int _X12_retval_ipd4i_1;
+}
+signed int _X4tpr1Fi_i__1(__attribute__ ((unused,unused,unused)) signed int _X3Fooi_1);
+signed int _X4tpr2Fi_PPi__1(__attribute__ ((unused,unused,unused,unused,unused,unused)) signed int **_X3FooPPi_1);
+signed int _X4tpr3Fi_Pi__1(__attribute__ ((unused,unused,unused)) signed int *_X3FooPi_1);
+signed int _X4tpr4Fi_Fi_Pi___1(__attribute__ ((unused,unused)) signed int (*__anonymous_object1)(signed int __param_0[((unsigned long int )5)]));
+signed int _X4tpr5Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*_X3FooFi___1)());
+signed int _X4tpr6Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*_X3FooFi___1)());
+signed int _X4tpr7Fi_Fi_Fi_i____1(__attribute__ ((unused,unused)) signed int (*__anonymous_object2)(signed int (*__param_0)(signed int __param_0)));
+signed int _X2adFi___1(){
+    __attribute__ ((unused)) signed int _X10_retval_adi_1;
+    __attribute__ ((used,unused)) signed int _X3ad1i_2;
+    __attribute__ ((unused,unused,unused)) signed int *_X3ad2Pi_2;
+    __attribute__ ((unused,unused,unused)) signed int _X3ad3A0i_2[((unsigned long int )5)];
+    __attribute__ ((unused,unused,unused,unused,unused)) signed int (*_X3ad4PA0i_2)[((unsigned long int )10)];
+    __attribute__ ((unused,unused,unused,unused,used)) signed int _X3ad5i_2;
+    __attribute__ ((unused,unused,unused,unused,unused)) signed int _X3ad6Fi___2();
+    {
+        ((void)sizeof(__attribute__ ((unused,unused)) signed int ));
+    }
+
+    {
+        ((void)sizeof(__attribute__ ((unused,unused,unused,unused)) signed int **));
+    }
+
+    {
+        ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int [5]));
+    }
+
+    {
+        ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int (*)[10]));
+    }
+
+    {
+        ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int ()));
+    }
+
+    struct __attribute__ ((unused)) __anonymous3 {
+        signed int _X1ii_2;
+    };
+    inline void _X12_constructorFv_S12__anonymous3_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2){
+        {
+            ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2) /* ?{} */);
+        }
+
+    }
+    inline void _X12_constructorFv_S12__anonymous3S12__anonymous3_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2, struct __anonymous3 _X4_srcS12__anonymous3_2){
+        {
+            ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2=_X4_srcS12__anonymous3_2._X1ii_2) /* ?{} */);
+        }
+
+    }
+    inline void _X11_destructorFv_S12__anonymous3_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2){
+        {
+            ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2) /* ^?{} */);
+        }
+
+    }
+    inline struct __anonymous3 _X16_operator_assignFS12__anonymous3_S12__anonymous3S12__anonymous3_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2, struct __anonymous3 _X4_srcS12__anonymous3_2){
+        struct __anonymous3 _X4_retS12__anonymous3_2;
+        {
+            ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2=_X4_srcS12__anonymous3_2._X1ii_2));
+        }
+
+        {
+            ((void)_X12_constructorFv_S12__anonymous3S12__anonymous3_autogen___2((&_X4_retS12__anonymous3_2), (*_X4_dstS12__anonymous3_2)));
+        }
+
+        return _X4_retS12__anonymous3_2;
+    }
+    inline void _X12_constructorFv_S12__anonymous3i_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2, signed int _X1ii_2){
+        {
+            ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2=_X1ii_2) /* ?{} */);
+        }
+
+    }
+    {
+        ((void)sizeof(struct __anonymous3 ));
+    }
+
+    enum __attribute__ ((unused)) __anonymous4 {
+        _X1RKM12__anonymous4_2,
+    };
+    inline void _X12_constructorFv_M12__anonymous4_intrinsic___2(__attribute__ ((unused)) enum __anonymous4 *_X4_dstM12__anonymous4_2){
+    }
+    inline void _X12_constructorFv_M12__anonymous4M12__anonymous4_intrinsic___2(enum __anonymous4 *_X4_dstM12__anonymous4_2, enum __anonymous4 _X4_srcM12__anonymous4_2){
+        {
+            ((void)((*_X4_dstM12__anonymous4_2)=_X4_srcM12__anonymous4_2) /* ?{} */);
+        }
+
+    }
+    inline void _X11_destructorFv_M12__anonymous4_intrinsic___2(__attribute__ ((unused)) enum __anonymous4 *_X4_dstM12__anonymous4_2){
+    }
+    inline enum __anonymous4 _X16_operator_assignFM12__anonymous4_M12__anonymous4M12__anonymous4_intrinsic___2(enum __anonymous4 *_X4_dstM12__anonymous4_2, enum __anonymous4 _X4_srcM12__anonymous4_2){
+        enum __anonymous4 _X4_retM12__anonymous4_2;
+        {
+            ((void)((*_X4_dstM12__anonymous4_2)=_X4_srcM12__anonymous4_2));
+        }
+
+        {
+            ((void)(_X4_retM12__anonymous4_2=(*_X4_dstM12__anonymous4_2)) /* ?{} */);
+        }
+
+        return _X4_retM12__anonymous4_2;
+    }
+    {
+        ((void)sizeof(enum __anonymous4 ));
+    }
+
+}
+signed int _X4apd1Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object3, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object4);
+signed int _X4apd2Fi_PPiPPi__1(__attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object5, __attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object6);
+signed int _X4apd3Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object7, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object8);
+signed int _X4apd4Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object9)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object10)());
+signed int _X4apd5Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object11)(signed int __param_0), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object12)(signed int __param_0));
+signed int _X4apd6Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object13)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object14)());
+signed int _X4apd7Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object15)(signed int __param_0), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object16)(signed int __param_0));
+struct Vad {
+    __attribute__ ((unused)) signed int :4;
+    __attribute__ ((unused)) signed int :4;
+    __attribute__ ((unused,unused)) signed int :6;
+};
+static inline void _X12_constructorFv_S3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1);
+static inline void _X12_constructorFv_S3VadS3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1, struct Vad _X4_srcS3Vad_1);
+static inline void _X11_destructorFv_S3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1);
+static inline struct Vad _X16_operator_assignFS3Vad_S3VadS3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1, struct Vad _X4_srcS3Vad_1);
+static inline void _X12_constructorFv_S3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1){
+}
+static inline void _X12_constructorFv_S3VadS3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1, struct Vad _X4_srcS3Vad_1){
+}
+static inline void _X11_destructorFv_S3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1){
+}
+static inline struct Vad _X16_operator_assignFS3Vad_S3VadS3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1, struct Vad _X4_srcS3Vad_1){
+    struct Vad _X4_retS3Vad_1;
+    {
+        ((void)_X12_constructorFv_S3VadS3Vad_autogen___1((&_X4_retS3Vad_1), (*_X4_dstS3Vad_1)));
+    }
+
+    return _X4_retS3Vad_1;
+}
Index: tests/.expect/attributes.oast.arm64.txt
===================================================================
--- tests/.expect/attributes.oast.arm64.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
+++ tests/.expect/attributes.oast.arm64.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -0,0 +1,807 @@
+signed int _X2laFi___1(){
+    __attribute__ ((unused)) signed int _X10_retval_lai_1;
+    {
+        L: __attribute__ ((unused)) ((void)1);
+    }
+
+}
+struct __attribute__ ((unused)) __anonymous0 {
+};
+static inline void _X12_constructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1);
+static inline void _X12_constructorFv_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1);
+static inline void _X11_destructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1);
+static inline struct __anonymous0 _X16_operator_assignFS12__anonymous0_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1);
+static inline void _X12_constructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1){
+}
+static inline void _X12_constructorFv_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1){
+}
+static inline void _X11_destructorFv_S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1){
+}
+static inline struct __anonymous0 _X16_operator_assignFS12__anonymous0_S12__anonymous0S12__anonymous0_autogen___1(struct __anonymous0 *_X4_dstS12__anonymous0_1, struct __anonymous0 _X4_srcS12__anonymous0_1){
+    struct __anonymous0 _X4_retS12__anonymous0_1;
+    {
+        ((void)_X12_constructorFv_S12__anonymous0S12__anonymous0_autogen___1((&_X4_retS12__anonymous0_1), (*_X4_dstS12__anonymous0_1)));
+    }
+
+    return _X4_retS12__anonymous0_1;
+}
+struct __attribute__ ((unused)) Agn1;
+struct __attribute__ ((unused)) Agn2 {
+};
+static inline void _X12_constructorFv_S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1);
+static inline void _X12_constructorFv_S4Agn2S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1, struct Agn2 _X4_srcS4Agn2_1);
+static inline void _X11_destructorFv_S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1);
+static inline struct Agn2 _X16_operator_assignFS4Agn2_S4Agn2S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1, struct Agn2 _X4_srcS4Agn2_1);
+static inline void _X12_constructorFv_S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1){
+}
+static inline void _X12_constructorFv_S4Agn2S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1, struct Agn2 _X4_srcS4Agn2_1){
+}
+static inline void _X11_destructorFv_S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1){
+}
+static inline struct Agn2 _X16_operator_assignFS4Agn2_S4Agn2S4Agn2_autogen___1(struct Agn2 *_X4_dstS4Agn2_1, struct Agn2 _X4_srcS4Agn2_1){
+    struct Agn2 _X4_retS4Agn2_1;
+    {
+        ((void)_X12_constructorFv_S4Agn2S4Agn2_autogen___1((&_X4_retS4Agn2_1), (*_X4_dstS4Agn2_1)));
+    }
+
+    return _X4_retS4Agn2_1;
+}
+enum __attribute__ ((unused)) __anonymous1 {
+    _X2E1KM12__anonymous1_1,
+};
+enum __attribute__ ((unused)) Agn3;
+enum __attribute__ ((packed)) Agn3 {
+    _X2E2KM4Agn3_1,
+};
+struct __attribute__ ((unused)) __anonymous2 {
+};
+static inline void _X12_constructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1);
+static inline void _X12_constructorFv_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1);
+static inline void _X11_destructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1);
+static inline struct __anonymous2 _X16_operator_assignFS12__anonymous2_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1);
+static inline void _X12_constructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1){
+}
+static inline void _X12_constructorFv_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1){
+}
+static inline void _X11_destructorFv_S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1){
+}
+static inline struct __anonymous2 _X16_operator_assignFS12__anonymous2_S12__anonymous2S12__anonymous2_autogen___1(struct __anonymous2 *_X4_dstS12__anonymous2_1, struct __anonymous2 _X4_srcS12__anonymous2_1){
+    struct __anonymous2 _X4_retS12__anonymous2_1;
+    {
+        ((void)_X12_constructorFv_S12__anonymous2S12__anonymous2_autogen___1((&_X4_retS12__anonymous2_1), (*_X4_dstS12__anonymous2_1)));
+    }
+
+    return _X4_retS12__anonymous2_1;
+}
+struct __attribute__ ((unused)) Agn4 {
+};
+static inline void _X12_constructorFv_S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1);
+static inline void _X12_constructorFv_S4Agn4S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1, struct Agn4 _X4_srcS4Agn4_1);
+static inline void _X11_destructorFv_S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1);
+static inline struct Agn4 _X16_operator_assignFS4Agn4_S4Agn4S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1, struct Agn4 _X4_srcS4Agn4_1);
+static inline void _X12_constructorFv_S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1){
+}
+static inline void _X12_constructorFv_S4Agn4S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1, struct Agn4 _X4_srcS4Agn4_1){
+}
+static inline void _X11_destructorFv_S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1){
+}
+static inline struct Agn4 _X16_operator_assignFS4Agn4_S4Agn4S4Agn4_autogen___1(struct Agn4 *_X4_dstS4Agn4_1, struct Agn4 _X4_srcS4Agn4_1){
+    struct Agn4 _X4_retS4Agn4_1;
+    {
+        ((void)_X12_constructorFv_S4Agn4S4Agn4_autogen___1((&_X4_retS4Agn4_1), (*_X4_dstS4Agn4_1)));
+    }
+
+    return _X4_retS4Agn4_1;
+}
+struct Fdl {
+    __attribute__ ((unused)) signed int _X2f1i_1;
+    __attribute__ ((unused)) signed int _X2f2i_1;
+    __attribute__ ((unused,unused)) signed int _X2f3i_1;
+    __attribute__ ((unused)) signed int _X2f4i_1;
+    __attribute__ ((unused,unused)) signed int _X2f5i_1;
+    __attribute__ ((used,packed)) signed int _X2f6i_1;
+    __attribute__ ((used,unused,unused)) signed int _X2f7i_1;
+    __attribute__ ((used,used,unused)) signed int _X2f8i_1;
+    __attribute__ ((unused,unused)) signed int *_X2f9Pi_1;
+};
+static inline void _X12_constructorFv_S3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1);
+static inline void _X12_constructorFv_S3FdlS3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1, struct Fdl _X4_srcS3Fdl_1);
+static inline void _X11_destructorFv_S3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1);
+static inline struct Fdl _X16_operator_assignFS3Fdl_S3FdlS3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1, struct Fdl _X4_srcS3Fdl_1);
+static inline void _X12_constructorFv_S3Fdli_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1);
+static inline void _X12_constructorFv_S3Fdlii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1);
+static inline void _X12_constructorFv_S3Fdliii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1);
+static inline void _X12_constructorFv_S3Fdliiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1);
+static inline void _X12_constructorFv_S3Fdliiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1);
+static inline void _X12_constructorFv_S3Fdliiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1);
+static inline void _X12_constructorFv_S3Fdliiiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1);
+static inline void _X12_constructorFv_S3Fdliiiiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1);
+static inline void _X12_constructorFv_S3FdliiiiiiiiPi_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1, __attribute__ ((unused,unused)) signed int *_X2f9Pi_1);
+static inline void _X12_constructorFv_S3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S3FdlS3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1, struct Fdl _X4_srcS3Fdl_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X4_srcS3Fdl_1._X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X4_srcS3Fdl_1._X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X4_srcS3Fdl_1._X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X4_srcS3Fdl_1._X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X4_srcS3Fdl_1._X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X4_srcS3Fdl_1._X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X4_srcS3Fdl_1._X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1=_X4_srcS3Fdl_1._X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1=_X4_srcS3Fdl_1._X2f9Pi_1) /* ?{} */);
+    }
+
+}
+static inline void _X11_destructorFv_S3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ^?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ^?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ^?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ^?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ^?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ^?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1) /* ^?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1) /* ^?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1) /* ^?{} */);
+    }
+
+}
+static inline struct Fdl _X16_operator_assignFS3Fdl_S3FdlS3Fdl_autogen___1(struct Fdl *_X4_dstS3Fdl_1, struct Fdl _X4_srcS3Fdl_1){
+    struct Fdl _X4_retS3Fdl_1;
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X4_srcS3Fdl_1._X2f1i_1));
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X4_srcS3Fdl_1._X2f2i_1));
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X4_srcS3Fdl_1._X2f3i_1));
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X4_srcS3Fdl_1._X2f4i_1));
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X4_srcS3Fdl_1._X2f5i_1));
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X4_srcS3Fdl_1._X2f6i_1));
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X4_srcS3Fdl_1._X2f7i_1));
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1=_X4_srcS3Fdl_1._X2f8i_1));
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1=_X4_srcS3Fdl_1._X2f9Pi_1));
+    }
+
+    {
+        ((void)_X12_constructorFv_S3FdlS3Fdl_autogen___1((&_X4_retS3Fdl_1), (*_X4_dstS3Fdl_1)));
+    }
+
+    return _X4_retS3Fdl_1;
+}
+static inline void _X12_constructorFv_S3Fdli_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S3Fdlii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S3Fdliii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S3Fdliiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S3Fdliiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S3Fdliiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S3Fdliiiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S3Fdliiiiiiii_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1=_X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S3FdliiiiiiiiPi_autogen___1(struct Fdl *_X4_dstS3Fdl_1, __attribute__ ((unused)) signed int _X2f1i_1, __attribute__ ((unused)) signed int _X2f2i_1, __attribute__ ((unused,unused)) signed int _X2f3i_1, __attribute__ ((unused)) signed int _X2f4i_1, __attribute__ ((unused,unused)) signed int _X2f5i_1, signed int _X2f6i_1, __attribute__ ((unused,unused)) signed int _X2f7i_1, __attribute__ ((unused)) signed int _X2f8i_1, __attribute__ ((unused,unused)) signed int *_X2f9Pi_1){
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f1i_1=_X2f1i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f2i_1=_X2f2i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f3i_1=_X2f3i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f4i_1=_X2f4i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f5i_1=_X2f5i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f6i_1=_X2f6i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f7i_1=_X2f7i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f8i_1=_X2f8i_1) /* ?{} */);
+    }
+
+    {
+        ((void)((*_X4_dstS3Fdl_1)._X2f9Pi_1=_X2f9Pi_1) /* ?{} */);
+    }
+
+}
+__attribute__ ((unused)) signed int _X1fFi___1() asm ( "xyz" );
+__attribute__ ((used,used)) const signed int _X3vd1Ki_1;
+__attribute__ ((used,unused)) const signed int _X3vd2Ki_1;
+__attribute__ ((used,used,used,used)) const signed int *_X3vd3PKi_1;
+__attribute__ ((used,used,unused,used,unused)) const signed int *_X3vd4PKi_1;
+__attribute__ ((used,used,used)) const signed int _X3vd5A0Ki_1[((unsigned long int )5)];
+__attribute__ ((used,used,unused,used)) const signed int _X3vd6A0Ki_1[((unsigned long int )5)];
+__attribute__ ((used,used,used,used)) const signed int (*_X3vd7Fi___1)();
+__attribute__ ((used,used,unused,used,used)) const signed int (*_X3vd8Fi___1)();
+__attribute__ ((unused,used)) signed int _X2f1Fi___1();
+__attribute__ ((unused)) signed int _X2f1Fi___1(){
+    __attribute__ ((unused)) signed int _X10_retval_f1i_1;
+}
+__attribute__ ((unused,unused,unused,used)) signed int **const _X2f2FPPi___1();
+__attribute__ ((unused,unused,unused)) signed int **const _X2f2FPPi___1(){
+    __attribute__ ((unused)) signed int **const _X10_retval_f2KPPi_1;
+}
+__attribute__ ((unused,used,unused)) signed int (*_X2f3FPA0i_i__1(signed int __anonymous_object0))[];
+__attribute__ ((unused,unused)) signed int (*_X2f3FPA0i_i__1(signed int _X1pi_1))[]{
+    __attribute__ ((unused)) signed int (*_X10_retval_f3PA0i_1)[];
+}
+__attribute__ ((unused,used,unused)) signed int (*_X2f4FFi_i____1())(signed int __anonymous_object1);
+__attribute__ ((unused,unused)) signed int (*_X2f4FFi_i____1())(__attribute__ ((unused)) signed int __anonymous_object2){
+    __attribute__ ((unused)) signed int (*_X10_retval_f4Fi_i__1)(signed int __anonymous_object3);
+}
+signed int _X3vtrFi___1(){
+    __attribute__ ((unused)) signed int _X11_retval_vtri_1;
+    __attribute__ ((unused,unused,used)) signed int _X2t1i_2;
+    __attribute__ ((unused,unused,unused,unused,unused)) signed int **_X2t2PPi_2;
+    __attribute__ ((unused,unused,unused)) signed int _X2t3A0i_2[((unsigned long int )5)];
+    __attribute__ ((unused,unused,unused,unused,unused)) signed int **_X2t4A0PPi_2[((unsigned long int )5)];
+    __attribute__ ((unused,unused,unused)) signed int _X2t5Fi___2();
+    __attribute__ ((unused,unused,unused,unused)) signed int *_X2t6FPi___2();
+}
+signed int _X4ipd1Fi_ii__1(__attribute__ ((unused,unused,unused)) signed int _X1pi_1, __attribute__ ((unused,unused,unused)) signed int _X1qi_1);
+signed int _X4ipd1Fi_ii__1(__attribute__ ((unused,unused,unused)) signed int _X1pi_1, __attribute__ ((unused,unused,unused)) signed int _X1qi_1){
+    __attribute__ ((unused)) signed int _X12_retval_ipd1i_1;
+}
+signed int _X4ipd2Fi_PiPi__1(__attribute__ ((unused,unused,unused,unused)) signed int *_X1pPi_1, __attribute__ ((unused,unused,unused)) signed int *_X1qPi_1);
+signed int _X4ipd2Fi_PiPi__1(__attribute__ ((unused,unused,unused,unused)) signed int *_X1pPi_1, __attribute__ ((unused,unused,unused)) signed int *_X1qPi_1){
+    __attribute__ ((unused)) signed int _X12_retval_ipd2i_1;
+}
+signed int _X4ipd3Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *_X1pPi_1, __attribute__ ((unused,unused,unused)) signed int *_X1qPi_1);
+signed int _X4ipd3Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *_X1pPi_1, __attribute__ ((unused,unused,unused)) signed int *_X1qPi_1){
+    __attribute__ ((unused)) signed int _X12_retval_ipd3i_1;
+}
+signed int _X4ipd4Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*_X1pFi___1)(), __attribute__ ((unused,unused,unused)) signed int (*_X1qFi___1)());
+signed int _X4ipd4Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*_X1pFi___1)(), __attribute__ ((unused,unused,unused)) signed int (*_X1qFi___1)()){
+    __attribute__ ((unused)) signed int _X12_retval_ipd4i_1;
+}
+signed int _X4tpr1Fi_i__1(__attribute__ ((unused,unused,unused)) signed int _X3Fooi_1);
+signed int _X4tpr2Fi_PPi__1(__attribute__ ((unused,unused,unused,unused,unused,unused)) signed int **_X3FooPPi_1);
+signed int _X4tpr3Fi_Pi__1(__attribute__ ((unused,unused,unused)) signed int *_X3FooPi_1);
+signed int _X4tpr4Fi_Fi_Pi___1(__attribute__ ((unused,unused)) signed int (*__anonymous_object4)(__attribute__ ((unused,unused)) signed int __anonymous_object5[((unsigned long int )5)]));
+signed int _X4tpr5Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*_X3FooFi___1)());
+signed int _X4tpr6Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*_X3FooFi___1)());
+signed int _X4tpr7Fi_Fi_Fi_i____1(__attribute__ ((unused,unused)) signed int (*__anonymous_object6)(__attribute__ ((unused)) signed int (*__anonymous_object7)(__attribute__ ((unused,unused)) signed int __anonymous_object8)));
+signed int _X2adFi___1(){
+    __attribute__ ((unused)) signed int _X10_retval_adi_1;
+    __attribute__ ((used,unused)) signed int _X3ad1i_2;
+    __attribute__ ((unused,unused,unused)) signed int *_X3ad2Pi_2;
+    __attribute__ ((unused,unused,unused)) signed int _X3ad3A0i_2[((unsigned long int )5)];
+    __attribute__ ((unused,unused,unused,unused,unused)) signed int (*_X3ad4PA0i_2)[((unsigned long int )10)];
+    __attribute__ ((unused,unused,unused,unused,used)) signed int _X3ad5i_2;
+    __attribute__ ((unused,unused,unused,unused,unused)) signed int _X3ad6Fi___2();
+    {
+        ((void)sizeof(__attribute__ ((unused,unused)) signed int ));
+    }
+
+    {
+        ((void)sizeof(__attribute__ ((unused,unused,unused,unused)) signed int **));
+    }
+
+    {
+        ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int [((unsigned long int )5)]));
+    }
+
+    {
+        ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int (*)[((unsigned long int )10)]));
+    }
+
+    {
+        ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int ()));
+    }
+
+    struct __attribute__ ((unused)) __anonymous3 {
+        signed int _X1ii_2;
+    };
+    inline void _X12_constructorFv_S12__anonymous3_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2){
+        {
+            ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2) /* ?{} */);
+        }
+
+    }
+    inline void _X12_constructorFv_S12__anonymous3S12__anonymous3_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2, struct __anonymous3 _X4_srcS12__anonymous3_2){
+        {
+            ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2=_X4_srcS12__anonymous3_2._X1ii_2) /* ?{} */);
+        }
+
+    }
+    inline void _X11_destructorFv_S12__anonymous3_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2){
+        {
+            ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2) /* ^?{} */);
+        }
+
+    }
+    inline struct __anonymous3 _X16_operator_assignFS12__anonymous3_S12__anonymous3S12__anonymous3_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2, struct __anonymous3 _X4_srcS12__anonymous3_2){
+        struct __anonymous3 _X4_retS12__anonymous3_2;
+        {
+            ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2=_X4_srcS12__anonymous3_2._X1ii_2));
+        }
+
+        {
+            ((void)_X12_constructorFv_S12__anonymous3S12__anonymous3_autogen___2((&_X4_retS12__anonymous3_2), (*_X4_dstS12__anonymous3_2)));
+        }
+
+        return _X4_retS12__anonymous3_2;
+    }
+    inline void _X12_constructorFv_S12__anonymous3i_autogen___2(struct __anonymous3 *_X4_dstS12__anonymous3_2, signed int _X1ii_2){
+        {
+            ((void)((*_X4_dstS12__anonymous3_2)._X1ii_2=_X1ii_2) /* ?{} */);
+        }
+
+    }
+    {
+        ((void)sizeof(struct __anonymous3 ));
+    }
+
+    enum __attribute__ ((unused)) __anonymous4 {
+        _X1RKM12__anonymous4_2,
+    };
+    inline void _X12_constructorFv_M12__anonymous4_intrinsic___2(__attribute__ ((unused)) enum __anonymous4 *_X4_dstM12__anonymous4_2){
+    }
+    inline void _X12_constructorFv_M12__anonymous4M12__anonymous4_intrinsic___2(enum __anonymous4 *_X4_dstM12__anonymous4_2, enum __anonymous4 _X4_srcM12__anonymous4_2){
+        {
+            ((void)((*_X4_dstM12__anonymous4_2)=_X4_srcM12__anonymous4_2) /* ?{} */);
+        }
+
+    }
+    inline void _X11_destructorFv_M12__anonymous4_intrinsic___2(__attribute__ ((unused)) enum __anonymous4 *_X4_dstM12__anonymous4_2){
+    }
+    inline enum __anonymous4 _X16_operator_assignFM12__anonymous4_M12__anonymous4M12__anonymous4_intrinsic___2(enum __anonymous4 *_X4_dstM12__anonymous4_2, enum __anonymous4 _X4_srcM12__anonymous4_2){
+        enum __anonymous4 _X4_retM12__anonymous4_2;
+        {
+            ((void)((*_X4_dstM12__anonymous4_2)=_X4_srcM12__anonymous4_2));
+        }
+
+        {
+            ((void)(_X4_retM12__anonymous4_2=(*_X4_dstM12__anonymous4_2)) /* ?{} */);
+        }
+
+        return _X4_retM12__anonymous4_2;
+    }
+    {
+        ((void)sizeof(enum __anonymous4 ));
+    }
+
+}
+signed int _X4apd1Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object9, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object10);
+signed int _X4apd2Fi_PPiPPi__1(__attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object11, __attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object12);
+signed int _X4apd3Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object13, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object14);
+signed int _X4apd4Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object15)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object16)());
+signed int _X4apd5Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object17)(__attribute__ ((unused)) signed int __anonymous_object18), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object19)(__attribute__ ((unused)) signed int __anonymous_object20));
+signed int _X4apd6Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object21)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object22)());
+signed int _X4apd7Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object23)(__attribute__ ((unused)) signed int __anonymous_object24), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object25)(__attribute__ ((unused)) signed int __anonymous_object26));
+struct Vad {
+    __attribute__ ((unused)) signed int :4;
+    __attribute__ ((unused)) signed int :4;
+    __attribute__ ((unused,unused)) signed int :6;
+};
+static inline void _X12_constructorFv_S3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1);
+static inline void _X12_constructorFv_S3VadS3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1, struct Vad _X4_srcS3Vad_1);
+static inline void _X11_destructorFv_S3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1);
+static inline struct Vad _X16_operator_assignFS3Vad_S3VadS3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1, struct Vad _X4_srcS3Vad_1);
+static inline void _X12_constructorFv_S3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1){
+}
+static inline void _X12_constructorFv_S3VadS3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1, struct Vad _X4_srcS3Vad_1){
+}
+static inline void _X11_destructorFv_S3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1){
+}
+static inline struct Vad _X16_operator_assignFS3Vad_S3VadS3Vad_autogen___1(struct Vad *_X4_dstS3Vad_1, struct Vad _X4_srcS3Vad_1){
+    struct Vad _X4_retS3Vad_1;
+    {
+        ((void)_X12_constructorFv_S3VadS3Vad_autogen___1((&_X4_retS3Vad_1), (*_X4_dstS3Vad_1)));
+    }
+
+    return _X4_retS3Vad_1;
+}
Index: tests/.expect/castError.nast.txt
===================================================================
--- tests/.expect/castError.nast.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
+++ tests/.expect/castError.nast.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -0,0 +1,112 @@
+castError.cfa:23:1 error: Cannot choose between 3 alternatives for expression
+Explicit Cast of:
+  Name: f
+... to:
+  char
+... with resolved type:
+  char Alternatives are:
+Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
+      Variable Expression: f: signed int
+      ... with resolved type:
+        signed int
+    ... to:
+      char
+    ... with resolved type:
+      char
+  (types:
+    char
+  )
+  Environment:
+
+Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
+      Variable Expression: f: function
+        accepting unspecified arguments
+      ... returning nothing
+
+      ... with resolved type:
+        pointer to function
+          accepting unspecified arguments
+        ... returning nothing
+
+    ... to:
+      char
+    ... with resolved type:
+      char
+  (types:
+    char
+  )
+  Environment:
+
+Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
+      Variable Expression: f: double
+      ... with resolved type:
+        double
+    ... to:
+      char
+    ... with resolved type:
+      char
+  (types:
+    char
+  )
+  Environment:
+
+
+castError.cfa:28:1 error: Cannot choose between 2 alternatives for expression
+Generated Cast of:
+  Comma Expression:
+    Constant Expression (3: signed int)
+    ... with resolved type:
+      signed int
+    Name: v
+... to: nothing
+... with resolved type:
+  void Alternatives are:
+Cost ( 0, 0, 2, 0, 0, 0, 0 ): Generated Cast of:
+      Comma Expression:
+        Constant Expression (3: signed int)
+        ... with resolved type:
+          signed int
+        Variable Expression: v: signed short int
+        ... with resolved type:
+          signed short int
+      ... with resolved type:
+        signed short int
+    ... to: nothing
+    ... with resolved type:
+      void
+  (types:
+    void
+  )
+  Environment:
+
+Cost ( 0, 0, 2, 0, 0, 0, 0 ): Generated Cast of:
+      Comma Expression:
+        Constant Expression (3: signed int)
+        ... with resolved type:
+          signed int
+        Variable Expression: v: unsigned char
+        ... with resolved type:
+          unsigned char
+      ... with resolved type:
+        unsigned char
+    ... to: nothing
+    ... with resolved type:
+      void
+  (types:
+    void
+  )
+  Environment:
+
+
+castError.cfa:30:1 error: Invalid application of existing declaration(s) in expression Explicit Cast of:
+  Name: sint
+... to:
+  instance of struct S with body
+  ... with parameters
+    char
+
+... with resolved type:
+  instance of struct S with body
+  ... with parameters
+    char
+
Index: tests/.expect/castError.oast.txt
===================================================================
--- tests/.expect/castError.oast.txt	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ tests/.expect/castError.oast.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -3,4 +3,6 @@
   Name: f
 ... to:
+  char
+with resolved type:
   char Alternatives are:
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
@@ -9,5 +11,12 @@
       ... returning nothing
 
+      with resolved type:
+        pointer to function
+          accepting unspecified arguments
+        ... returning nothing
+
     ... to:
+      char
+    with resolved type:
       char
   (types:
@@ -18,5 +27,9 @@
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
       Variable Expression: f: double
+      with resolved type:
+        double
     ... to:
+      char
+    with resolved type:
       char
   (types:
@@ -27,5 +40,9 @@
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
       Variable Expression: f: signed int
+      with resolved type:
+        signed int
     ... to:
+      char
+    with resolved type:
       char
   (types:
@@ -39,11 +56,23 @@
   Comma Expression:
     constant expression (3 3: signed int)
+    with resolved type:
+      signed int
     Name: v
-... to: nothing Alternatives are:
+... to: nothing
+with resolved type:
+  void  Alternatives are:
 Cost ( 0, 0, 2, 0, 0, 0, 0 ): Generated Cast of:
       Comma Expression:
         constant expression (3 3: signed int)
+        with resolved type:
+          signed int
         Variable Expression: v: unsigned char
+        with resolved type:
+          unsigned char
+      with resolved type:
+        unsigned char
     ... to: nothing
+    with resolved type:
+      void 
   (types:
     void 
@@ -54,6 +83,14 @@
       Comma Expression:
         constant expression (3 3: signed int)
+        with resolved type:
+          signed int
         Variable Expression: v: signed short int
+        with resolved type:
+          signed short int
+      with resolved type:
+        signed short int
     ... to: nothing
+    with resolved type:
+      void 
   (types:
     void 
@@ -69,2 +106,7 @@
     char
 
+with resolved type:
+  instance of struct S with body 1
+  ... with parameters
+    char
+
Index: sts/.expect/functions.arm64.txt
===================================================================
--- tests/.expect/functions.arm64.txt	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ 	(revision )
@@ -1,283 +1,0 @@
-void _X1hFv___1(void){
-}
-signed int _X1fFi_Fi__Fi_i_Fi__Fi_i_Fv____1(__attribute__ ((unused)) signed int (*__anonymous_object0)(void), __attribute__ ((unused)) signed int (*__anonymous_object1)(signed int __anonymous_object2), __attribute__ ((unused)) signed int (*__anonymous_object3)(void), __attribute__ ((unused)) signed int (*__anonymous_object4)(signed int __anonymous_object5), void (*_X1gFv___1)(void)){
-    __attribute__ ((unused)) signed int _X9_retval_fi_1;
-    {
-        ((void)(*_X1gFv___1)());
-    }
-
-    {
-        ((void)_X1gFv___1());
-    }
-
-    {
-        ((void)(_X1gFv___1=_X1hFv___1));
-    }
-
-}
-signed int _X2f1Fi___1(){
-    __attribute__ ((unused)) signed int _X10_retval_f1i_1;
-}
-signed int _X2f2Fi___1(){
-    __attribute__ ((unused)) signed int _X10_retval_f2i_1;
-}
-signed int (*_X2f3FFi_____1())(){
-    __attribute__ ((unused)) signed int (*_X10_retval_f3Fi___1)();
-}
-signed int *_X2f4FPi___1(){
-    __attribute__ ((unused)) signed int *_X10_retval_f4Pi_1;
-}
-signed int (*_X2f5FFi_____1())(){
-    __attribute__ ((unused)) signed int (*_X10_retval_f5Fi___1)();
-}
-signed int *_X2f6FPi___1(){
-    __attribute__ ((unused)) signed int *_X10_retval_f6Pi_1;
-}
-signed int *_X2f7FPi___1(){
-    __attribute__ ((unused)) signed int *_X10_retval_f7Pi_1;
-}
-signed int **_X2f8FPPi___1(){
-    __attribute__ ((unused)) signed int **_X10_retval_f8PPi_1;
-}
-signed int *const *_X2f9FPKPi___1(){
-    __attribute__ ((unused)) signed int *const *_X10_retval_f9PKPi_1;
-}
-signed int (*_X3f10FPA0i___1())[]{
-    __attribute__ ((unused)) signed int (*_X11_retval_f10PA0i_1)[];
-}
-signed int (*_X3f11FPA0A0i___1())[][((unsigned long int )3)]{
-    __attribute__ ((unused)) signed int (*_X11_retval_f11PA0A0i_1)[][((unsigned long int )3)];
-}
-signed int (*_X3f12FPA0A0i___1())[][((unsigned long int )3)]{
-    __attribute__ ((unused)) signed int (*_X11_retval_f12PA0A0i_1)[][((unsigned long int )3)];
-}
-signed int _X4fII1Fi_i__1(signed int _X1ii_1){
-    __attribute__ ((unused)) signed int _X12_retval_fII1i_1;
-}
-const signed int _X4fII2Fi_i__1(signed int _X1ii_1){
-    __attribute__ ((unused)) const signed int _X12_retval_fII2Ki_1;
-}
-extern signed int _X4fII3Fi_i__1(signed int _X1ii_1){
-    __attribute__ ((unused)) signed int _X12_retval_fII3i_1;
-}
-extern const signed int _X4fII4Fi_i__1(signed int _X1ii_1){
-    __attribute__ ((unused)) const signed int _X12_retval_fII4Ki_1;
-}
-signed int *_X4fII5FPi___1(){
-    __attribute__ ((unused)) signed int *_X12_retval_fII5Pi_1;
-}
-signed int *const _X4fII6FPi___1(){
-    __attribute__ ((unused)) signed int *const _X12_retval_fII6KPi_1;
-}
-const signed long int *_X4fII7FPKl___1(){
-    __attribute__ ((unused)) const signed long int *_X12_retval_fII7PKl_1;
-}
-static const signed long int *_X4fII8FPKl___1(){
-    __attribute__ ((unused)) const signed long int *_X12_retval_fII8PKl_1;
-}
-static const signed long int *_X4fII9FPKl___1(){
-    __attribute__ ((unused)) const signed long int *_X12_retval_fII9PKl_1;
-}
-signed int _X3fO1Fi_i__1(signed int _X1ii_1){
-    __attribute__ ((unused)) signed int _X11_retval_fO1i_1;
-}
-signed int _X3fO2Fi_i__1(signed int _X1ii_1){
-    __attribute__ ((unused)) signed int _X11_retval_fO2i_1;
-}
-const signed int _X3fO3Fi_i__1(signed int _X1ii_1){
-    __attribute__ ((unused)) const signed int _X11_retval_fO3Ki_1;
-}
-extern signed int _X3fO4Fi_i__1(signed int _X1ii_1){
-    __attribute__ ((unused)) signed int _X11_retval_fO4i_1;
-}
-extern const signed int _X3fO5Fi_i__1(signed int _X1ii_1){
-    __attribute__ ((unused)) const signed int _X11_retval_fO5Ki_1;
-}
-signed int _X1fFi___1(void);
-signed int _X1fFi_i__1(signed int __anonymous_object6);
-signed int _X1fFi___1(void){
-    __attribute__ ((unused)) signed int _X9_retval_fi_1;
-}
-signed int _X1fFi_i__1(__attribute__ ((unused)) signed int __anonymous_object7){
-    __attribute__ ((unused)) signed int _X9_retval_fi_1;
-}
-signed int _X1fFi___1(void);
-struct _tuple2_ {
-};
-static inline void _layoutof__tuple2_(unsigned long int *_sizeof__tuple2_, unsigned long int *_alignof__tuple2_, unsigned long int *_offsetof__tuple2_, unsigned long int _sizeof_Y15tuple_param_2_0, unsigned long int _alignof_Y15tuple_param_2_0, unsigned long int _sizeof_Y15tuple_param_2_1, unsigned long int _alignof_Y15tuple_param_2_1){
-    ((void)((*_sizeof__tuple2_)=0));
-    ((void)((*_alignof__tuple2_)=1));
-    ((void)(_offsetof__tuple2_[0]=(*_sizeof__tuple2_)));
-    ((void)((*_sizeof__tuple2_)+=_sizeof_Y15tuple_param_2_0));
-    if ( ((*_alignof__tuple2_)<_alignof_Y15tuple_param_2_0) ) ((void)((*_alignof__tuple2_)=_alignof_Y15tuple_param_2_0));
-
-    if ( ((*_sizeof__tuple2_)&(_alignof_Y15tuple_param_2_1-1)) ) ((void)((*_sizeof__tuple2_)+=(_alignof_Y15tuple_param_2_1-((*_sizeof__tuple2_)&(_alignof_Y15tuple_param_2_1-1)))));
-
-    ((void)(_offsetof__tuple2_[1]=(*_sizeof__tuple2_)));
-    ((void)((*_sizeof__tuple2_)+=_sizeof_Y15tuple_param_2_1));
-    if ( ((*_alignof__tuple2_)<_alignof_Y15tuple_param_2_1) ) ((void)((*_alignof__tuple2_)=_alignof_Y15tuple_param_2_1));
-
-    if ( ((*_sizeof__tuple2_)&((*_alignof__tuple2_)-1)) ) ((void)((*_sizeof__tuple2_)+=((*_alignof__tuple2_)-((*_sizeof__tuple2_)&((*_alignof__tuple2_)-1)))));
-
-}
-struct _conc__tuple2_0;
-struct _conc__tuple2_0 {
-    signed int field_0;
-    signed int field_1;
-};
-struct _conc__tuple2_0 _X1fFT2ii___1(void);
-struct _conc__tuple2_0 _X1fFT2ii_ii__1(signed int __anonymous_object8, signed int _X1xi_1);
-struct _conc__tuple2_0 _X1fFT2ii___1(void){
-    __attribute__ ((unused)) struct _conc__tuple2_0 _X9_retval_fT2ii_1 = {  };
-}
-struct _conc__tuple2_0 _X1fFT2ii_ii__1(__attribute__ ((unused)) signed int __anonymous_object9, signed int _X1xi_1){
-    __attribute__ ((unused)) struct _conc__tuple2_0 _X9_retval_fT2ii_1 = {  };
-}
-struct _tuple3_ {
-};
-static inline void _layoutof__tuple3_(unsigned long int *_sizeof__tuple3_, unsigned long int *_alignof__tuple3_, unsigned long int *_offsetof__tuple3_, unsigned long int _sizeof_Y15tuple_param_3_0, unsigned long int _alignof_Y15tuple_param_3_0, unsigned long int _sizeof_Y15tuple_param_3_1, unsigned long int _alignof_Y15tuple_param_3_1, unsigned long int _sizeof_Y15tuple_param_3_2, unsigned long int _alignof_Y15tuple_param_3_2){
-    ((void)((*_sizeof__tuple3_)=0));
-    ((void)((*_alignof__tuple3_)=1));
-    ((void)(_offsetof__tuple3_[0]=(*_sizeof__tuple3_)));
-    ((void)((*_sizeof__tuple3_)+=_sizeof_Y15tuple_param_3_0));
-    if ( ((*_alignof__tuple3_)<_alignof_Y15tuple_param_3_0) ) ((void)((*_alignof__tuple3_)=_alignof_Y15tuple_param_3_0));
-
-    if ( ((*_sizeof__tuple3_)&(_alignof_Y15tuple_param_3_1-1)) ) ((void)((*_sizeof__tuple3_)+=(_alignof_Y15tuple_param_3_1-((*_sizeof__tuple3_)&(_alignof_Y15tuple_param_3_1-1)))));
-
-    ((void)(_offsetof__tuple3_[1]=(*_sizeof__tuple3_)));
-    ((void)((*_sizeof__tuple3_)+=_sizeof_Y15tuple_param_3_1));
-    if ( ((*_alignof__tuple3_)<_alignof_Y15tuple_param_3_1) ) ((void)((*_alignof__tuple3_)=_alignof_Y15tuple_param_3_1));
-
-    if ( ((*_sizeof__tuple3_)&(_alignof_Y15tuple_param_3_2-1)) ) ((void)((*_sizeof__tuple3_)+=(_alignof_Y15tuple_param_3_2-((*_sizeof__tuple3_)&(_alignof_Y15tuple_param_3_2-1)))));
-
-    ((void)(_offsetof__tuple3_[2]=(*_sizeof__tuple3_)));
-    ((void)((*_sizeof__tuple3_)+=_sizeof_Y15tuple_param_3_2));
-    if ( ((*_alignof__tuple3_)<_alignof_Y15tuple_param_3_2) ) ((void)((*_alignof__tuple3_)=_alignof_Y15tuple_param_3_2));
-
-    if ( ((*_sizeof__tuple3_)&((*_alignof__tuple3_)-1)) ) ((void)((*_sizeof__tuple3_)+=((*_alignof__tuple3_)-((*_sizeof__tuple3_)&((*_alignof__tuple3_)-1)))));
-
-}
-struct _conc__tuple3_1;
-struct _conc__tuple3_1 {
-    signed int field_0;
-    signed int field_1;
-    signed int field_2;
-};
-struct _conc__tuple3_1 _X1fFT3iii___1(void);
-struct _conc__tuple3_1 _X1fFT3iii_iii__1(signed int __anonymous_object10, signed int _X1xi_1, signed int __anonymous_object11);
-struct _conc__tuple3_1 _X1fFT3iii___1(void){
-    __attribute__ ((unused)) struct _conc__tuple3_1 _X9_retval_fT3iii_1 = {  };
-}
-struct _conc__tuple3_1 _X1fFT3iii_iii__1(__attribute__ ((unused)) signed int __anonymous_object12, signed int _X1xi_1, __attribute__ ((unused)) signed int __anonymous_object13){
-    __attribute__ ((unused)) struct _conc__tuple3_1 _X9_retval_fT3iii_1 = {  };
-}
-struct _conc__tuple3_2;
-struct _conc__tuple3_2 {
-    signed int field_0;
-    signed int field_1;
-    signed int *field_2;
-};
-struct _conc__tuple3_2 _X1fFT3iiPi___1(void);
-struct _conc__tuple3_2 _X1fFT3iiPi_iiPi__1(signed int __anonymous_object14, signed int _X1xi_1, signed int *_X1yPi_1);
-struct _conc__tuple3_2 _X1fFT3iiPi___1(void){
-    __attribute__ ((unused)) struct _conc__tuple3_2 _X9_retval_fT3iiPi_1 = {  };
-}
-struct _conc__tuple3_2 _X1fFT3iiPi_iiPi__1(__attribute__ ((unused)) signed int __anonymous_object15, signed int _X1xi_1, signed int *_X1yPi_1){
-    __attribute__ ((unused)) struct _conc__tuple3_2 _X9_retval_fT3iiPi_1 = {  };
-}
-signed int _X3f11Fi_i__1(signed int __anonymous_object16);
-signed int _X3f12Fi___1(void);
-const double _X4bar1Fd___1();
-const double _X4bar2Fd_i__1(signed int __anonymous_object17);
-const double _X4bar3Fd_d__1(double __anonymous_object18);
-const double _X3fooFd___1(void);
-const double _X3fooFd_i__1(signed int __anonymous_object19);
-const double _X3fooFd_d__1(__attribute__ ((unused)) double __anonymous_object20){
-    __attribute__ ((unused)) const double _X11_retval_fooKd_1;
-    {
-        ((void)((*((double *)(&_X11_retval_fooKd_1)))=3.0) /* ?{} */);
-    }
-
-    return _X11_retval_fooKd_1;
-}
-struct S {
-    signed int _X1ii_1;
-};
-static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
-static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
-static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
-static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
-static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ii_1);
-static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
-    {
-        ((void)((*_X4_dstS1S_1)._X1ii_1) /* ?{} */);
-    }
-
-}
-static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
-    {
-        ((void)((*_X4_dstS1S_1)._X1ii_1=_X4_srcS1S_1._X1ii_1) /* ?{} */);
-    }
-
-}
-static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
-    {
-        ((void)((*_X4_dstS1S_1)._X1ii_1) /* ^?{} */);
-    }
-
-}
-static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
-    struct S _X4_retS1S_1;
-    {
-        ((void)((*_X4_dstS1S_1)._X1ii_1=_X4_srcS1S_1._X1ii_1));
-    }
-
-    {
-        ((void)_X12_constructorFv_S1SS1S_autogen___1((&_X4_retS1S_1), (*_X4_dstS1S_1)));
-    }
-
-    return _X4_retS1S_1;
-}
-static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ii_1){
-    {
-        ((void)((*_X4_dstS1S_1)._X1ii_1=_X1ii_1) /* ?{} */);
-    }
-
-}
-struct S _X3rtnFS1S_i__1(__attribute__ ((unused)) signed int __anonymous_object21){
-    __attribute__ ((unused)) struct S _X11_retval_rtnS1S_1;
-}
-signed int _X1fFi_Fi_ii_Fi_i___1(__attribute__ ((unused)) signed int (*__anonymous_object22)(signed int __anonymous_object23, signed int _X1pi_1), __attribute__ ((unused)) signed int (*__anonymous_object24)(signed int __anonymous_object25)){
-    __attribute__ ((unused)) signed int _X9_retval_fi_1;
-    signed int (*(*_X2pcPA0A0PA0A0i_2)[][((unsigned long int )10)])[][((unsigned long int )3)];
-    signed int (*(*_X1pPA0A0PA0A0i_2)[][((unsigned long int )10)])[][((unsigned long int )3)];
-    signed int (*(*_X1pPA0Fi_i__2)[])(signed int __anonymous_object26);
-}
-static const signed int *_X2f1FPKi___1(){
-    __attribute__ ((unused)) const signed int *_X10_retval_f1PKi_1;
-}
-static const signed int *_X2f2FPKi___1(void){
-    __attribute__ ((unused)) const signed int *_X10_retval_f2PKi_1;
-}
-static inline signed int *const _X2f3FPi___1(void){
-    __attribute__ ((unused)) signed int *const _X10_retval_f3KPi_1;
-}
-struct _conc__tuple2_3;
-struct _conc__tuple2_3 {
-    signed int *field_0;
-    signed int field_1;
-};
-static inline const struct _conc__tuple2_3 _X2f4FT2Pii___1(void){
-    __attribute__ ((unused)) const struct _conc__tuple2_3 _X10_retval_f4KT2Pii_1;
-}
-static const struct _conc__tuple2_3 _X2f5FT2PiKi___1(void){
-    __attribute__ ((unused)) const struct _conc__tuple2_3 _X10_retval_f5KT2PiKi_1;
-}
-signed int _X1fFi_Fi__FPi__FPPi__FPKPi__FPKPi__PiPiPPiPPiPPPiPPPiPPKPiPPKPiPKPKPiPKPKPi__1(signed int (*__anonymous_object27)(), signed int *(*__anonymous_object28)(), signed int **(*__anonymous_object29)(), signed int *const *(*__anonymous_object30)(), signed int *const *const (*__anonymous_object31)(), signed int *__anonymous_object32, signed int __anonymous_object33[((unsigned long int )10)], signed int **__anonymous_object34, signed int *__anonymous_object35[((unsigned long int )10)], signed int ***__anonymous_object36, signed int **__anonymous_object37[((unsigned long int )10)], signed int *const **__anonymous_object38, signed int *const *__anonymous_object39[((unsigned long int )10)], signed int *const *const *__anonymous_object40, signed int *const *const __anonymous_object41[((unsigned long int )10)]);
-signed int _X1fFi_Fi__FPi__FPPi__FPKPi__FPKPi__PiPiPPiPPiPPPiPPPiPPKPiPPKPiPKPKPiPKPKPi__1(__attribute__ ((unused)) signed int (*__anonymous_object42)(), __attribute__ ((unused)) signed int *(*__anonymous_object43)(), __attribute__ ((unused)) signed int **(*__anonymous_object44)(), __attribute__ ((unused)) signed int *const *(*__anonymous_object45)(), __attribute__ ((unused)) signed int *const *const (*__anonymous_object46)(), __attribute__ ((unused)) signed int *__anonymous_object47, __attribute__ ((unused)) signed int __anonymous_object48[((unsigned long int )10)], __attribute__ ((unused)) signed int **__anonymous_object49, __attribute__ ((unused)) signed int *__anonymous_object50[((unsigned long int )10)], __attribute__ ((unused)) signed int ***__anonymous_object51, __attribute__ ((unused)) signed int **__anonymous_object52[((unsigned long int )10)], __attribute__ ((unused)) signed int *const **__anonymous_object53, __attribute__ ((unused)) signed int *const *__anonymous_object54[((unsigned long int )10)], __attribute__ ((unused)) signed int *const *const *__anonymous_object55, __attribute__ ((unused)) signed int *const *const __anonymous_object56[((unsigned long int )10)]){
-    __attribute__ ((unused)) signed int _X9_retval_fi_1;
-}
-signed int _X1fFi_Pii__1(signed int *_X1fPi_1, signed int _X1ti_1){
-    __attribute__ ((unused)) signed int _X9_retval_fi_1;
-    signed int _X1Ti_2;
-}
Index: tests/.expect/functions.nast.arm64.txt
===================================================================
--- tests/.expect/functions.nast.arm64.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
+++ tests/.expect/functions.nast.arm64.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -0,0 +1,283 @@
+void _X1hFv___1(void){
+}
+signed int _X1fFi_Fi__Fi_i_Fi__Fi_i_Fv____1(__attribute__ ((unused)) signed int (*__anonymous_object0)(void), __attribute__ ((unused)) signed int (*__anonymous_object1)(signed int __param_0), __attribute__ ((unused)) signed int (*__anonymous_object2)(void), __attribute__ ((unused)) signed int (*__anonymous_object3)(signed int __param_0), void (*_X1gFv___1)(void)){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+    {
+        ((void)(*_X1gFv___1)());
+    }
+
+    {
+        ((void)_X1gFv___1());
+    }
+
+    {
+        ((void)(_X1gFv___1=_X1hFv___1));
+    }
+
+}
+signed int _X2f1Fi___1(){
+    __attribute__ ((unused)) signed int _X10_retval_f1i_1;
+}
+signed int _X2f2Fi___1(){
+    __attribute__ ((unused)) signed int _X10_retval_f2i_1;
+}
+signed int (*_X2f3FFi_____1())(){
+    __attribute__ ((unused)) signed int (*_X10_retval_f3Fi___1)();
+}
+signed int *_X2f4FPi___1(){
+    __attribute__ ((unused)) signed int *_X10_retval_f4Pi_1;
+}
+signed int (*_X2f5FFi_____1())(){
+    __attribute__ ((unused)) signed int (*_X10_retval_f5Fi___1)();
+}
+signed int *_X2f6FPi___1(){
+    __attribute__ ((unused)) signed int *_X10_retval_f6Pi_1;
+}
+signed int *_X2f7FPi___1(){
+    __attribute__ ((unused)) signed int *_X10_retval_f7Pi_1;
+}
+signed int **_X2f8FPPi___1(){
+    __attribute__ ((unused)) signed int **_X10_retval_f8PPi_1;
+}
+signed int *const *_X2f9FPKPi___1(){
+    __attribute__ ((unused)) signed int *const *_X10_retval_f9PKPi_1;
+}
+signed int (*_X3f10FPA0i___1())[]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f10PA0i_1)[];
+}
+signed int (*_X3f11FPA0A0i___1())[][((unsigned long int )3)]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f11PA0A0i_1)[][((unsigned long int )3)];
+}
+signed int (*_X3f12FPA0A0i___1())[][((unsigned long int )3)]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f12PA0A0i_1)[][((unsigned long int )3)];
+}
+signed int _X4fII1Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) signed int _X12_retval_fII1i_1;
+}
+const signed int _X4fII2Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) const signed int _X12_retval_fII2Ki_1;
+}
+extern signed int _X4fII3Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) signed int _X12_retval_fII3i_1;
+}
+extern const signed int _X4fII4Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) const signed int _X12_retval_fII4Ki_1;
+}
+signed int *_X4fII5FPi___1(){
+    __attribute__ ((unused)) signed int *_X12_retval_fII5Pi_1;
+}
+signed int *const _X4fII6FPi___1(){
+    __attribute__ ((unused)) signed int *const _X12_retval_fII6KPi_1;
+}
+const signed long int *_X4fII7FPKl___1(){
+    __attribute__ ((unused)) const signed long int *_X12_retval_fII7PKl_1;
+}
+static const signed long int *_X4fII8FPKl___1(){
+    __attribute__ ((unused)) const signed long int *_X12_retval_fII8PKl_1;
+}
+static const signed long int *_X4fII9FPKl___1(){
+    __attribute__ ((unused)) const signed long int *_X12_retval_fII9PKl_1;
+}
+signed int _X3fO1Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) signed int _X11_retval_fO1i_1;
+}
+signed int _X3fO2Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) signed int _X11_retval_fO2i_1;
+}
+const signed int _X3fO3Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) const signed int _X11_retval_fO3Ki_1;
+}
+extern signed int _X3fO4Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) signed int _X11_retval_fO4i_1;
+}
+extern const signed int _X3fO5Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) const signed int _X11_retval_fO5Ki_1;
+}
+signed int _X1fFi___1(void);
+signed int _X1fFi_i__1(signed int __anonymous_object4);
+signed int _X1fFi___1(void){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+}
+signed int _X1fFi_i__1(__attribute__ ((unused)) signed int __anonymous_object5){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+}
+signed int _X1fFi___1(void);
+struct _tuple2_ {
+};
+static inline void _layoutof__tuple2_(unsigned long int *_sizeof__tuple2_, unsigned long int *_alignof__tuple2_, unsigned long int *_offsetof__tuple2_, unsigned long int _sizeof_Y15tuple_param_2_0, unsigned long int _alignof_Y15tuple_param_2_0, unsigned long int _sizeof_Y15tuple_param_2_1, unsigned long int _alignof_Y15tuple_param_2_1){
+    ((void)((*_sizeof__tuple2_)=0));
+    ((void)((*_alignof__tuple2_)=1));
+    ((void)(_offsetof__tuple2_[0]=(*_sizeof__tuple2_)));
+    ((void)((*_sizeof__tuple2_)+=_sizeof_Y15tuple_param_2_0));
+    if ( ((*_alignof__tuple2_)<_alignof_Y15tuple_param_2_0) ) ((void)((*_alignof__tuple2_)=_alignof_Y15tuple_param_2_0));
+
+    if ( ((*_sizeof__tuple2_)&(_alignof_Y15tuple_param_2_1-1)) ) ((void)((*_sizeof__tuple2_)+=(_alignof_Y15tuple_param_2_1-((*_sizeof__tuple2_)&(_alignof_Y15tuple_param_2_1-1)))));
+
+    ((void)(_offsetof__tuple2_[1]=(*_sizeof__tuple2_)));
+    ((void)((*_sizeof__tuple2_)+=_sizeof_Y15tuple_param_2_1));
+    if ( ((*_alignof__tuple2_)<_alignof_Y15tuple_param_2_1) ) ((void)((*_alignof__tuple2_)=_alignof_Y15tuple_param_2_1));
+
+    if ( ((*_sizeof__tuple2_)&((*_alignof__tuple2_)-1)) ) ((void)((*_sizeof__tuple2_)+=((*_alignof__tuple2_)-((*_sizeof__tuple2_)&((*_alignof__tuple2_)-1)))));
+
+}
+struct _conc__tuple2_0;
+struct _conc__tuple2_0 {
+    signed int field_0;
+    signed int field_1;
+};
+struct _conc__tuple2_0 _X1fFT2ii___1(void);
+struct _conc__tuple2_0 _X1fFT2ii_ii__1(signed int __anonymous_object6, signed int _X1xi_1);
+struct _conc__tuple2_0 _X1fFT2ii___1(void){
+    __attribute__ ((unused)) struct _conc__tuple2_0 _X9_retval_fT2ii_1 = {  };
+}
+struct _conc__tuple2_0 _X1fFT2ii_ii__1(__attribute__ ((unused)) signed int __anonymous_object7, signed int _X1xi_1){
+    __attribute__ ((unused)) struct _conc__tuple2_0 _X9_retval_fT2ii_1 = {  };
+}
+struct _tuple3_ {
+};
+static inline void _layoutof__tuple3_(unsigned long int *_sizeof__tuple3_, unsigned long int *_alignof__tuple3_, unsigned long int *_offsetof__tuple3_, unsigned long int _sizeof_Y15tuple_param_3_0, unsigned long int _alignof_Y15tuple_param_3_0, unsigned long int _sizeof_Y15tuple_param_3_1, unsigned long int _alignof_Y15tuple_param_3_1, unsigned long int _sizeof_Y15tuple_param_3_2, unsigned long int _alignof_Y15tuple_param_3_2){
+    ((void)((*_sizeof__tuple3_)=0));
+    ((void)((*_alignof__tuple3_)=1));
+    ((void)(_offsetof__tuple3_[0]=(*_sizeof__tuple3_)));
+    ((void)((*_sizeof__tuple3_)+=_sizeof_Y15tuple_param_3_0));
+    if ( ((*_alignof__tuple3_)<_alignof_Y15tuple_param_3_0) ) ((void)((*_alignof__tuple3_)=_alignof_Y15tuple_param_3_0));
+
+    if ( ((*_sizeof__tuple3_)&(_alignof_Y15tuple_param_3_1-1)) ) ((void)((*_sizeof__tuple3_)+=(_alignof_Y15tuple_param_3_1-((*_sizeof__tuple3_)&(_alignof_Y15tuple_param_3_1-1)))));
+
+    ((void)(_offsetof__tuple3_[1]=(*_sizeof__tuple3_)));
+    ((void)((*_sizeof__tuple3_)+=_sizeof_Y15tuple_param_3_1));
+    if ( ((*_alignof__tuple3_)<_alignof_Y15tuple_param_3_1) ) ((void)((*_alignof__tuple3_)=_alignof_Y15tuple_param_3_1));
+
+    if ( ((*_sizeof__tuple3_)&(_alignof_Y15tuple_param_3_2-1)) ) ((void)((*_sizeof__tuple3_)+=(_alignof_Y15tuple_param_3_2-((*_sizeof__tuple3_)&(_alignof_Y15tuple_param_3_2-1)))));
+
+    ((void)(_offsetof__tuple3_[2]=(*_sizeof__tuple3_)));
+    ((void)((*_sizeof__tuple3_)+=_sizeof_Y15tuple_param_3_2));
+    if ( ((*_alignof__tuple3_)<_alignof_Y15tuple_param_3_2) ) ((void)((*_alignof__tuple3_)=_alignof_Y15tuple_param_3_2));
+
+    if ( ((*_sizeof__tuple3_)&((*_alignof__tuple3_)-1)) ) ((void)((*_sizeof__tuple3_)+=((*_alignof__tuple3_)-((*_sizeof__tuple3_)&((*_alignof__tuple3_)-1)))));
+
+}
+struct _conc__tuple3_1;
+struct _conc__tuple3_1 {
+    signed int field_0;
+    signed int field_1;
+    signed int field_2;
+};
+struct _conc__tuple3_1 _X1fFT3iii___1(void);
+struct _conc__tuple3_1 _X1fFT3iii_iii__1(signed int __anonymous_object8, signed int _X1xi_1, signed int __anonymous_object9);
+struct _conc__tuple3_1 _X1fFT3iii___1(void){
+    __attribute__ ((unused)) struct _conc__tuple3_1 _X9_retval_fT3iii_1 = {  };
+}
+struct _conc__tuple3_1 _X1fFT3iii_iii__1(__attribute__ ((unused)) signed int __anonymous_object10, signed int _X1xi_1, __attribute__ ((unused)) signed int __anonymous_object11){
+    __attribute__ ((unused)) struct _conc__tuple3_1 _X9_retval_fT3iii_1 = {  };
+}
+struct _conc__tuple3_2;
+struct _conc__tuple3_2 {
+    signed int field_0;
+    signed int field_1;
+    signed int *field_2;
+};
+struct _conc__tuple3_2 _X1fFT3iiPi___1(void);
+struct _conc__tuple3_2 _X1fFT3iiPi_iiPi__1(signed int __anonymous_object12, signed int _X1xi_1, signed int *_X1yPi_1);
+struct _conc__tuple3_2 _X1fFT3iiPi___1(void){
+    __attribute__ ((unused)) struct _conc__tuple3_2 _X9_retval_fT3iiPi_1 = {  };
+}
+struct _conc__tuple3_2 _X1fFT3iiPi_iiPi__1(__attribute__ ((unused)) signed int __anonymous_object13, signed int _X1xi_1, signed int *_X1yPi_1){
+    __attribute__ ((unused)) struct _conc__tuple3_2 _X9_retval_fT3iiPi_1 = {  };
+}
+signed int _X3f11Fi_i__1(signed int __anonymous_object14);
+signed int _X3f12Fi___1(void);
+const double _X4bar1Fd___1();
+const double _X4bar2Fd_i__1(signed int __anonymous_object15);
+const double _X4bar3Fd_d__1(double __anonymous_object16);
+const double _X3fooFd___1(void);
+const double _X3fooFd_i__1(signed int __anonymous_object17);
+const double _X3fooFd_d__1(__attribute__ ((unused)) double __anonymous_object18){
+    __attribute__ ((unused)) const double _X11_retval_fooKd_1;
+    {
+        ((void)((*((double *)(&_X11_retval_fooKd_1)))=3.0) /* ?{} */);
+    }
+
+    return _X11_retval_fooKd_1;
+}
+struct S {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
+static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
+static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
+static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
+static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
+    {
+        ((void)((*_X4_dstS1S_1)._X1ii_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
+    {
+        ((void)((*_X4_dstS1S_1)._X1ii_1=_X4_srcS1S_1._X1ii_1) /* ?{} */);
+    }
+
+}
+static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
+    {
+        ((void)((*_X4_dstS1S_1)._X1ii_1) /* ^?{} */);
+    }
+
+}
+static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
+    struct S _X4_retS1S_1;
+    {
+        ((void)((*_X4_dstS1S_1)._X1ii_1=_X4_srcS1S_1._X1ii_1));
+    }
+
+    {
+        ((void)_X12_constructorFv_S1SS1S_autogen___1((&_X4_retS1S_1), (*_X4_dstS1S_1)));
+    }
+
+    return _X4_retS1S_1;
+}
+static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ii_1){
+    {
+        ((void)((*_X4_dstS1S_1)._X1ii_1=_X1ii_1) /* ?{} */);
+    }
+
+}
+struct S _X3rtnFS1S_i__1(__attribute__ ((unused)) signed int __anonymous_object19){
+    __attribute__ ((unused)) struct S _X11_retval_rtnS1S_1;
+}
+signed int _X1fFi_Fi_ii_Fi_i___1(__attribute__ ((unused)) signed int (*__anonymous_object20)(signed int __param_0, signed int __param_1), __attribute__ ((unused)) signed int (*__anonymous_object21)(signed int __param_0)){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+    signed int (*(*_X2pcPA0A0PA0A0i_2)[][((unsigned long int )10)])[][((unsigned long int )3)];
+    signed int (*(*_X1pPA0A0PA0A0i_2)[][((unsigned long int )10)])[][((unsigned long int )3)];
+    signed int (*(*_X1pPA0Fi_i__2)[])(signed int __param_0);
+}
+static const signed int *_X2f1FPKi___1(){
+    __attribute__ ((unused)) const signed int *_X10_retval_f1PKi_1;
+}
+static const signed int *_X2f2FPKi___1(void){
+    __attribute__ ((unused)) const signed int *_X10_retval_f2PKi_1;
+}
+static inline signed int *const _X2f3FPi___1(void){
+    __attribute__ ((unused)) signed int *const _X10_retval_f3KPi_1;
+}
+struct _conc__tuple2_3;
+struct _conc__tuple2_3 {
+    signed int *field_0;
+    signed int field_1;
+};
+static inline const struct _conc__tuple2_3 _X2f4FT2Pii___1(void){
+    __attribute__ ((unused)) const struct _conc__tuple2_3 _X10_retval_f4KT2Pii_1;
+}
+static const struct _conc__tuple2_3 _X2f5FT2PiKi___1(void){
+    __attribute__ ((unused)) const struct _conc__tuple2_3 _X10_retval_f5KT2PiKi_1;
+}
+signed int _X1fFi_Fi__FPi__FPPi__FPKPi__FPKPi__PiPiPPiPPiPPPiPPPiPPKPiPPKPiPKPKPiPKPKPi__1(signed int (*__anonymous_object22)(), signed int *(*__anonymous_object23)(), signed int **(*__anonymous_object24)(), signed int *const *(*__anonymous_object25)(), signed int *const *const (*__anonymous_object26)(), signed int *__anonymous_object27, signed int __anonymous_object28[10], signed int **__anonymous_object29, signed int *__anonymous_object30[10], signed int ***__anonymous_object31, signed int **__anonymous_object32[10], signed int *const **__anonymous_object33, signed int *const *__anonymous_object34[10], signed int *const *const *__anonymous_object35, signed int *const *const __anonymous_object36[10]);
+signed int _X1fFi_Fi__FPi__FPPi__FPKPi__FPKPi__PiPiPPiPPiPPPiPPPiPPKPiPPKPiPKPKPiPKPKPi__1(__attribute__ ((unused)) signed int (*__anonymous_object37)(), __attribute__ ((unused)) signed int *(*__anonymous_object38)(), __attribute__ ((unused)) signed int **(*__anonymous_object39)(), __attribute__ ((unused)) signed int *const *(*__anonymous_object40)(), __attribute__ ((unused)) signed int *const *const (*__anonymous_object41)(), __attribute__ ((unused)) signed int *__anonymous_object42, __attribute__ ((unused)) signed int __anonymous_object43[10], __attribute__ ((unused)) signed int **__anonymous_object44, __attribute__ ((unused)) signed int *__anonymous_object45[10], __attribute__ ((unused)) signed int ***__anonymous_object46, __attribute__ ((unused)) signed int **__anonymous_object47[10], __attribute__ ((unused)) signed int *const **__anonymous_object48, __attribute__ ((unused)) signed int *const *__anonymous_object49[10], __attribute__ ((unused)) signed int *const *const *__anonymous_object50, __attribute__ ((unused)) signed int *const *const __anonymous_object51[10]){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+}
+signed int _X1fFi_Pii__1(signed int *_X1fPi_1, signed int _X1ti_1){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+    signed int _X1Ti_2;
+}
Index: tests/.expect/functions.oast.arm64.txt
===================================================================
--- tests/.expect/functions.oast.arm64.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
+++ tests/.expect/functions.oast.arm64.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -0,0 +1,283 @@
+void _X1hFv___1(void){
+}
+signed int _X1fFi_Fi__Fi_i_Fi__Fi_i_Fv____1(__attribute__ ((unused)) signed int (*__anonymous_object0)(void), __attribute__ ((unused)) signed int (*__anonymous_object1)(signed int __anonymous_object2), __attribute__ ((unused)) signed int (*__anonymous_object3)(void), __attribute__ ((unused)) signed int (*__anonymous_object4)(signed int __anonymous_object5), void (*_X1gFv___1)(void)){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+    {
+        ((void)(*_X1gFv___1)());
+    }
+
+    {
+        ((void)_X1gFv___1());
+    }
+
+    {
+        ((void)(_X1gFv___1=_X1hFv___1));
+    }
+
+}
+signed int _X2f1Fi___1(){
+    __attribute__ ((unused)) signed int _X10_retval_f1i_1;
+}
+signed int _X2f2Fi___1(){
+    __attribute__ ((unused)) signed int _X10_retval_f2i_1;
+}
+signed int (*_X2f3FFi_____1())(){
+    __attribute__ ((unused)) signed int (*_X10_retval_f3Fi___1)();
+}
+signed int *_X2f4FPi___1(){
+    __attribute__ ((unused)) signed int *_X10_retval_f4Pi_1;
+}
+signed int (*_X2f5FFi_____1())(){
+    __attribute__ ((unused)) signed int (*_X10_retval_f5Fi___1)();
+}
+signed int *_X2f6FPi___1(){
+    __attribute__ ((unused)) signed int *_X10_retval_f6Pi_1;
+}
+signed int *_X2f7FPi___1(){
+    __attribute__ ((unused)) signed int *_X10_retval_f7Pi_1;
+}
+signed int **_X2f8FPPi___1(){
+    __attribute__ ((unused)) signed int **_X10_retval_f8PPi_1;
+}
+signed int *const *_X2f9FPKPi___1(){
+    __attribute__ ((unused)) signed int *const *_X10_retval_f9PKPi_1;
+}
+signed int (*_X3f10FPA0i___1())[]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f10PA0i_1)[];
+}
+signed int (*_X3f11FPA0A0i___1())[][((unsigned long int )3)]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f11PA0A0i_1)[][((unsigned long int )3)];
+}
+signed int (*_X3f12FPA0A0i___1())[][((unsigned long int )3)]{
+    __attribute__ ((unused)) signed int (*_X11_retval_f12PA0A0i_1)[][((unsigned long int )3)];
+}
+signed int _X4fII1Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) signed int _X12_retval_fII1i_1;
+}
+const signed int _X4fII2Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) const signed int _X12_retval_fII2Ki_1;
+}
+extern signed int _X4fII3Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) signed int _X12_retval_fII3i_1;
+}
+extern const signed int _X4fII4Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) const signed int _X12_retval_fII4Ki_1;
+}
+signed int *_X4fII5FPi___1(){
+    __attribute__ ((unused)) signed int *_X12_retval_fII5Pi_1;
+}
+signed int *const _X4fII6FPi___1(){
+    __attribute__ ((unused)) signed int *const _X12_retval_fII6KPi_1;
+}
+const signed long int *_X4fII7FPKl___1(){
+    __attribute__ ((unused)) const signed long int *_X12_retval_fII7PKl_1;
+}
+static const signed long int *_X4fII8FPKl___1(){
+    __attribute__ ((unused)) const signed long int *_X12_retval_fII8PKl_1;
+}
+static const signed long int *_X4fII9FPKl___1(){
+    __attribute__ ((unused)) const signed long int *_X12_retval_fII9PKl_1;
+}
+signed int _X3fO1Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) signed int _X11_retval_fO1i_1;
+}
+signed int _X3fO2Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) signed int _X11_retval_fO2i_1;
+}
+const signed int _X3fO3Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) const signed int _X11_retval_fO3Ki_1;
+}
+extern signed int _X3fO4Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) signed int _X11_retval_fO4i_1;
+}
+extern const signed int _X3fO5Fi_i__1(signed int _X1ii_1){
+    __attribute__ ((unused)) const signed int _X11_retval_fO5Ki_1;
+}
+signed int _X1fFi___1(void);
+signed int _X1fFi_i__1(signed int __anonymous_object6);
+signed int _X1fFi___1(void){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+}
+signed int _X1fFi_i__1(__attribute__ ((unused)) signed int __anonymous_object7){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+}
+signed int _X1fFi___1(void);
+struct _tuple2_ {
+};
+static inline void _layoutof__tuple2_(unsigned long int *_sizeof__tuple2_, unsigned long int *_alignof__tuple2_, unsigned long int *_offsetof__tuple2_, unsigned long int _sizeof_Y15tuple_param_2_0, unsigned long int _alignof_Y15tuple_param_2_0, unsigned long int _sizeof_Y15tuple_param_2_1, unsigned long int _alignof_Y15tuple_param_2_1){
+    ((void)((*_sizeof__tuple2_)=0));
+    ((void)((*_alignof__tuple2_)=1));
+    ((void)(_offsetof__tuple2_[0]=(*_sizeof__tuple2_)));
+    ((void)((*_sizeof__tuple2_)+=_sizeof_Y15tuple_param_2_0));
+    if ( ((*_alignof__tuple2_)<_alignof_Y15tuple_param_2_0) ) ((void)((*_alignof__tuple2_)=_alignof_Y15tuple_param_2_0));
+
+    if ( ((*_sizeof__tuple2_)&(_alignof_Y15tuple_param_2_1-1)) ) ((void)((*_sizeof__tuple2_)+=(_alignof_Y15tuple_param_2_1-((*_sizeof__tuple2_)&(_alignof_Y15tuple_param_2_1-1)))));
+
+    ((void)(_offsetof__tuple2_[1]=(*_sizeof__tuple2_)));
+    ((void)((*_sizeof__tuple2_)+=_sizeof_Y15tuple_param_2_1));
+    if ( ((*_alignof__tuple2_)<_alignof_Y15tuple_param_2_1) ) ((void)((*_alignof__tuple2_)=_alignof_Y15tuple_param_2_1));
+
+    if ( ((*_sizeof__tuple2_)&((*_alignof__tuple2_)-1)) ) ((void)((*_sizeof__tuple2_)+=((*_alignof__tuple2_)-((*_sizeof__tuple2_)&((*_alignof__tuple2_)-1)))));
+
+}
+struct _conc__tuple2_0;
+struct _conc__tuple2_0 {
+    signed int field_0;
+    signed int field_1;
+};
+struct _conc__tuple2_0 _X1fFT2ii___1(void);
+struct _conc__tuple2_0 _X1fFT2ii_ii__1(signed int __anonymous_object8, signed int _X1xi_1);
+struct _conc__tuple2_0 _X1fFT2ii___1(void){
+    __attribute__ ((unused)) struct _conc__tuple2_0 _X9_retval_fT2ii_1 = {  };
+}
+struct _conc__tuple2_0 _X1fFT2ii_ii__1(__attribute__ ((unused)) signed int __anonymous_object9, signed int _X1xi_1){
+    __attribute__ ((unused)) struct _conc__tuple2_0 _X9_retval_fT2ii_1 = {  };
+}
+struct _tuple3_ {
+};
+static inline void _layoutof__tuple3_(unsigned long int *_sizeof__tuple3_, unsigned long int *_alignof__tuple3_, unsigned long int *_offsetof__tuple3_, unsigned long int _sizeof_Y15tuple_param_3_0, unsigned long int _alignof_Y15tuple_param_3_0, unsigned long int _sizeof_Y15tuple_param_3_1, unsigned long int _alignof_Y15tuple_param_3_1, unsigned long int _sizeof_Y15tuple_param_3_2, unsigned long int _alignof_Y15tuple_param_3_2){
+    ((void)((*_sizeof__tuple3_)=0));
+    ((void)((*_alignof__tuple3_)=1));
+    ((void)(_offsetof__tuple3_[0]=(*_sizeof__tuple3_)));
+    ((void)((*_sizeof__tuple3_)+=_sizeof_Y15tuple_param_3_0));
+    if ( ((*_alignof__tuple3_)<_alignof_Y15tuple_param_3_0) ) ((void)((*_alignof__tuple3_)=_alignof_Y15tuple_param_3_0));
+
+    if ( ((*_sizeof__tuple3_)&(_alignof_Y15tuple_param_3_1-1)) ) ((void)((*_sizeof__tuple3_)+=(_alignof_Y15tuple_param_3_1-((*_sizeof__tuple3_)&(_alignof_Y15tuple_param_3_1-1)))));
+
+    ((void)(_offsetof__tuple3_[1]=(*_sizeof__tuple3_)));
+    ((void)((*_sizeof__tuple3_)+=_sizeof_Y15tuple_param_3_1));
+    if ( ((*_alignof__tuple3_)<_alignof_Y15tuple_param_3_1) ) ((void)((*_alignof__tuple3_)=_alignof_Y15tuple_param_3_1));
+
+    if ( ((*_sizeof__tuple3_)&(_alignof_Y15tuple_param_3_2-1)) ) ((void)((*_sizeof__tuple3_)+=(_alignof_Y15tuple_param_3_2-((*_sizeof__tuple3_)&(_alignof_Y15tuple_param_3_2-1)))));
+
+    ((void)(_offsetof__tuple3_[2]=(*_sizeof__tuple3_)));
+    ((void)((*_sizeof__tuple3_)+=_sizeof_Y15tuple_param_3_2));
+    if ( ((*_alignof__tuple3_)<_alignof_Y15tuple_param_3_2) ) ((void)((*_alignof__tuple3_)=_alignof_Y15tuple_param_3_2));
+
+    if ( ((*_sizeof__tuple3_)&((*_alignof__tuple3_)-1)) ) ((void)((*_sizeof__tuple3_)+=((*_alignof__tuple3_)-((*_sizeof__tuple3_)&((*_alignof__tuple3_)-1)))));
+
+}
+struct _conc__tuple3_1;
+struct _conc__tuple3_1 {
+    signed int field_0;
+    signed int field_1;
+    signed int field_2;
+};
+struct _conc__tuple3_1 _X1fFT3iii___1(void);
+struct _conc__tuple3_1 _X1fFT3iii_iii__1(signed int __anonymous_object10, signed int _X1xi_1, signed int __anonymous_object11);
+struct _conc__tuple3_1 _X1fFT3iii___1(void){
+    __attribute__ ((unused)) struct _conc__tuple3_1 _X9_retval_fT3iii_1 = {  };
+}
+struct _conc__tuple3_1 _X1fFT3iii_iii__1(__attribute__ ((unused)) signed int __anonymous_object12, signed int _X1xi_1, __attribute__ ((unused)) signed int __anonymous_object13){
+    __attribute__ ((unused)) struct _conc__tuple3_1 _X9_retval_fT3iii_1 = {  };
+}
+struct _conc__tuple3_2;
+struct _conc__tuple3_2 {
+    signed int field_0;
+    signed int field_1;
+    signed int *field_2;
+};
+struct _conc__tuple3_2 _X1fFT3iiPi___1(void);
+struct _conc__tuple3_2 _X1fFT3iiPi_iiPi__1(signed int __anonymous_object14, signed int _X1xi_1, signed int *_X1yPi_1);
+struct _conc__tuple3_2 _X1fFT3iiPi___1(void){
+    __attribute__ ((unused)) struct _conc__tuple3_2 _X9_retval_fT3iiPi_1 = {  };
+}
+struct _conc__tuple3_2 _X1fFT3iiPi_iiPi__1(__attribute__ ((unused)) signed int __anonymous_object15, signed int _X1xi_1, signed int *_X1yPi_1){
+    __attribute__ ((unused)) struct _conc__tuple3_2 _X9_retval_fT3iiPi_1 = {  };
+}
+signed int _X3f11Fi_i__1(signed int __anonymous_object16);
+signed int _X3f12Fi___1(void);
+const double _X4bar1Fd___1();
+const double _X4bar2Fd_i__1(signed int __anonymous_object17);
+const double _X4bar3Fd_d__1(double __anonymous_object18);
+const double _X3fooFd___1(void);
+const double _X3fooFd_i__1(signed int __anonymous_object19);
+const double _X3fooFd_d__1(__attribute__ ((unused)) double __anonymous_object20){
+    __attribute__ ((unused)) const double _X11_retval_fooKd_1;
+    {
+        ((void)((*((double *)(&_X11_retval_fooKd_1)))=3.0) /* ?{} */);
+    }
+
+    return _X11_retval_fooKd_1;
+}
+struct S {
+    signed int _X1ii_1;
+};
+static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
+static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
+static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1);
+static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1);
+static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ii_1);
+static inline void _X12_constructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
+    {
+        ((void)((*_X4_dstS1S_1)._X1ii_1) /* ?{} */);
+    }
+
+}
+static inline void _X12_constructorFv_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
+    {
+        ((void)((*_X4_dstS1S_1)._X1ii_1=_X4_srcS1S_1._X1ii_1) /* ?{} */);
+    }
+
+}
+static inline void _X11_destructorFv_S1S_autogen___1(struct S *_X4_dstS1S_1){
+    {
+        ((void)((*_X4_dstS1S_1)._X1ii_1) /* ^?{} */);
+    }
+
+}
+static inline struct S _X16_operator_assignFS1S_S1SS1S_autogen___1(struct S *_X4_dstS1S_1, struct S _X4_srcS1S_1){
+    struct S _X4_retS1S_1;
+    {
+        ((void)((*_X4_dstS1S_1)._X1ii_1=_X4_srcS1S_1._X1ii_1));
+    }
+
+    {
+        ((void)_X12_constructorFv_S1SS1S_autogen___1((&_X4_retS1S_1), (*_X4_dstS1S_1)));
+    }
+
+    return _X4_retS1S_1;
+}
+static inline void _X12_constructorFv_S1Si_autogen___1(struct S *_X4_dstS1S_1, signed int _X1ii_1){
+    {
+        ((void)((*_X4_dstS1S_1)._X1ii_1=_X1ii_1) /* ?{} */);
+    }
+
+}
+struct S _X3rtnFS1S_i__1(__attribute__ ((unused)) signed int __anonymous_object21){
+    __attribute__ ((unused)) struct S _X11_retval_rtnS1S_1;
+}
+signed int _X1fFi_Fi_ii_Fi_i___1(__attribute__ ((unused)) signed int (*__anonymous_object22)(signed int __anonymous_object23, signed int _X1pi_1), __attribute__ ((unused)) signed int (*__anonymous_object24)(signed int __anonymous_object25)){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+    signed int (*(*_X2pcPA0A0PA0A0i_2)[][((unsigned long int )10)])[][((unsigned long int )3)];
+    signed int (*(*_X1pPA0A0PA0A0i_2)[][((unsigned long int )10)])[][((unsigned long int )3)];
+    signed int (*(*_X1pPA0Fi_i__2)[])(signed int __anonymous_object26);
+}
+static const signed int *_X2f1FPKi___1(){
+    __attribute__ ((unused)) const signed int *_X10_retval_f1PKi_1;
+}
+static const signed int *_X2f2FPKi___1(void){
+    __attribute__ ((unused)) const signed int *_X10_retval_f2PKi_1;
+}
+static inline signed int *const _X2f3FPi___1(void){
+    __attribute__ ((unused)) signed int *const _X10_retval_f3KPi_1;
+}
+struct _conc__tuple2_3;
+struct _conc__tuple2_3 {
+    signed int *field_0;
+    signed int field_1;
+};
+static inline const struct _conc__tuple2_3 _X2f4FT2Pii___1(void){
+    __attribute__ ((unused)) const struct _conc__tuple2_3 _X10_retval_f4KT2Pii_1;
+}
+static const struct _conc__tuple2_3 _X2f5FT2PiKi___1(void){
+    __attribute__ ((unused)) const struct _conc__tuple2_3 _X10_retval_f5KT2PiKi_1;
+}
+signed int _X1fFi_Fi__FPi__FPPi__FPKPi__FPKPi__PiPiPPiPPiPPPiPPPiPPKPiPPKPiPKPKPiPKPKPi__1(signed int (*__anonymous_object27)(), signed int *(*__anonymous_object28)(), signed int **(*__anonymous_object29)(), signed int *const *(*__anonymous_object30)(), signed int *const *const (*__anonymous_object31)(), signed int *__anonymous_object32, signed int __anonymous_object33[((unsigned long int )10)], signed int **__anonymous_object34, signed int *__anonymous_object35[((unsigned long int )10)], signed int ***__anonymous_object36, signed int **__anonymous_object37[((unsigned long int )10)], signed int *const **__anonymous_object38, signed int *const *__anonymous_object39[((unsigned long int )10)], signed int *const *const *__anonymous_object40, signed int *const *const __anonymous_object41[((unsigned long int )10)]);
+signed int _X1fFi_Fi__FPi__FPPi__FPKPi__FPKPi__PiPiPPiPPiPPPiPPPiPPKPiPPKPiPKPKPiPKPKPi__1(__attribute__ ((unused)) signed int (*__anonymous_object42)(), __attribute__ ((unused)) signed int *(*__anonymous_object43)(), __attribute__ ((unused)) signed int **(*__anonymous_object44)(), __attribute__ ((unused)) signed int *const *(*__anonymous_object45)(), __attribute__ ((unused)) signed int *const *const (*__anonymous_object46)(), __attribute__ ((unused)) signed int *__anonymous_object47, __attribute__ ((unused)) signed int __anonymous_object48[((unsigned long int )10)], __attribute__ ((unused)) signed int **__anonymous_object49, __attribute__ ((unused)) signed int *__anonymous_object50[((unsigned long int )10)], __attribute__ ((unused)) signed int ***__anonymous_object51, __attribute__ ((unused)) signed int **__anonymous_object52[((unsigned long int )10)], __attribute__ ((unused)) signed int *const **__anonymous_object53, __attribute__ ((unused)) signed int *const *__anonymous_object54[((unsigned long int )10)], __attribute__ ((unused)) signed int *const *const *__anonymous_object55, __attribute__ ((unused)) signed int *const *const __anonymous_object56[((unsigned long int )10)]){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+}
+signed int _X1fFi_Pii__1(signed int *_X1fPi_1, signed int _X1ti_1){
+    __attribute__ ((unused)) signed int _X9_retval_fi_1;
+    signed int _X1Ti_2;
+}
Index: tests/.expect/init1-ERROR.nast.txt
===================================================================
--- tests/.expect/init1-ERROR.nast.txt	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ tests/.expect/init1-ERROR.nast.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -11,4 +11,6 @@
 ... to:
   reference to signed int
+... with resolved type:
+  reference to signed int
 init1.cfa:107:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
   Name: ?{}
@@ -16,5 +18,9 @@
   Generated Cast of:
     Variable Expression: _retval_f_py: pointer to signed int
+    ... with resolved type:
+      pointer to signed int
   ... to:
+    reference to pointer to signed int
+  ... with resolved type:
     reference to pointer to signed int
   Name: px
@@ -24,4 +30,6 @@
 ... to:
   reference to float
+... with resolved type:
+  reference to float
 init1.cfa:117:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
   Name: ?{}
@@ -29,5 +37,9 @@
   Generated Cast of:
     Variable Expression: _retval_f_py2: pointer to float
+    ... with resolved type:
+      pointer to float
   ... to:
+    reference to pointer to float
+  ... with resolved type:
     reference to pointer to float
   Name: cpx
@@ -37,4 +49,6 @@
 ... to:
   reference to instance of type T (not function type)
+... with resolved type:
+  reference to instance of type T (not function type)
 init1.cfa:128:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
   Name: ?{}
@@ -42,5 +56,9 @@
   Generated Cast of:
     Variable Expression: _retval_anycvt: pointer to instance of type T (not function type)
+    ... with resolved type:
+      pointer to instance of type T (not function type)
   ... to:
+    reference to pointer to instance of type T (not function type)
+  ... with resolved type:
     reference to pointer to instance of type T (not function type)
   Name: s
Index: tests/.expect/init1-ERROR.oast.txt
===================================================================
--- tests/.expect/init1-ERROR.oast.txt	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ tests/.expect/init1-ERROR.oast.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -1,13 +1,15 @@
 error: No reasonable alternatives for expression Untyped Init Expression
-  Name: rx  InitAlternative: reference to signed int
+  Name: cpx  InitAlternative: pointer to float
+error: No reasonable alternatives for expression Untyped Init Expression
+  Name: crx  InitAlternative: reference to float
 error: No reasonable alternatives for expression Untyped Init Expression
   Name: px  InitAlternative: pointer to signed int
 error: No reasonable alternatives for expression Untyped Init Expression
-  Name: crx  InitAlternative: reference to float
-error: No reasonable alternatives for expression Untyped Init Expression
-  Name: cpx  InitAlternative: pointer to float
+  Name: rx  InitAlternative: reference to signed int
 init1.cfa:104:1 error: No reasonable alternatives for expression Generated Cast of:
   Name: rx
 ... to:
+  reference to signed int
+with resolved type:
   reference to signed int
 init1.cfa:107:1 error: No reasonable alternatives for expression Applying untyped:
@@ -16,5 +18,9 @@
   Generated Cast of:
     Variable Expression: _retval_f_py: pointer to signed int
+    with resolved type:
+      pointer to signed int
   ... to:
+    reference to pointer to signed int
+  with resolved type:
     reference to pointer to signed int
   Name: px
@@ -24,4 +30,6 @@
 ... to:
   reference to float
+with resolved type:
+  reference to float
 init1.cfa:117:1 error: No reasonable alternatives for expression Applying untyped:
   Name: ?{}
@@ -29,5 +37,9 @@
   Generated Cast of:
     Variable Expression: _retval_f_py2: pointer to float
+    with resolved type:
+      pointer to float
   ... to:
+    reference to pointer to float
+  with resolved type:
     reference to pointer to float
   Name: cpx
@@ -37,4 +49,6 @@
 ... to:
   reference to instance of type T (not function type)
+with resolved type:
+  reference to instance of type T (not function type)
 init1.cfa:128:1 error: No reasonable alternatives for expression Applying untyped:
   Name: ?{}
@@ -42,5 +56,9 @@
   Generated Cast of:
     Variable Expression: _retval_anycvt: pointer to instance of type T (not function type)
+    with resolved type:
+      pointer to instance of type T (not function type)
   ... to:
+    reference to pointer to instance of type T (not function type)
+  with resolved type:
     reference to pointer to instance of type T (not function type)
   Name: s
Index: sts/errors/.expect/completeType.arm64.txt
===================================================================
--- tests/errors/.expect/completeType.arm64.txt	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ 	(revision )
@@ -1,141 +1,0 @@
-errors/completeType.cfa:34:1 error: Cannot choose between 2 alternatives for expression
-Generated Cast of:
-  Applying untyped:
-    Name: *?
-  ...to:
-    Name: x
-
-... to: nothing Alternatives are:
-Cost ( 0, 1, 2, 0, 1, -1, 0 ): Generated Cast of:
-      Application of
-        Variable Expression: *?: forall
-          DT: data type
-          function
-        ... with parameters
-          intrinsic pointer to instance of type DT (not function type)
-        ... returning
-          _retval__operator_deref: reference to instance of type DT (not function type)
-          ... with attributes:
-            Attribute with name: unused
-
-
-      ... to arguments
-        Variable Expression: x: pointer to instance of struct A with body 0
-
-    ... to: nothing
-  (types:
-    void 
-  )
-  Environment: -> instance of struct A with body 0 (no widening)
-
-
-Cost ( 0, 1, 2, 0, 1, -1, 0 ): Generated Cast of:
-      Application of
-        Variable Expression: *?: forall
-          DT: data type
-          function
-        ... with parameters
-          intrinsic pointer to instance of type DT (not function type)
-        ... returning
-          _retval__operator_deref: reference to instance of type DT (not function type)
-          ... with attributes:
-            Attribute with name: unused
-
-
-      ... to arguments
-        Variable Expression: x: pointer to instance of struct B with body 1
-
-    ... to: nothing
-  (types:
-    void 
-  )
-  Environment: -> instance of struct B with body 1 (no widening)
-
-
-
-errors/completeType.cfa:35:1 error: No reasonable alternatives for expression Applying untyped:
-  Name: foo
-...to:
-  Name: v
-
-errors/completeType.cfa:36:1 error: No reasonable alternatives for expression Applying untyped:
-  Name: baz
-...to:
-  Name: v
-
-errors/completeType.cfa:37:1 error: No reasonable alternatives for expression Applying untyped:
-  Name: quux
-...to:
-  Name: v
-
-errors/completeType.cfa:59:1 error: No reasonable alternatives for expression Applying untyped:
-  Name: baz
-...to:
-  Name: y
-
-errors/completeType.cfa:60:1 error: No reasonable alternatives for expression Applying untyped:
-  Name: quux
-...to:
-  Name: y
-
-errors/completeType.cfa:72:1 error: No alternatives with satisfiable assertions for Applying untyped:
-  Name: baz
-...to:
-  Name: z
-
-      Unsatisfiable alternative:
-Cost ( 0, 1, 0, 0, 1, -5, 0 ): Application of
-            Variable Expression: baz: forall
-              T: sized data type
-              ... with assertions
-                ?=?: pointer to function
-                ... with parameters
-                  reference to instance of type T (not function type)
-                  instance of type T (not function type)
-                ... returning
-                  _retval__operator_assign: instance of type T (not function type)
-                  ... with attributes:
-                    Attribute with name: unused
-
-
-                ?{}: pointer to function
-                ... with parameters
-                  reference to instance of type T (not function type)
-                ... returning nothing
-
-                ?{}: pointer to function
-                ... with parameters
-                  reference to instance of type T (not function type)
-                  instance of type T (not function type)
-                ... returning nothing
-
-                ^?{}: pointer to function
-                ... with parameters
-                  reference to instance of type T (not function type)
-                ... returning nothing
-
-
-              function
-            ... with parameters
-              pointer to instance of type T (not function type)
-            ... returning nothing
-
-          ... to arguments
-            Variable Expression: z: pointer to instance of type T (not function type)
-
-        (types:
-          void 
-        )
-        Environment: -> instance of type T (not function type) (no widening)
-
-      Could not satisfy assertion:
-?=?: pointer to function
-        ... with parameters
-          reference to instance of type _110_0_T (not function type)
-          instance of type _110_0_T (not function type)
-        ... returning
-          _retval__operator_assign: instance of type _110_0_T (not function type)
-          ... with attributes:
-            Attribute with name: unused
-
-
Index: tests/errors/.expect/completeType.nast.arm64.txt
===================================================================
--- tests/errors/.expect/completeType.nast.arm64.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
+++ tests/errors/.expect/completeType.nast.arm64.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -0,0 +1,199 @@
+errors/completeType.cfa:34:1 error: Cannot choose between 2 alternatives for expression
+Generated Cast of:
+  Applying untyped:
+    Name: *?
+  ...to:
+    Name: x
+
+... to: nothing
+... with resolved type:
+  void Alternatives are:
+Cost ( 0, 1, 2, 0, 1, -1, 0 ): Generated Cast of:
+      Application of
+        Variable Expression: *?: forall
+          DT: data type
+          function
+        ... with parameters
+          pointer to instance of type DT (not function type)
+        ... returning
+          reference to instance of type DT (not function type)
+
+        ... with resolved type:
+          pointer to forall
+            [unbound]:data type
+            function
+          ... with parameters
+            pointer to instance of type [unbound] (not function type)
+          ... returning
+            reference to instance of type [unbound] (not function type)
+
+        ... to arguments
+        Variable Expression: x: pointer to instance of struct B with body
+        ... with resolved type:
+          pointer to instance of struct B with body
+
+      ... with resolved type:
+        reference to instance of struct B with body
+    ... to: nothing
+    ... with resolved type:
+      void
+  (types:
+    void
+  )
+  Environment:([unbound]) -> instance of struct B with body (no widening)
+
+
+Cost ( 0, 1, 2, 0, 1, -1, 0 ): Generated Cast of:
+      Application of
+        Variable Expression: *?: forall
+          DT: data type
+          function
+        ... with parameters
+          pointer to instance of type DT (not function type)
+        ... returning
+          reference to instance of type DT (not function type)
+
+        ... with resolved type:
+          pointer to forall
+            [unbound]:data type
+            function
+          ... with parameters
+            pointer to instance of type [unbound] (not function type)
+          ... returning
+            reference to instance of type [unbound] (not function type)
+
+        ... to arguments
+        Variable Expression: x: pointer to instance of struct A without body
+        ... with resolved type:
+          pointer to instance of struct A without body
+
+      ... with resolved type:
+        reference to instance of struct A without body
+    ... to: nothing
+    ... with resolved type:
+      void
+  (types:
+    void
+  )
+  Environment:([unbound]) -> instance of struct A without body (no widening)
+
+
+
+errors/completeType.cfa:35:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: foo
+...to:
+  Name: v
+
+errors/completeType.cfa:36:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: baz
+...to:
+  Name: v
+
+errors/completeType.cfa:37:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: quux
+...to:
+  Name: v
+
+errors/completeType.cfa:59:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: baz
+...to:
+  Name: y
+
+errors/completeType.cfa:60:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
+  Name: quux
+...to:
+  Name: y
+
+errors/completeType.cfa:72:1 error: No alternatives with satisfiable assertions for Applying untyped:
+  Name: baz
+...to:
+  Name: z
+
+      Unsatisfiable alternative:
+Cost ( 0, 1, 0, 0, 1, -5, 0 ): Application of
+            Variable Expression: baz: forall
+              T: sized data type
+              ... with assertions
+                ?=?: pointer to function
+                ... with parameters
+                  reference to instance of type T (not function type)
+                  instance of type T (not function type)
+                ... returning
+                  instance of type T (not function type)
+
+                ?{}: pointer to function
+                ... with parameters
+                  reference to instance of type T (not function type)
+                ... returning nothing
+
+                ?{}: pointer to function
+                ... with parameters
+                  reference to instance of type T (not function type)
+                  instance of type T (not function type)
+                ... returning nothing
+
+                ^?{}: pointer to function
+                ... with parameters
+                  reference to instance of type T (not function type)
+                ... returning nothing
+
+
+              function
+            ... with parameters
+              pointer to instance of type T (not function type)
+            ... returning nothing
+
+            ... with resolved type:
+              pointer to forall
+                [unbound]:sized data type
+                ... with assertions
+                  ?=?: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                    instance of type [unbound] (not function type)
+                  ... returning
+                    instance of type [unbound] (not function type)
+
+                  ?{}: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                  ... returning nothing
+
+                  ?{}: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                    instance of type [unbound] (not function type)
+                  ... returning nothing
+
+                  ^?{}: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                  ... returning nothing
+
+
+                function
+              ... with parameters
+                pointer to instance of type [unbound] (not function type)
+              ... returning nothing
+
+            ... to arguments
+            Variable Expression: z: pointer to instance of type T (not function type)
+            ... with resolved type:
+              pointer to instance of type T (not function type)
+          with 1 pending inference slots
+
+          ... with resolved type:
+            void
+        (types:
+          void
+        )
+        Environment:([unbound]) -> instance of type T (not function type) (no widening)
+
+      Could not satisfy assertion:
+?=?: pointer to function
+        ... with parameters
+          reference to instance of type [unbound] (not function type)
+          instance of type [unbound] (not function type)
+        ... returning
+          instance of type [unbound] (not function type)
+
Index: tests/errors/.expect/completeType.nast.x64.txt
===================================================================
--- tests/errors/.expect/completeType.nast.x64.txt	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ tests/errors/.expect/completeType.nast.x64.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -6,5 +6,7 @@
     Name: x
 
-... to: nothing Alternatives are:
+... to: nothing
+... with resolved type:
+  void Alternatives are:
 Cost ( 0, 1, 2, 0, 1, -1, 0 ): Generated Cast of:
       Application of
@@ -17,12 +19,27 @@
           reference to instance of type DT (not function type)
 
+        ... with resolved type:
+          pointer to forall
+            [unbound]:data type
+            function
+          ... with parameters
+            pointer to instance of type [unbound] (not function type)
+          ... returning
+            reference to instance of type [unbound] (not function type)
+
         ... to arguments
         Variable Expression: x: pointer to instance of struct B with body
+        ... with resolved type:
+          pointer to instance of struct B with body
 
+      ... with resolved type:
+        reference to instance of struct B with body
     ... to: nothing
+    ... with resolved type:
+      void
   (types:
     void
   )
-  Environment:( _99_2_DT ) -> instance of struct B with body (no widening)
+  Environment:([unbound]) -> instance of struct B with body (no widening)
 
 
@@ -37,12 +54,27 @@
           reference to instance of type DT (not function type)
 
+        ... with resolved type:
+          pointer to forall
+            [unbound]:data type
+            function
+          ... with parameters
+            pointer to instance of type [unbound] (not function type)
+          ... returning
+            reference to instance of type [unbound] (not function type)
+
         ... to arguments
         Variable Expression: x: pointer to instance of struct A without body
+        ... with resolved type:
+          pointer to instance of struct A without body
 
+      ... with resolved type:
+        reference to instance of struct A without body
     ... to: nothing
+    ... with resolved type:
+      void
   (types:
     void
   )
-  Environment:( _99_2_DT ) -> instance of struct A without body (no widening)
+  Environment:([unbound]) -> instance of struct A without body (no widening)
 
 
@@ -112,19 +144,56 @@
             ... returning nothing
 
+            ... with resolved type:
+              pointer to forall
+                [unbound]:sized data type
+                ... with assertions
+                  ?=?: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                    instance of type [unbound] (not function type)
+                  ... returning
+                    instance of type [unbound] (not function type)
+
+                  ?{}: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                  ... returning nothing
+
+                  ?{}: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                    instance of type [unbound] (not function type)
+                  ... returning nothing
+
+                  ^?{}: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                  ... returning nothing
+
+
+                function
+              ... with parameters
+                pointer to instance of type [unbound] (not function type)
+              ... returning nothing
+
             ... to arguments
             Variable Expression: z: pointer to instance of type T (not function type)
+            ... with resolved type:
+              pointer to instance of type T (not function type)
           with 1 pending inference slots
 
+          ... with resolved type:
+            void
         (types:
           void
         )
-        Environment:( _118_0_T ) -> instance of type T (not function type) (no widening)
+        Environment:([unbound]) -> instance of type T (not function type) (no widening)
 
       Could not satisfy assertion:
 ?=?: pointer to function
         ... with parameters
-          reference to instance of type _118_0_T (not function type)
-          instance of type _118_0_T (not function type)
+          reference to instance of type [unbound] (not function type)
+          instance of type [unbound] (not function type)
         ... returning
-          instance of type _118_0_T (not function type)
+          instance of type [unbound] (not function type)
 
Index: tests/errors/.expect/completeType.oast.arm64.txt
===================================================================
--- tests/errors/.expect/completeType.oast.arm64.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
+++ tests/errors/.expect/completeType.oast.arm64.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -0,0 +1,219 @@
+errors/completeType.cfa:34:1 error: Cannot choose between 2 alternatives for expression
+Generated Cast of:
+  Applying untyped:
+    Name: *?
+  ...to:
+    Name: x
+
+... to: nothing
+with resolved type:
+  void  Alternatives are:
+Cost ( 0, 1, 2, 0, 1, -1, 0 ): Generated Cast of:
+      Application of
+        Variable Expression: *?: forall
+          DT: data type
+          function
+        ... with parameters
+          intrinsic pointer to instance of type DT (not function type)
+        ... returning
+          _retval__operator_deref: reference to instance of type DT (not function type)
+          ... with attributes:
+            Attribute with name: unused
+
+
+        with resolved type:
+          pointer to forall
+            [unbound]:data type
+            function
+          ... with parameters
+            intrinsic pointer to instance of type [unbound] (not function type)
+          ... returning
+            _retval__operator_deref: reference to instance of type [unbound] (not function type)
+            ... with attributes:
+              Attribute with name: unused
+
+
+      ... to arguments
+        Variable Expression: x: pointer to instance of struct A with body 0
+        with resolved type:
+          pointer to instance of struct A with body 0
+
+      with resolved type:
+        reference to instance of struct A with body 0
+    ... to: nothing
+    with resolved type:
+      void 
+  (types:
+    void 
+  )
+  Environment:([unbound]) -> instance of struct A with body 0 (no widening)
+
+
+Cost ( 0, 1, 2, 0, 1, -1, 0 ): Generated Cast of:
+      Application of
+        Variable Expression: *?: forall
+          DT: data type
+          function
+        ... with parameters
+          intrinsic pointer to instance of type DT (not function type)
+        ... returning
+          _retval__operator_deref: reference to instance of type DT (not function type)
+          ... with attributes:
+            Attribute with name: unused
+
+
+        with resolved type:
+          pointer to forall
+            [unbound]:data type
+            function
+          ... with parameters
+            intrinsic pointer to instance of type [unbound] (not function type)
+          ... returning
+            _retval__operator_deref: reference to instance of type [unbound] (not function type)
+            ... with attributes:
+              Attribute with name: unused
+
+
+      ... to arguments
+        Variable Expression: x: pointer to instance of struct B with body 1
+        with resolved type:
+          pointer to instance of struct B with body 1
+
+      with resolved type:
+        reference to instance of struct B with body 1
+    ... to: nothing
+    with resolved type:
+      void 
+  (types:
+    void 
+  )
+  Environment:([unbound]) -> instance of struct B with body 1 (no widening)
+
+
+
+errors/completeType.cfa:35:1 error: No reasonable alternatives for expression Applying untyped:
+  Name: foo
+...to:
+  Name: v
+
+errors/completeType.cfa:36:1 error: No reasonable alternatives for expression Applying untyped:
+  Name: baz
+...to:
+  Name: v
+
+errors/completeType.cfa:37:1 error: No reasonable alternatives for expression Applying untyped:
+  Name: quux
+...to:
+  Name: v
+
+errors/completeType.cfa:59:1 error: No reasonable alternatives for expression Applying untyped:
+  Name: baz
+...to:
+  Name: y
+
+errors/completeType.cfa:60:1 error: No reasonable alternatives for expression Applying untyped:
+  Name: quux
+...to:
+  Name: y
+
+errors/completeType.cfa:72:1 error: No alternatives with satisfiable assertions for Applying untyped:
+  Name: baz
+...to:
+  Name: z
+
+      Unsatisfiable alternative:
+Cost ( 0, 1, 0, 0, 1, -5, 0 ): Application of
+            Variable Expression: baz: forall
+              T: sized data type
+              ... with assertions
+                ?=?: pointer to function
+                ... with parameters
+                  reference to instance of type T (not function type)
+                  instance of type T (not function type)
+                ... returning
+                  _retval__operator_assign: instance of type T (not function type)
+                  ... with attributes:
+                    Attribute with name: unused
+
+
+                ?{}: pointer to function
+                ... with parameters
+                  reference to instance of type T (not function type)
+                ... returning nothing
+
+                ?{}: pointer to function
+                ... with parameters
+                  reference to instance of type T (not function type)
+                  instance of type T (not function type)
+                ... returning nothing
+
+                ^?{}: pointer to function
+                ... with parameters
+                  reference to instance of type T (not function type)
+                ... returning nothing
+
+
+              function
+            ... with parameters
+              pointer to instance of type T (not function type)
+            ... returning nothing
+
+            with resolved type:
+              pointer to forall
+                [unbound]:sized data type
+                ... with assertions
+                  ?=?: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                    instance of type [unbound] (not function type)
+                  ... returning
+                    _retval__operator_assign: instance of type [unbound] (not function type)
+                    ... with attributes:
+                      Attribute with name: unused
+
+
+                  ?{}: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                  ... returning nothing
+
+                  ?{}: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                    instance of type [unbound] (not function type)
+                  ... returning nothing
+
+                  ^?{}: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                  ... returning nothing
+
+
+                function
+              ... with parameters
+                pointer to instance of type [unbound] (not function type)
+              ... returning nothing
+
+          ... to arguments
+            Variable Expression: z: pointer to instance of type T (not function type)
+            with resolved type:
+              pointer to instance of type T (not function type)
+
+          with resolved type:
+            void 
+        (types:
+          void 
+        )
+        Environment:([unbound]) -> instance of type T (not function type) (no widening)
+
+      Could not satisfy assertion:
+?=?: pointer to function
+        ... with parameters
+          reference to instance of type [unbound] (not function type)
+          instance of type [unbound] (not function type)
+        ... returning
+          _retval__operator_assign: instance of type [unbound] (not function type)
+          ... with attributes:
+            Attribute with name: unused
+
+
Index: tests/errors/.expect/completeType.oast.x64.txt
===================================================================
--- tests/errors/.expect/completeType.oast.x64.txt	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ tests/errors/.expect/completeType.oast.x64.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -6,5 +6,7 @@
     Name: x
 
-... to: nothing Alternatives are:
+... to: nothing
+with resolved type:
+  void  Alternatives are:
 Cost ( 0, 1, 2, 0, 1, -1, 0 ): Generated Cast of:
       Application of
@@ -20,12 +22,30 @@
 
 
+        with resolved type:
+          pointer to forall
+            [unbound]:data type
+            function
+          ... with parameters
+            intrinsic pointer to instance of type [unbound] (not function type)
+          ... returning
+            _retval__operator_deref: reference to instance of type [unbound] (not function type)
+            ... with attributes:
+              Attribute with name: unused
+
+
       ... to arguments
         Variable Expression: x: pointer to instance of struct A with body 0
-
+        with resolved type:
+          pointer to instance of struct A with body 0
+
+      with resolved type:
+        reference to instance of struct A with body 0
     ... to: nothing
+    with resolved type:
+      void 
   (types:
     void 
   )
-  Environment: -> instance of struct A with body 0 (no widening)
+  Environment:([unbound]) -> instance of struct A with body 0 (no widening)
 
 
@@ -43,12 +63,30 @@
 
 
+        with resolved type:
+          pointer to forall
+            [unbound]:data type
+            function
+          ... with parameters
+            intrinsic pointer to instance of type [unbound] (not function type)
+          ... returning
+            _retval__operator_deref: reference to instance of type [unbound] (not function type)
+            ... with attributes:
+              Attribute with name: unused
+
+
       ... to arguments
         Variable Expression: x: pointer to instance of struct B with body 1
-
+        with resolved type:
+          pointer to instance of struct B with body 1
+
+      with resolved type:
+        reference to instance of struct B with body 1
     ... to: nothing
+    with resolved type:
+      void 
   (types:
     void 
   )
-  Environment: -> instance of struct B with body 1 (no widening)
+  Environment:([unbound]) -> instance of struct B with body 1 (no widening)
 
 
@@ -121,19 +159,59 @@
             ... returning nothing
 
+            with resolved type:
+              pointer to forall
+                [unbound]:sized data type
+                ... with assertions
+                  ?=?: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                    instance of type [unbound] (not function type)
+                  ... returning
+                    _retval__operator_assign: instance of type [unbound] (not function type)
+                    ... with attributes:
+                      Attribute with name: unused
+
+
+                  ?{}: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                  ... returning nothing
+
+                  ?{}: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                    instance of type [unbound] (not function type)
+                  ... returning nothing
+
+                  ^?{}: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                  ... returning nothing
+
+
+                function
+              ... with parameters
+                pointer to instance of type [unbound] (not function type)
+              ... returning nothing
+
           ... to arguments
             Variable Expression: z: pointer to instance of type T (not function type)
-
+            with resolved type:
+              pointer to instance of type T (not function type)
+
+          with resolved type:
+            void 
         (types:
           void 
         )
-        Environment: -> instance of type T (not function type) (no widening)
+        Environment:([unbound]) -> instance of type T (not function type) (no widening)
 
       Could not satisfy assertion:
 ?=?: pointer to function
         ... with parameters
-          reference to instance of type _110_0_T (not function type)
-          instance of type _110_0_T (not function type)
+          reference to instance of type [unbound] (not function type)
+          instance of type [unbound] (not function type)
         ... returning
-          _retval__operator_assign: instance of type _110_0_T (not function type)
+          _retval__operator_assign: instance of type [unbound] (not function type)
           ... with attributes:
             Attribute with name: unused
Index: tests/meta/.expect/archVast.nast.arm64.txt
===================================================================
--- tests/meta/.expect/archVast.nast.arm64.txt	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ tests/meta/.expect/archVast.nast.arm64.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -3,8 +3,14 @@
   Name: FA64
 ... to:
+  char
+... with resolved type:
   char Alternatives are:
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
       Variable Expression: FA64: signed int
+      ... with resolved type:
+        signed int
     ... to:
+      char
+    ... with resolved type:
       char
   (types:
@@ -18,5 +24,12 @@
       ... returning nothing
 
+      ... with resolved type:
+        pointer to function
+          accepting unspecified arguments
+        ... returning nothing
+
     ... to:
+      char
+    ... with resolved type:
       char
   (types:
@@ -27,5 +40,9 @@
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
       Variable Expression: FA64: double
+      ... with resolved type:
+        double
     ... to:
+      char
+    ... with resolved type:
       char
   (types:
Index: tests/meta/.expect/archVast.nast.x64.txt
===================================================================
--- tests/meta/.expect/archVast.nast.x64.txt	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ tests/meta/.expect/archVast.nast.x64.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -3,8 +3,14 @@
   Name: FX64
 ... to:
+  char
+... with resolved type:
   char Alternatives are:
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
       Variable Expression: FX64: signed int
+      ... with resolved type:
+        signed int
     ... to:
+      char
+    ... with resolved type:
       char
   (types:
@@ -18,5 +24,12 @@
       ... returning nothing
 
+      ... with resolved type:
+        pointer to function
+          accepting unspecified arguments
+        ... returning nothing
+
     ... to:
+      char
+    ... with resolved type:
       char
   (types:
@@ -27,5 +40,9 @@
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
       Variable Expression: FX64: double
+      ... with resolved type:
+        double
     ... to:
+      char
+    ... with resolved type:
       char
   (types:
Index: tests/meta/.expect/archVast.nast.x86.txt
===================================================================
--- tests/meta/.expect/archVast.nast.x86.txt	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ tests/meta/.expect/archVast.nast.x86.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -3,8 +3,14 @@
   Name: FX86
 ... to:
+  char
+... with resolved type:
   char Alternatives are:
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
       Variable Expression: FX86: signed int
+      ... with resolved type:
+        signed int
     ... to:
+      char
+    ... with resolved type:
       char
   (types:
@@ -18,5 +24,12 @@
       ... returning nothing
 
+      ... with resolved type:
+        pointer to function
+          accepting unspecified arguments
+        ... returning nothing
+
     ... to:
+      char
+    ... with resolved type:
       char
   (types:
@@ -27,5 +40,9 @@
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
       Variable Expression: FX86: double
+      ... with resolved type:
+        double
     ... to:
+      char
+    ... with resolved type:
       char
   (types:
Index: tests/meta/.expect/archVast.oast.arm64.txt
===================================================================
--- tests/meta/.expect/archVast.oast.arm64.txt	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ tests/meta/.expect/archVast.oast.arm64.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -3,4 +3,6 @@
   Name: FA64
 ... to:
+  char
+with resolved type:
   char Alternatives are:
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
@@ -9,5 +11,12 @@
       ... returning nothing
 
+      with resolved type:
+        pointer to function
+          accepting unspecified arguments
+        ... returning nothing
+
     ... to:
+      char
+    with resolved type:
       char
   (types:
@@ -18,5 +27,9 @@
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
       Variable Expression: FA64: double
+      with resolved type:
+        double
     ... to:
+      char
+    with resolved type:
       char
   (types:
@@ -27,5 +40,9 @@
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
       Variable Expression: FA64: signed int
+      with resolved type:
+        signed int
     ... to:
+      char
+    with resolved type:
       char
   (types:
Index: tests/meta/.expect/archVast.oast.x64.txt
===================================================================
--- tests/meta/.expect/archVast.oast.x64.txt	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ tests/meta/.expect/archVast.oast.x64.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -3,4 +3,6 @@
   Name: FX64
 ... to:
+  char
+with resolved type:
   char Alternatives are:
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
@@ -9,5 +11,12 @@
       ... returning nothing
 
+      with resolved type:
+        pointer to function
+          accepting unspecified arguments
+        ... returning nothing
+
     ... to:
+      char
+    with resolved type:
       char
   (types:
@@ -18,5 +27,9 @@
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
       Variable Expression: FX64: double
+      with resolved type:
+        double
     ... to:
+      char
+    with resolved type:
       char
   (types:
@@ -27,5 +40,9 @@
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
       Variable Expression: FX64: signed int
+      with resolved type:
+        signed int
     ... to:
+      char
+    with resolved type:
       char
   (types:
Index: tests/meta/.expect/archVast.oast.x86.txt
===================================================================
--- tests/meta/.expect/archVast.oast.x86.txt	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ tests/meta/.expect/archVast.oast.x86.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -3,4 +3,6 @@
   Name: FX86
 ... to:
+  char
+with resolved type:
   char Alternatives are:
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
@@ -9,5 +11,12 @@
       ... returning nothing
 
+      with resolved type:
+        pointer to function
+          accepting unspecified arguments
+        ... returning nothing
+
     ... to:
+      char
+    with resolved type:
       char
   (types:
@@ -18,5 +27,9 @@
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
       Variable Expression: FX86: double
+      with resolved type:
+        double
     ... to:
+      char
+    with resolved type:
       char
   (types:
@@ -27,5 +40,9 @@
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
       Variable Expression: FX86: signed int
+      with resolved type:
+        signed int
     ... to:
+      char
+    with resolved type:
       char
   (types:
Index: tests/raii/.expect/ctor-autogen-ERR1.nast.txt
===================================================================
--- tests/raii/.expect/ctor-autogen-ERR1.nast.txt	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ tests/raii/.expect/ctor-autogen-ERR1.nast.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -7,4 +7,11 @@
         signed int
       ... returning nothing
+
+      ... with resolved type:
+        function
+        ... with parameters
+          reference to instance of struct Managed with body
+          signed int
+        ... returning nothing
 
       ... deleted by: ?{}: function
@@ -23,4 +30,12 @@
                 signed int
 
+              ... with resolved type:
+                pointer to function
+                ... with parameters
+                  reference to signed int
+                  signed int
+                ... returning
+                  signed int
+
               ... to arguments
               Generated Cast of:
@@ -30,13 +45,27 @@
                   Generated Cast of:
                     Variable Expression: m: reference to instance of struct Managed with body
+                    ... with resolved type:
+                      reference to instance of struct Managed with body
                   ... to:
                     instance of struct Managed with body
+                  ... with resolved type:
+                    instance of struct Managed with body
+                ... with resolved type:
+                  signed int
               ... to:
+                reference to signed int
+              ... with resolved type:
                 reference to signed int
               Generated Cast of:
                 Constant Expression (0: zero_t)
+                ... with resolved type:
+                  zero_t
               ... to:
                 signed int
+              ... with resolved type:
+                signed int
 
+            ... with resolved type:
+              signed int
             ... with environment:
               Types:
@@ -47,7 +76,17 @@
     Generated Cast of:
       Variable Expression: x: instance of struct Managed with body
+      ... with resolved type:
+        instance of struct Managed with body
     ... to:
       reference to instance of struct Managed with body
+    ... with resolved type:
+      reference to instance of struct Managed with body
     Constant Expression (123: signed int)
+    ... with resolved type:
+      signed int
 
+  ... with resolved type:
+    void
 ... to: nothing
+... with resolved type:
+  void
Index: tests/raii/.expect/ctor-autogen-ERR1.oast.txt
===================================================================
--- tests/raii/.expect/ctor-autogen-ERR1.oast.txt	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ tests/raii/.expect/ctor-autogen-ERR1.oast.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -7,4 +7,11 @@
         x: signed int
       ... returning nothing
+
+      with resolved type:
+        function
+        ... with parameters
+          _dst: reference to instance of struct Managed with body 1
+          x: signed int
+        ... returning nothing
 
       ... deleted by: ?{}: function
@@ -26,4 +33,15 @@
 
 
+              with resolved type:
+                pointer to function
+                ... with parameters
+                  intrinsic reference to signed int
+                  intrinsic signed int
+                ... returning
+                  _retval__operator_assign: signed int
+                  ... with attributes:
+                    Attribute with name: unused
+
+
             ... to arguments
               Generated Cast of:
@@ -33,13 +51,27 @@
                   Generated Cast of:
                     Variable Expression: m: reference to instance of struct Managed with body 1
+                    with resolved type:
+                      reference to instance of struct Managed with body 1
                   ... to:
                     instance of struct Managed with body 1
+                  with resolved type:
+                    instance of struct Managed with body 1
+                with resolved type:
+                  signed int
               ... to:
+                reference to signed int
+              with resolved type:
                 reference to signed int
               Generated Cast of:
                 constant expression (0 0: zero_t)
+                with resolved type:
+                  zero_t
               ... to:
                 signed int
+              with resolved type:
+                signed int
 
+            with resolved type:
+              signed int
             ... with environment:
               Types:
@@ -50,7 +82,17 @@
     Generated Cast of:
       Variable Expression: x: instance of struct Managed with body 1
+      with resolved type:
+        instance of struct Managed with body 1
     ... to:
       reference to instance of struct Managed with body 1
+    with resolved type:
+      reference to instance of struct Managed with body 1
     constant expression (123 123: signed int)
+    with resolved type:
+      signed int
 
+  with resolved type:
+    void 
 ... to: nothing
+with resolved type:
+  void 
Index: tests/warnings/.expect/self-assignment.nast.txt
===================================================================
--- tests/warnings/.expect/self-assignment.nast.txt	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ tests/warnings/.expect/self-assignment.nast.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -1,9 +1,17 @@
 warnings/self-assignment.cfa:29:1 warning: self assignment of expression: Generated Cast of:
   Variable Expression: j: signed int
+  ... with resolved type:
+    signed int
 ... to:
+  reference to signed int
+... with resolved type:
   reference to signed int
 warnings/self-assignment.cfa:30:1 warning: self assignment of expression: Generated Cast of:
   Variable Expression: s: instance of struct S with body
+  ... with resolved type:
+    instance of struct S with body
 ... to:
+  reference to instance of struct S with body
+... with resolved type:
   reference to instance of struct S with body
 warnings/self-assignment.cfa:31:1 warning: self assignment of expression: Generated Cast of:
@@ -12,5 +20,11 @@
   ... from aggregate:
     Variable Expression: s: instance of struct S with body
+    ... with resolved type:
+      instance of struct S with body
+  ... with resolved type:
+    signed int
 ... to:
+  reference to signed int
+... with resolved type:
   reference to signed int
 warnings/self-assignment.cfa:32:1 warning: self assignment of expression: Generated Cast of:
@@ -22,5 +36,13 @@
     ... from aggregate:
       Variable Expression: t: instance of struct T with body
+      ... with resolved type:
+        instance of struct T with body
+    ... with resolved type:
+      instance of struct S with body
+  ... with resolved type:
+    signed int
 ... to:
+  reference to signed int
+... with resolved type:
   reference to signed int
 warnings/self-assignment.cfa: In function '_X4mainFi___1':
Index: tests/warnings/.expect/self-assignment.oast.txt
===================================================================
--- tests/warnings/.expect/self-assignment.oast.txt	(revision f0d67e5abea7221dccd4183dd58ccc6cdbee32fc)
+++ tests/warnings/.expect/self-assignment.oast.txt	(revision b5629d817a4c191bb65243b481f578d74e1396b3)
@@ -1,9 +1,17 @@
 warnings/self-assignment.cfa:29:1 warning: self assignment of expression: Generated Cast of:
   Variable Expression: j: signed int
+  with resolved type:
+    signed int
 ... to:
+  reference to signed int
+with resolved type:
   reference to signed int
 warnings/self-assignment.cfa:30:1 warning: self assignment of expression: Generated Cast of:
   Variable Expression: s: instance of struct S with body 1
+  with resolved type:
+    instance of struct S with body 1
 ... to:
+  reference to instance of struct S with body 1
+with resolved type:
   reference to instance of struct S with body 1
 warnings/self-assignment.cfa:31:1 warning: self assignment of expression: Generated Cast of:
@@ -12,5 +20,11 @@
   ... from aggregate:
     Variable Expression: s: instance of struct S with body 1
+    with resolved type:
+      instance of struct S with body 1
+  with resolved type:
+    signed int
 ... to:
+  reference to signed int
+with resolved type:
   reference to signed int
 warnings/self-assignment.cfa:32:1 warning: self assignment of expression: Generated Cast of:
@@ -22,5 +36,13 @@
     ... from aggregate:
       Variable Expression: t: instance of struct T with body 1
+      with resolved type:
+        instance of struct T with body 1
+    with resolved type:
+      instance of struct S with body 1
+  with resolved type:
+    signed int
 ... to:
+  reference to signed int
+with resolved type:
   reference to signed int
 warnings/self-assignment.cfa: In function '_X4mainFi___1':
