Index: src/AST/Convert.cpp
===================================================================
--- src/AST/Convert.cpp	(revision 4073b16c7e20b5853fcbce0adaaa3f578dc4b353)
+++ src/AST/Convert.cpp	(revision 37eef7ae48492baf976bf55e5ae1abe5d8779967)
@@ -1287,20 +1287,39 @@
 
 	const ast::Designation * visit( const ast::Designation * node ) override final {
-		(void)node;
+		auto designation = new Designation( get<Expression>().acceptL( node->designators ) );
+		designation->location = node->location;
+		this->node = designation;
 		return nullptr;
 	}
 
 	const ast::Init * visit( const ast::SingleInit * node ) override final {
-		(void)node;
+		auto init = new SingleInit(
+			get<Expression>().accept1( node->value ),
+			ast::MaybeConstruct == node->maybeConstructed
+		);
+		init->location = node->location;
+		this->node = init;
 		return nullptr;
 	}
 
 	const ast::Init * visit( const ast::ListInit * node ) override final {
-		(void)node;
+		auto init = new ListInit(
+			get<Initializer>().acceptL( node->initializers ),
+			get<Designation>().acceptL( node->designations ),
+			ast::MaybeConstruct == node->maybeConstructed
+		);
+		init->location = node->location;
+		this->node = init;
 		return nullptr;
 	}
 
 	const ast::Init * visit( const ast::ConstructorInit * node ) override final {
-		(void)node;
+		auto init = new ConstructorInit(
+			get<Statement>().accept1( node->ctor ),
+			get<Statement>().accept1( node->dtor ),
+			get<Initializer>().accept1( node->init )
+		);
+		init->location = node->location;
+		this->node = init;
 		return nullptr;
 	}
@@ -2617,18 +2636,35 @@
 	}
 
-	virtual void visit( Designation * ) override final {
-
-	}
-
-	virtual void visit( SingleInit * ) override final {
-
-	}
-
-	virtual void visit( ListInit * ) override final {
-
-	}
-
-	virtual void visit( ConstructorInit * ) override final {
-
+	virtual void visit( Designation * old ) override final {
+		this->node = new ast::Designation(
+			old->location,
+			GET_ACCEPT_V(designators, Expr)
+		);
+	}
+
+	virtual void visit( SingleInit * old ) override final {
+		this->node = new ast::SingleInit(
+			old->location,
+			GET_ACCEPT_1(value, Expr),
+			(old->get_maybeConstructed()) ? ast::MaybeConstruct : ast::DoConstruct
+		);
+	}
+
+	virtual void visit( ListInit * old ) override final {
+		this->node = new ast::ListInit(
+			old->location,
+			GET_ACCEPT_V(initializers, Init),
+			GET_ACCEPT_V(designations, Designation),
+			(old->get_maybeConstructed()) ? ast::MaybeConstruct : ast::DoConstruct
+		);
+	}
+
+	virtual void visit( ConstructorInit * old ) override final {
+		this->node = new ast::ConstructorInit(
+			old->location,
+			GET_ACCEPT_1(ctor, Stmt),
+			GET_ACCEPT_1(dtor, Stmt),
+			GET_ACCEPT_1(init, Init)
+		);
 	}
 
Index: src/AST/Stmt.hpp
===================================================================
--- src/AST/Stmt.hpp	(revision 4073b16c7e20b5853fcbce0adaaa3f578dc4b353)
+++ src/AST/Stmt.hpp	(revision 37eef7ae48492baf976bf55e5ae1abe5d8779967)
@@ -96,4 +96,5 @@
 };
 
+/// Assembly statement `asm ... ( "..." : ... )`
 class AsmStmt final : public Stmt {
 public:
@@ -118,4 +119,5 @@
 };
 
+/// C-preprocessor directive `#...`
 class DirectiveStmt final : public Stmt {
 public:
@@ -132,4 +134,5 @@
 };
 
+/// If conditional statement `if (...) ... else ...`
 class IfStmt final : public Stmt {
 public:
@@ -151,4 +154,5 @@
 };
 
+/// Switch or choose conditional statement `switch (...) { ... }`
 class SwitchStmt final : public Stmt {
 public:
@@ -166,4 +170,5 @@
 };
 
+/// Case label `case ...:` `default:`
 class CaseStmt final : public Stmt {
 public:
@@ -183,4 +188,5 @@
 };
 
+/// While loop `while (...) ...` `do ... while (...);
 class WhileStmt final : public Stmt {
 public:
@@ -201,4 +207,5 @@
 };
 
+/// For loop `for (... ; ... ; ...) ...`
 class ForStmt final : public Stmt {
 public:
@@ -219,4 +226,5 @@
 };
 
+/// Branch control flow statement `goto ...` `break` `continue` `fallthru`
 class BranchStmt final : public Stmt {
 public:
@@ -246,4 +254,5 @@
 };
 
+/// Return statement `return ...`
 class ReturnStmt final : public Stmt {
 public:
@@ -259,4 +268,5 @@
 };
 
+/// Throw statement `throw ...`
 class ThrowStmt final : public Stmt {
 public:
@@ -277,4 +287,5 @@
 };
 
+/// Try statement `try { ... } ...`
 class TryStmt final : public Stmt {
 public:
@@ -294,4 +305,5 @@
 };
 
+/// Catch clause of try statement
 class CatchStmt final : public Stmt {
 public:
@@ -313,4 +325,5 @@
 };
 
+/// Finally clause of try statement
 class FinallyStmt final : public Stmt {
 public:
@@ -327,4 +340,5 @@
 };
 
+/// Wait for concurrency statement `when (...) waitfor (... , ...) ... timeout(...) ... else ...`
 class WaitForStmt final : public Stmt {
 public:
@@ -364,4 +378,5 @@
 };
 
+/// With statement `with (...) ...`
 class WithStmt final : public Stmt {
 public:
@@ -379,4 +394,5 @@
 };
 
+/// Any declaration in a (compound) statement.
 class DeclStmt final : public Stmt {
 public:
@@ -392,4 +408,5 @@
 };
 
+/// Represents an implicit application of a constructor or destructor.
 class ImplicitCtorDtorStmt final : public Stmt {
 public:
