Index: src/SynTree/Initializer.cc
===================================================================
--- src/SynTree/Initializer.cc	(revision e149f77d332b3ccb4f2dc3c40b4f03808877e80c)
+++ src/SynTree/Initializer.cc	(revision b7c89aa056ef3d9dc8449e3fffed9f66627276e5)
@@ -38,12 +38,12 @@
 }
 
-void Designation::print( std::ostream &os, int indent ) const {
+void Designation::print( std::ostream &os, Indenter indent ) const {
 	if ( ! designators.empty() ) {
-		os << std::string(indent + 2, ' ' ) << "designated by: " << std::endl;
-		for ( std::list < Expression * >::const_iterator i = designators.begin(); i != designators.end(); i++ ) {
-			os << std::string(indent + 4, ' ' );
-			( *i )->print(os, indent + 4 );
+		os << "... designated by: " << std::endl;
+		for ( const Expression * d : designators ) {
+			os << indent+1;
+			d->print(os, indent+1 );
+			os << std::endl;
 		}
-		os << std::endl;
 	} // if
 }
@@ -64,8 +64,7 @@
 }
 
-void SingleInit::print( std::ostream &os, int indent ) const {
-	os << std::string(indent, ' ' ) << "Simple Initializer: " << std::endl;
-	os << std::string(indent+4, ' ' );
-	value->print( os, indent+4 );
+void SingleInit::print( std::ostream &os, Indenter indent ) const {
+	os << "Simple Initializer: ";
+	value->print( os, indent );
 }
 
@@ -93,13 +92,16 @@
 }
 
-void ListInit::print( std::ostream &os, int indent ) const {
-	os << std::string(indent, ' ') << "Compound initializer:  " << std::endl;
-	for ( Designation * d : designations ) {
-		d->print( os, indent + 2 );
-	}
-
-	for ( const Initializer * init : initializers ) {
-		init->print( os, indent + 2 );
+void ListInit::print( std::ostream &os, Indenter indent ) const {
+	os << "Compound initializer: " << std::endl;
+	for ( auto p : group_iterate( designations, initializers ) ) {
+		const Designation * d = std::get<0>(p);
+		const Initializer * init = std::get<1>(p);
+		os << indent+1;
+		init->print( os, indent+1 );
 		os << std::endl;
+		if ( ! d->designators.empty() ) {
+			os << indent+1;
+			d->print( os, indent+1 );
+		}
 	}
 }
@@ -116,22 +118,19 @@
 }
 
-void ConstructorInit::print( std::ostream &os, int indent ) const {
-	os << std::endl << std::string(indent, ' ') << "Constructor initializer: " << std::endl;
+void ConstructorInit::print( std::ostream &os, Indenter indent ) const {
+	os << "Constructor initializer: " << std::endl;
 	if ( ctor ) {
-		os << std::string(indent+2, ' ');
-		os << "initially constructed with ";
-		ctor->print( os, indent+4 );
+		os << indent << "... initially constructed with ";
+		ctor->print( os, indent+1 );
 	} // if
 
 	if ( dtor ) {
-		os << std::string(indent+2, ' ');
-		os << "destructed with ";
-		dtor->print( os, indent+4 );
+		os << indent << "... destructed with ";
+		dtor->print( os, indent+1 );
 	}
 
 	if ( init ) {
-		os << std::string(indent+2, ' ');
-		os << "with fallback C-style initializer: ";
-		init->print( os, indent+4 );
+		os << indent << "... with fallback C-style initializer: ";
+		init->print( os, indent+1 );
 	}
 }
