Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 15596d7ac54783f6279f404ef027e41002b4114f)
+++ src/Parser/parser.yy	(revision a96ce078f8de5b15c4828ec84034fba085d2bfd0)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Feb 25 13:23:16 2023
-// Update Count     : 5989
+// Last Modified On : Tue Mar 14 09:37:58 2023
+// Update Count     : 5990
 //
 
@@ -2055,10 +2055,4 @@
 	basic_type_specifier
 	| sue_type_specifier
-		{
-			// printf( "sue_type_specifier2 %p %s\n", $$, $$->type->aggregate.name ? $$->type->aggregate.name->c_str() : "(nil)" );
-		  	// for ( Attribute * attr: reverseIterate( $$->attributes ) ) {
-			//   printf( "\tattr %s\n", attr->name.c_str() );
-			// } // for
-		}
 	| type_type_specifier
 	;
@@ -2400,14 +2394,5 @@
 	  '{' field_declaration_list_opt '}' type_parameters_opt
 		{
-			// printf( "aggregate_type1 %s\n", $3.str->c_str() );
-			// if ( $2 )
-			// 	for ( Attribute * attr: reverseIterate( $2->attributes ) ) {
-			// 		printf( "copySpecifiers12 %s\n", attr->name.c_str() );
-			// 	} // for
 			$$ = DeclarationNode::newAggregate( $1, $3, $8, $6, true )->addQualifiers( $2 );
-			// printf( "aggregate_type2 %p %s\n", $$, $$->type->aggregate.name ? $$->type->aggregate.name->c_str() : "(nil)" );
-			// for ( Attribute * attr: reverseIterate( $$->attributes ) ) {
-			// 	printf( "aggregate_type3 %s\n", attr->name.c_str() );
-			// } // for
 		}
 	| aggregate_key attribute_list_opt TYPEDEFname		// unqualified type name
@@ -2418,5 +2403,4 @@
 	  '{' field_declaration_list_opt '}' type_parameters_opt
 		{
-			// printf( "AGG3\n" );
 			DeclarationNode::newFromTypedef( $3 );
 			$$ = DeclarationNode::newAggregate( $1, $3, $8, $6, true )->addQualifiers( $2 );
@@ -2429,5 +2413,4 @@
 	  '{' field_declaration_list_opt '}' type_parameters_opt
 		{
-			// printf( "AGG4\n" );
 			DeclarationNode::newFromTypeGen( $3, nullptr );
 			$$ = DeclarationNode::newAggregate( $1, $3, $8, $6, true )->addQualifiers( $2 );
@@ -2456,8 +2439,12 @@
 			// switched to a TYPEGENname. Link any generic arguments from typegen_name to new generic declaration and
 			// delete newFromTypeGen.
-			$$ = DeclarationNode::newAggregate( $1, $3->type->symbolic.name, $3->type->symbolic.actuals, nullptr, false )->addQualifiers( $2 );
-			$3->type->symbolic.name = nullptr;
-			$3->type->symbolic.actuals = nullptr;
-			delete $3;
+			if ( $3->type->kind == TypeData::SymbolicInst && ! $3->type->symbolic.isTypedef ) {
+				$$ = $3->addQualifiers( $2 );
+			} else {
+				$$ = DeclarationNode::newAggregate( $1, $3->type->symbolic.name, $3->type->symbolic.actuals, nullptr, false )->addQualifiers( $2 );
+				$3->type->symbolic.name = nullptr;			// copied to $$
+				$3->type->symbolic.actuals = nullptr;
+				delete $3;
+			}
 		}
 	;
@@ -2796,5 +2783,5 @@
 type_no_function:										// sizeof, alignof, cast (constructor)
 	cfa_abstract_declarator_tuple						// CFA
-	| type_specifier
+	| type_specifier									// cannot be type_specifier_nobody, e.g., (struct S {}){} is a thing
 	| type_specifier abstract_declarator
 		{ $$ = $2->addType( $1 ); }
