Index: src/AST/Pass.hpp
===================================================================
--- src/AST/Pass.hpp	(revision 5408b5919f1f591121d6cdabf6c6b5e605e61e6b)
+++ src/AST/Pass.hpp	(revision c2b3243ebb592c712c00231ae4cd93fd4a4eea3e)
@@ -167,5 +167,5 @@
 	const ast::Expr *             visit( const ast::UntypedExpr          * ) override final;
 	const ast::Expr *             visit( const ast::NameExpr             * ) override final;
-	const ast::Expr *			  visit( const ast::QualifiedNameExpr	 * ) override final;
+	const ast::Expr *             visit( const ast::QualifiedNameExpr	 * ) override final;
 	const ast::Expr *             visit( const ast::AddressExpr          * ) override final;
 	const ast::Expr *             visit( const ast::LabelAddressExpr     * ) override final;
Index: src/GenPoly/ScrubTyVars.h
===================================================================
--- src/GenPoly/ScrubTyVars.h	(revision 5408b5919f1f591121d6cdabf6c6b5e605e61e6b)
+++ src/GenPoly/ScrubTyVars.h	(revision c2b3243ebb592c712c00231ae4cd93fd4a4eea3e)
@@ -116,5 +116,5 @@
 		node_t const * target, const TypeVarMap & typeVars ) {
 	return strict_dynamic_cast<node_t const *>(
-			scrubTypeVars<ast::Node>( target ) );
+			scrubTypeVars<ast::Node>( target, typeVars ) );
 }
 
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision 5408b5919f1f591121d6cdabf6c6b5e605e61e6b)
+++ src/Parser/ParseNode.h	(revision c2b3243ebb592c712c00231ae4cd93fd4a4eea3e)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:28:16 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Feb  2 09:15:49 2022
-// Update Count     : 905
+// Last Modified On : Tue Oct 18 14:15:37 2022
+// Update Count     : 936
 //
 
@@ -465,5 +465,9 @@
 			errors.append( e );
 		} // try
-		cur = dynamic_cast< NodeType * >( cur->get_next() );
+		const ParseNode * temp = (cur->get_next());
+		cur = dynamic_cast< const NodeType * >( temp );	// should not return nullptr
+		if ( ! cur && temp ) {							// non-homogeneous nodes ?
+			SemanticError( cur->location, "internal error, non-homogeneous nodes founds in buildList processing." );
+		} // if
 	} // while
 	if ( ! errors.isEmpty() ) {
Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision 5408b5919f1f591121d6cdabf6c6b5e605e61e6b)
+++ src/Parser/lex.ll	(revision c2b3243ebb592c712c00231ae4cd93fd4a4eea3e)
@@ -10,6 +10,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Tue Sep 20 21:18:55 2022
- * Update Count     : 762
+ * Last Modified On : Thu Oct 13 20:46:04 2022
+ * Update Count     : 764
  */
 
@@ -331,5 +331,6 @@
 __uint128_t		{ KEYWORD_RETURN(UINT128); }			// GCC
 unsigned		{ KEYWORD_RETURN(UNSIGNED); }
-__builtin_va_list { KEYWORD_RETURN(VALIST); }			// GCC
+__builtin_va_arg { KEYWORD_RETURN(VA_ARG); }			// GCC
+__builtin_va_list { KEYWORD_RETURN(VA_LIST); }			// GCC
 virtual			{ KEYWORD_RETURN(VIRTUAL); }			// CFA
 void			{ KEYWORD_RETURN(VOID); }
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 5408b5919f1f591121d6cdabf6c6b5e605e61e6b)
+++ src/Parser/parser.yy	(revision c2b3243ebb592c712c00231ae4cd93fd4a4eea3e)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Oct  8 08:21:18 2022
-// Update Count     : 5709
+// Last Modified On : Fri Oct 14 14:04:43 2022
+// Update Count     : 5751
 //
 
@@ -305,5 +305,5 @@
 %token TYPEDEF
 %token EXTERN STATIC AUTO REGISTER
-%token THREADLOCALGCC THREADLOCALC11						// GCC, C11
+%token THREADLOCALGCC THREADLOCALC11					// GCC, C11
 %token INLINE FORTRAN									// C99, extension ISO/IEC 9899:1999 Section J.5.9(1)
 %token NORETURN											// C11
@@ -318,5 +318,5 @@
 %token DECIMAL32 DECIMAL64 DECIMAL128					// GCC
 %token ZERO_T ONE_T										// CFA
-%token SIZEOF TYPEOF VALIST AUTO_TYPE					// GCC
+%token SIZEOF TYPEOF VA_LIST VA_ARG AUTO_TYPE			// GCC
 %token OFFSETOF BASETYPEOF TYPEID						// CFA
 %token ENUM STRUCT UNION
@@ -409,5 +409,5 @@
 // declarations
 %type<decl> abstract_declarator abstract_ptr abstract_array abstract_function array_dimension multi_array_dimension
-%type<decl> abstract_parameter_declarator abstract_parameter_ptr abstract_parameter_array abstract_parameter_function array_parameter_dimension array_parameter_1st_dimension
+%type<decl> abstract_parameter_declarator_opt abstract_parameter_declarator abstract_parameter_ptr abstract_parameter_array abstract_parameter_function array_parameter_dimension array_parameter_1st_dimension
 %type<decl> abstract_parameter_declaration
 
@@ -698,7 +698,7 @@
 	primary_expression
 	| postfix_expression '[' assignment_expression ',' tuple_expression_list ']'
-			// Historic, transitional: Disallow commas in subscripts.
-			// Switching to this behaviour may help check if a C compatibilty case uses comma-exprs in subscripts.
-			// Current: Commas in subscripts make tuples.
+		// Historic, transitional: Disallow commas in subscripts.
+		// Switching to this behaviour may help check if a C compatibilty case uses comma-exprs in subscripts.
+		// Current: Commas in subscripts make tuples.
 		{ $$ = new ExpressionNode( build_binary_val( OperKinds::Index, $1, new ExpressionNode( build_tuple( (ExpressionNode *)($3->set_last( $5 ) ) )) ) ); }
 	| postfix_expression '[' assignment_expression ']'
@@ -720,4 +720,8 @@
 	| postfix_expression '(' argument_expression_list_opt ')'
 		{ $$ = new ExpressionNode( build_func( $1, $3 ) ); }
+	| VA_ARG '(' primary_expression ',' declaration_specifier_nobody abstract_parameter_declarator_opt ')'
+		// { SemanticError( yylloc, "va_arg is currently unimplemented." ); $$ = nullptr; }
+		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_varref( new string( "__builtin_va_arg") ) ),
+											   (ExpressionNode *)($3->set_last( (ExpressionNode *)($6 ? $6->addType( $5 ) : $5) )) ) ); }
 	| postfix_expression '`' identifier					// CFA, postfix call
 		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_varref( build_postfix_name( $3 ) ) ), $1 ) ); }
@@ -2156,5 +2160,5 @@
 	| LONG
 		{ $$ = DeclarationNode::newLength( DeclarationNode::Long ); }
-	| VALIST											// GCC, __builtin_va_list
+	| VA_LIST											// GCC, __builtin_va_list
 		{ $$ = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
 	| AUTO_TYPE
@@ -3676,4 +3680,10 @@
 // functions.
 
+abstract_parameter_declarator_opt:
+	// empty
+		{ $$ = nullptr; }
+	| abstract_parameter_declarator
+	;
+
 abstract_parameter_declarator:
 	abstract_parameter_ptr
