Index: src/AST/Attribute.cpp
===================================================================
--- src/AST/Attribute.cpp	(revision 0b8bf2756f5d522b7c14e40729098a2599ad2997)
+++ src/AST/Attribute.cpp	(revision a2e758ebdca5340747012d5baabc30ce367b85a8)
@@ -28,5 +28,5 @@
 	auto end = name.find_last_not_of('_');
 	if ( begin == std::string::npos || end == std::string::npos ) return "";
-	
+
 	// convert to lowercase
 	std::string ret;
Index: src/AST/Attribute.hpp
===================================================================
--- src/AST/Attribute.hpp	(revision 0b8bf2756f5d522b7c14e40729098a2599ad2997)
+++ src/AST/Attribute.hpp	(revision a2e758ebdca5340747012d5baabc30ce367b85a8)
@@ -30,8 +30,8 @@
 public:
 	std::string name;
-	std::vector<ptr<Expr>> parameters;
+	std::vector<ptr<Expr>> params;
 
 	Attribute( const std::string & name = "", std::vector<ptr<Expr>> && params = {})
-	: name( name ), parameters( params ) {}
+	: name( name ), params( params ) {}
 	virtual ~Attribute() = default;
 
Index: src/AST/Convert.cpp
===================================================================
--- src/AST/Convert.cpp	(revision 0b8bf2756f5d522b7c14e40729098a2599ad2997)
+++ src/AST/Convert.cpp	(revision a2e758ebdca5340747012d5baabc30ce367b85a8)
@@ -1130,5 +1130,5 @@
 	const ast::Type * visit( const ast::FunctionType * node ) override final {
 		auto ty = new FunctionType {
-			cv( node ), 
+			cv( node ),
 			(bool)node->isVarArgs
 		};
@@ -1328,5 +1328,5 @@
 		auto attr = new Attribute(
 			node->name,
-			get<Expression>().acceptL(node->parameters)
+			get<Expression>().acceptL(node->params)
 		);
 		this->node = attr;
@@ -1338,4 +1338,5 @@
 		// TypeSubstitution is not a node in the old model, so the conversion result wouldn't fit in this->node.
 		assert( 0 );
+		(void)node;
 		return nullptr;
 	}
@@ -1409,5 +1410,5 @@
 #	define GET_LABELS_V(labels) \
 		to<std::vector>::from( make_labels( std::move( labels ) ) )
-	
+
 	static ast::CV::Qualifiers cv( Type * ty ) { return { ty->get_qualifiers().val }; }
 
@@ -1549,5 +1550,5 @@
 
 	virtual void visit( TypeDecl * old ) override final {
-		if ( inCache( old ) ) return;	
+		if ( inCache( old ) ) return;
 		auto decl = new ast::TypeDecl{
 			old->location,
@@ -1587,5 +1588,5 @@
 	virtual void visit( AsmDecl * old ) override final {
 		auto decl = new ast::AsmDecl{
-			old->location, 
+			old->location,
 			GET_ACCEPT_1(stmt, AsmStmt)
 		};
@@ -2142,6 +2143,6 @@
 			rslt = new ast::ConstantExpr(
 				old->location,
-				GET_ACCEPT_1(result, Type), 
-				old->constant.get_value(), 
+				GET_ACCEPT_1(result, Type),
+				old->constant.get_value(),
 				(double) old->constant.get_dval()
 			);
@@ -2163,5 +2164,5 @@
 			assert(!old->isType);
 			rslt = new ast::SizeofExpr(
-				old->location, 
+				old->location,
 				GET_ACCEPT_1(expr, Expr)
 			);
@@ -2170,5 +2171,5 @@
 			assert(old->isType);
 			rslt = new ast::SizeofExpr(
-				old->location, 
+				old->location,
 				GET_ACCEPT_1(type, Type)
 			);
@@ -2184,5 +2185,5 @@
 			assert(!old->isType);
 			rslt = new ast::AlignofExpr(
-				old->location, 
+				old->location,
 				GET_ACCEPT_1(expr, Expr)
 			);
@@ -2191,5 +2192,5 @@
 			assert(old->isType);
 			rslt = new ast::AlignofExpr(
-				old->location, 
+				old->location,
 				GET_ACCEPT_1(type, Type)
 			);
@@ -2235,5 +2236,5 @@
 				GET_ACCEPT_1(arg1, Expr),
 				GET_ACCEPT_1(arg2, Expr),
-				old->get_isAnd() ? 
+				old->get_isAnd() ?
 					ast::LogicalFlag::AndExpr :
 					ast::LogicalFlag::OrExpr
Index: src/AST/Expr.cpp
===================================================================
--- src/AST/Expr.cpp	(revision 0b8bf2756f5d522b7c14e40729098a2599ad2997)
+++ src/AST/Expr.cpp	(revision a2e758ebdca5340747012d5baabc30ce367b85a8)
@@ -345,5 +345,5 @@
 }
 
-TupleAssignExpr::TupleAssignExpr( 
+TupleAssignExpr::TupleAssignExpr(
 	const CodeLocation & loc, const Type * result, const StmtExpr * s )
 : Expr( loc, result ), stmtExpr() {
Index: src/AST/Pass.impl.hpp
===================================================================
--- src/AST/Pass.impl.hpp	(revision 0b8bf2756f5d522b7c14e40729098a2599ad2997)
+++ src/AST/Pass.impl.hpp	(revision a2e758ebdca5340747012d5baabc30ce367b85a8)
@@ -1879,5 +1879,5 @@
 
 	VISIT(
-		maybe_accept( node, &Attribute::parameters );
+		maybe_accept( node, &Attribute::params );
 	)
 
Index: src/AST/Print.cpp
===================================================================
--- src/AST/Print.cpp	(revision 0b8bf2756f5d522b7c14e40729098a2599ad2997)
+++ src/AST/Print.cpp	(revision a2e758ebdca5340747012d5baabc30ce367b85a8)
@@ -7,9 +7,9 @@
 // Print.cpp --
 //
-// Author           : Thierry Delisle
-// Created On       : Tue May 21 16:20:15 2019
+// Author : Thierry Delisle
+// Created On : Tue May 21 16:20:15 2019
 // Last Modified By :
 // Last Modified On :
-// Update Count     :
+// Update Count :
 //
 
@@ -21,4 +21,6 @@
 #include "Type.hpp"
 #include "TypeSubstitution.hpp"
+
+#include "Common/utility.h" // for group_iterate
 
 using namespace std;
@@ -155,5 +157,5 @@
 public:
 	virtual const ast::DeclWithType * visit( const ast::ObjectDecl * node ) {
-		if (  !node->name.empty() ) os << node->name << ": ";
+		if ( !node->name.empty() ) os << node->name << ": ";
 
 		if ( node->linkage != Linkage::Cforall ) {
@@ -636,20 +638,73 @@
 
 	virtual const ast::Designation * visit( const ast::Designation * node ) {
+		if ( node->designators.empty() ) return node;
+		os << "... designated by: " << std::endl;
+		++indent;
+		for ( const ast::Expr * d : node->designators ) {
+			os << indent;
+			d->accept( *this );
+			os << std::endl;
+		}
+		--indent;
 		return node;
 	}
 
 	virtual const ast::Init * visit( const ast::SingleInit * node ) {
+		os << "Simple Initializer: ";
+		node->value->accept( *this );
 		return node;
 	}
 
 	virtual const ast::Init * visit( const ast::ListInit * node ) {
+		os << "Compound initializer: " << std::endl;
+		++indent;
+		for ( auto p : group_iterate( node->designations, node->initializers ) ) {
+			const ast::Designation * d = std::get<0>(p);
+			const ast::Init * init = std::get<1>(p);
+			os << indent;
+			init->accept( *this );
+			os << std::endl;
+			if ( ! d->designators.empty() ) {
+				os << indent;
+				d->accept( *this );
+			}
+		}
+		--indent;
 		return node;
 	}
 
 	virtual const ast::Init * visit( const ast::ConstructorInit * node ) {
+		os << "Constructor initializer: " << std::endl;
+		if ( node->ctor ) {
+			os << indent << "... initially constructed with ";
+			++indent;
+			node->ctor->accept( *this );
+			--indent;
+		}
+
+		if ( node->dtor ) {
+			os << indent << "... destructed with ";
+			++indent;
+			node->dtor->accept( *this );
+			--indent;
+		}
+
+		if ( node->init ) {
+			os << indent << "... with fallback C-style initializer: ";
+			++indent;
+			node->init->accept( *this );
+			--indent;
+		}
 		return node;
 	}
 
 	virtual const ast::Attribute * visit( const ast::Attribute * node ) {
+		if ( node->empty() ) return node;
+		os << "Attribute with name: " << node->name;
+		if ( node->params.empty() ) return node;
+		os << " with parameters: " << std::endl;
+		++indent;
+		printAll( node->params );
+		--indent;
 		return node;
 	}
Index: src/AST/TypeSubstitution.hpp
===================================================================
--- src/AST/TypeSubstitution.hpp	(revision 0b8bf2756f5d522b7c14e40729098a2599ad2997)
+++ src/AST/TypeSubstitution.hpp	(revision a2e758ebdca5340747012d5baabc30ce367b85a8)
@@ -25,5 +25,5 @@
 #include "Fwd.hpp"        // for UniqueId
 #include "ParseNode.hpp"
-#include "Type.hpp"       
+#include "Type.hpp"
 #include "Common/SemanticError.h"  // for SemanticError
 #include "Visitor.hpp"
Index: src/AST/porting.md
===================================================================
--- src/AST/porting.md	(revision 0b8bf2756f5d522b7c14e40729098a2599ad2997)
+++ src/AST/porting.md	(revision a2e758ebdca5340747012d5baabc30ce367b85a8)
@@ -110,4 +110,7 @@
 
 ## Specific Nodes ##
+`Attribute`
+* `parameters` => `params`
+
 `Decl`
 * `storageClasses` => `storage`
